Koru Countdown Bar

Urgency bar with fixed-date, evergreen, or daily countdowns — configurable without code.

Koru Countdown Bar is an urgency bar with a live countdown. Use it to support campaigns, limited-time offers, and recurring daily promotions.

All content — message, timer, colors, and button — is configured from Koru. You only add the integration code or install the VTEX app once.

You need a Website ID required and App ID required. Both are available in Koru under the app's Copy Code action / Integration Info section.

Installation

Choose the tab that matches your store. For VTEX IO, install the app; for any other platform, use the integration code.

The widget is installed as a Store Theme app and rendered with the countdown-bar block. Koru controls its content; the theme only contains the integration identifiers.

Add the app as a theme dependency

In your theme's manifest.json:

"dependencies": {
  "{vendor}.koru-countdown-bar": "0.x"
}

Replace {vendor} with the VTEX publisher account. Koru will provide the complete published App ID.

Declare the block where it should render

Declare countdown-bar in the corresponding theme block — header, footer, product page, or another template — with the Koru identifiers:

"countdown-bar": {
  "props": {
    "websiteId": "YOUR-WEBSITE-ID",
    "appId": "YOUR-APP-ID"
  }
}

Then add it as a child of the block where it should appear. For example, at the top of the header:

"header-layout.desktop": {
  "children": [
    "countdown-bar",
    "header-row#1-desktop",
    "header-row#2-desktop"
  ]
}

Use a #id for multiple instances

If the bar must appear in more than one place — for example, in the header and product page — declare each instance with its own #id and blockClass:

"countdown-bar#pdp": {
  "props": {
    "websiteId": "YOUR-WEBSITE-ID",
    "appId": "YOUR-APP-ID",
    "blockClass": "koru-pdp"
  }
}

That blockClass generates the countdownBar--koru-pdp handle used by CSS.

Koru stores one position per app. To render multiple simultaneous locations, select inline and control each instance through its blockClass.

Optionally adjust its shape with CSS

The bar inherits store colors and typography automatically. Shape-related properties such as radius, width, and sticky behavior belong in the theme CSS, targeting the instance handle. In the app override file (styles/css/<vendor>.koru-countdown-bar.css):

/* Compact rounded card for the product-page instance */
.countdownBar--koru-pdp {
  max-width: 350px;
  margin: 0 auto 20px;
  border-radius: 15px;
  overflow: hidden;
}
 
/* Header bar that stays at the top while scrolling */
.countdownBar--koru-header {
  position: sticky;
  top: 0;
  z-index: 1000;
}

Use direct handles (.countdownBar--…) in the app override file. Do not use :global() from another app's CSS file: the VTEX build rejects it.

Configuration and use

After installation, manage everything from Koru → Configure AppsKoru Countdown Bar. No additional website changes are required.

Timer type

Choose how time is counted:

Type (timer_type)BehaviorFields used
Fixed date (to-date)Counts down to an exact date and time. Use it for a one-time event or campaign.end_date
Daily (daily)Restarts every day and counts down to a fixed time.daily_end_time
Evergreen (evergreen)Counts a fixed duration from each visitor's first view and persists per visitor.duration_min

Position

Position (position)BehaviorRequires CSS?
top-stickyFull-width bar fixed at the top on every page. It offsets the store header instead of covering it.No
bottom-stickyFull-width bar fixed at the bottom.No
inlineRenders where the integration or VTEX block is placed.Yes, when a custom shape is needed

Content and button

FieldDescription
message_textMain bar message, for example “Limited-time offer”.
button_textCall-to-action label. Leave it empty to hide the button.
button_linkDestination URL for the button.
show_daysShows or hides the Days unit.
close_buttonAllows the visitor to close the bar; the choice is remembered for the session.
font_sizeMessage font size in pixels.

When the countdown ends

The on_finish setting controls what happens at zero:

Hide (hide)

The bar disappears. This is the default behavior.

Show a message (message)

The bar remains visible and displays finish_message.

Redirect (redirect)

The visitor is sent to finish_url.

Colors

Colors are intentionally optional. When they are not set in Koru, the bar inherits the store's background, text, and typography. To define an explicit palette, use bg_color, text_color, timer_bg, timer_text, button_bg_color, and button_text_color.

The button uses an urgency accent by default so it stands out. Override it with button_bg_color and button_text_color.

Troubleshooting

I changed a setting but cannot see it yet

Configuration changes may take up to one hour to propagate because of caching. Clear the browser cache when you need to validate immediately.

Does it affect site speed?

No. In VTEX, the widget is client-only and does not render on the server. On other platforms, the integration script uses async, so it does not block rendering.

The bar does not appear

Verify that the Website ID and App ID are correct and that the app is active for that website in Koru. Koru controls the license gate: an inactive website-app combination does not render the bar.

Koru Countdown Bar — Developers · Koru Suite