Klaviyo
Connect Klaviyo with a private API key. TierWise then sends every event to Klaviyo and keeps each customer's tier and progress on their profile.
Connecting
- Create a private API key in Klaviyo with Events: Full access and Profiles: Full access.
- Paste it under Connect Klaviyo on the Integrations page and press Connect. Every synced customer's figures are written to their profile.
- Press Send test events on the same page, so the seven events appear in Klaviyo before a real order fires one.
Do this before you press Launch in Setup.
The seven events
Each arrives as a metric named TierWise: …, against the customer's email, with these properties.
| Event | When it fires | Properties |
|---|---|---|
| TierWise: Reward code issued | A customer just earned a discount code, and it's ready to use. | Reward code, Reward value, Reward expires on, Tier name |
| TierWise: Reward code about to expire | An unused code is a few days from expiring. You choose how many days in Settings. Once per code. | Reward code, Reward value, Reward expires on, Days left, Tier name |
| TierWise: Reward code used | A customer spent one of their codes on an order. | Reward code, Reward value, Order name |
| TierWise: Tier reached | An order moved a customer up a tier, or into the club. | Tier name, Previous tier name, Spend this year |
| TierWise: About to lose tier | Once in December, for each member the January review would move down or out. | Current tier name, Tier in January, Spend this year, Spend needed to keep |
| TierWise: Tier lost | The January review moved a member down a tier, or out of the club. | Previous tier name, New tier name, Spend last year |
| TierWise: Campaign code issued | A member was given a code by a campaign you ran from the app's Campaigns page. Once per member. | Campaign name, Reward code, Reward value, Reward expires on |
Values look like SILVER-7K2M9Q, 15% off or $10.00 off, 2026-12-31, your tier names, or None where there is no tier.
Profile properties
Written to the customer's Klaviyo profile when you connect, and again after every order, so they always show the current figures.
| Property | Meaning | Example |
|---|---|---|
tierwise_tier | Current tier, by name; empty for a non-member | Silver |
tierwise_tier_key | The same as a stable key, which survives a rename | tier-1 |
tierwise_spend_this_year | Qualifying spend in the current calendar year | 210 |
tierwise_next_tier | The tier above, by name; empty at the top | Gold |
tierwise_amount_to_next_tier | Spend still needed to reach it this year | 290 |
tierwise_amount_to_next_reward | Spend still needed for the next reward code; empty when the tier gives none | 90 |
tierwise_unused_reward_codes | Codes the customer holds and hasn't used | 1 |
tierwise_joined_on | The day they first reached a tier | 2025-05-08 |
tierwise_campaign_code | Their code from the latest campaign you ran; empty until one has | SUMMER-7K2M9Q |
tierwise_campaign_name | That campaign's name | Summer sale |
tierwise_campaign_expires | The last day that code works; empty when it never expires | 2026-11-26 |
Emailing a campaign code
When you run a campaign, every member gets their own code and Klaviyo hears about it two ways. Pick whichever suits you:
- A flow on the metric
TierWise: Campaign code issued, with an email that uses{{ event['Reward code'] }}and{{ event['Campaign name'] }}. Build it once; every campaign after that is just Create codes in TierWise, and each member is emailed as their code is made. - A campaign email, sent when you like: once the run has finished, create a Klaviyo campaign to a segment where
tierwise_campaign_nameequals your campaign's name, and put{{ person|lookup:'tierwise_campaign_code' }}where the code goes. No flow needed, and you can schedule it or test subject lines.
Either way each member gets one email with their own code. Klaviyo bills by profiles, not by email, so a campaign to every member costs nothing extra.
Shopify Flow
The same seven events are also Shopify Flow triggers. See Shopify Flow.
Good to know
- Test events use values such as
TEST-CODE-1234, so they're easy to spot and exclude. - Codes are still issued without Klaviyo. If Klaviyo is down or disconnected, customers still see their codes on their Rewards page; the Integrations page shows the last send that failed.
- The key is stored encrypted and never shown again, beyond its last four characters. Disconnecting stops TierWise using it; the key itself stays in Klaviyo.