Connect your WhatsApp account
Your WhatsApp Business Account is linked to MsgEasy. Three things stand between that and a live message: a sending number, an approved template, and your Verify settings.
Start the template now — it needs Meta's approval, and that is the part you wait on. You do not need any of this to start building, though: a test key runs the whole OTP flow without a template and without sending anything. See Quickstart.
1. Confirm your sending number
Open Settings → Phone numbers. The numbers on your WhatsApp account appear here, and at least
one has to be active — otherwise every send comes back no_sender.
Every message from your account goes out from one number, whoever you are sending on behalf of.
2. Create an authentication template
Verify sends its codes through an authentication template Meta has approved. Without one, a live
key refuses every request to send a code with verify_not_configured.
Authentication templates are created in Meta's WhatsApp Manager, not in MsgEasy. Open WhatsApp Manager, add a template in the Authentication category in each language you send in, and submit it. Approval is usually quick, but it is out of our hands, so submit early.
Give the template a copy-code button. We put the code both in the message body and in that button, so the user can tap to copy it instead of retyping — and Meta rejects the send outright if the template has no such button.
MsgEasy reads your approved authentication templates straight from Meta, so one appears in the console shortly after it is approved. Nothing has to be copied across.
The template composer inside MsgEasy (Templates → New) is for the marketing and utility templates you send yourself — see Create a template.
3. Choose that template in the console
Open Settings → Console → Verify and pick your approved template under Template. Until you
do, a live key refuses every request to send a code with verify_not_configured. Test keys are
unaffected — they never send anything, so they need no template.
The rest of the panel tunes the code itself, and every field already has a working default:
| Setting | Default | Range |
|---|---|---|
| Digits | 6 | 4–10 |
| Expires after | 5 minutes | 1 minute – 1 hour |
| Attempts allowed | 5 | 1–10 |
| Codes per number | 3 | 1–20 |
| Window | 10 minutes | 1 minute – 24 hours |
Codes per number and Window work together: by default, three codes per ten minutes to the same number. They protect your own template budget, so they are yours to set.
A single verify.start call can override the digits and the expiry. It cannot override those two.
What each Verify status means, and how the flow works, is on Verify a phone number.
Next
Set up your API access — keys, limits, and where your webhooks go.