Skip to content

3. Campaigns & banners

What's the difference?

  • Banner = the colored strip across the top of every page on the storefront. One at a time, dismissable for that browser session.
  • Campaign = a limited-time offer with a coupon code, optional free shipping, a discount, etc. A campaign can include a banner but doesn't have to.

Creating a campaign

Marketing → Campaigns → New campaign.

Fields:

Field What it does
Handle URL slug. The campaign has its own page at /sv/campaigns/<handle> if you want to promote it.
Name Customer-facing title ("Sommarrea 2026").
Coupon code The code customers type in checkout. Case-insensitive. Leave empty for no-code (auto-applied to everyone).
Discount type Percent (e.g. 15% off) or Fixed (e.g. 100 SEK off).
Discount value The number.
Free shipping Toggle. When on, shipping is free regardless of region.
Min order amount The cart must reach this much (incl VAT) for the coupon to apply. If a customer types the code with too-low cart, we show "add X SEK more to unlock" - we don't silently fail.
Min order currency What currency the threshold is in.
Starts at / Ends at Window of validity. Set both for a time-bound promo.
Active Master switch. Off = nobody sees the coupon.
Regions Which markets this applies to. Empty = all regions.
Show in nav Add a link in the header dropdown under KAMPANJER.

Targeting specific collections

On the edit page, Collections tab - pick which collections the coupon applies to. Customers buying products outside these collections won't get the discount on those items.

If empty, the coupon applies to all products.

Translations

Translations tab - per-locale name, description, terms. Empty fields fall back to the default text.


Creating a banner

Marketing → Banners → New banner.

Field What it does
Message The short copy shown in the strip ("Fri frakt på beställningar över 999 kr"). Keep it under 80 chars.
Link Where it sends customers when clicked. Can be /campaigns/<handle>.
CTA label The button text ("Läs mer").
Background Colour or gradient. We have a "brand gradient" preset.
Active On = shown to all visitors who haven't dismissed it.
Starts/Ends at Time window.
Regions Which markets see it.

Only one banner is shown at a time - the most recent active one wins. Customers can dismiss it (the ✕ button); we remember that for their session only, so it reappears next visit (unless you turn it off).


Coupon UX rules

When a customer types a coupon code:

  • Code doesn't exist → "Ogiltig kupong".
  • Code expired or inactive → "Kupongen är inte aktiv just nu".
  • Code valid but cart under min_order → coupon is attached anyway, cart shows "Lägg till X kr mer för att låsa upp 15% rabatt". Don't silently reject - it confuses customers who don't realise why their code isn't working.
  • Code valid + min met → discount applied, line items show savings.

The same coupon can be used multiple times by the same customer unless we explicitly mark it single-use. If you need single-use, ask the dev team to wire it up.


Free shipping threshold

Two ways to give free shipping:

  1. Per-campaign: a campaign with "Free shipping" on and a coupon code. Customer types the code, shipping drops to 0.
  2. Shop-wide threshold: Settings → Settings → "Free shipping minimum (SEK)". Once set, every cart that hits the threshold gets free shipping automatically - no coupon needed.

The shop-wide threshold is what Nina set up; we tell the customer in checkout "Add X kr more for free shipping".


CMS pages (for marketing landing pages)

If you want a freeform page (blog post, info page, terms of service) that isn't tied to a product or brand, use Marketing → Pages → New page:

  • Handle - slug (/sv/pages/<handle>).
  • Title + Body (Markdown).
  • Cover image - used as a hero if you set one.
  • Publish - toggle on to make live.
  • Translations - per-locale variants.

For consistency, use the page editor (don't put long-form text in a product description).


Common gotchas

  • Setting "Active" off doesn't stop in-flight orders. Customers who already added discounted items to their cart still see the discount until they close their tab. New visitors see nothing.
  • Region scoping is opt-in to RESTRICT. Empty regions list = all regions see the campaign.
  • Coupon codes are case-insensitive. "SUMMER25" and "summer25" work the same.
  • Min order is INCLUSIVE of VAT. A 999 SEK threshold means the cart total (with 25% VAT) is ≥ 999, not the net.