Service & Transactional Messages

These campaigns are system-triggered, one-to-one messages that confirm critical actions (such as purchase, billing, or security) and reduce support load. Keep them fast, factual, and highly deliverable.

Subscription Confirmation

Set expectations, build trust, and warm the domain from day zero.

Start/Stop conditions

  • Start when the SubscriptionStarted event fires.
  • Stop after a single send.

Audience: New subscribers.

Workflow description

Data & personalization

  • Event payload example: subscriptionId, subscriptionType, planName, price, currency, renewalDate, hasFreeTrial, trialExpireDate, storeDeepLink (which opens a specific app screen after install, e.g., skipping onboarding), paymentType, billingType.
  • Message personalization: Use variables that will be pulled from the SubscriptionStarted event payload, e.g., $planName, $subscriptionType, $storeDeepLink.

Timing: Immediately after purchase.

Channel mix: Email.

Success metrics: Open rate and reduction in support tickets.

User-Initiated Cancellation

Close the loop on a user-initiated cancellation while maintaining long-term trust.

Start/Stop conditions

  • Start when the SubscriptionCanceled event occurs with the consciousCancel parameter.
  • Stop after a single send.

Audience: Users who canceled an active subscription.

Workflow description

  • Structure: A single obligatory (transactional) email.

Data & personalization

  • Event payload example: planName, cancelReason.
  • Personalization: $planName.

Timing: Immediately after cancellation.

Channel mix: Email that offers a time-boxed “$1 for a week” re-entry to save the card on file.

Success metrics: Reactivation rate, lifetime after reactivation, complaint rate.

Payment Failure

Treat it as customer support with revenue upside.

Start/Stop conditions

  • Start with the SubscriptionCanceled event, which includes the paymentFailed parameter.
  • Stop when PaymentSucceeded.

Audience: Active subscribers with a recent failed charge.

Workflow description

  • Structure: 1–2 messages separated by a Timer.

Data & personalization

  • Payload example: planName, amount, currency, failReason, updateBillingDeepLink.
  • Personalization: $planName, $amount, $failReason, $updateBillingDeepLink.

Timing

  • Message 1: T+0–15 min
  • Follow-up: T+1h

Channel mix

  • Email with the time-boxed “$1 for a week” offer to save the card on file.

Success metrics: Recovery rate, time-to-recovery, support tickets.

Subscription Expired

Explain access loss and provide the cleanest path back to access.

Start/Stop conditions

  • Start when SubscriptionExpired fires.
  • Stop after a single send.

Audience: Users whose subscription ended.

Workflow description

  • Structure: A single obligatory (transactional) email.

Data & personalization

  • Payload example: planName, expiredAt, paywallDeepLink.
  • Personalization: $paywallDeepLink.

Timing: Immediately after subscription ends.

Channel mix: Email.

Success metrics: Re-subscribe rate.

Refund Processed

Provide transparency and reduce support load.

Start/Stop conditions

  • Start when PaymentRefunded fires.
  • Stop after a single send.

Audience: Users who received a refund.

Workflow description

  • Structure: One transactional confirmation.

Data & personalization

  • Payload example: subscriptionType, paymentMode, billingPeriod, refundAmount, currency, refundDate.
  • Personalization: Use variables that will be pulled from the PaymentRefunded event payload.

Timing: Immediately.

Channel mix: Email.

Success metric: Refund-related tickets (down).

Subscription Renewal

Set expectations before renewal to reduce chargebacks.

Start/Stop conditions

  • Start when UpcomingRenewalScheduled fires (renewal in 3–7 days).
  • Stop: SubscriptionCanceled.

Audience: Users who will soon be charged a monthly or annual subscription.

Workflow description

  • Structure: 1 reminder.

Data & personalization

  • Payload example: planName, renewalDate, price, currency, manageSubscriptionLink.
  • Personalization: $planName, $renewalDate, $price, $manageSubscriptionLink.

Timing

  • Annual: T-7d
  • Monthly: T-2d or T-1d

Channel mix: Email.

Success metric: Chargebacks (down).

Invoice

Start/Stop conditions

  • Start when InvoiceGenerated / PaymentSucceeded fires.
  • Stop after a single send.

Workflow description

  • Structure: One email with invoice link/PDF.

Data & personalization

  • Payload example: productCode, billingType, price, currency, renewalDate, transactionDate.
  • Personalization: use variables that will be pulled from the InvoiceGenerated event payload.

Timing: Immediately.

Channel mix: Email.

Success metrics: Open/download rate, finance queries.

Other

Legal, policy, security notices.

Start/Stop conditions

  • Start: AccountEvent / PolicyUpdated / SecurityAlert etc.
  • Stop after a single send (or when the status is resolved).

Workflow description

  • Structure: one update; multi-step only on status change triggers.

Data & personalization

  • Payload: eventType, before/after values, supportDeepLink.

Timing: Immediate.

Channel mix: Email.

Success metrics: Required action completion, trust signals.