Integration

Pixoo and Klaviyo

Sync your discount activity into Klaviyo for segments and flows, and deliver a unique discount code inside a Klaviyo email with the combinability rules you set in Pixoo. Included on every plan, no API keys to copy.

Overview

What this integration covers

Two separate jobs. Most stores end up using both, but they are set up independently.

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.

Setup

Connect your account

Authorisation happens in Klaviyo, so there is no private API key to copy or store.

  1. 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. 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. 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.

Reference

Events Pixoo sends

Branded metrics, so they are easy to find among your other sources. Amounts are always in the currency of the order.

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.

Guide

Send a unique code in a Klaviyo email

One code per recipient, single use, delivered by your Klaviyo flow or campaign. Two routes, both available today on every plan.

Which route to pick

 Upload a poolGenerate per trigger
NeedsNothing beyond Pixoo and KlaviyoShopify Flow and the Klaviyo connector
SetupExport a CSV, import it onceBuild a workflow once
CodesKlaviyo hands out codes from the pool you uploadedA fresh code is minted at the moment of the trigger
Watch outRuns out. A flow skips the recipient, a campaign refuses to sendNever 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. 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. 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 Code and Used.

    Before importing, rename the Code header to Coupon Code. Klaviyo only picks up a column headed Coupon or Coupon 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. 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. 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. 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. 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. 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. 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, alongside discountTitle. 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.

Support

Troubleshooting

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.