Skip to main content

How do I connect Subi with Klaviyo?

Connect Subi to Klaviyo to sync subscribers into a Klaviyo list and send subscription events you can use in flows and segments.

Subi's Klaviyo integration keeps your subscription audience and activity in sync with Klaviyo. Once you connect Klaviyo, Subi automatically adds your subscribers to a dedicated Klaviyo list and sends subscription events, like a subscription starting, pausing, or a payment failing, as Klaviyo metrics, so you can build segments, campaigns, and flows around your subscribers without exporting and importing anything by hand.

How to connect Subi to Klaviyo

In your Shopify admin, open Subi → Settings → Integrations → Klaviyo. If you haven't connected yet, you'll see two ways to connect:

  • Connect Klaviyo (recommended). Click Connect Klaviyo, sign in to Klaviyo, and approve access. This is the quickest way and keeps the connection secure — you never have to copy any keys.

  • Use API keys instead. Prefer to use keys? Click Use API keys instead. A Connect with API keys window opens: paste your Public API Key and Private API Key, then click Connect to Klaviyo. You'll find both keys in Klaviyo under Settings → API keys. If Klaviyo rejects the keys, the window shows the error so you can correct them; Cancel closes it without saving.

Klaviyo comes with the Subi and Subi Plus plans. On another paid plan, you can add Klaviyo on its own for $19 a month: the Klaviyo page says Klaviyo isn't on your plan, so click Upgrade your plan and choose Buy Add-on, or Upgrade to Subi if you want the whole plan. On the Free plan, the Klaviyo page shows which plan it comes with and an Upgrade your plan button instead of the connect options.

What Subi syncs to Klaviyo

As soon as you connect, Subi syncs your subscribers into Klaviyo:

  • Creates (or reuses) a Klaviyo list named Subi in your account.

  • Adds your subscribers who have an email address to that list as Klaviyo profiles, and keeps adding new subscribers as they sign up. The list can also hold customers who have never subscribed, if Subi already has them on record for your store, for example customers who joined your store after you turned on Subi’s loyalty program.

  • Matches customers by email, so existing Klaviyo profiles are updated rather than duplicated.

On each synced profile, Subi also keeps seven subscription properties up to date, so you can build segments on them:

  • subi_subscription_state says where the customer stands with your subscriptions. It is active if they have at least one active subscription, paused if none is active and at least one is paused, cancelled if every subscription they had has ended, and none if they have never had one.

  • subi_active_subscriber is true when the customer has at least one active subscription.

  • subi_active_subscription_count is how many active subscriptions they have.

  • subi_paused_subscription_count is how many paused subscriptions they have.

  • subi_next_billing_date is the date of their next subscription order, the earliest one across their active subscriptions.

  • subi_subscriber_since is the date their first subscription with your store was created. If you moved your subscribers to Subi from another app, it can be the date of the move.

  • subi_last_subscription_ended_at is the date their most recent subscription ended. It is filled only when the customer has no active or paused subscription left, and empty otherwise.

The state values are written in lowercase, exactly as above (cancelled has two l’s, unlike the Canceled Subscription event), and the dates as year, month and day. Subi updates these properties when one of the customer’s subscriptions starts, is paused, resumed, skipped, cancelled or expires, after each order, and when a subscription’s status is changed in the Shopify admin. A few date changes reach Klaviyo later, such as a skip applied by payment recovery, a date changed with Reschedule or a date changed in the Shopify admin; they are listed under Sending a reminder earlier or later than 3 days, below. When you first connect Klaviyo, Subi fills these properties in for every customer with an email address that Subi has on record for your store.

Subscription events Subi sends

Beyond the list, Subi sends subscription events to Klaviyo as they happen. Each event becomes a Klaviyo metric you can trigger flows on. In the Events sent to Klaviyo section, the events are grouped into Contract events, Billing events, and Payment recovery events. You can turn each event on or off, use Send test to make a metric appear in your Klaviyo account before any real event fires, and use View example payload to see the exact data each group sends.

Subi's Events sent to Klaviyo settings showing the Contract events, Billing events, and Payment recovery events sections with per-event toggles

Contract events follow the life of a subscription. In Klaviyo they arrive as:

  • Started Subscription — a customer starts a new subscription.

  • Canceled Subscription — a subscription is cancelled.

  • Paused Subscription — a subscription is paused.

  • Resumed Subscription — a paused subscription resumes.

  • Subscription Skipped — a customer skips their next order.

  • Subscription Expired — a subscription expires.

Billing events cover the outcome of each billing attempt:

  • Subscription Billing Succeeded — a subscription order is billed successfully.

  • Subscription Payment Failed — a subscription payment fails.

Payment recovery events tell you how the recovery of a failed payment concluded. The Payment recovery ended event arrives in Klaviyo as the Subscription Recovery Ended metric.

Subi sends Subscription Recovery Ended only when payment recovery ends without the payment being recovered — the last retry has been used and the fallback action (pause, cancel, or skip) has been applied to the subscription, or you've marked the recovery as lost. If the payment is recovered, you get Subscription Billing Succeeded instead, so the two metrics never overlap. The event carries the subscription's details plus a summary of the recovery — why the payment was declined, when the recovery started and ended, how many retries were used, and which action was applied — everything a flow needs to send the right message. To learn how recovery itself works, see How do I recover failed subscription payments with Smart payment recovery?

Subi also sends one event automatically, without a toggle:

  • Upcoming Subscription Order — sent 3 days before a customer's next subscription order is due.

Checking what's been sent

To confirm everything is flowing, open Event history from the integration's More actions menu. It lists every event Subi has sent to Klaviyo, which customer it was for, and whether it succeeded.

Subi's Klaviyo event history page listing events sent, customers, and statuses

Restarting a canceled subscription from your Klaviyo flow

The Canceled Subscription event carries a property called winback_url. It is a ready-made link that brings that exact subscription back, so your win-back flow can give the customer a one-click way to return.

To use it, insert the property into your email the same way you would any other Subi property, for example as a button link in your win-back flow.

What to expect from the link:

  • It is on every Canceled Subscription event. In the rare case the link could not be issued, the property arrives empty — add a condition to your flow so the email never goes out with a dead button.

  • It restarts the subscription at its current price, with no discount attached. If you want to offer a discount, add it in your Klaviyo flow — the link itself carries none.

  • It stays valid for 30 days from the cancellation.

  • Each cancellation gets its own link. If the same subscription is canceled again later, the newer event carries a new link and the older one stops working.

  • Once a customer uses it, it cannot be used a second time.

  • After 30 days, or once it has been used, the customer sees a short page telling them the link is no longer valid, with a way to log in to their subscriptions instead.

📘 Note: the link does not ask the customer to log in, so treat it like a password. Anyone who has it can restart that subscription and its recurring charges. Send it only to the customer whose subscription it belongs to.

Letting customers skip, pause or delay an order from your reminder email

Can customers skip, pause or delay their next order straight from your Klaviyo reminder? Yes. The Upcoming Subscription Order event, which Subi sends 3 days before an order, carries three properties: skip_url, pause_url and delay_url. Each is a ready-made link for that customer's subscription and that upcoming order, so your reminder email can offer a one-click button for each action.

What each link does:

  • skip_url skips the upcoming order, and the next order moves one billing interval later. On a monthly subscription with an order on October 10, the next order becomes November 10.

  • pause_url pauses the subscription for two orders, and it starts again on its own. On a monthly subscription with an order on October 10, no orders are made on October 10 and November 10, and orders start again with the December 10 order.

  • delay_url moves the upcoming order 7 days later. An order on October 10 moves to October 17.

Opening a link changes nothing by itself. The customer lands on a page in your customer portal that asks them to confirm: Skip your next order?, Pause this subscription? or Delay your next order by a week? The page shows the order date and the date it will move to, and the subscription changes only when the customer confirms.

To use the links, insert each property into your email the same way you would any other Subi property, for example as a button link in your reminder flow.

When a link arrives empty:

Subi sends a link only when your Customer permissions settings for the customer portal would let that customer take that action on that subscription at the moment the event is sent. Otherwise the property arrives empty, so add a condition to your flow that shows each button only when its property is not empty.

  • skip_url is empty when Customer can skip their upcoming delivery is off, or when Limit number of skips is on and the customer has already used their Maximum skips. It is also empty when Set limitation to skip subscription is 4 days or more: the event is sent 3 days before the order, which is already inside that limit. With the limitation at 3 days or fewer, the link is sent.

  • pause_url is empty when Customer can Pause/Resume their subscription renewal is off, or when Paused subscriptions start again on a date the customer picks when pausing is off, because the link pauses with a set restart date. It is also empty when the subscription's plan has a Cancellation Policy and the customer has not yet made the number of successful payments it requires.

  • delay_url is empty when Customer can Reschedule their subscription is off, which is the default. It is also empty when Maximum billing cycles a customer can move the next order ahead is set and a 7-day delay would go past it. Because that limit is at least 1 billing cycle, this only affects subscriptions that renew more often than once a week.

What to expect from the links:

  • Each link works once. Once the customer confirms, the same link cannot be used again.

  • A link stops working when the order is billed, when the order's date changes before then (for example the customer or you reschedule it), or when your settings no longer allow that action, for example if you turn off skipping after the email went out. The pause and delay links also stop working on the day of the order itself.

  • When a link no longer works, the customer sees a short page saying This link is no longer valid, with a Log in button to manage their subscription in your customer portal instead.

  • Subi does not keep the links. In Event history, View payload shows single-use link, not stored in place of each link, and an empty property shows as null. Klaviyo receives the real links.

📘 Note: the links do not ask the customer to log in, so treat them like a password. Anyone who has one can skip, pause or delay that subscription's order. Send them only to the customer whose subscription it belongs to.

Build your first flow

Once Klaviyo is connected, the bottom of Subi → Settings → Integrations → Klaviyo shows a Build your first flow card. Every event Subi sends is a metric in your Klaviyo account, so each of these flows is built in Klaviyo on the metric named below.

  • Win back a cancelled subscriber — trigger on Canceled Subscription. The event carries the cancellation reason and the winback_url restart link described above.

  • Recover a failed payment — trigger on Subscription Payment Failed. It fires on a failed billing attempt, before Subi retries it.

  • Remind before the next order — trigger on Upcoming Subscription Order. It is sent three days before each renewal and carries the skip_url, pause_url and delay_url links described above, so your reminder can let the customer skip, pause or delay that order. This one is always on, so you will not find it among the events you can switch on and off on that page.

The card’s Open Klaviyo flows button takes you straight to the flows section of your Klaviyo account, where you create the flow and choose the metric as its trigger.

Sending a reminder earlier or later than 3 days

The Upcoming Subscription Order event arrives 3 days before an order. If you want your reminder at another time, for example 7 days before so customers have time to skip or change their order, build the flow on the subi_next_billing_date profile property instead of the event.

In Klaviyo:

  1. Go to Flows, click Create flow, then Build your own.

  2. Choose Date property as the trigger and pick subi_next_billing_date.

  3. Set how many days before the date the flow starts, for example 7, and choose Should not repeat. Subi moves the date forward after each order, and Klaviyo schedules the customer again each time Subi updates the date.

  4. Add your reminder email or SMS and turn the flow on.

Subi updates subi_next_billing_date on the customer's Klaviyo profile after each order, and whenever a subscription is skipped, paused, resumed or cancelled in Subi, apart from the cases listed below. Klaviyo checks the date again before each message it sends, so if a customer skips an order before the reminder goes out, that reminder is not sent and the customer is scheduled again for their new date. Klaviyo explains this in how date-based flows schedule recipients.

Three things to know before you switch:

  • The property holds the customer's earliest upcoming order across their active subscriptions. A customer with two subscriptions gets a reminder for whichever order comes first, and may get none for the second one if it falls within your lead time.

  • Some date changes reach Klaviyo late: a new date set with Reschedule, a delay or frequency change a customer picks in your cancellation flow, a delay a customer confirms through the delay_url link, a bulk date edit, a date set through the API, a skip applied by payment recovery, or a change made in the Shopify admin. Klaviyo gets the new date with the customer's next order, skip, pause, resume or cancellation in Subi, and until then a reminder can go out on the old date. If your store moves dates these ways often, the Upcoming Subscription Order event is the safer trigger, because it always uses the current date.

  • The skip_url, pause_url and delay_url links come only with the Upcoming Subscription Order event. A flow built on subi_next_billing_date cannot include them, so keep the event as your trigger if you want those buttons in your reminder.

If you keep a flow on Upcoming Subscription Order as well, customers get both reminders. Turn that flow off once the new one has been live for as many days as your lead time, so no order in between goes without a reminder.

Segments of current, paused and lapsed subscribers

Your Subi list in Klaviyo can hold customers who have never subscribed as well as your subscribers. subi_subscription_state tells them apart. To build a segment in Klaviyo, go to Audience > Lists & segments, click Create New, then Create segment. Choose the condition Properties about someone, pick the property and set its value.

To invite customers who do not subscribe yet to start a subscription, create a segment where subi_subscription_state is in active and paused, and exclude it when you send the campaign, so customers who already have a subscription, running or on hold, do not get the invitation.

Two segments to bring customers back:

  • Paused subscribers, where subi_subscription_state equals paused. Use it for a campaign that reminds them their subscription is on hold.

  • Recently lapsed subscribers, where subi_subscription_state equals cancelled and subi_last_subscription_ended_at is in the last 90 days. If Klaviyo offers only text options for that date, change the condition’s data type to Date. Use it for a win-back campaign to customers whose subscriptions ended in the last three months.

Using your Subi data in Klaviyo

Once the list, profile properties, and events are flowing, you can put them to work in Klaviyo:

  • Build segments from the Subi list or the subscription properties, for example everyone whose subi_subscription_state is paused, or whose subi_next_billing_date falls in the next three days.

  • Trigger automated emails or SMS on any Subi metric, for example a win-back flow on Canceled Subscription, a payment-update reminder on Subscription Payment Failed, or a come-back offer on Subscription Recovery Ended when a failed payment couldn't be recovered.

Next steps

Connect Klaviyo from Subi → Settings → Integrations → Klaviyo, send a test event to confirm the connection, then build your first segment or flow. If you run into any trouble connecting, or you don't see your events in Klaviyo, reach out to our support team and we'll help you get set up.

Did this answer your question?