DOCS
IntegrationsKlaviyo

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 Subscriptions so 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 started events, each with that line's product_id, sku, price, etc.
  • Per-order/per-attempt emission: Order placed successfully and Charge processing failed fire once per order / billing attempt, with a line_items array describing the order contents.
  • Uniqueness: every event carries a unique_id. Klaviyo dedupes events with the same unique_id on 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 in customer_charge_currency (or currency for order events).

Events index

MetricTriggered by
Subscription started on memberr SubscriptionsSubscription contract created
Subscription cancelled on memberr SubscriptionsSubscription cancelled (subscription_contracts/cancel webhook)
Subscription expired on memberr SubscriptionsSubscription reaches its maximum cycles (subscription_contracts/expire webhook)
Subscription paused on memberr SubscriptionsSubscription paused (subscription_contracts/pause webhook)
memberr subscription reactivatedCancelled subscription transitions back to active
Subscription SKU swapped on memberr SubscriptionsA line's variant or product id changes
Subscription next charge date changed on memberr SubscriptionsThe contract's nextBillingDate is rescheduled
Subscription frequency changed on memberr SubscriptionsThe billing or delivery interval changes
Order placed successfully on memberr SubscriptionsA recurring order is created from a billing attempt
Charge processing failed on memberr SubscriptionsA 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).

PropertyDescription
subscription_idStable identifier for the subscription line (Shopify subscription line GID).
extraSame as subscription_id, kept under the conventional extra key.
contract_idThe parent subscription contract GID (one contract can have multiple lines).
product_id / external_product_idShopify product GID for this line.
external_variant_idShopify variant GID for this line.
product_titleProduct title at the time of the event.
variant_titleVariant title at the time of the event.
skuVariant SKU.
quantityQuantity for this line.
pricePer-unit price as a number.
customer_charge_currencyISO 4217 currency code (e.g. EUR).
next_charge_scheduled_atISO 8601 timestamp of the contract's next billing date.
order_interval_daysApproximate days between deliveries (computed from the delivery policy: DAY=1, WEEK=7, MONTH=30, YEAR=365).
charge_intervalRaw billing interval (DAY / WEEK / MONTH / YEAR).
charge_interval_frequencyNumber of charge_interval units between charges.
expire_after_specific_number_of_chargesThe contract's maxCycles, or null if the subscription never auto-expires.
image_url_mediumVariant 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:

PropertyDescription
purchase_item_typeAlways "subscription".
previous_external_product_idProduct GID before the swap.
previous_external_variant_idVariant GID before the swap.
previous_skuSKU before the swap.
previous_product_titleProduct title before the swap.
previous_variant_titleVariant 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:

PropertyDescription
previous_next_charge_scheduled_atISO 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:

PropertyDescription
purchase_item_typeAlways "subscription".
previous_charge_intervalBilling interval before the change (DAY / WEEK / MONTH / YEAR).
previous_charge_interval_frequencyNumber of previous-interval units between charges.
previous_order_interval_daysApproximate 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.

PropertyDescription
shopify_order_id / external_order_idShopify order GID.
shopify_order_number / external_order_numberShopify's numeric order number.
contract_idThe subscription contract GID this order was created from.
created_atOrder creation timestamp (ISO 8601).
updated_atOrder last-updated timestamp (ISO 8601).
currency / customer_charge_currencyISO 4217 currency code.
total_priceTotal order price as a number.
subtotal_priceSubtotal before tax/shipping/discounts.
total_taxTotal tax amount.
total_discountsTotal discount amount.
total_unique_line_item_countNumber of unique line items.
line_itemsArray of { title, variant_title, quantity, sku, product_id, variant_id, price, total_discount }.
variant_idsArray of variant GIDs across all line items.
typeAlways "recurring".
statusOrder'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).

PropertyDescription
billing_attempt_idShopify subscription billing attempt GID.
contract_idThe subscription contract GID this attempt belongs to.
error_codeShopify's processing error code (e.g. EXPIRED_PAYMENT_METHOD, AUTHENTICATION_ERROR).
error_messageHuman-readable error message from Shopify.
idempotency_keyIdempotency key Shopify used for the attempt.
completed_atWhen the attempt finished (ISO 8601).
typeAlways "recurring".

Profile sync

In addition to the events above, memberr Subscriptions keeps a small set of profile properties on the customer in Klaviyo:

PropertyDescription
memberr_last_subscription_purchase_atISO 8601 timestamp of the customer's most recent recurring order.
memberr_last_subscription_order_idShopify 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.

On this page