Events
Reference for every subscription lifecycle event sent to Klaviyo.
memberr Subscriptions emits ten lifecycle metrics to Klaviyo. Each metric carries a profile (always identified by the customer's email) and a set of event properties you can use in flow triggers, segment filters, and template tags.
Common conventions
- Metric naming: all subscription-level metrics use the suffix
on memberr Subscriptionsso they're easy to find with the search bar in Klaviyo. - Per-line emission: subscription events fire once per subscription line. A contract with three products on the same schedule produces three separate
Subscription startedevents, each with that line'sproduct_id,sku,price, etc. - Per-order/per-attempt emission:
Order placed successfullyandCharge processing failedfire once per order / billing attempt, with aline_itemsarray describing the order contents. - Uniqueness: every event carries a
unique_id. Klaviyo dedupes events with the sameunique_idon the same profile, so re-deliveries from Shopify don't create duplicate metrics. - Currency: monetary values are sent as JSON numbers (e.g.
24.0), not strings; the matching ISO 4217 code is incustomer_charge_currency(orcurrencyfor order events).
Events index
| Metric | Triggered by |
|---|---|
Subscription started on memberr Subscriptions | Subscription contract created |
Subscription cancelled on memberr Subscriptions | Subscription cancelled (subscription_contracts/cancel webhook) |
Subscription expired on memberr Subscriptions | Subscription reaches its maximum cycles (subscription_contracts/expire webhook) |
Subscription paused on memberr Subscriptions | Subscription paused (subscription_contracts/pause webhook) |
memberr subscription reactivated | Cancelled subscription transitions back to active |
Subscription SKU swapped on memberr Subscriptions | A line's variant or product id changes |
Subscription next charge date changed on memberr Subscriptions | The contract's nextBillingDate is rescheduled |
Subscription frequency changed on memberr Subscriptions | The billing or delivery interval changes |
Order placed successfully on memberr Subscriptions | A recurring order is created from a billing attempt |
Charge processing failed on memberr Subscriptions | A billing attempt fails |
Subscription line properties
The following properties are common to every subscription-level event (Subscription started, cancelled, expired, paused, reactivated, SKU swapped, next charge date changed, frequency changed).
| Property | Description |
|---|---|
subscription_id | Stable identifier for the subscription line (Shopify subscription line GID). |
extra | Same as subscription_id, kept under the conventional extra key. |
contract_id | The parent subscription contract GID (one contract can have multiple lines). |
product_id / external_product_id | Shopify product GID for this line. |
external_variant_id | Shopify variant GID for this line. |
product_title | Product title at the time of the event. |
variant_title | Variant title at the time of the event. |
sku | Variant SKU. |
quantity | Quantity for this line. |
price | Per-unit price as a number. |
customer_charge_currency | ISO 4217 currency code (e.g. EUR). |
next_charge_scheduled_at | ISO 8601 timestamp of the contract's next billing date. |
order_interval_days | Approximate days between deliveries (computed from the delivery policy: DAY=1, WEEK=7, MONTH=30, YEAR=365). |
charge_interval | Raw billing interval (DAY / WEEK / MONTH / YEAR). |
charge_interval_frequency | Number of charge_interval units between charges. |
expire_after_specific_number_of_charges | The contract's maxCycles, or null if the subscription never auto-expires. |
image_url_medium | Variant image URL (if any). |
Subscription-level events also set $value on the event equal to price × quantity, so Klaviyo's revenue reporting works correctly.
Subscription started
Metric: Subscription started on memberr Subscriptions
Fires when a new subscription contract is created, once per subscription line. Properties are the common subscription line properties listed above.
Subscription cancelled
Metric: Subscription cancelled on memberr Subscriptions
Fires when a subscription contract is cancelled (driven by Shopify's subscription_contracts/cancel webhook). Once per subscription line. Properties are the common subscription line properties.
Subscription expired
Metric: Subscription expired on memberr Subscriptions
Fires when a contract auto-expires after reaching its maximum number of charges. Once per subscription line. Properties are the common subscription line properties.
Subscription paused
Metric: Subscription paused on memberr Subscriptions
Fires when a customer pauses their subscription. Once per subscription line. Properties are the common subscription line properties.
Subscription reactivated
Metric: memberr subscription reactivated
Fires when a previously cancelled subscription transitions back to active. Once per subscription line. Properties are the common subscription line properties.
This event only fires for the CANCELLED → ACTIVE transition. Resuming a paused subscription does not fire this metric.
Subscription SKU swapped
Metric: Subscription SKU swapped on memberr Subscriptions
Fires when a customer swaps the variant or product on a subscription line. Includes the common subscription line properties (which describe the new line) plus:
| Property | Description |
|---|---|
purchase_item_type | Always "subscription". |
previous_external_product_id | Product GID before the swap. |
previous_external_variant_id | Variant GID before the swap. |
previous_sku | SKU before the swap. |
previous_product_title | Product title before the swap. |
previous_variant_title | Variant title before the swap. |
Subscription next charge date changed
Metric: Subscription next charge date changed on memberr Subscriptions
Fires when the contract's next billing date is rescheduled (and status hasn't changed). Once per subscription line. Includes the common subscription line properties plus:
| Property | Description |
|---|---|
previous_next_charge_scheduled_at | ISO 8601 timestamp of the previous next billing date. |
Subscription frequency changed
Metric: Subscription frequency changed on memberr Subscriptions
Fires when the billing or delivery interval changes. Once per subscription line. Includes the common subscription line properties plus:
| Property | Description |
|---|---|
purchase_item_type | Always "subscription". |
previous_charge_interval | Billing interval before the change (DAY / WEEK / MONTH / YEAR). |
previous_charge_interval_frequency | Number of previous-interval units between charges. |
previous_order_interval_days | Approximate previous days between deliveries. |
Order placed successfully
Metric: Order placed successfully on memberr Subscriptions
Fires once when a recurring order is successfully created from a billing attempt.
| Property | Description |
|---|---|
shopify_order_id / external_order_id | Shopify order GID. |
shopify_order_number / external_order_number | Shopify's numeric order number. |
contract_id | The subscription contract GID this order was created from. |
created_at | Order creation timestamp (ISO 8601). |
updated_at | Order last-updated timestamp (ISO 8601). |
currency / customer_charge_currency | ISO 4217 currency code. |
total_price | Total order price as a number. |
subtotal_price | Subtotal before tax/shipping/discounts. |
total_tax | Total tax amount. |
total_discounts | Total discount amount. |
total_unique_line_item_count | Number of unique line items. |
line_items | Array of { title, variant_title, quantity, sku, product_id, variant_id, price, total_discount }. |
variant_ids | Array of variant GIDs across all line items. |
type | Always "recurring". |
status | Order's display financial status (e.g. PAID, PENDING). |
The event's $value is set to total_price and $value_currency to the order currency.
Charge processing failed
Metric: Charge processing failed on memberr Subscriptions
Fires once when a billing attempt fails (Shopify reports an error_code on the attempt).
| Property | Description |
|---|---|
billing_attempt_id | Shopify subscription billing attempt GID. |
contract_id | The subscription contract GID this attempt belongs to. |
error_code | Shopify's processing error code (e.g. EXPIRED_PAYMENT_METHOD, AUTHENTICATION_ERROR). |
error_message | Human-readable error message from Shopify. |
idempotency_key | Idempotency key Shopify used for the attempt. |
completed_at | When the attempt finished (ISO 8601). |
type | Always "recurring". |
Profile sync
In addition to the events above, memberr Subscriptions keeps a small set of profile properties on the customer in Klaviyo:
| Property | Description |
|---|---|
memberr_last_subscription_purchase_at | ISO 8601 timestamp of the customer's most recent recurring order. |
memberr_last_subscription_order_id | Shopify order GID of the most recent recurring order. |
These let you build segments like "customers whose last subscription purchase was more than 30 days ago" without needing to inspect individual event properties.