Offers & discount codes

The offer is the handshake: sign up, get something real. Janus mints genuine Shopify discount codes, unique per subscriber if you want, with expiry, minimums and combinability under your control.

An offer step showing a unique code with a copy button
The offer step: a freshly minted unique code, tap-to-copy.

Offer types

TypeDisplays asNotes
Percent off"10% off"The default.
Amount off"$10 off"Fixed dollar discount.
Free shipping"Free shipping"
GiftYour titleA free product, minted as a 100%-off code scoped to the product variant you pick.

A title override renames any offer; that's what the {{reward}} variable renders in your copy.

Code modes

ModeHow it worksUse when
Unique (default)Janus mints a fresh single-use Shopify code per subscriber: your prefix + 8 random characters (e.g. GH-K2M9QX4A), usage limit 1, once per customer.You want codes that can't leak to coupon sites and analytics that tie each order to one signup.
SharedEveryone sees one static code you supply (e.g. WELCOME10).Simplicity beats exclusivity, or the code already exists in your marketing.
PoolJanus hands out codes one-by-one from a list you paste in (falls back to the shared code if the pool runs dry).Pre-generated codes from another system.

Offer parameters

Delivery: reveal modes & auto-apply

Tiers & escalation

Offers belong to tiers. base is the reserved fallback: what the email alone is worth. Add a boosted tier (or several) that game outcomes and engagement steps unlock: answer the quiz, spin the wheel, pick the right door, and a bigger offer mints instead. Each prize row in a game picks which tier it grants, and any prize can grant base, so no one walks away with nothing.

The offer editor

The offer editor with static and unique code paths
One editor everywhere: the wizard, the Discount element, and the campaign's offer list all open it.

The static path can pick any existing Shopify code (searchable) or create one without leaving Janus: value, applies-to collections, minimum purchase, usage limits, combinations and active dates, then ⚡ Create this code in Shopify. The unique path configures the minting rules above.

If something goes wrong

Offer delivery degrades gracefully, never fatally: if a unique code can't be minted (a Shopify hiccup), the visitor gets your shared code if one exists, otherwise a friendly "check your email" state. Codes are minted idempotently (a double-click can't issue twice), and multi-prize games issue each win exactly once. Housekeeping lives in Settings → Maintenance: one click sweeps expired, never-used codes out of your Shopify admin.

Signal for your flowsEvery issued offer fires a Popup Reward Issued event to Klaviyo: the trigger to build your welcome flow on. See Klaviyo.