The reward email: sending the code through Klaviyo after confirmation
When your popup delivers the discount code only after email confirmation (Code delivery: Send the code after email confirmation), Klaviyo sends the email — from a flow that you or your agency maintain. PopUplift puts the personal code into the Klaviyo profile and never emails your customers itself.
Requirements
A popup with email delivery can't be published without these three things:
- a reward on the popup,
- an active Klaviyo connection (Settings → Integrations),
- a selected list with double opt-in. The confirmation email itself is a setting of that list in Klaviyo; you design it there once.
Instead of the code, the popup shows a note that the code arrives by email after confirmation. Adjust the text under What the popup says instead of the code. Don't promise a delivery time there — your flow decides when the email goes out.
The standard path: your welcome flow
With a double opt-in list, Klaviyo only adds a contact to the list after confirmation. A flow triggered by Added to list therefore starts at exactly the right moment. Insert the code in its email through the profile property:
| Property | Content |
|---|---|
{{ person.popuplift_offer }} | the personal discount code |
{{ person.popuplift_offer_text }} | name of the offer |
{{ person.popuplift_discount }} | formatted percentage, e.g. “5 %” |
{{ person.popuplift_discount_value }} | percentage number, e.g. 5 |
The two discount fields only exist for percentage rewards. The property always holds the most recently issued code — exactly right for a welcome series.
Two things make it reliable:
- A short delay at the top of the flow (a few minutes), so the property has certainly arrived before the first email starts.
- Fallback text for other signups. Someone who signs up through the footer form or at checkout has no PopUplift code. Provide a matching fallback code and text for those contacts — or add a split as described in Your welcome flow.
Alternative: a flow on the event
PopUplift also sends Klaviyo the event PopupLift Reward Released — exactly once per visitor, after they confirmed their email address. The metric shows up in your trigger selection once it has been sent at least once. Only a flow with this trigger has the event variables:
| Variable | Content |
|---|---|
{{ event.code }} | the personal discount code |
{{ event.discount_url }} | one-click link: applies the code and takes the visitor to the shop |
{{ event.reward_name }} | name of the offer |
{{ event.expires_at }} | the code's expiry date |
In a list-triggered flow, {{ event.… }} variables stay empty. If you use both flows, make sure they don't both send a discount email.
Checking your reward flow
PopUplift doesn't create reward flows in Klaviyo. The email always comes from a flow owned by you or your agency. Where available, Set up Klaviyo emails under Code delivery adapts an existing welcome flow for you: you review the suggested changes first and apply them yourself. With exactly one matching flow, the dialog opens straight on the prepared review; one checkbox and Apply are enough. If the flow is already live, its next emails change immediately — you confirm that explicitly. Afterwards Undo these changes restores the original emails as long as nobody edited them in Klaviyo since. Switching an email between live, manual and draft does not count as an edit; undo keeps the status you chose. If undo skips edited emails, the details name what changed, and Keep current Klaviyo state closes the change without writing anything to Klaviyo. If the flow was deleted or archived in Klaviyo, there is nothing left to undo and the change is closed. The result stays visible for seven days, also after a reload.
The Reward delivery flow card appears in the Opt-in step (and in the editor's Klaviyo area) once Klaviyo is connected, the selected list uses double opt-in, and Send the code after email confirmation is chosen. It looks for your flow on the selected list or on the event PopupLift Reward Released and shows its name under Checked flow. Below are two status lights, each with one badge: Reward flow (Live ✓ or Draft) and Code variable (Present ✓ or Missing). If the code is missing, the card names the variable that belongs in one of the emails: {{ person.popuplift_offer }} in a list flow, and {{ event.code }} as well in a flow on the event. If it finds no flow, Reward flow shows the badge None found. If Klaviyo could not return some flows or emails, the badge says Unknown instead of giving the all-clear — just check again. It checks at most 40 flows and the first 12 emails of each flow; the card says when a limit applies. Check again re-checks right away; otherwise the result can be up to five minutes old. The lights don't block publishing.
PopUplift never switches a flow live for you — you decide that in Klaviyo. As long as it is a draft, no confirmed visitor receives their code.
If PopUplift created a flow “PopupLift – send confirmed reward” for you earlier, it stays yours. Its email contains a block marked POPUPLIFT REWARD BLOCK — DO NOT REMOVE with {{ event.code }}. If you delete it, the email goes out without a code.
After publishing
PopUplift can't always check an external flow itself. In that case you see Reward email: not verified after publishing — the popup is live anyway. Then check in Klaviyo:
- Is the flow live (not a draft)?
- Does it react to the right list or to PopupLift Reward Released?
- Is the code in the email (
{{ person.popuplift_offer }}or{{ event.code }})? - Are sender and sending domain set up and activated in Klaviyo? An account without a sender sends nothing, often without an error message.
The safest check is a test run with your own address — see Popups and templates.