La catena di consegna dell'OTP: cosa succede tra la tua chiamata API e il telefono del tuo utente
Dal punto di vista della tua applicazione, inviare una password monouso è una riga di codice. Chiami un endpoint, ottieni un 200, vai avanti. Sembra un'operazione atomica.
Non lo è. Tra quella chiamata API e il telefono nella mano di qualcuno si nasconde una catena di fornitura — di solito lunga diverse aziende — su cui non hai alcuna visibilità, che non hai scelto e che stai pagando su ogni singolo messaggio. La maggior parte dei problemi di verifica che sembrano misteriosi dall'interno della tua app sono perfettamente ordinari una volta che riesci a vedere quella catena.
Ecco cosa contiene davvero.
I passaggi che nessuno ti mostra
Una richiesta "invia SMS" viaggia tipicamente più o meno così:
- L'API del tuo provider accetta la richiesta e la mette in coda.
- Un aggregatore — un'azienda che acquista capacità di messaggistica all'ingrosso e la rivende — la preleva. Il tuo provider potrebbe non possedere alcuna connessione diretta con gli operatori; potrebbe semplicemente rivendere quella di qualcun altro.
- Forse un altro aggregatore. La capacità viene scambiata. Una rotta che era economica stamattina può essere rivenduta due volte entro l'ora di pranzo.
- L'operatore di destinazione accetta finalmente il messaggio e tenta la consegna al telefono.
Ognuno di questi passaggi è un'azienda che ha bisogno di un margine. Nessuno di essi è visibile nella tua dashboard. Quando diciamo che circa 20 centesimi di ogni dollaro speso in verifica finiscono agli intermediari, questa catena sono gli intermediari — non una metafora.
Quanto ti costa ogni passaggio
Latenza. Ogni passaggio è una coda. È per questo che la consegna di un SMS OTP viene tipicamente indicata tra i 5 e i 30 secondi a seconda della rotta — quell'intervallo non è la rete radio a essere lenta, è il numero di intermediari attraverso cui il messaggio deve passare. Una flash call su una connessione diretta con l'operatore si completa in una mediana di 2–3 secondi semplicemente perché ha meno punti in cui aspettare.
Denaro. Il margine si accumula a ogni passaggio. Lo stesso messaggio allo stesso telefono può costare cifre enormemente diverse a seconda di quante aziende lo hanno toccato lungo il percorso.
Verità. È questo il punto che fa male. Una ricevuta di consegna (DLR) viene generata da qualche parte in quella catena e rimandata indietro fino a te. Se un intermediario segnala "consegnato" e non lo era, non hai alcun modo indipendente per saperlo. Ti stai fidando di un rapporto di stato di un'azienda con cui non hai alcun contratto, su un evento che non puoi osservare, su una rotta che non hai scelto.
Le gray route, in breve
Una gray route è un percorso in cui la relazione commerciale non corrisponde a quella tecnica — traffico che raggiunge un operatore attraverso un canale a cui non era propriamente destinato, di solito perché è più economico. Le gray route sono comuni proprio perché tutti nella catena competono sul prezzo.
La conseguenza pratica: più passaggi ci sono tra te e l'operatore, più opportunità esistono perché qualcuno nel mezzo tragga profitto dal tuo traffico in modi che non ti servono. È la stessa debolezza strutturale che rende la frode AIT così redditizia — la frode è più semplice dove un messaggio passa attraverso più reseller prima di raggiungere un operatore, perché più passaggi significano più punti in cui qualcuno può trattenere una quota del volume gonfiato.
Le gray route non sono un problema separato dal costo. Sono lo stesso problema, visto dal lato della frode.
Perché "abbiamo un'ottima API" non è tutta la storia
Ogni fornitore di verifica ha un'API REST pulita. È il minimo indispensabile, e non ti dice nulla su cosa succede dopo che la richiesta lascia il tuo server.
Le domande che determinano davvero la tua bolletta e il tuo tasso di conversione sono più a valle:
- Il tuo provider possiede le proprie connessioni con gli operatori, oppure sta rivendendo?
- Quante parti toccano un messaggio prima che raggiunga il telefono?
- Riesci a vedere la rotta effettiva e il costo effettivo per messaggio — oppure solo un totale mensile?
- Quando un DLR dice "consegnato", chi ha generato quella ricevuta?
Un fornitore che non sa rispondere a queste domande non sta necessariamente facendo qualcosa di sbagliato. Ma non può nemmeno dimostrare di non farlo, e nemmeno tu.
Cosa cambia una connessione diretta
Connettersi direttamente agli operatori — SMPP per la messaggistica, PSTN per la voce — rimuove lo strato di rivendita anziché ottimizzarlo. Le differenze sono strutturali, non incrementali:
- Meno code → latenza più bassa e più prevedibile.
- Nessun margine di rivendita → il prezzo che paghi è il prezzo della rotta, non il prezzo della rotta più la quota di tutti.
- Record di prima parte → il call detail record è generato dalla tratta che ha effettivamente girato, non trasmesso a te da una controparte con un interesse in ciò che dice.
- Nessuna esposizione alle gray route → non c'è alcuna catena di intermediari in cui qualcuno possa inserirsi.
La verifica flash call spinge questo ancora più in là non entrando affatto nella catena di messaggistica. Il codice non viene mai inviato come dato — è l'ID chiamante di una vera chiamata vocale sull'infrastruttura dell'operatore. Non c'è alcun aggregatore SMS in nessun punto del percorso, ed è per questo che è strutturalmente immune agli schemi di frode che prendono di mira la terminazione SMS.
Cosa fare davvero al riguardo
Non hai bisogno di cambiare provider per iniziare a vedere tutto questo. Tre cose che vale la pena fare questa settimana, chiunque sia il tuo fornitore:
- Chiedi direttamente al tuo provider se possiede le proprie connessioni con gli operatori oppure se rivende. È una domanda legittima e la risposta è istruttiva in ogni caso — incluso come rispondono.
- Estrai il costo per messaggio, non il totale mensile. Se non riesci a ottenere il costo per messaggio suddiviso per destinazione, quello è già di per sé il risultato.
- Confronta il numero di invii con il numero di verifiche completate. Il divario tra questi due numeri è ciò che stai pagando senza ottenere. La maggior parte dei team non ci ha mai guardato.
La catena è invisibile per impostazione predefinita. È questo il problema — non perché tutti quelli che ne fanno parte agiscano male, ma perché non puoi gestire ciò che nessuno vuole mostrarti.
Puoi controllare le nostre tariffe pubblicate per tentativo, per ogni Paese che serviamo, sulla pagina dei prezzi — senza modulo per il preventivo, senza chiamata commerciale. Quello che vedi è quello che paghi, perché non c'è nessuno nel mezzo a trattenerne una quota.