Back to blog
Marketing

Klaviyo flows for subscriptions: events and fields

A subscription generates many moments worth emailing: started, paused, resumed, skipped, cancelled, failed payment. Which events and profile fields you need for Klaviyo flows, which five flows to start with and who sends which email.

14 July 20266 min read

Why separate events beat one generic 'subscription changed' event

A subscription has several statuses, and each status calls for a different message. One generic event like 'subscription changed' forces you to distinguish cases inside Klaviyo based on properties, which is error-prone. Specific events per situation make Klaviyo flows easier to build and debug, and prevent the wrong email reaching the wrong customer.

Which events you need at minimum

EventTriggerTypical flow
Subscription startedFirst successful chargeWelcome series explaining the customer portal
Subscription pausedCustomer pauses in the portalConfirmation, no marketing email
Subscription resumedCustomer resumes after a pauseConfirmation and optional welcome-back
Delivery skippedCustomer skips a cycleShort confirmation, no escalation
Subscription cancelledCustomer cancelsWinback series based on cancellation reason
Payment failedMollie charge failsDunning series with payment link
Upcoming deliveryX days before the next chargeReminder with options to change
Loyalty milestoneX deliveries or points threshold reachedReward email

In Loyalo the events are called 'Loyalo …', for example Loyalo Subscription Started, Loyalo Payment Failed and Loyalo Upcoming Delivery. There are 31, spread over subscriptions, payments and points. Per event you switch on or off whether it goes to Klaviyo, so your account does not fill up with events you do not use.

The events for Klaviyo in Loyalo: a tick box and a short explanation per event, such as Subscription Started, Paused, Cancelled and Upcoming Delivery
The events for subscriptions in Loyalo. Below them are the events for payments and for points.

Profile fields instead of tags

Tags suit one-off labels, but a subscription status changes continuously. Use profile fields such as subscription status, next delivery date, frequency and point balance instead of tags you'd have to add and remove on every change. Profile fields are directly usable in segmentation and flow filters, and they avoid a pile-up of outdated tags on a customer profile.

  • Store subscription status (active, paused, cancelled) as a profile field, not a tag
  • Track next delivery date and frequency as profile fields for segmentation
  • Avoid tags for statuses that change more than once per customer
  • Use events for the moment of change, profile fields for the current state

Loyalo keeps the fields on the profile up to date itself. They start with loyalo_, such as loyalo_subscription_status, loyalo_next_delivery_date, loyalo_mrr, loyalo_points_balance and loyalo_tier. You use them in segments ('all customers with a paused subscription') and in the filters of a flow ('only when the customer has had at least three deliveries').

The latest events sent and the profile properties Loyalo keeps in Klaviyo, such as loyalo_subscription_status and loyalo_points_balance
The latest events sent and the profile properties, in the dashboard of the demo store.

Matching identity: Shopify customer ID with email as fallback

Klaviyo profiles are reliably matched based on the Shopify customer ID. That prevents duplicate profiles when a customer orders with a different email address or changes it. Only when no customer ID is available, for example on a manually created profile, do you fall back to email address as the matching key. This order matters especially during a CSV migration, where existing subscriptions need to be linked to existing customer profiles.

Who sends which email: Loyalo or Klaviyo

Not every email belongs in Klaviyo. Transactional confirmations that follow directly from an action in the customer portal, such as confirming a pause or a date change, can be sent by Loyalo itself as soon as the action happens. Marketing and retention flows, such as winback and reminders with freedom in design and timing, belong in Klaviyo, driven by the events Loyalo forwards. Agree which system sends which email to avoid duplicate emails.

  1. Decide the owner per momentRecord per event whether Loyalo or Klaviyo sends the email.
  2. Set up events and profile fieldsConfigure the events from the table and link the profile fields.
  3. Build flows per eventCreate a separate flow per event instead of one broad flow with filters.
  4. Test with a test eventSend each event once as a test event to your own email address before turning the flow live.

Five Klaviyo flows to start with

You do not have to build a flow for every event right away. These five cover the moments when an email does the most.

FlowTrigger in KlaviyoWhat it says
WelcomeLoyalo Subscription StartedWhat the customer can expect and how they manage their subscription
Delivery coming upLoyalo Upcoming DeliveryThe reminder for the next delivery, a few days ahead
Payment failedLoyalo Payment Failed, then Loyalo Dunning Final NoticeWhat went wrong and what the customer can do; a clear warning on the last attempt
Win-backLoyalo Winback OfferThe personal discount code and until when it is valid
Reward availableLoyalo Reward AvailableThat the customer has enough points, and for what

Testing before going live

Before a flow reaches all customers, you want to simulate events without real emails going to customers. In Loyalo you send a test event to an email address you choose, for example your own. That lets you check the full chain: is the right event sent, do the fields come through, and does the right flow trigger. The test event is marked, so you can exclude it in a flow. For every new flow, run through at least the events in the table above once.

Avoid duplicate emails on dunning

If both Loyalo and a Klaviyo flow react to 'payment failed', a customer can receive two similar emails. Let one system send the first reminder and the other the follow-up steps, or send everything from Klaviyo based on the event.

Frequently asked questions

Do I need a separate event for every status change?

Yes, that makes flows easier to build and maintain than one generic event with many properties.

What happens if a customer has no Shopify customer ID?

Email address is used as a fallback to match the profile until a customer ID becomes available.

Can I test without customers noticing?

Yes. A test event goes to the email address you enter yourself, not to customers, so you can safely check whether a flow works.

Who sends the payment reminder on a failed charge?

You agree this upfront: Loyalo can send the first reminder and Klaviyo the follow-up steps, or you run the entire dunning series from Klaviyo based on the event.

How many events does Loyalo send to Klaviyo?

There are 31 events, for subscriptions, payments and points. You choose per event whether it goes to Klaviyo. In Klaviyo every event is called 'Loyalo' followed by its name, for example Loyalo Subscription Paused.

Can I segment on point balance or tier?

Yes. Loyalo keeps fields on every profile such as loyalo_points_balance, loyalo_tier and loyalo_subscription_status. You use those in segments and in the filters of a flow.

Want to see how the Klaviyo integration works?

In a demo we show the events, the profile fields and the testing for subscriptions in your shop.

Request a demo

Ready to sell subscriptions inside Shopify?

No per-order fee, no redirect, no hassle. Just native subscriptions.