WhatsApp + SMS OTP for Auth0 in India
3 September 2026
Building for Indian users on Auth0? If you’ve enabled phone-based sign-in, you’ve run into Auth0’s custom phone provider trigger — Auth0 generates and verifies the OTP itself, but delivering the actual message is on you. There’s no built-in SMS provider to flip on; you write an Action that calls out to whatever delivery backend you bring, and none of the obvious options (Twilio, MessageBird, Vonage) are DLT-registered for Indian carriers or priced for Indian volumes.
MiniMoth is a drop-in delivery backend for that Action. WhatsApp first, SMS fallback automatic, DLT compliance already handled — the whole integration is one small Action snippet, not a new SDK or a rewrite of your auth flow.
Why WhatsApp-first actually matters here
Most Indian phone users check WhatsApp more often than their SMS inbox, and WhatsApp delivery doesn’t route through TRAI’s DLT system at all — it goes through Meta’s Cloud API, a completely separate pipeline. MiniMoth sends every OTP over WhatsApp first and only falls back to SMS if that delivery fails, using its own DLT-registered sender so you never have to register one yourself. (More on why DLT registration is the part everyone dreads: Send OTP via WhatsApp Without DLT Registration.)
Auth0 still owns the whole OTP lifecycle
This is the point of the custom phone provider model — Auth0 generates the code, verifies it, and issues the session. MiniMoth only becomes the thing your Auth0 tenant calls out to when a message needs delivering. Whatever you’re already calling client-side to kick off phone sign-in — Auth0’s passwordless SMS API, a Universal Login phone flow, your own wrapper around it — is untouched. The only new artifact lives in your Auth0 tenant, not your app’s codebase: a small Action, generated by MiniMoth, that you paste in once.
Setup: one Action, no app code
- In the MiniMoth dashboard, open your project’s Auth0 Hook card and enable it — this generates a Hook URL, a bearer token, and the exact Action snippet to paste in, for both Test and Live.
- In Auth0, go to Actions → Library, create a Custom Action bound to the Send Phone Message trigger, paste in the snippet, and add two secrets on the Action:
SERVICE_URLandTOKEN(both shown in the same card). Deploy it.
That’s the whole integration — no deploy on your side, no new environment variables in your own app, no dependency to install. MiniMoth gives you a test mode with its own URL and token, so you can confirm the Action is wired correctly (checked in your Auth0 tenant’s own Action logs) before it ever sends a real, billed message. One thing worth knowing before you flip it on: this is a tenant-wide switch, not opt-in per notification type — the full detail, plus the Action code itself, is in the Auth0 integration guide.
What you get
- Dual-channel delivery — WhatsApp first, SMS fallback automatic, both handled by MiniMoth’s own infrastructure.
- No DLT registration — MiniMoth is already TRAI DLT-registered for the SMS fallback; WhatsApp never needed it in the first place.
- ₹0.35 flat per OTP — a fraction of what routing through a general-purpose SMS provider costs for Indian numbers (see the pricing breakdown).
- Auth0 keeps doing what it already does — code generation, verification, session issuance stay exactly where they are today. MiniMoth only touches delivery.
If you’re already running Auth0’s custom phone provider for Indian users and just want faster, cheaper, India-first OTP delivery without touching your app’s auth flow, start with the Auth0 integration guide — test mode is free, and going live is swapping two secrets on the same Action.