Flows
Essential Klaviyo flows for a standard memberr Subscriptions integration.
These are the metric-triggered Klaviyo flows a standard memberr Subscriptions setup should run. Each flow uses a lifecycle metric as its trigger.
Before you build:
- Connect Klaviyo.
- Send synthetic events so every metric appears as a flow trigger.
Most lifecycle metrics fire once per subscription line. A welcome or cancel flow can send one email per product on a multi-line contract unless you add filters or smart sending. Resuming a paused subscription does not emit a metric - only CANCELLED → ACTIVE fires reactivated.
Flow checklist
| Flow | Trigger metric | Priority |
|---|---|---|
| Welcome | Subscription started | Essential |
| Upcoming charge reminder | Upcoming charge | Essential |
| Complete payment (3DS) | Payment authentication required | Essential |
| Failed payment recovery | Charge processing failed | Essential |
| Cancel win-back | Subscription cancelled | Essential |
| Reactivation welcome | memberr subscription reactivated | Essential |
| Pause re-engagement | Subscription paused | Essential |
| Expired / completed | Subscription expired | Essential |
| Order confirmation | Order placed successfully | Essential |
| SKU swap confirmation | Subscription SKU swapped | Recommended |
| Frequency change confirmation | Subscription frequency changed | Recommended |
| Next charge date confirmation | Subscription next charge date changed | Recommended |
Welcome
| Trigger | Subscription started on memberr Subscriptions |
| Goal | Confirm the subscription, set expectations for the first delivery, and point the customer to manage their plan. |
Suggested messages
- Immediate welcome - thank them, list what they subscribed to, when the next charge is.
- Optional day 2–3 tip - how to skip, swap, or pause in the customer portal.
Key tags: {{ event.product_title }}, {{ event.variant_title }}, {{ event.sku }}, {{ event.next_charge_scheduled_at }}, {{ event.charge_interval }}, {{ event.charge_interval_frequency }}, {{ event.$value }}
Setup notes: Fires once per line when the contract is created. Multi-product contracts can trigger multiple welcomes - consider product filters or Klaviyo smart sending if that is unwanted.
Upcoming charge reminder
| Trigger | Upcoming charge on memberr Subscriptions |
| Goal | Reduce surprise charges and give customers time to skip, swap, or update payment before billing. |
Suggested messages
- Single reminder when the metric fires (lead time is configured in Dunning → Settings, default 3 days).
Key tags: {{ event.next_charge_scheduled_at }}, {{ event.charge_interval }}, {{ event.charge_interval_frequency }}, {{ event.customer_charge_currency }}
Setup notes: Fires once per contract per billing cycle, not per line. CTA should open the customer portal (skip / manage). Reminder is skipped if the contract is no longer active or the next billing date moved after the scheduler queued it. See Dunning settings.
Complete payment (3DS)
| Trigger | Payment authentication required on memberr Subscriptions |
| Goal | Get the customer to finish 3D Secure before the challenge expires and the charge fails. |
Suggested messages
- Immediate email/SMS with a clear “Complete payment” CTA.
- Optional short follow-up (for example 1–2 hours later) if they have not completed authentication.
Key tags: {{ event.next_action_url }}, {{ event.billing_attempt_id }}, {{ event.contract_id }}
Setup notes: This is not a failure yet. The CTA must use {{ event.next_action_url }}. If authentication is not completed, a later attempt may emit Charge processing failed.
Failed payment recovery
| Trigger | Charge processing failed on memberr Subscriptions |
| Goal | Ask the customer to update their payment method so dunning retries can succeed. |
Suggested messages
- Immediate “payment failed” notice with update-payment CTA.
- Optional day 2–3 reminder while retries continue.
- Optional final notice before the subscription is paused or cancelled by dunning settings.
Key tags: {{ event.error_code }}, {{ event.error_message }}, {{ event.contract_id }}, {{ event.billing_attempt_id }}
Setup notes: Each failed attempt (including dunning retries) emits this metric again - use flow filters or delays so you do not spam on every retry. You can branch on error_code (for example EXPIRED_PAYMENT_METHOD). Pair with dunning in the app.
Cancel win-back
| Trigger | Subscription cancelled on memberr Subscriptions |
| Goal | Recover churned subscribers with feedback and a path back. |
Suggested messages
- Day 0 - acknowledge cancellation, ask for a short reason.
- Day 3–7 - win-back offer or “we miss you” with reactivation CTA.
- Optional day 14–30 - final soft reminder.
Key tags: {{ event.product_title }}, {{ event.sku }}, {{ event.$value }}, {{ event.contract_id }}
Setup notes: Fires once per line. Coordinate with in-app cancel flows so portal retention offers and email win-backs do not conflict.
Reactivation welcome
| Trigger | memberr subscription reactivated |
| Goal | Welcome the customer back after a cancelled subscription becomes active again. |
Suggested messages
- Immediate “welcome back” - confirm products, next charge date, and portal link.
Key tags: {{ event.product_title }}, {{ event.next_charge_scheduled_at }}, {{ event.sku }}
Setup notes: Only fires for CANCELLED → ACTIVE. Resuming from pause does not trigger this flow.
Pause re-engagement
| Trigger | Subscription paused on memberr Subscriptions |
| Goal | Keep the relationship warm and make unpausing easy. |
Suggested messages
- Day 0 - confirm the pause and how to resume.
- Optional day 7–14 - gentle reminder that their subscription is still paused.
Key tags: {{ event.product_title }}, {{ event.next_charge_scheduled_at }}, {{ event.contract_id }}
Setup notes: There is no “unpaused” metric. When they resume, nothing new fires unless they later cancel and reactivate.
Expired / completed
| Trigger | Subscription expired on memberr Subscriptions |
| Goal | Acknowledge a prepaid / max-cycle subscription that has finished, and invite a new plan. |
Suggested messages
- Day 0 - thank them for completing the subscription, suggest renewing or starting a new plan.
Key tags: {{ event.product_title }}, {{ event.expire_after_specific_number_of_charges }}, {{ event.sku }}
Setup notes: Fires when the contract reaches its maximum number of charges (maxCycles), not on every cancel.
Order confirmation
| Trigger | Order placed successfully on memberr Subscriptions |
| Goal | Confirm a subscription-linked order (first checkout or a later recurring charge). |
Suggested messages
- Immediate order confirmation with line items and total.
Key tags: {{ event.shopify_order_number }}, {{ event.total_price }}, {{ event.currency }}, {{ event.line_items.0.title }}, {{ event.status }}, {{ event.$value }}
Setup notes: Fires for any order linked to a contract, including the origin checkout order when the subscription starts - so a customer may get both Welcome and Order confirmation. type is always "recurring". Prefer this for order details; use Welcome for onboarding.
SKU swap confirmation
| Trigger | Subscription SKU swapped on memberr Subscriptions |
| Goal | Confirm the new product/variant on the subscription. |
Suggested messages
- Immediate confirmation of the swap.
Key tags: {{ event.product_title }}, {{ event.variant_title }}, {{ event.sku }}, {{ event.previous_sku }}, {{ event.previous_variant_title }}, {{ event.previous_product_title }}
Setup notes: Properties describe the new line; use previous_* for the old SKU. Recommended, not required for a minimal kit.
Frequency change confirmation
| Trigger | Subscription frequency changed on memberr Subscriptions |
| Goal | Confirm the new billing or delivery cadence. |
Suggested messages
- Immediate confirmation of the new schedule.
Key tags: {{ event.charge_interval }}, {{ event.charge_interval_frequency }}, {{ event.previous_charge_interval }}, {{ event.previous_charge_interval_frequency }}, {{ event.next_charge_scheduled_at }}
Setup notes: This event does not set $value. Recommended for clarity when customers change interval in the portal.
Next charge date confirmation
| Trigger | Subscription next charge date changed on memberr Subscriptions |
| Goal | Confirm a skip or reschedule of the next charge. |
Suggested messages
- Immediate confirmation with old and new dates.
Key tags: {{ event.next_charge_scheduled_at }}, {{ event.previous_next_charge_scheduled_at }}, {{ event.product_title }}
Setup notes: Fires when status is unchanged and the next billing date moves (skip or reschedule). Recommended so customers are not surprised by a shifted charge.
Unlock all triggers
Klaviyo only lists a metric as a flow trigger after it has fired at least once. Use Send synthetic events to unlock the full checklist before live subscription traffic.