SECTIONS · MARKETING · CRO · 14 AUGUST 2026 · 7 MIN READ
Landing pages for paid traffic, built from sections
A campaign page is a rearrangement of blocks you already own, published by a marketer in an afternoon. If it needs a developer or a page builder app, the theme is the problem.
Build campaign pages from your theme's own sections on an alternate page template, not with a page builder app and not as a separate microsite. Shopify JSON templates render up to 25 sections with up to 50 blocks each, and a theme can hold up to 1,000 of them — which is more campaign pages than any team will ever produce. The work is not the page. It is having eight well-made, well-named sections a marketer can reorder without asking anyone.
IN SHORT
- A Shopify JSON template can render up to 25 sections, each with up to 50 blocks, and a theme supports up to 1,000 JSON templates.
- Alternate templates are named `page.suffix.json` and can be previewed on the storefront with `?view=suffix`, which is how you review a campaign page before it is assigned.
- A page builder app solves a theme problem by adding a second rendering system, its own scripts and a page nobody else can edit.
- Message match between the ad and the first screen matters more than any layout decision on the page.
- Paid traffic is mostly cold and mostly mobile, so the page carries the whole argument — speed and the first screen do most of the work.
The real constraint is not the page, it is the queue
Ask why campaign pages are slow and the answer is almost never rendering. It is that every page is a ticket. Marketing writes a brief, a developer builds bespoke markup, QA looks at it, it ships on Thursday for a campaign that started Monday, and the next campaign starts the cycle again.
Nothing about Shopify requires that. The platform is built for a merchandiser to assemble a page in the theme editor. What is usually missing is a set of sections good enough to assemble from — the section library — and the moment that exists, the queue disappears and the developer stops being a bottleneck for layout.
So the investment is in sections, once, rather than in pages, repeatedly. Eight to twelve well-built sections cover essentially every campaign layout a store runs, and each one gets better every time somebody uses it.
What the platform actually gives you
The numbers are generous enough that they will not be your constraint. Shopify's documentation states that JSON templates render up to 25 sections and each section can have up to 50 blocks, and that a theme supports up to 1,000 JSON templates, after which you cannot create new ones.
Twenty-five sections is far more than a campaign page should have — if you are approaching it, the page is a brochure and it is not converting anyone. A thousand templates is more campaign pages than a store will publish in a decade, which means you can afford a template per campaign rather than editing one shared page and losing the previous version.
Alternate templates are how you get there. The naming is template-name.template-suffix.template-file-type, so page.campaign-spring.json sits alongside your standard page template. Assignment happens in the admin, and — the useful part for review — you can select one on the storefront with the view URL parameter: ?view=campaign-spring. That gives marketing a real URL to circulate for sign-off before anything is assigned to a live page.
The sections a campaign page actually needs
Campaign pages look varied and are not. Nearly all of them are the same six or seven jobs in a different order, which is exactly why a library works.
- A hero with one promise and one action. Headline, one supporting line, one button, one image. The variant control that matters is text, not layout.
- A proof strip. Logos, review counts, press, guarantees. Cheap to build, and the thing cold traffic looks for first.
- A feature or benefit grid. Two to four items with an icon or image. Resist six.
- A product block that adds to cart. Not a link to a product page — a campaign page that hands the visitor back to the ordinary catalogue journey has wasted the click it paid for.
- A comparison or objection-handling section. The thing the ad did not have room to answer.
- An FAQ. Four questions, the ones support actually gets.
- A closing call to action. Same promise as the hero, restated.
Make the settings restrictive on purpose
The temptation when building a section library is to expose everything — every colour, every spacing value, every alignment. It feels generous. What it produces is pages that look like they came from different companies, and a marketer paralysed by a settings panel with forty fields.
Expose the decisions that are genuinely per-campaign: copy, images, links, the product, and the choice between two or three preset variations. Keep type scale, colour palette and spacing in theme settings, where they are set once and apply everywhere. A section with eight settings that always looks right is worth more than one with thirty that can be made to look wrong.
Name things the way marketing talks. "Hero — image left" is a section a marketer can pick from a list. "Feature banner v2" is one they will ask a developer about, which puts the ticket back.
Why not a page builder app
The pitch is exactly the thing you want: marketers publishing pages without developers. The cost is a second rendering system inside your store.
Pages built in a builder are not made of your sections, so they drift from your design as the theme evolves and nobody notices until a screenshot goes in a deck. They usually load their own JavaScript and CSS on top of the theme's, on pages you are paying to send traffic to, where speed is directly a cost line. And the pages are typically only editable in the builder — so if the app goes, the pages go, or they get frozen into static markup nobody wants to touch.
There is a narrower version of the objection that matters more: a builder makes it easy to produce pages nobody maintains. Two years in, a store has ninety builder pages, a dozen of them live, and no inventory of which. Sections in the theme at least appear in the theme editor, in version control, and in the same review process as everything else.
If your marketers cannot ship a page today, the honest fix is the section library, and it costs less than two years of the app.
What decides whether the page converts
Three things, roughly in order, and layout is not among them.
Message match. The first screen should repeat the promise in the ad, in close to the same words. A visitor who clicked "£30 off your first box" and lands on a page headed "Discover our range" has been given a puzzle to solve and will not solve it. This is a copy decision that costs nothing and is the most commonly skipped.
Speed on a phone, on a cold visit. Paid traffic is overwhelmingly mobile, has no cached assets, and has no relationship with you. A hero image that is not sized for the viewport, or a page that loads the full site bundle to render six sections, spends your click budget on a loading state. Test each campaign template on a throttled connection before it goes live — it is ten minutes and it is the only performance work most campaign pages need.
One action. A campaign page with a header nav, a newsletter popup, a chat widget and three competing calls to action is offering a visitor five ways to not buy. Strip the header to a logo on campaign templates if you can; it is a template-level decision, so it does not affect the rest of the site.
Running it as a process
Once the library exists, campaign production should look like this: marketing duplicates the nearest existing campaign template, renames the suffix, edits copy and images in the theme editor, reviews it on ?view=, and assigns it. No ticket, no deploy, no developer.
Two habits keep it from decaying. Keep a list of live campaign templates with an owner and an end date, and actually unpublish the expired ones — templates are cheap, but a hundred orphaned campaign pages is a crawl and maintenance problem, and the ones with stale prices are a liability. And when a campaign needs something the library does not have, decide whether it is genuinely new or a variant of an existing section. The first adds a section; the second adds a setting. Confusing the two is how a library of twelve becomes a library of forty that nobody can navigate.
Should these pages be indexed? Usually not, for pure paid landing pages with promotional pricing — they duplicate catalogue content and they expire. Keep the ones that are genuinely useful content, noindex the rest, and either way make sure the decision is deliberate rather than whatever the template inherited.
Questions this raises
How do you build landing pages for paid campaigns on Shopify?
Create an alternate page template — `page.campaign-name.json` — and assemble it from your theme's existing sections in the theme editor. Review it on the storefront using `?view=campaign-name` before assigning it to a page. The reusable work is the section library; each campaign page is then an afternoon for a marketer.
How many sections can a Shopify landing page have?
Shopify documents that a JSON template renders up to 25 sections with up to 50 blocks each, and that a theme supports up to 1,000 JSON templates. Those ceilings are far above what a good campaign page needs — if you are near 25 sections, the page is too long rather than near a limit.
Should we use a page builder app instead?
Usually not. A builder adds a second rendering system with its own scripts, produces pages that drift from your design system and are only editable inside the app, and makes it easy to accumulate pages nobody maintains. If marketers cannot ship a page today, build the section library — it addresses the same problem without the dependency.
Should campaign landing pages be indexed by search engines?
For pure paid landing pages with promotional pricing and a fixed end date, usually not — they duplicate catalogue content and expire. Pages that stand alone as useful content can be indexed. Either way, make it a deliberate setting on the template rather than something inherited.
How do you review a campaign page before it goes live?
Use the `view` URL parameter. An alternate template named `page.spring.json` can be previewed on the storefront at `?view=spring`, so stakeholders review a real page on a real device rather than a screenshot, before it is assigned in the admin.
What matters most on a paid landing page?
Message match first — the first screen should repeat the promise from the ad in close to the same words. Then speed on a cold mobile visit, because paid traffic has no cached assets and every second is spent budget. Then a single clear action, with the competing distractions removed at template level.
NEXT STEP
Free store audit
A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.
