On Shopify Horizon, a section is a full row of a page, and a block is a piece inside that row. Most custom features should be built as a block, because you can then place it on any page yourself. A feature needs a section when the spot you want takes no extra blocks, or when the feature is a whole row of its own.
You can check which one you need in the theme editor in about two minutes. We checked everything here on Horizon 4.3.0.
Sections are rows, blocks are the pieces inside
Open the theme editor and look at the left sidebar. Each top-level row is a section: the header, the product information area, the footer. Everything indented under a section is a block: a heading, a button, an image, a price. A Group is a block that holds other blocks.

Product information is the section. Every row under it is a block, including our custom Discount code block.
A block can be placed again and again
A custom block is built once. After that, you add it in the theme editor wherever you want it, the same way you add a Text or Image block. No more code is needed for each new spot.
Our discount code box is a block. On our demo product it appears twice: once in the product details, and once further down the page in a different section.

The same Discount code block, placed a second time inside a Custom section.
Choose a block when the feature sits inside an existing part of the page, or when you want it on more than one page.
Some spots only take their own blocks
A block can go only where a section allows it. Many Horizon sections allow any block. Some allow only their own.
The announcement bar is one of them. We wanted our discount code box at the top of every page, but the announcement bar offers a single block: Announcement. That is how the theme is designed. Nothing is wrong with your store.

The announcement bar offers only its own Announcement block.
So we added a small custom section: a plain bar for the top of the page that accepts any block. The discount code block goes inside it. The block is still the feature, and the section gives it a place to sit.
A feature also needs a section when it is a whole row with its own layout. Our search page shows blog posts and pages below the product results. That list is a section, because it fills a full row and loads its own results.
Check your spot in two minutes
- Open Online Store > Themes > Customize and go to the page where you want the feature.
- In the left sidebar, find the spot and select Add block.
- Look at the list on the Blocks tab.

A long list of general blocks. A custom block can go here.
| What you see | What your feature needs |
|---|---|
| A long list with Text, Image, Button, and Group | A block |
| One or two special blocks only | A section, with the block inside it |
| No Add block option | A section |
| You want it between two existing sections | A block, inside a Custom section you add there |
| The feature is a full row with its own layout and data | A section |
One thing to ask for either way
Ask for the feature to be added as a new file, with Horizon's own files left unchanged where possible. A theme update has nothing to conflict with in a file that Horizon does not ship. Changes made inside Horizon's own files are the ones an update can drop, as our Horizon update workflow shows.
Other Horizon versions and other themes can allow different blocks in each section, so run the two-minute check on your own theme.
You can also skip the question. Tell us the feature and where it should appear, and our Shopify Custom Feature Development service covers working out whether it needs a block, a section, or both, then building and testing it.