How to Turn Any Website Section into a Shopify Section (Liquid, 2026)
What it takes to get a section from another site into your Shopify theme as a proper Liquid section with schema, blocks and presets, and the shortcuts that leave merchants unable to edit anything.
Soraia
Founder, PocketUI
Pasting HTML into Shopify's Custom Liquid block renders a section but leaves merchants unable to edit it. A real Shopify section is a .liquid file in your theme's sections folder with a schema block that exposes the text, colors and repeated items as settings and blocks, so the section appears in the theme customizer. The work is not the markup, it is writing that schema.
There are two very different things people mean by "turning a website section into a Shopify section", and the gap between them is where most of the work lives.
The first is: make it appear on the page. That is easy. Paste the markup into a Custom Liquid block and you are done in two minutes.
The second is: make it a section a merchant can edit. That is the real job, and it is not about the markup at all. It is about the schema.
Why Custom Liquid is not enough
Drop a section's HTML into Custom Liquid and the store looks right. Then the client emails: "can we change the heading to say Free shipping over £50?"
Now someone opens the code editor, finds the text inside the markup, edits it carefully, and hopes nothing else breaks. Repeat for every image, every price, every link. You have built something that only you can maintain, which is the opposite of what a theme is for.
The same is true of pasting markup straight into a template file. It renders. It is not a section.
What a real Shopify section is
A section is a .liquid file in your theme's sections folder that contains two things:
The markup, using Liquid to pull values in rather than hard-coding them:
<h2>{{ section.settings.heading }}</h2>
A schema block at the bottom that declares what those values are:
{% schema %}
{
"name": "Feature row",
"settings": [
{ "type": "text", "id": "heading", "label": "Heading", "default": "Why shop with us" },
{ "type": "color", "id": "bg", "label": "Background" }
],
"blocks": [
{ "type": "feature", "name": "Feature", "settings": [
{ "type": "image_picker", "id": "icon", "label": "Icon" },
{ "type": "text", "id": "title", "label": "Title" }
]}
],
"presets": [{ "name": "Feature row" }]
}
{% endschema %}
Those three parts each do a job:
- Settings become fields in the theme customizer sidebar. This is what makes the heading editable without code.
- Blocks are the repeatable parts. A three-feature row is one block type; the merchant adds a fourth feature by clicking Add block, not by copying markup.
- Presets put the section in the Add section menu. Without one, the file exists but nobody can place it.
Getting from captured HTML to that structure is the actual conversion. Deciding which parts become settings, which repeated group becomes a block, and what the sensible defaults are.
Four routes, and what each leaves you with
| Route | Renders | Merchant can edit it | Time |
|---|---|---|---|
| Custom Liquid block | Yes | No | 2 minutes |
| Hand-written section file | Yes | Yes | 1–3 hours |
| Theme app or section marketplace | Yes | Yes, within its own limits | Minutes, if one matches |
| Capture the section and export it as Liquid | Yes | Yes | Under a minute |
The middle two are what most people do today. A bought section is quick but it is someone else's design, which defeats the point if you started from a layout you liked. Hand-writing the file gives you exactly what you want and costs an afternoon.
Three things that go wrong
Global CSS. A section that adds unscoped styles will fight the theme. Keep the CSS inside the section file and scope it to the section's own class, so deleting the section deletes its styles.
Hard-coded content that should be a setting. If a value is something a merchant would ever want to change, it belongs in the schema. Headings, button labels, links, colors, images. When in doubt, make it a setting.
No blocks for repeated items. Three features written as three copies of the same markup means the merchant cannot add a fourth. One block type used three times means they can.
Doing it with PocketUI
PocketUI is a Chrome extension that saves parts of live websites as real code: structure, authored CSS, hover and focus states, breakpoints. The same capture can go to Figma, out as HTML, Tailwind, React or Vue, or to a page builder.
- Find the section you want on any site.
- Capture it. Drag over it in the extension.
- Export it as a Shopify section. The capture is written as a
.liquidfile with a schema block, blocks for the repeated parts, and a preset. - Add the file to your theme's
sectionsfolder. - Place it from the customizer with Add section.
- Fill in your own content from the sidebar.
Clearly: the Shopify export is not live yet. Figma and the code exports work today; Shopify, Elementor, Webflow and Bricks are in development and go to early-access members first. Right now, capture the section as clean HTML and CSS and write the schema around it by hand. That still removes the slowest part, which is reading values out of DevTools one at a time.
On copying another store
The layout is fair game to learn from and rebuild. The product photography, the copy, the logo and the brand colors are not yours. Take the structure, replace the content, and the result is your store rather than a copy of someone else's.
Frequently asked questions
Yes, into a Custom Liquid block or a theme file, and it will render. What you do not get is editability: the text is hard-coded in the markup, so a merchant cannot change a heading or swap an image from the theme customizer. For anything a client will maintain, the markup needs a schema around it.
A .liquid file in the theme's sections folder containing the markup plus a schema block. The schema declares settings, such as a heading text field, a colour picker or an image picker, and blocks for repeated items like features or testimonials. Those appear in the theme customizer, which is what lets a merchant edit the section without touching code.
Blocks are the repeatable parts of a section, so a three-column feature row is one block type the merchant can add or remove. Presets let the section be added from the customizer's Add section menu with sensible defaults already filled in. Without a preset, the section exists in the code but nobody can place it.
It targets Online Store 2.0 themes, such as Dawn and the themes built on it, because those support sections on every page rather than only the home page. On an older vintage theme you can still add a section file, but where it can be used is much more limited.
Scope it. A section that drops global styles into a theme will fight the theme's own CSS, and the damage shows up on unrelated pages. Keep the styles inside the section file, scoped to the section's own class or id, so removing the section removes its styles too.
Rebuilding a layout you admire is normal work. Republishing another store's product photography, copy, logo or brand assets is not. Take the structure, replace the content with your own.
Keep reading
Figma to Elementor vs Website to Elementor: Skip the Figma Step
If the design you want already exists as a live website, going through Figma adds a lossy conversion for no reason. When the Figma route is right, when it is not, and what each one costs you.
Read ExportHow to Convert a Website to Elementor (HTML to Elementor, 2026)
Four ways to turn an existing website section into Elementor, from rebuilding it by hand to pasting real widgets. What each method keeps, what it breaks, and when to use it.
Read ExportHow to Import Any Website Section into Webflow (2026)
Webflow has no HTML import. Here are the four ways to get an existing website section onto the Designer canvas, what each one does to your classes and breakpoints, and which to use.
Read