Klaviyo Integration for Product Subscriptions
Connect Subscribfy with Klaviyo to automate emails and SMS based on product subscription events
Connect Subscribfy with Klaviyo to automate emails and SMS based on product subscription events.
Product subscriptions send their own set of events and their own profile properties, separate from memberships. If you sell both, the two never overwrite each other in Klaviyo.
What You'll Get
Automated Flows
Trigger emails when a product subscription is created, paused, cancelled, or charged
Personalized Content
Include subscription status, next billing date, price, and store credit in emails
Product Details
The charge reminder carries the exact products, quantities, and prices in the upcoming order
Renewal Reminders
Tell subscribers what they will be charged, days before it happens
Failed Payment Recovery
React to failed charges with the payment error included in the event
Connect Klaviyo
One integration covers both
Klaviyo is connected once per store. The same connection sends membership events and product subscription events, so if you already connected Klaviyo for memberships there is nothing else to set up here.
Open the Klaviyo Integration
Go to Subscribfy → Settings → Integrations → click Add Integration → select Klaviyo.
Click Connect with Klaviyo
Click the Connect with Klaviyo button. This redirects you to Klaviyo's authorization page.
Authorize Access
Log in to Klaviyo (if you are not already) and click Allow. You are redirected back to Subscribfy with a Connected status.
OAuth tokens refresh automatically, so there is no key to rotate.
If the connection breaks
When Klaviyo stops accepting the connection, the integration page shows a Reconnect to finish the setup banner. Until you reconnect, nothing is written into your Klaviyo account.
Events Synced to Klaviyo
Use these names exactly as written
The names below are the exact event names Subscribfy sends to Klaviyo, character for character. Copy them as-is when you pick a flow trigger or a metric filter. One of them contains a spelling that differs from the label shown in the Subscribfy admin, and Klaviyo matches on the sent name, not the label. If a flow never triggers, compare your trigger against this table first.
| Event | Description |
|---|---|
| Subscribfy Product Subscription Created | When a new product subscription is purchased |
| Subscribfy Product Subscription Cancelled | When a subscriber cancels |
| Subscribfy Product Subscription Paused | When a subscriber pauses their subscription |
| Subscribfy Product Subscription Reactivated | When a paused or cancelled subscription is resumed |
| Subscribfy Product Subscription Succesful Charge | When a recurring payment succeeds. Note the single "s" in "Succesful": that is the exact name sent to Klaviyo, even though the Subscribfy admin displays it as "Successful Charge" |
| Subscribfy Product Subscription Failed Charge | When a recurring payment fails |
| Subscribfy Product Subscription Charge Reminder | Ahead of an upcoming renewal, so you can tell subscribers what is coming before they are billed |
Billing Date Updated is not a trigger
When a subscriber's next billing date changes, Subscribfy refreshes the SubscribfyProductNextBillingDate property on the Klaviyo profile, but it does not send a "Subscribfy Product Subscription Billing Date Updated" metric. Do not build a flow on that name: it will never fire. Use a segment or a profile-property condition on the updated date instead, or trigger on Charge Reminder, which does fire on a schedule.
Memberships have their own events
A membership uses a different set of names (Subscribfy Membership Created, Subscribfy Membership Charge Reminder, and so on) and its own profile properties. See the Klaviyo Integration for Memberships page for those, along with the churn, win-back, loyalty, and store credit events.
Profile Properties
Subscribfy writes these properties onto the Klaviyo profile. Every property is prefixed with SubscribfyProduct, so they never collide with the membership properties on the same profile.
| Property | Klaviyo Tag | Notes |
|---|---|---|
| Subscription Status | {{ person|lookup:"SubscribfyProductStatus"|default:"" }} | ACTIVE, PAUSED, or CANCELLED |
| Next Billing Date | {{ person|lookup:"SubscribfyProductNextBillingDate"|format_date_string|default:"" }} | Unix timestamp of the next charge |
| Store Credit Balance | {{ person|lookup:"SubscribfyProductStoreCredit"|default:"" }} | The subscriber's current balance, including pending credit |
| Manage Page Link | {{ person|lookup:"SubscribfyProductManagePageLink"|default:"" }} | Link to the subscriber's management page |
| Discounted Price | {{ person|lookup:"SubscribfyProductPrice"|default:"" }} | What the subscriber actually pays per cycle, after all active discounts |
| Initial Price | {{ person|lookup:"SubscribfyProductInitialPrice"|default:"" }} | The price before discounts, so you can show a strike-through original amount |
| Total Discounts | {{ person|lookup:"SubscribfyProductTotalDiscounts"|default:"" }} | The total amount discounted off the price |
| Currency | {{ person|lookup:"SubscribfyProductCurrencyCode"|default:"" }} | The currency the subscriber is billed in |
When each property is written
| Property | Updated on |
|---|---|
| Status | Created, Cancelled, Paused, Reactivated, Successful Charge, Failed Charge |
| Store Credit, Manage Page Link, Price, Initial Price, Total Discounts, Currency | Every event above, whenever the value is available |
| Next Billing Date | Created, Successful Charge, and whenever the billing date changes |
Store currency properties are membership-only
Memberships also expose SubscribfyMembershipStoreCurrencyInitialPrice and SubscribfyMembershipStoreCurrencyCode for reporting in your store's base currency. Product subscriptions do not have those two properties; use SubscribfyProductCurrencyCode, which is the currency the customer is charged in.
Charge Reminder Properties
For the Subscribfy Product Subscription Charge Reminder event, these properties are available on the event itself. Use them to show exactly what is about to ship and what it will cost.
| Property | Klaviyo Tag | Notes |
|---|---|---|
| Next Billing Date | {{ event.NextBillingDate|default:'' }} | The date the subscriber will be charged |
| Price | {{ event.Price|default:'' }} | The amount they will pay, after all active discounts |
| Initial Price | {{ event.InitialPrice|default:'' }} | The price before discounts |
| Total Discounts | {{ event.TotalDiscounts|default:'' }} | The total amount discounted off this charge |
| Currency | {{ event.Currency|default:'' }} | The currency they are billed in |
| Product Name | {{ event.ProductName|default:'' }} | The subscription plan name |
| Months Active | {{ event.MonthsActive|default:'' }} | How many months they have been subscribed |
| Store Credit | {{ event.StoreCredit|default:'' }} | Their current store credit balance |
| Manage Membership Link | {{ event.ManageMembershipLink|default:'' }} | Link to their management page |
| Products | {{ event.Products|default:'' }} | The line items in the upcoming order (see below) |
The Products list
event.Products is a list, one entry per line item on the subscription. Loop over it to build a product table inside the reminder email:
{% for product in event.Products %}
{{ product.title }} x{{ product.quantity }} - {{ product.price }} {{ product.currency }}
{% endfor %}| Field | Description |
|---|---|
title | Product title |
quantity | How many units are in the upcoming order |
price | Current line price |
currency | Line currency code |
variantGid | Shopify variant ID, for deep links or image lookups |
productGid | Shopify product ID |
Only product subscriptions carry Products
The membership charge reminder uses the same event shape but leaves Products empty, because a membership is a plan rather than a basket of items. This list is what makes the product subscription reminder worth building separately.
Failed Charge Properties
| Property | Klaviyo Tag | Notes |
|---|---|---|
| Billing Error Message | {{ event.billing_error_message|default:'' }} | The payment error returned by Shopify, when one is available |
Status stays ACTIVE after a failed charge
A failed charge does not cancel the subscription, so SubscribfyProductStatus remains ACTIVE. Branch your dunning flow on the Failed Charge event itself, not on the status property.
Set the Renewal Reminder Window
The Charge Reminder event fires on a daily schedule, a fixed number of days before the next billing date.
Open the Klaviyo details page
Go to Subscribfy → Settings → Integrations → Klaviyo → View Details.
Set the reminder window
In the Renewal reminder card, enter how many days before renewal the event should fire.
| Setting | Value |
|---|---|
| Minimum | 1 day |
| Maximum | 14 days |
| Default | 7 days |
One window for both subscription types
This setting is shared. Changing it moves the reminder for memberships and product subscriptions together, because both reminders read the same value.
Build Your Flows
Pre-built flows cover memberships only
The Build emails tools on the Klaviyo details page provision ready-made flows for membership events (welcome, cancel, paused, reactivated, successful charge, charge reminder). There are no pre-built flows for product subscriptions yet, so create those flows yourself in Klaviyo using the event names above.
Create a new flow in Klaviyo
In Klaviyo, go to Flows → Create Flow → Create From Scratch.
Pick the metric trigger
Choose Metric as the trigger and search for the exact event name, for example Subscribfy Product Subscription Charge Reminder.
The metric only appears in Klaviyo after Subscribfy has sent it at least once. If you cannot find it, use the Sync test events tool described in the next tab.
Build the email
Add an email action and pull in the event and profile properties from the tables above.
To make every Subscribfy metric appear in Klaviyo before any real customer triggers it, use the sync tool.
Open the Klaviyo details page
Go to Subscribfy → Settings → Integrations → Klaviyo → View Details.
Run Sync test events
This sends one of every Subscribfy event to your store's admin profiles in Klaviyo, so each metric becomes selectable as a flow trigger.
These are real events on real profiles. Run this before your flows are live, or the test events will trigger them.
Common Use Cases
Troubleshooting
Disconnecting from Klaviyo
- Go to Subscribfy → Settings → Integrations → Klaviyo
- Click View Details
- Click Disconnect
This revokes the OAuth tokens and stops event syncing for both memberships and product subscriptions. Your Klaviyo data remains intact.
Related
Klaviyo for Memberships
Membership events, churn and win-back offers, store credit, and pre-built flows
Klaviyo for Loyalty
Loyalty points, tiers, and reward events
Product Subscriptions
How product subscriptions work in Subscribfy
Was this page helpful?