PopUpliftHelp

Rewards and codes — what visitors get and how the code reaches them

A reward is the offer behind your popup: a discount, free shipping, or a code you already have in Shopify. PopUplift creates the matching Shopify discount codes itself, attributes every order using that code to the popup, and cleans up old codes afterwards.

Create a reward

Under Rewards, or right in a popup's Reward step via Create reward. There are four types:

TypeUse it for
Percentagea percentage off eligible items, e.g. “10 % off everything”
Fixed amountan amount in your shop currency, e.g. “€10 off orders over €50”
Free shippingshipping on the house
Static codea code that already exists in Shopify — PopUplift only displays it

Then give the reward a Name. It appears in the popup wherever you insert dynamic reward text, and in the Klaviyo profile as the name of the offer.

Settings

  • Applies to — all products, or a selection of products or collections (via Shopify's product picker). For free shipping, the reward applies to shipping.
  • Minimum order value (optional) — in your shop currency. Empty means no minimum.
  • Codes expire — how long a code stays valid, counted from when it is issued. With email delivery that is the signup in the popup, not the email arriving: someone who confirms late has correspondingly less time left. New rewards start with 30 days; you can change the period or switch it off.

Under Advanced settings:

  • Code generation — Unique, code generated per lead (recommended) or Static, one fixed code for everyone.
  • Prefix and Random length — the pattern of unique codes, e.g. SAVE- plus four characters. The random part leaves out easily confused characters such as O/0 and I/1.
  • Usage limit per code (optional) — leave it empty and every code can be redeemed exactly once. Optionally add Can only be redeemed once per customer.
  • Other order discounts, Product discounts, Shipping discounts — which other discounts the code combines with. A free-shipping code cannot combine with another shipping discount; Shopify itself rejects that.
  • Shopify discount organisation — where available for your shop, all unique codes of a reward are grouped under one Shopify discount instead of separate entries. Every visitor gets their own code either way.

For a static code, usage limits, expiry and combinations are managed on the discount in Shopify — PopUplift doesn't change them. The code must exist in Shopify; PopUplift does not check for typos.

Unique codes or one code for everyone?

Unique codes are the better choice for almost every popup: each visitor gets a personal code that can't meaningfully be shared, and every order is clearly attributed to a popup lead.

One fixed code for everyone is right when you deliberately want everyone to see the same code. Two consequences to know:

  • PopUplift attributes every paid order using this code to the popup — even if you also share the code in a newsletter or on social media. Use a code for the popup that you don't use anywhere else.
  • A fixed code can belong to only one running popup. If it is already attached to another one, PopUplift blocks publishing with “This discount code is already assigned to another popup”.

How the code reaches the visitor

Under Code delivery (in the Opt-in step of setup) you choose one of three ways:

  1. Show the code in the popup — the code appears at the end, right in the popup. Always works and needs no email.
  2. Send the code after email confirmation — the code arrives by email once the visitor has confirmed their signup. Needs a Klaviyo list with double opt-in and a flow that sends the code. Klaviyo sends the email from your flow, not PopUplift. Details: The reward email.
  3. Send the code via WhatsApp — PopUplift opens WhatsApp, and your own WhatsApp automation sends the code. This needs a WhatsApp action in the popup and a reward with a fixed code, because an external automation doesn't know unique codes. PopUplift can't confirm that the message was sent. More in Klaviyo, SMS and WhatsApp.

A reward without a Reward code element. With Show the code in the popup, only a Reward code element hands the code out. If your popup has none, but its text promises a code ("Check your email for your discount code"), PopUplift delivers nothing: only your own Klaviyo flow can send it. Publishing then asks you to confirm that a flow on your popup's list sends the code. Write the fixed code into that email. If PopUplift has switched on the profile code for your store, the publish check says so: new subscribers then get the fixed code as popuplift_offer, and the flow can use {{ person.popuplift_offer }}. A unique code is only handed out when the popup shows it; add a Reward code element for that.

Apply code automatically at checkout

The switch sits in the Reward tab, directly under the reward choice — in setup, in the editor and in a test variant's editor. When it's on, the code goes straight into the visitor's checkout session after they claim it, via Shopify's own discount link, so nobody has to copy it. The code stays visible either way.

  • The popup only says “applied” when Shopify confirms. PopUplift's own line (“Your discount is already applied at checkout”) appears only after the shop confirmed the code. If Shopify rejects it, the visitor sees the code to copy instead. Under Preview you can switch between Shopify confirms and Shopify rejects to see both.
  • Your own text is never changed. If a text of yours promises “already applied” without depending on that confirmation, the switch shows a warning with an Edit text link.
  • Default: new popups with a code in the popup start with the switch on. Existing popups keep their setting.
  • When the switch is off or unavailable: without a reward, or when the code is sent by email or WhatsApp, there is nothing to apply in the browser. A popup without a reward code element has no code to apply either; the switch says so and links to adding one.
  • All ways a code is given out follow the same switch: the reward code element, a button's reward dialog and a lesson reward. Tracks apply the code only when the visitor taps their own Apply button.
  • A/B tests: the switch belongs to each variant. When variants differ in auto-apply, the test shows it, because it can change the result.

When Shopify can reject or skip the code:

  • Empty cart: Shopify keeps the code for the session and applies it once something is in the cart.
  • Theme with its own cart drawer: some themes show the discount only after the cart reloads; the checkout still has it.
  • Minimum order value or discount combinations: Shopify rejects the code until the cart qualifies. The code stays visible to copy.
  • Another code already in the cart: whether both apply depends on the combination settings of your discounts.
  • Express checkout (Shop Pay, Apple Pay, Google Pay) can skip the session discount; the visitor can still enter the visible code.

What happens in the background

  • Pool. For every reward with unique codes, PopUplift creates up to 50 codes in Shopify ahead of time and tops them up once fewer than 20 are left. That way visitors get their code without waiting. If the pool is ever empty, the code is created live on the spot.
  • Your discount list in Shopify therefore fills up with entries starting with “PopUplift ·”. That's how you recognize and filter them.
  • Changes. When you change a reward, PopUplift replaces the codes that haven't been handed out yet. Codes already issued keep their terms. So always change the terms in PopUplift, never directly on the Shopify discount.
  • Cleanup. PopUplift deletes its own Shopify discounts again: expired, never-used codes 7 days after expiry, redeemed codes 90 days after redemption. Codes a visitor can still redeem are never removed. PopUplift never touches your own discounts.

When a code doesn't work

The most common reasons — minimum order, expiry, product selection, combinations, or a static code that doesn't exist in Shopify — are covered in Troubleshooting.

Still stuck? Write to us — we answer fast. support@popuplift.com