FLUSSI DI DISDETTAMAXIO

Come aggiungere un flusso di disdetta a Maxio

La disdetta in Maxio Advanced Billing: disdette immediate e differite, reason code, impostazioni del Billing Portal, hold, coupon e cambi di prodotto.

Pubblicato il 5 min di lettura

Un flusso di disdetta si colloca tra il pulsante “Disdici” e la disdetta: chiede il perché, fa un’offerta adatta al motivo e disdice in modo pulito se il cliente vuole comunque andarsene. Maxio Advanced Billing (ex Chargify) ha già diversi pezzi: disdetta differita, reason code di churn, hold e cambi di prodotto programmati. Questa guida spiega come funzionano e come metterli insieme in un flusso.

Si attiene alla documentazione di Maxio: disdetta degli abbonamenti, programmare la disdetta di un abbonamento, gestire gli abbonamenti nel Billing Portal, configurare le funzioni del Billing Portal, reason code di churn, scenari di hold e ripresa, applicare coupon agli abbonamenti, i riferimenti API update subscription e initiate delayed cancellation, e gli esempi di payload dei webhook (tutti consultati a novembre 2026). Alcuni esempi API di Maxio usano ancora i vecchi URL di Chargify; verifica gli endpoint per il tuo sito.

Come funziona la disdetta in Maxio

Maxio offre tre tempistiche (disdetta degli abbonamenti):

Tempistica Cosa succede
Immediata L’abbonamento viene annullato subito
A fine periodo Continua per tutto il periodo pagato in uno stato Pending Cancellation, poi si annulla
In una data programmata Si annulla in una data futura scelta da te o dal cliente (richiede la funzione di programmazione)

In ogni caso, Maxio non rimborsa né calcola il pro rata automaticamente. Per un cliente che ha scelto di andarsene, la fine del periodo è il default corretto: mantiene ciò che ha pagato.

Una disdetta in attesa può essere rimossa: la guida di Maxio per costruire il tuo Billing Portal elenca un endpoint dedicato. Tramite l’API, una disdetta differita accetta un reason code e il flag cancel_at_end_of_period; programmare una data richiede che la funzione Schedule Subscription Cancellation sia attiva sul tuo sito.

Alcuni abbonamenti non possono essere programmati per la disdetta. Secondo Maxio, gli abbonamenti prepagati si annullano sempre immediatamente, e gli abbonamenti in stati come Past Due, Expired o Paused non possono essere programmati (programmare una disdetta). Il tuo flusso deve gestire questi casi.

Reason code di churn

Maxio ha reason code di churn integrati. Li crei, modifichi, ordini ed elimini nelle impostazioni del tuo sito, e compaiono quando qualcuno disdice dal riepilogo dell’abbonamento. Una volta configurati i codici sul tuo sito, bisogna selezionare un motivo prima di confermare una disdetta. Quando i codici sono in uso, le analisi del churn di Maxio mostrano il motivo di ogni evento di churn. Usali anche se costruisci il tuo flusso: invia il reason code con la disdetta, così i report di Maxio e i tuoi concordano.

Il Billing Portal

Il Billing Portal ospitato da Maxio permette ai clienti di disdire da Plan Details, scegliendo tra disdetta immediata e a fine periodo (abbonamenti nel Billing Portal). Lo controlli con interruttori separati nelle funzioni del Billing Portal:

  • Allow Immediate Cancellations
  • Allow Delayed Cancellations (at end of period)
  • Allow Scheduling Cancellations, così i clienti possono scegliere una data futura
  • Display Churn Reason Codes, così i clienti scelgono un motivo quando disdicono

Il portale chiede una conferma, e Maxio precisa che dopo quel passaggio non si può tornare indietro. Ciò che il portale non fa è proporre un’offerta: registra un motivo e disdice. Se vuoi un passaggio di retention, mettilo nella tua app prima che il cliente arrivi al portale, oppure disattiva la disdetta dal portale e gestiscila tu. Se mantieni attiva la disdetta dal portale, attivare solo la disdetta differita è una scelta sensata.

Le offerte che Maxio supporta

Hold (pausa)

Maxio chiama una pausa hold (scenari di hold e ripresa). Durante l’hold, i rinnovi non avvengono. Un hold può avere una data di ripresa, e l’abbonamento riprende allora da solo (l’oggetto subscription ha un campo automatically_resume_at). Solo un abbonamento Active può essere messo in hold. Un dettaglio conta per i flussi di disdetta: un abbonamento impostato per annullarsi a fine periodo non si annulla durante l’hold; si annulla dopo la ripresa.

La guida di Maxio elenca endpoint di hold e ripresa, ma le sue stesse pagine li mostrano in due forme di percorso (con e senza /subscriptions/:id), quindi verifica il riferimento API attuale prima di costruirci sopra.

Coupon

I coupon di Maxio si possono aggiungere a un abbonamento esistente (applicare coupon). Due regole dalla documentazione:

  • La durata del coupon si conta dal prossimo rinnovo dell’abbonamento, non dall’iscrizione.
  • Un coupon si applica solo ai piani della stessa product family.

Le pagine che abbiamo trovato descrivono l’aggiunta di un coupon nell’interfaccia di amministrazione; verifica nel riferimento API di Maxio la chiamata che userai dalla tua app.

Cambio di prodotto

Per “troppo caro”, un piano più economico è spesso meglio di uno sconto. Maxio supporta un cambio di prodotto differito (update subscription): imposta product_handle sul nuovo prodotto e product_change_delayed a true, e il cambio avviene al prossimo rinnovo senza pro rata. Inviare un prodotto successivo vuoto annulla un cambio programmato. I coupon sull’abbonamento vengono mantenuti solo se sono limitati al nuovo piano o senza restrizioni.

Costruire il flusso

  1. Indirizza il “Disdici” della tua app al tuo flusso. Decidi cosa consente il Billing Portal, così i clienti non trovano due esperienze di disdetta diverse.
  2. Verifica cosa è possibile per questo abbonamento. Gli abbonamenti prepagati si annullano immediatamente; quelli Past Due e Paused non possono essere programmati. Un hold richiede un abbonamento Active.
  3. Chiedi il perché, usando lo stesso elenco dei tuoi reason code di churn in Maxio.
  4. Mostra un’offerta adatta. “Troppo caro”: un cambio di prodotto differito o un coupon. “Non lo uso in questo momento”: un hold con una data di ripresa. “Manca una funzione”: una risposta da una persona.
  5. Tieni “Disdici ora” visibile a ogni passaggio. Un clic conclude la disdetta, senza accettare alcuna offerta.
  6. Applica il risultato. Disdetta differita con il reason code e cancel_at_end_of_period; oppure l’hold, il coupon o il cambio di prodotto.
  7. Conferma la data dall’abbonamento restituito da Maxio, e offri di annullare una disdetta in attesa finché non ha effetto.

I webhook da ascoltare

Dagli esempi di payload e dagli eventi webhook di Maxio:

  • subscription_state_change contiene state e previous_state: usalo per vedere un abbonamento passare ad annullato, in hold o di nuovo attivo.
  • pending_cancellation_change ha un payload di esempio con cancel_at_end_of_period e delayed_cancel_at. Le pagine di Maxio che abbiamo trovato non dicono esattamente quando viene inviato, quindi provalo sul tuo sito.

Maxio dice che i webhook sono asincroni e consiglia di verificare che previous_state corrisponda a ciò che hai prima di aggiornare i tuoi record, e di recuperare l’abbonamento dall’API in caso di dubbio.

Farlo con NoChurn

NoChurn si collega a Maxio con una chiave API, importa clienti e abbonamenti e segue i webhook di Maxio. Aggiunge un flusso di disdetta con motivi, offerte che diventano un coupon o un cambio di prodotto sull’abbonamento Maxio, e una disdetta in un clic sempre visibile, ospitato o headless tramite API. Invia anche email di win-back ai giorni 30, 60 e 90 in base al motivo della disdetta e calcola un churn score da 0 a 100. Fatturazione, imposte, i tuoi prodotti e l’addebito restano in Maxio e nel tuo gateway. NoChurn è gratuito sotto i 300 $ di MRR. Vedi 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.

Smetti di perdere ricavi.

  • Gratis fino a $300 MRR
  • Nessuna carta richiesta
  • Attivo in 10 minuti
  • Mai una quota di ciò che recuperiamo