Trigger Customer.io Campaigns from Churn Events

SaveMRR sends churn signals to Customer.io. at risk flags, failed payment events, cancellation reasons, and recovery status. Build retention campaigns triggered by real churn data instead of guesswork.

Most SaaS retention campaigns are based on time triggers. "send this email 30 days after signup" or "send a check in every quarter." The problem is that churn doesn't follow a calendar. A customer might be perfectly happy for six months and then hit a failed payment that spirals into cancellation within a week. Time-based campaigns miss these moments entirely.

The SaveMRR Customer.io integration replaces guesswork with data. Instead of scheduling retention emails on arbitrary timelines, you trigger them when SaveMRR detects actual churn signals; a payment failure, a rising risk score, a cancel flow interaction, or a card about to expire. Every campaign fires at exactly the right moment because it is driven by real events from Stripe, not assumptions about when customers might be at risk.

How the Event-to-Campaign Flow Works

The integration connects SaveMRR's churn detection engine to Customer.io's campaign builder through a real time event pipeline:

  • SaveMRR detects a churn event; a Stripe webhook fires (payment failure, cancellation, card expiry) and SaveMRR processes it, enriching it with MRR impact, risk score, and customer context
  • Event sent to Customer.io. SaveMRR forwards the enriched event to Customer.io via the Track API, including all properties (amount, failure reason, risk level, plan type)
  • Customer.io triggers the campaign; your pre-built workflow fires based on the event type and properties. A payment_failed event might start a support check in sequence. A subscription_at_risk event with risk_score above 80 might trigger a personal email from the founder
  • Customer.io delivers across channels. email, push notification, SMS, in app message, or webhook. whatever channel is most likely to reach the customer

Events We Send to Customer.io

Event NameBest Campaign TriggerKey Properties
payment_failedSupport check in or card update nudgeamount, failure_code, retry_count
payment_recoveredThank-you or onboarding re engagementamount, recovery_method, days_to_recover
subscription_at_riskProactive value reminder or feature highlightrisk_score, risk_factors, mrr_value
cancel_flow_startedPersonal founder outreachplan, mrr_value, tenure_days
cancel_flow_savedPost-save nurture sequenceoffer_type, mrr_saved, discount_applied
subscription_canceledWin back drip campaigncancel_reason, mrr_lost, tenure_days
card_expiry_warningPre dunning card update reminderexpiry_date, mrr_at_risk, card_brand

Setup in 3 Steps

  • Step 1: Get your Customer.io credentials. in Customer.io, go to Settings > API Credentials and copy your Site ID and API Key (Track API)
  • Step 2: Connect in SaveMRR. go to app.savemrr.co > Integrations > Customer.io, paste your Site ID and API Key. SaveMRR validates the connection immediately
  • Step 3: Build your campaigns. in Customer.io, create workflows triggered by SaveMRR events. Start with a subscription_at_risk trigger for your first retention campaign

SaveMRR vs Customer.io for Retention

SaveMRR and Customer.io are complementary tools, not competitors. They handle different layers of the retention stack:

CapabilitySaveMRRCustomer.io
Failed payment recoveryBuilt-in dunning engineNot included
Cancel flow with offersBuilt-in cancel flow builderNot included
Churn predictionChurn Radar (Stripe data)Requires external data
Multi-channel messagingEmail + SMS (recovery only)Email, SMS, push, in app, webhooks
Campaign builderAutomated recovery sequencesVisual workflow builder
Best forStripe-level churn preventionLifecycle messaging campaigns

The best retention stack uses SaveMRR for the transactional layer. recovering failed payments, running cancel flows, predicting churn, and Customer.io for the messaging layer. nurture sequences, re engagement campaigns, and multi channel outreach based on the churn signals SaveMRR provides.

Campaign Ideas

Here are five ready-to-build Customer.io campaigns using SaveMRR events as triggers:

  • At risk value reminder. trigger: subscription_at_risk with risk_score > 60. Send a 3-email sequence highlighting the customer's top 3 features by usage, their ROI metrics, and a personal check in from the founder. Space emails 3 days apart
  • Post-recovery onboarding boost. trigger: payment_recovered. After a customer's payment is recovered, send a "glad you're back" email with links to new features they may have missed during the billing interruption
  • Cancel flow save nurture. trigger: cancel_flow_saved. The customer almost left but accepted an offer. Send a 4-week nurture sequence that reinforces the value they're getting, introduces features they haven't used, and removes the conditions that made them want to cancel
  • Win back drip. trigger: subscription_canceled where cancel_reason is not "competitor" or "no_budget." Send a 60-day win back sequence with product updates, case studies from similar customers, and a time-limited return offer at day 14, 30, and 60
  • Card expiry prevention. trigger: card_expiry_warning. Send a multi channel sequence. email first, then push notification two days later, then SMS on expiry day. to maximize the chance the customer updates their card before the next billing cycle

Each of these campaigns would take weeks to build if you had to wire up Stripe webhooks, calculate churn signals, and integrate with Customer.io yourself. With SaveMRR, the events are already flowing. You just build the campaigns in Customer.io's visual workflow editor and start reducing churn immediately. For email deliverability, consider routing transactional emails through Postmark. Check our dunning email benchmark for data on what works. You can also connect Segment to pipe churn events to your data warehouse alongside Customer.io. Indie hackers and bootstrapped SaaS teams find the Customer.io integration especially useful for lifecycle messaging triggered by real churn signals.

Frequently asked questions

What is the difference between SaveMRR and Customer.io for retention?

SaveMRR handles Stripe-level churn prevention: payment recovery, cancel flows, dunning emails, card expiry alerts, and churn prediction. Customer.io is a messaging platform for multi channel campaigns (email, push, SMS, in app). They are complementary, not competing. SaveMRR detects and responds to churn events in real time. Customer.io lets you build longer-form retention campaigns triggered by the churn data SaveMRR provides.

What events does SaveMRR send to Customer.io?

SaveMRR sends seven event types: payment_failed, payment_recovered, subscription_at_risk, cancel_flow_started, cancel_flow_saved, subscription_canceled, and card_expiry_warning. Each event includes properties like MRR value, failure reason, risk score, and recovery method. You can use any of these as triggers for Customer.io campaigns, segments, or workflows.

Do I need to use Customer.io for dunning emails if I have SaveMRR?

No. SaveMRR sends its own dunning emails automatically when a payment fails. You do not need Customer.io for that. The Customer.io integration is for supplemental campaigns: onboarding sequences that change based on churn risk, re engagement drips for at risk users, or long-form win back sequences. SaveMRR handles the transactional recovery; Customer.io handles the broader retention messaging.

How quickly do events arrive in Customer.io?

SaveMRR sends events to Customer.io via the Track API in real time. From the moment a Stripe webhook fires to the moment the event appears in Customer.io, latency is typically 5-15 seconds. Campaign triggers that depend on the event fire immediately after ingestion, so a 'payment_failed' event can trigger a Customer.io workflow within 20-30 seconds of the actual failure.

Can I use Customer.io segments based on SaveMRR data?

Yes. SaveMRR updates Customer.io user attributes (like savemrr_risk_score and savemrr_payment_status) in addition to sending events. You can build Customer.io segments using these attributes, for example, a segment of users where savemrr_risk_score > 60 AND savemrr_payment_status = 'active' to target at risk users who haven't had a payment failure yet.

Your Stripe has a leak. Let's find it.

Free Revenue Scan: paste your Stripe key, see every dollar you lost in 60 seconds. No card needed.

Run my free scan