help1
shopify announcement barshopifyhorizon-themebfcm

The Shopify Announcement Bar Is a Stub, Not a Feature

The Shopify announcement bar handles the simplest case and nothing else. Links, scheduling, page restriction - all need code or apps.

help1 Team
The Shopify Announcement Bar Is a Stub, Not a Feature

There is a thread in the Shopify Community from late November last year that keeps surfacing. A merchant on Dawn wanted to schedule different announcement bar messages for each day of Black Friday. Nothing exotic. Just a message that reads one thing on Friday, another on Saturday, another on Sunday. They assumed the theme editor had a date field for this somewhere. It does not. The replies all pointed in different directions - a free scheduler snippet, Shopify Flow with a metafield swap, Mechanic, Launchpad for Plus merchants, or client-side JavaScript. A community expert then noted that even the native-looking Liquid approach is unreliable because now on the server does not match the visitor's clock due to caching.

I keep coming back to that thread because it captures the whole problem. The Shopify announcement bar looks like a feature. It is in the theme editor, it has a text field, it has placement options. But as soon as you want it to do anything a real promotional message needs to do, you are writing code or paying for an app. I now think of the native implementation as a stub - the shape of a feature, not the thing itself.

The native tool handles one case

The merchant request behind every one of these threads is the same: a static message, mostly unlinked, that appears on every page. For that case the built-in control works. Dawn gives you up to 12 separate announcement bar sections and a rotation. Horizon has slides with navigation arrows. The styling defaults are not awful. If that is all you need, close this tab.

The problem is that almost no real promotional message is that case. Promos have end dates. Promos link somewhere - usually to a sale collection or a shipping threshold page. Promos appear on some pages (homepage, product) but not others (checkout for compliance reasons, blog for noise reasons). Promos look different on mobile. The gap between "shows a line of text" and "runs a promotion" is where the native tool stops and the merchant falls into one of two expensive pits: an app subscription, or a theme code edit that will be overwritten on the next theme update.

The announcement text field in Dawn and Horizon is a plain string. It does not accept HTML. If you want the words "Shop the sale" to be clickable, you open the code editor, find sections/announcement-bar.liquid, and wrap the output in an anchor tag. You then make a note somewhere, because the next theme update will overwrite that file and you will have to redo it.

A merchant whose first paid Shopify task is editing Liquid for a hyperlink has a problem. The shopify announcement bar question appears a dozen times on the community forum going back three years. The answer is identical every time, and every time it ends with "and you will need to redo this if you update your theme."

If you are on the brink of making that edit for your first time and you want a second pair of eyes before you commit to it, the first 15 minutes with a help1 expert is free and that is enough to walk through the specific lines that need to change and the backup you should take first.

Horizon added a second tax: three CSS bugs

Horizon is new enough that the migration pain still has sharp edges, and the shopify announcement bar is a concentrated place where you feel them.

The line-height bug clips descenders. Any letter with a tail - "g", "p", "y" - gets cut off at the bottom of the bar on a single-line message. The word "shipping" is the one that catches people. The fix is one line of CSS added to the section's Custom CSS field: .announcement-bar__message { line-height: 1.5; padding: 5px 20px; }. Horizon does not load custom.css from theme.liquid, so if you have been pasting it in the wrong place it will not take.

The alignment-drift bug shifts text left on the second and third slides of a rotating bar. First slide centers correctly, next slide snaps left, and the eye catches the shift. One line fixes it: .announcement-bar__text { text-align: center; }. The Horizon team has not patched this upstream yet.

The z-index collision has two flavors. On some stores the bar renders behind other elements on desktop and shows as a blank strip. #shopify-section-announcement-bar { z-index: 99999; } resolves it. The second flavor is specific to transparent headers - a third-party scrolling bar sits underneath Horizon's header because the header has a higher default z-index. One community thread recommended also reordering theme.liquid so the announcement bar renders before the header. I would try the pure-CSS path first; reordering theme.liquid is the kind of change that comes back to haunt you on theme updates.

Mobile preview is lying to you

The Shopify theme editor's mobile preview is not a reliable proxy for how the bar actually renders on an iPhone. Multiple threads describe the same gap: looks correct in preview, looks like a white block (text invisible) on a real device.

Sometimes the cause is a "Hide on mobile" toggle inside the announcement bar section settings that got flipped by accident. Sometimes it is a gradient CSS declaration that iOS Safari renders as a solid color. Sometimes it is a scrolling animation that takes several seconds to start on mobile page load - the content is there, you just cannot see it until the browser catches up.

None of these have a single documented fix. The honest advice is: do not trust the preview. Open your store on an actual phone before you launch the promo. If you only have an Android, borrow an iPhone from someone or use BrowserStack for the thirty seconds it takes to check. The preview-vs-real-device divergence is where the shopify announcement bar goes wrong on mobile more often than any specific CSS rule.

The checkout gap is partially closed, with a catch

The old frustration was "there is no announcement bar on the cart or checkout page." In August 2025 Shopify shipped a native UI extension for the Thank You page and Customer Account pages. That is real progress - it means post-purchase messaging, order status reassurance, and account page notes finally have a first-party home. But two things are worth saying out loud.

First, it is still not the active cart or checkout step. If you want a free-shipping bar to appear at the moment a shopper is deciding to complete a purchase, the native path still does not exist. You are back in third-party checkout extension territory.

Second, the new extension has a known bug. If you add links using s-link, they render in the bar's background color and become invisible to the shopper. A developer posted this on the Shopify developer forum in August 2026 and as of this writing there is no reply. If you build with this extension before the fix lands, test every link against the actual rendered bar.

What this means for your BFCM setup this year

Six weeks out, the sensible plan looks like this.

  1. For scheduled messages: skip Liquid now comparisons. Shopify Flow with a metafield swap is the clean path. For solo merchants without that comfort, a well-reviewed app is cheaper than debugging a server-cache mismatch on sale day.

  2. For links in the bar: either accept the Liquid edit (and keep a note so you can redo it on theme update), or pick an app that offers the link field natively. Do not try to put raw HTML in the text field; it will render as a string.

  3. For page restriction: use the "Custom liquid" section at the top of the Header Group with a {% if template != 'index' %} style guard that hides the bar. This approach lives in the template JSON instead of the theme files, so it survives updates. The theme editor does not surface this option, which is why the same question has shown up for Dawn, Horizon, Savor, Broadcast, and Debut threads over five years.

  4. For Horizon-specific CSS bugs: add all three fixes to Custom CSS before the sale. Then open the storefront on a real phone for a visual pass; the preview misses cases. The patterns are documented in five Shopify theme customization habits that break on Horizon and the fixes carry over.

  5. For the active checkout page: there is still no native option. If a shipping-threshold banner there is load-bearing for your promo, your options are a Checkout Extensibility app or putting the message somewhere else.

I keep saying this and merchants keep hearing it late: the shopify announcement bar you can configure from the theme editor is the shape of a feature. The real one takes code, an app, or both. The sooner you plan around the stub, the less of your BFCM week you spend fighting it.

Still stuck? Talk to an expert.

Our vetted Shopify experts can fix this issue for you in a live session. $39 per session. Your first 15 minutes are free.