WIN-BACKMAXIO

How to win back churned customers on Maxio

Win-back on Maxio Advanced Billing: reactivation with a coupon, resume vs new period, balances, churn reason codes and measuring reactivated revenue.

Published 5 min read

A customer who cancelled already knows your product, has been through onboarding and, in Maxio, still has an account and payment history. Bringing them back is usually cheaper than finding someone new, and Maxio Advanced Billing has a feature built for it: reactivation, with options for coupons, trials and balances. This guide explains how reactivation works, how to choose who to contact and with what, and how to measure the result.

It sticks to Maxio’s own documentation: understand reactivation and resume scenarios, the reactivate subscription and reactivate subscription request API references, churn reason codes, apply coupons to subscriptions, choose the right report for your metric and webhook payload examples (all accessed November 2026). Maxio also sells Maxio Core (formerly SaaSOptics); this guide is about Advanced Billing.

Reactivation, not a new subscription

In Maxio Advanced Billing, a canceled subscription can be reactivated: the same subscription comes back to life, with its customer, history and payment profile. You do it from the subscription in the admin interface or with PUT /subscriptions/:id/reactivate.json (reactivate subscription). For a win-back campaign this is the main tool, since the customer does not have to start over.

Resume vs new billing period

Maxio separates two outcomes (reactivation and resume scenarios):

  • Resume the existing period. Possible only if you reactivate within the billing period in which the subscription was canceled. Whether the customer is charged depends on whether the subscription had a balance when it was canceled, for example after failed dunning.
  • Start a new billing period. The usual case for win-back, since you contact people after their period has ended. The customer is charged for the new period.

The API’s resume field controls this: when true, Maxio tries to resume and falls back to a new period if it cannot; when false or omitted, it always starts a new period.

Note that Maxio also uses “resume” for taking a subscription off hold, which is a different action.

The options that matter for win-back

The reactivate request accepts:

Field What it does Win-back use
coupon_code Applies a coupon during reactivation The discount in your offer
include_trial If true, includes the product’s trial if one is available; if false, ignores it A free restart period, if your product has a trial
preserve_balance If true, keeps the existing balance instead of clearing it before adding reactivation charges Decide whether an old unpaid balance follows the customer
resume Resume the old period or start a new one See above

The balance question needs a decision before you launch. A customer who left after failed payments may have an outstanding balance. Maxio’s docs describe a case where a $100 plan is reactivated at $0 by adding a balance adjustment of -$100 and choosing “Do not reset the existing balance”; if the adjustment is smaller than the plan price, the customer is charged the difference right away. Agree with your finance team on what returning customers owe before you email them.

Coupons

Coupons in Maxio only apply to plans in the same product family (apply coupons). If you plan to bring someone back on a different plan, check that the coupon belongs to that plan’s family.

Who to contact, and with what

Use churn reason codes

Maxio’s churn reason codes are defined in your site settings, required on cancellation once configured, and can be shown to customers in the Billing Portal. When codes are in use, Maxio’s churn analytics show the reason for each churn event. That is the field to segment your win-back on.

Separate voluntary and involuntary churn

A subscription canceled at the end of dunning is not the same as one the customer cancelled. Look at the state history: Maxio’s subscription_state_change webhook carries state and previous_state, so a move from past due to canceled tells you payment was the problem (payload examples). Those customers need a simple restart with a new card, not a discount.

Match the offer to the reason

Reason Win-back message
Price A coupon on reactivation, or a cheaper product
Missing feature Tell them when it ships; no discount needed
Not using it What changed since they left, or a smaller plan
Moved to another tool One honest message about the difference
Payment failed A restart link with a card update; no offer

A win-back sequence, step by step

  1. Record the reason at cancellation with a churn reason code, plus any free-text answer you collect.
  2. Listen to subscription_state_change and start the sequence when a subscription becomes canceled. Note the previous state.
  3. Wait before the first message. The day after someone cancels is rarely the right time; space messages over weeks.
  4. Write each message for the reason. Keep each one short with one link.
  5. Reactivate the same subscription when the customer accepts, with coupon_code if there is an offer, and a clear choice on preserve_balance and include_trial.
  6. Stop the sequence as soon as the subscription is active again, and for anyone who unsubscribes.

What to avoid

  • Discounting everyone. A customer who left because a feature was missing does not need 30% off; they need the feature. Discounts sent to everyone teach customers to cancel to get a better price.
  • Messaging people who asked you to stop. Respect unsubscribes and any request not to be contacted.
  • Surprise charges on return. If the reactivation will charge an old balance, say so before the customer clicks.
  • A new account for a returning customer. Reactivate the existing subscription where you can, so history and reporting stay in one place.

Measure it

Maxio’s report guide lists an MRR report that can be filtered by movement type, including Reactivation and Churn, and a Churn Analytics report under Insights. Use the Reactivation movement to see revenue that came back, and compare it with what your campaign sent. Also check whether reactivated customers stay: a win-back that lasts one month and ends in another cancellation is not much of a win. We cover the reports in more detail in how to measure churn in Maxio.

Doing this with NoChurn

NoChurn follows Maxio’s webhooks and sends win-back emails at day 30, 60 and 90 after a customer leaves, written from the reason they gave, with a link to come back. Before that, its cancel flow offers a coupon or a product change on the Maxio subscription, with a one-click cancel always visible, hosted or headless through the API, and a 0–100 churn score flags customers at risk. Reactivation, invoicing and the charge stay in Maxio and your gateway. NoChurn is free under $300 MRR, with every feature on every plan. See NoChurn + Maxio.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover