WhatsApp ha un open rate del 98%. L'email ne ha 21% in una buona giornata. La matematica è ovvia: per qualsiasi messaggio che conta davvero (trial in scadenza, pagamento fallito, onboarding bloccato), WhatsApp converte.
La matematica è ovvia da anni. Allora perché non ogni SaaS lo usa?
Perché il percorso da "voglio mandare un WhatsApp" a "sto mandando WhatsApp" è lastricato di tre settimane di dolore. Onboarding di Meta Business Manager. Account WhatsApp Business API. Negoziazione di un contratto BSP. Approvazione dei template. Webhook da configurare. Verifica del numero di telefono. Approvazione del display name. Monitoraggio del quality rating.
La maggior parte dei team si arrende allo step 3 e torna all'email.
Questo post racconta come saltare tutto questo e mandare il primo WhatsApp dal tuo database in circa 10 minuti.
Cosa significa "WhatsApp dal database"

Prima dell'how-to, sono preciso su cosa stiamo costruendo. Tre cose devono essere vere:
- Trigger da un evento DB. Quando
users.trial_ends_atè tra 3 giorni, o quandopayments.statusdiventafailed, o quandoonboarding.completed_atresta null per 24 ore: quello è il trigger. - Personalizzato dalle colonne del DB. Il messaggio include
{{first_name}},{{plan}},{{trial_ends_at}}risolti dalla riga utente reale, non da un CSV stantio. - Inviato via WhatsApp Business API, non WhatsApp Web. Significa che è un vero messaggio business, conforme, con ricevute di consegna e lettura: non un hack che fa bannare il tuo numero.
L'ultimo punto è quello che la maggior parte delle guide DIY salta. L'automazione di WhatsApp Web viola i TOS e il tuo numero muore in pochi giorni. Stiamo parlando di vero WhatsApp Business API con un BSP verificato.
Il modo standard (e perché ci vogliono settimane)
Ecco cosa faresti senza Minimo:
Step 1: Ottieni un WhatsApp Business Account
Apri Meta Business Manager. Crei un'azienda. La verifichi (può richiedere giorni). Crei un WhatsApp Business Account dentro. Aggiungi un numero di telefono mai usato su WhatsApp. Lo verifichi via SMS o chiamata. Ottieni l'approvazione di un display name da Meta.
Tempo finora: 3-7 giorni, dipende dalla coda di review di Meta.
Step 2: Firma con un BSP
Non puoi parlare direttamente con WhatsApp. Ti serve un BSP: Twilio, MessageBird, 360dialog, Vonage. Ognuno ha un contratto, fee mensili (€30-€500), markup per messaggio, e un processo di onboarding.
Tempo finora: 1-2 giorni per contratto + setup.
Step 3: Sottoponi i template di messaggio
WhatsApp Business non ti lascia mandare testo arbitrario fuori da una finestra di 24 ore iniziata dal cliente. Per messaggi proattivi (i tuoi reminder di trial, alert di pagamento, ecc.), ti servono template pre-approvati. Ogni template richiede:
- Categoria (utility, marketing, autenticazione)
- Body con placeholder ({{1}}, {{2}}...)
- Header, footer, button opzionali
- Sottomissione a Meta per la review
L'approvazione richiede da 1 ora a 7 giorni a seconda di categoria e lingua. I template marketing hanno review più strette delle utility.
Tempo finora: 1-7 giorni per template.
Step 4: Costruisci l'integrazione
Adesso l'engineering. Ti serve:
- Endpoint webhook per i messaggi in arrivo
- Client API per inviare (SDK Twilio, SDK MessageBird, REST 360dialog raw)
- Resolver per le variabili di template
- Layer di idempotenza (non spedire lo stesso messaggio due volte)
- Logica di retry
- Gestione delle ricevute di consegna (sent → delivered → read)
- Gestione degli opt-out (parola STOP, suppression automatica)
- Monitoraggio del quality rating (Meta ti declassa se troppi utenti bloccano)
Tempo finora: 3-5 giorni di engineering, più la manutenzione continua.
Step 5: Collegalo al DB
Ora la feature vera. Ascolti i cambiamenti del DB (Supabase realtime, Postgres LISTEN/NOTIFY, o polling). Quando una riga soddisfa la condizione, attivi l'invio WhatsApp. Lo stato (quale utente ha avuto quale messaggio, quando, se è stato consegnato) vive nel tuo DB o da qualche parte che devi gestire.
Tempo finora: altri 2-3 giorni.
Totale: 2-3 settimane di lavoro solo per spedire il primo messaggio. E in quel tempo non hai shippato nessun'altra feature di prodotto.
Il modo Minimo (10 minuti)

Minimo bundla l'intera infrastruttura WhatsApp come una feature, non come un progetto. Ecco come appare lo stesso obiettivo.
Step 1: Connetti il database
Dashboard Minimo → Connect → Supabase → OAuth
OAuth one-click a Supabase (o incolla una connection string Postgres per Postgres / Neon / Railway). Read-only di default. Minimo vede il tuo schema, i tuoi utenti, i tuoi eventi. Non importi nulla, non sincronizzi nulla. Sottoscrizione real-time al tuo schema public.
Tempo: 2 minuti.
Step 2: Configura il numero WhatsApp
Dashboard Minimo → Channels → WhatsApp → Set up
Minimo gestisce 360dialog come tuo BSP. Provvediamo noi al tuo WhatsApp Business Account, registriamo un numero di telefono verificato e lo sottomettiamo a Meta per tuo conto. Tu non tocchi Meta Business Manager. Tu non firmi un contratto BSP separato. Il piano Partner 360dialog da €500/mese è a carico nostro: tu paghi solo le conversation fee per messaggio di Meta, addebitate direttamente sul tuo account, con zero markup da Minimo.
Per un numero nuovo serve circa 5 minuti più la verifica Meta (di solito sotto un'ora per messaggi utility). Se hai già un numero WhatsApp Business verificato, lo puoi portare in 3 minuti.
Tempo: 5 minuti (più la verifica Meta, async).
Step 3: Crea il primo template
Dashboard Minimo → Templates → Nuovo template WhatsApp
Editor visuale. Scrivi il body del messaggio. Trascini variabili dal tuo schema DB ({{users.first_name}}, {{users.trial_ends_at | date}}). Scegli la categoria (utility / marketing). Aggiungi i button se servono. Premi Submit per l'approvazione Meta. Minimo gestisce il formato di sottomissione, i tag di lingua, le regole di header/footer.
I template utility approvano in secondi o minuti. Quelli marketing possono richiedere un'ora o due.
Tempo: 3 minuti per scrivere, approvazione async.
Step 4: Collega il trigger
Dashboard Minimo → Automations → Nuova automazione
Trascini un nodo trigger: "Quando una riga in users soddisfa: trial_ends_at è tra 3 giorni AND plan = 'free'". Trascini un nodo Send WhatsApp, scegli il template, mappi le variabili. Salvi. Attivi.
Tempo: 90 secondi.
Fatto.
Il prossimo utente con trial che scade tra 3 giorni riceve un WhatsApp sul telefono vero, col suo nome vero, dal tuo numero business verificato. Messaggio business reale, ricevuta di apertura reale, risposta vera che atterra nella tua inbox.
Com'è il codice
Se preferisci chiamare l'API direttamente invece di usare il visual builder, l'SDK è due righe:
import { Minimo } from "@minimo/sdk"
const minimo = new Minimo({ apiKey: process.env.MINIMO_KEY })
// Nel tuo backend esistente, quando un pagamento fallisce:
await minimo.send({
channel: "whatsapp",
template: "payment_failed_v1",
to: { user_id: failedPayment.user_id }, // risolto dal tuo Supabase
variables: {
amount: failedPayment.amount,
retry_url: failedPayment.retry_url,
},
})
Tutto qui. Minimo gestisce:
- Risoluzione dell'utente dal tuo DB (query read-only)
- Lookup di numero di telefono, locale, stato di opt-in
- Selezione della giusta versione di lingua del template
- Riempimento delle variabili
- Sottomissione a 360dialog → Meta
- Ricezione della ricevuta di consegna
- Memorizzazione nella timeline dell'utente
- Retry su errori transienti
- Soppressione se l'utente ha risposto STOP a un certo punto
Tu scrivi 6 righe. Noi facciamo le altre 600.
Cosa puoi costruire nella prima settimana
Cinque flow che richiedono un pomeriggio ciascuno, tutti su Growth (€79/mese, 50.000 messaggi/mese WhatsApp incluso):
Welcome + attivazione
Email al signup. WhatsApp 24 ore dopo se onboarding_completed_at è ancora null. L'utente finisce l'onboarding nel momento, sul telefono. Lift di conversione: di solito 2× a 5×.
Trial in scadenza
T-3 giorni da trial_ends_at, manda un WhatsApp personalizzato con le sue stat di utilizzo reali e un link di upgrade one-tap. La risposta arriva nella tua inbox Minimo se ha domande. Lift di conversione: di solito 2× rispetto alla sola email.
Retry pagamento fallito
Il webhook Stripe scatena invoice.payment_failed. Minimo manda subito un reminder WhatsApp di retry col link di update card. Se ancora non pagato dopo 48 ore, follow-up più morbido. Se ancora non pagato dopo 5 giorni, reminder finale. Recuperi fatturato che andrebbe in churn silenzioso.
Azione abbandonata
L'utente ha iniziato un checkout, un import, un form critico ed è uscito. Un'ora dopo, nudge gentile su WhatsApp con deep link al punto in cui era. Nessun cron job. L'evento DB è il trigger.
Riattivazione
30 giorni inattivo (last_seen_at < now() - 30 days). Un WhatsApp: "Tutto bene? Rispondi STOP per non sentirci più." Tasso di ri-apertura più alto di qualsiasi campagna email del tuo lifecycle.
Ognuno di questi è una build di 10 minuti nell'editor automation visuale. Ognuno gira per sempre, contro il tuo database vivo, con zero manutenzione continua.
Le clausole oneste
Qualche cosa da sapere upfront:
- Le fee per messaggio di Meta sono reali e le paghi direttamente. Minimo non ci mette markup. Sono economiche (centesimi) ma non gratis, e variano per paese e categoria. Meta addebita per finestra di conversazione di 24 ore, non per singolo messaggio.
- L'approvazione dei template è a discrezione di Meta. Noi sottomettiamo, Meta decide. I template utility passano quasi sempre velocemente. Quelli marketing possono essere rifiutati per tono, claim, o opt-in poco chiaro. Minimo ti guida su cosa passa.
- L'opt-in è obbligatorio. WhatsApp Business è un canale a permesso. I tuoi utenti devono fare opt-in (di solito al signup o nelle impostazioni account). Minimo ti aiuta a raccogliere e provare l'opt-in, ma non puoi mandare in massa a chi non ha mai accettato.
- La policy WhatsApp banna certi contenuti. Adulti, gambling, armi, certi prodotti finanziari. Se sei in una categoria ristretta, parlaci prima.
Queste non sono limitazioni di Minimo: sono policy di Meta WhatsApp Business. Chiunque mandi WhatsApp conforme deve seguire le stesse regole. Noi rendiamo solo la compliance facile.
Quando ha senso
WhatsApp dal tuo database è la mossa giusta se almeno una di queste è vera:
- L'utente medio ha un numero di telefono nel profilo (la maggior parte dei SaaS sì)
- I tuoi utenti sono in una regione dove WhatsApp è mainstream (la maggior parte del mondo fuori dagli USA: e in crescita anche negli USA)
- Hai un momento high-value nel funnel dove l'open rate dell'email ti sta uccidendo (trial in scadenza, pagamento fallito, step di onboarding chiave)
- Stai pagando €100+ per utente acquisito e li perdi nell'inattività silenziosa
Probabilmente non ha senso se:
- I tuoi utenti sono esclusivamente USA e consumer
- Non raccogli numeri di telefono e non hai un buon motivo per iniziare
- I tuoi messaggi sono puro broadcast marketing (Meta rifiuterà comunque quei template)
Per tutti gli altri, la domanda è solo se vuoi spendere 2-3 settimane a costruirlo o 10 minuti.
Provalo
Apri un account Minimo gratuito. Il piano Free include l'editor e l'API; WhatsApp è bundlato nel piano Growth a €79/mese, con 50.000 messaggi e 360dialog inclusi. Colleghi Supabase, configuri un numero, spedisci il primo WhatsApp prima di pranzo.
Per il perché abbiamo costruito questo nel modo in cui l'abbiamo costruito, vedi la pagina pricing: WhatsApp è la prima ragione per cui i clienti passano da Free a Growth, e non c'è mai markup sulle fee Meta.
Per approfondire
- Documentazione ufficiale WhatsApp Business API
- Come inviare email da Supabase (il pezzo mancante): il post complementare lato email
- Minimo pricing


