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.

Subscription Confirmation Details

✅ Start / Stop conditions

  • Start when:
    The SubscriptionStarted event fires.
  • Stop:
    After a single send.

🎯 Audience

  • New subscribers.

🔁 Workflow description


📊 Data & personalization

  • Start event payload example:

    • subscriptionId
    • subscriptionType
    • planName
    • price
    • currency
    • renewalDate
    • hasFreeTrial
    • trialExpireDate
    • storeDeepLink
    • paymentType
    • billingType
  • Message personalization:
    Use variables pulled from the SubscriptionStarted payload, e.g.:

    • $planName
    • $subscriptionType
    • $storeDeepLink

⏱ Timing

  • Immediately after purchase.

📡 Channel mix

  • Email.


User-Initiated Cancellation

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

User-Initiated Cancellation Details

✅ 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

  • Start event payload example:

  • planName

  • cancelReason

  • price

  • paymentMethod

  • subscriptionType

  • Message 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.


Payment Failure

Treat it as customer support with revenue upside.

Payment Failure Details

✅ Start / Stop conditions

  • Start when:
    The SubscriptionCanceled event is received and 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

  • Start event payload example:

    • planName
    • amount
    • currency
    • failReason
    • updateBillingDeepLink
  • Message personalization:

    • $planName
    • $amount
    • $failReason
    • $updateBillingDeepLink

⏱ Timing

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

📡 Channel mix

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


Subscription Expired

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

Subscription Expired Details

✅ 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

  • Start event payload example:

    • planName
    • expiredAt
    • paywallDeepLink
  • Message personalization:

    • $paywallDeepLink

⏱ Timing

  • Immediately after subscription ends.

📡 Channel mix

  • Email.


Refund Processed

Provide transparency and reduce support load.

Refund Processed Details

✅ 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

  • Start event payload example:

    • subscriptionType
    • paymentMode
    • billingPeriod
    • refundAmount
    • currency
    • refundDate
  • Message personalization:
    Use variables pulled from the PaymentRefunded event payload.


⏱ Timing

  • Immediately.

📡 Channel mix

  • Email.


Subscription Renewal

Set expectations before renewal to reduce chargebacks.

Subscription Renewal Details

✅ Start / Stop conditions

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

🎯 Audience

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

🔁 Workflow description

  • Structure: 1 reminder.

📊 Data & personalization

  • Start event payload example:

    • planName
    • renewalDate
    • price
    • currency
    • manageSubscriptionLink
  • Message personalization:

    • $planName
    • $renewalDate
    • $price
    • $manageSubscriptionLink

⏱ Timing

  • Annual: -7d before renewal
  • Monthly: -2d or -1d

📡 Channel mix

  • Email.


Invoice

One-click access to invoice PDF/link right after billing.

Invoice Details

✅ Start / Stop conditions

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

🎯 Audience

  • Users who requested or triggered an invoice / successful payment users.

🔁 Workflow description

  • Structure: One email with invoice link/PDF.

📊 Data & personalization

  • Start event payload example:

    • productCode
    • billingType
    • price
    • currency
    • renewalDate
    • transactionDate
  • Message personalization:
    Use variables pulled from the InvoiceGenerated event payload.


⏱ Timing

  • Immediately.

📡 Channel mix

  • Email.


Other

Legal, policy, and security notices.

Other Details

✅ Start / Stop conditions

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

🎯 Audience

  • Users affected by the policy/security/status change.

🔁 Workflow description

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

📊 Data & personalization

  • Start event payload example:

    • eventType
    • beforeValue
    • afterValue
    • supportDeepLink

⏱ Timing

  • Immediate.

📡 Channel mix

  • Email.