Announcement Bars
Use header bars to display key store announcements.
Announcement Bars lets you place a prominent banner at the top or bottom of your store to tell shoppers what matters. Whether you're highlighting a promotion, motivating customers with a free shipping goal, counting down to a sale deadline, or collecting email leads — each bar type is purpose-built for one job and fully customizable to match your brand.
You can only run one bar at a time, so be intentional about which one. The decision guide below helps.
Which bar should I pick?
Pick the bar type that matches the message you want to put in front of every shopper:
| If you want to… | Use this bar |
|---|---|
| Promote a sale, a new product, or a general store announcement | Text |
| Lift average order value by dangling free shipping | Free Shipping |
| Drive urgency with a clear deadline | Countdown |
| Build your email list — usually in exchange for a discount code | Email Capture |
| Add social proof with your total order count | Orders Count |
If you're just getting started, Text or Free Shipping is the safest first pick — they're simple to set up and almost always relevant.
The Five Bar Types
Text Announcement Bar
When to use this: You have something to say to every shopper — a promo, a shipping delay, a launch, a free-gift code. Anything you'd otherwise hard-code into your theme header.
Display any custom message in a store-wide banner. You can include HTML formatting and an optional link that makes the entire bar clickable, so you can point shoppers directly to a product, collection, or landing page.
Free Shipping Bar
When to use this: You offer free shipping above a certain order value and want shoppers to know it — and to nudge them toward hitting the threshold.
The Free Shipping Bar shows a dynamic progress message toward your free shipping threshold. It reads your store's active shipping zones to figure out the right minimum spend, and updates in real time as shoppers add or remove items from their cart. If you ship to multiple countries, it automatically shows the correct threshold for each visitor's location. You can also set product-specific thresholds for stores with per-product shipping rules.
The bar shows three distinct messages depending on cart state:
- Before the customer adds anything — an initial motivational message (e.g., "Spend $50 for free shipping!").
- While the customer is partway there — a progress message with a
#amount#placeholder that resolves to the remaining amount needed (e.g., "You're only $12 away from free shipping!"). - Once the threshold is reached — a congratulatory completion message.
Countdown Bar
When to use this: You're running a sale, a launch window, or any promo with a real end time, and you want every page on your store to feel that ticking clock.
Set a start date and end date, and the bar appears only during that window. It automatically disappears when the countdown hits zero. The countdown respects your store's timezone. Use the #countdown_timer# placeholder in your message to embed the timer anywhere in the text — for example, "Sale ends in #countdown_timer# — shop now."
Email Capture Bar
When to use this: You want to grow your email list, especially with a small incentive like a first-order discount code. The bar acts as a low-friction sign-up surface across your whole store.
It shows a message, an email input, and a submit button. When a visitor submits their email, the bar swaps to a thank-you message — and you can drop a discount coupon code right into that message to reward them. Once a visitor submits their address, the bar won't appear again for that visitor for 365 days.
The Email Capture bar doesn't display on the cart page — by design, so it doesn't interrupt checkout.
Orders Count Bar
When to use this: You've sold a meaningful number of orders and want to show it off. Social proof is a strong nudge for first-time visitors deciding whether to trust your store.
Use the #orders_count# placeholder in your message to embed the live order total (e.g., "Join over #orders_count# happy customers!"). This bar doesn't appear on the cart page.
How It Works
What Customers See
When the app is active and you have at least one bar enabled, the bar renders as a full-width banner across your storefront. Only one bar is active at a time.
Positioning. Each bar can sit in one of three positions:
- Top (relative) — sits above the page content and scrolls away with the page.
- Top (fixed) — stays pinned to the top of the browser window at all times. The page body is pushed down so content isn't hidden behind it.
- Bottom (fixed) — stays pinned to the bottom of the browser window.
Close button. If "Enable close button" is on, a small × appears on the bar. When a visitor closes it, the bar stays hidden for 24 hours before it can come back on their next visit.
Visual themes. In addition to the fully-customizable Standard style, the bar ships with 10 built-in seasonal and design themes: Autumn, Black, Blue Shapes, Gradient, Halloween, Hot, Hot Discounts, Shapes, Valentine, and Winter. Picking a preset theme overrides the background color with the theme's own design.
Cart Drawer integration. If you use the Vitals Cart Drawer app, you can show the Announcement Bar inside the cart drawer instead of on the storefront page. The Cart Drawer app has its own setting — "Show messages from the Announcement Bar app" — that controls this.
What You Do in the Dashboard
Each bar has its own dedicated settings (type, message, position, colors, theme) configured when you add or edit it. You can save multiple bars in the dashboard, but only the one you mark as active will show on your store.
A handful of global module-level settings (the close button and bot filter) apply to all bars in the module.
Setup, Step by Step
- Enable the app. In your Vitals dashboard, go to Announcement Bars and toggle it on.
- Create a bar. Click "Add bar" and give your bar a name (internal — only you see it).
- Choose a bar type. Pick one of the five types — Text, Free Shipping, Countdown, Email Capture, or Orders Count — and fill in the relevant message fields.
- Set position and style. Pick where the bar appears (top or bottom), choose a theme or set custom colors, and pick a font if you'd like.
- Configure global settings. Decide whether to show a close button and, for email capture bars, whether to enable the bot filter.
- Activate the bar. Mark it active. Only one bar can be live at a time.
For Free Shipping bars: Make sure your store's shipping zones are synced to Vitals via the Sync now button. The bar reads those zones to calculate the correct threshold per country.
For Countdown bars: Enter the exact start and end dates. The bar only appears during that window and removes itself when the countdown reaches zero.
For Email Capture bars: Customize the error messages ("Your email is already registered." and "Invalid email address!") if your store serves a non-English audience, and enable the bot filter to keep your email list clean.
Tips for Getting the Most Out of It
- One bar, one job. You can only run one bar at a time, so don't try to cram three messages into one. Pick the most important right now and rotate as your priorities change.
- Keep the message short. The bar is small and most readers will scan it in under a second. Lead with the benefit, not the brand voice.
- Test fixed vs relative positioning. Top (fixed) is more visible but also more intrusive. Top (relative) is friendlier but easier to miss. Pick based on how urgent the message is.
- For email capture, offer a real incentive. "Sign up for our newsletter" converts poorly; "Get 10% off your first order" converts much better. Use the
#coupon#placeholder to deliver the code instantly. - Use the close button thoughtfully. Letting visitors dismiss the bar feels respectful, but if the message is critical (shipping delay, big sale), you may want them to keep seeing it — leave the close button off in that case.
Settings Reference
Per-Bar Settings
These settings are configured individually when you create or edit an announcement bar:
| Setting | Type | Description |
|---|---|---|
| Bar type | Dropdown | Choose the bar's purpose: Text, Free Shipping, Countdown, Email Capture, or Orders Count. |
| Message | Text field | The main text shown in the bar. Supports HTML. Use #amount# (Free Shipping), #countdown_timer# (Countdown), or #orders_count# (Orders Count) as dynamic placeholders. |
| Position | Dropdown | Where the bar appears on the page: Top (relative, scrolls with page), Top (fixed, always visible at top), or Bottom (fixed, always visible at bottom). |
| Text color | Color picker | The color of the text inside the bar. |
| Background color | Color picker | The bar's background color (only applies when the "Standard" theme is selected). |
| Theme | Dropdown | A preset visual style. Options: Standard, Autumn, Black, Blue Shapes, Gradient, Halloween, Hot, Hot Discounts, Shapes, Valentine, Winter. |
| Highlight color | Color picker | The accent color used for dynamic values — the remaining free shipping amount, the countdown timer background, and the orders count number. |
| Font | Dropdown | The font family applied to the bar text. |
| Initial message | Text field | (Free Shipping bar only) Message shown when the cart is empty. Use #amount# to display the full threshold amount. |
| Progress message | Text field | (Free Shipping bar only) Message shown while the cart total is above zero but below the threshold. Use #amount# to show the remaining amount needed. |
| Button text | Text field | (Email Capture bar only) Label for the email submit button. |
| Button color | Color picker | (Email Capture bar only) Background color of the submit button. |
| Button text color | Color picker | (Email Capture bar only) Text color of the submit button. |
| Coupon message | Text field | (Email Capture bar only) Message shown after a visitor submits their email. Use #coupon# to embed the coupon code inline. |
| Coupon code | Text field | (Email Capture bar only) The actual discount code inserted where #coupon# appears in the coupon message. |
| Start date & time | Date/time | (Countdown bar only) When the countdown begins and the bar becomes visible. |
| End date & time | Date/time | (Countdown bar only) When the countdown ends and the bar automatically disappears. |
Global Module Settings
These settings apply to all bars in the module:
| Setting | Type | Description |
|---|---|---|
| Enable close button | On/Off toggle | Lets customers close the bar while navigating the store. Once closed, the bar is hidden for 24 hours. |
| Enable bot filter (CAPTCHA) | On/Off toggle | If enabled, user behavior is validated with a CAPTCHA to ensure lead validity. Applies to email capture bars only. |
Translation Settings
These settings let you localize error messages for multi-language stores:
| Setting | Type | Description |
|---|---|---|
| Your email is already registered. | Text field | Error shown when a visitor tries to submit an email that's already in your list. |
| Invalid email address! | Text field | Validation message shown when a visitor submits an incorrectly formatted email address. |
Frequently Asked Questions
Can I have more than one announcement bar active at the same time?
No — only one bar is active on your storefront at any given time. You can create and save multiple bars in the dashboard and switch between them, but only the active one displays to visitors.
How does the Free Shipping bar know the correct threshold for each visitor?
The bar pulls your free shipping rules from your store's shipping zones in Shopify admin > Settings > Shipping & Delivery. It automatically picks the right threshold for the visitor's country. If you have no free shipping rules configured, the bar doesn't display.
What does the "Top (fixed)" position do differently from "Top (relative)"?
"Top (fixed)" pins the bar to the very top of the browser window so it stays visible even as the customer scrolls. It also adds padding to the top of the page so your theme's content isn't hidden behind the bar. "Top (relative)" places the bar in the normal document flow and scrolls away with the page.
If a visitor closes the bar, when will they see it again?
Once closed, the bar is hidden for 24 hours. After that, it reappears on their next visit — as long as "Enable close button" is still on.
Why isn't the Email Capture bar showing on the cart page?
By design. The Email Capture bar is suppressed on the cart page to avoid distracting visitors who are in the middle of checking out.
Can the Free Shipping bar show different amounts in different currencies?
Yes — if the Vitals Currency Converter app is active on your store, the free shipping amount displayed in the bar converts according to the visitor's selected currency.
What happens when the Countdown bar's end time is reached?
The bar removes itself from the page when the countdown hits zero. You don't need to deactivate it manually — it disappears on its own.
A visitor submitted their email on the Email Capture bar. Will they see the bar again?
No. Once a visitor submits their email, a cookie is set and the bar won't appear again for that visitor for 365 days.
Can I show the announcement bar inside the cart drawer instead of on the page?
Yes — if you use the Vitals Cart Drawer app, there's a setting inside that app called "Show messages from the Announcement Bar app" that puts the bar inside the cart drawer. When this is on, the bar doesn't show on storefront pages.
What visual themes are available?
11 built-in themes: Standard (fully customizable colors), Autumn, Black, Blue Shapes, Gradient, Halloween, Hot, Hot Discounts, Shapes, Valentine, and Winter. Selecting any theme other than Standard applies a preset design that overrides the background color field.
Does the Orders Count bar update in real time?
No — the order count is fetched when the page loads and reflects your store's total orders at that point. It doesn't update live during a browser session.
Can I translate the bar message for multi-language stores?
Yes — Vitals supports store translations for announcement bar messages. You can provide translated versions of the message text for each locale your store supports. The error messages for the Email Capture bar ("Your email is already registered." and "Invalid email address!") are also translatable directly in the module settings.