Sync discount events
Pixoo pushes branded events into Klaviyo whenever a discount is activated, codes are generated, or a shopper redeems a code. Each one carries the amount in the currency the shopper actually paid in, never converted. Use them to trigger flows and build segments.
Set up in Pixoo, one authorisation.
Deliver a unique code
Give each recipient a code nobody else can use, generated in Pixoo so it keeps your combinability rules and your per currency amounts. Either upload a pool of codes to Klaviyo, or mint one at the moment of a trigger with Shopify Flow.
Two routes, both on every plan.
- 1
Open Integrations in Pixoo
In your Shopify admin, open Pixoo and go to Integrations. Klaviyo is the first card. Click Manage to open its page.
- 2
Authorise Pixoo in Klaviyo
Click Connect Klaviyo. You are sent to Klaviyo to approve access, then straight back. You need an owner, admin or manager role on the Klaviyo account to approve it.
Klaviyo may warn that the app has not yet been reviewed by them. That notice is about their review queue, not about your data, and it does not restrict what the integration can do.
- 3
Check the events arrive
Activate a discount in Pixoo, then open Analytics, Metrics in Klaviyo. The Pixoo metrics appear as soon as the first event lands. Events created before you connected are not backfilled.
Pixoo Multi-Currency Discount Activated
- Fires when
- A discount with values in more than one currency goes live. A single-currency discount does not fire it.
- Properties
- Discount Id, Discount Type, Method, Default Currency, Currency Values Count, Discount Value Type, Markets Count, Has End Date, Currencies, plus one Discount Value XXX per configured currency
- Profile
- The store owner, not a shopper.
Pixoo Discount Code Generated
- Fires when
- A batch of codes finishes generating, once per job.
- Properties
- Codes Generated, Discount Id
- Profile
- The store owner, not a shopper.
Pixoo Discount Code Redeemed
- Fires when
- A shopper uses a Pixoo discount code at checkout.
- Properties
- Discount Id, Discount Code, Currency, Discount Value, Discount Value Type, Savings Amount, Order Value, Order Number
- Profile
- The shopper who redeemed it. Savings Amount is also sent as the Klaviyo event value, in the currency paid, so it feeds revenue and CLV reporting.
Pixoo Free Gift Added to Cart, and Pixoo Free Gift Redeemed
- Fires when
- A gift line is auto-added to the cart, then again when the order completes.
- Properties
- Discount Id, Discount Title, Gift Product Title, Gift Variant Id, Gift Quantity, Currency, Savings Amount, Order Id, Order Number
- Profile
- The shopper.
Read this before building a welcome flow
Pixoo Discount Code Generated carries a count, not a code. It tells you that a batch finished, which is useful for internal alerts, but a Klaviyo flow cannot pull a code out of it to put in an email.
To send an individual code to an individual customer, use one of the two routes below. Both work today, on every plan.
Which route to pick
| Upload a pool | Generate per trigger | |
|---|---|---|
| Needs | Nothing beyond Pixoo and Klaviyo | Shopify Flow and the Klaviyo connector |
| Setup | Export a CSV, import it once | Build a workflow once |
| Codes | Klaviyo hands out codes from the pool you uploaded | A fresh code is minted at the moment of the trigger |
| Watch out | Runs out. A flow skips the recipient, a campaign refuses to send | Never runs out |
If you are sending a welcome flow and want the simplest setup, start with the pool. If you cannot afford a message to be skipped, or the code depends on something that just happened, use the trigger route.
Route A: upload a pool of codes
- 1
Create the discount and generate codes in Pixoo
Create a discount with the Bulk discount codes method. Set your amounts per currency, your combinability and any market restrictions, then generate enough codes to cover the send.
- 2
Export the codes and rename one header
Open the discount, click View all codes, then Export. You get a CSV with one row per code, under the headers
CodeandUsed.Before importing, rename the Code header to Coupon Code. Klaviyo only picks up a column headed
CouponorCoupon Code, and finds nothing otherwise. Leave the second column in place, Klaviyo ignores columns it does not know.We keep the export as it is on purpose. Merchants have their own spreadsheets and scripts reading this file, and changing its columns to suit one destination would break them. If this rename becomes a chore for you, tell us and we will add a Klaviyo-ready export.
- 3
Import them into Klaviyo
In Klaviyo, go to Coupons, open the Uploaded Coupons tab and choose Create Uploaded Coupon. You give it a name, an expiry date, and a minimum coupon count, which Klaviyo requires to be between 100 and 5,000 and defaults to 500. That threshold is when Klaviyo warns you the pool is running low, so generate at least that many codes in Pixoo.
Then, next to that coupon, use the three dots menu and Add codes to drop in your CSV, and confirm with Import Coupons. Klaviyo reports how many codes were accepted and how many were skipped as duplicates.
- 4
Reference the coupon in your message
Insert
{% coupon_code 'YourCouponName' %}in the email or SMS. Klaviyo assigns a different code to each recipient from the pool.
Keep the pool topped up
Running out is handled differently depending on where you send from. In a flow, a message whose coupon has no code left is skipped for that recipient, and a flow email whose coupon is already at zero cannot be turned live at all. In a campaign, Klaviyo warns you and refuses to send.
Check the remaining count before a large send, then use Generate more codes in Pixoo, export again and add the new codes to the same coupon rather than creating a second discount.
Note that Klaviyo gives one person a single code per coupon, so a repeat recipient sees the same code again rather than a new one.
Route B: generate one code per trigger
This route mints the code at the moment something happens, so it never runs out. You need the free Shopify Flow app and the Klaviyo connector installed on your store.
- 1
Create the bulk discount in Pixoo
Same as above: Bulk discount codes method, with your amounts per currency and your combinability. A small starter batch is enough, the workflow adds codes as it goes.
Note the exact discount title. The Flow step matches on it, and it is case sensitive.
- 2
Add the trigger in Shopify Flow
Pick whatever should earn the code: a customer subscribing, an order paid for a specific product, a customer tagged VIP.
- 3
Add the Pixoo action
Add the action Pixoo: Generate unique discount code. Fill in the Pixoo discount title exactly as it appears in Pixoo, and optionally a code prefix such as
VIP-. The step mints one code on that discount and returns it to the rest of the workflow. - 4
Send it to Klaviyo
Add the Klaviyo connector action Track an event. Name the event something you will recognise, then put the generated code in the event properties. The Pixoo step exposes it as
code, alongsidediscountTitle. In Klaviyo, trigger a flow on that metric and insert the code as event data.The Klaviyo connector expects valid JSON in the properties box. If the JSON is malformed the step still succeeds but no data reaches Klaviyo, and the email renders an empty value.
Why mint the code in Pixoo either way
Klaviyo can create Shopify discount codes on its own, but those codes are created by Klaviyo, so the discount rules are Klaviyo’s. That is where most stores hit a wall: you cannot set how the code combines with your other discounts, and you cannot give it a different fixed amount per currency.
Both routes above keep the discount yours. Whether Klaviyo hands out a code from a pool you uploaded or Shopify Flow mints one on demand, the code belongs to a Pixoo discount and carries the rules you set on it: how it combines with product, order and shipping discounts, the exact amount in each currency, the markets it applies to, and its usage limits. Change the rule once on the discount and every code issued afterwards follows it.
You do not need a second discount app
If your email platform suggested installing a separate combinations app to control how its generated codes stack, this is the alternative. The discount and its rules stay in Pixoo, and Klaviyo only delivers the code.
- No Pixoo metrics in Klaviyo
- Metrics only appear once the first event lands, and past activity is not backfilled. Activate a discount or redeem a test code, then look again.
- The Flow step reports an error about the discount
- The message names the cause. No discount with that title means the title does not match exactly, and titles are case sensitive, so check whether the discount was renamed. Several discounts sharing a title means you need to make it unique. The action also refuses an expired discount, and refuses one that is not a bulk discount, since a single code discount has nothing to add a code to.
- Klaviyo skipped some recipients
- On the pool route this usually means the coupon ran out of codes. You can confirm it in Klaviyo under Recipient Activity, in the Other tab. Generate more codes in Pixoo, export again and add them to the same coupon.
- The preview shows the coupon name instead of a code
- That is expected. Klaviyo does not consume a real code to render a preview, so it shows the coupon name followed by -PREVIEW. Send yourself a real test to see an actual code.
- The email arrives without a code
- Check the properties box on the Klaviyo connector step. If the JSON is not valid the step still succeeds but sends nothing, so the email renders an empty value.
- The code does not apply at checkout
- Check the discount itself in Pixoo: its schedule, its market restrictions, and whether the currency the shopper is paying in has an amount set. A discount with no value for that currency can be set not to apply at all.
Still stuck? Email support@pixoo.app with your store domain and the name of the workflow, and we will look at it directly.
Related reading: connecting Pixoo to Klaviyo and automating unique codes with Shopify Flow.