Your ERP, your billing software, a spreadsheet, a form on your website. Three things to know and you are sending.
Settings → API. It is shown once and never again — if you lose it, make another and the old one stops working immediately.
Anybody with this key can send messages as your business, so it belongs on a server rather than in a page somebody can view the source of.
A template if they have not written to you in the last 24 hours, and ordinary text if they have. Sending text into a shut window comes back as an error rather than silently going nowhere — which is the one thing worth knowing before you build against this.
Comes back with an id you can look up later, and the status the message is in.
queued, sent, delivered, read or failed — with the reason, if it failed.
Give us a URL and we post to it. Message received, message sent, new contact, conversation assigned.
No key needed — the URL itself is the credential, which is why it is long and can be replaced. Point a website form, a Zap, or a portal at it.
A contact is made, a reply goes out, and somebody is given it — the same as a lead from any portal. Only the phone number is required.
Enough for any ordinary use. A queue is better than a burst anyway — WhatsApp rate-limits at its end too, and a burst there costs more than a queue here.
Meta has to approve each one, and approval takes hours. Creating them in the app is the only way that gives you the rejection reason when it comes back.
It is WhatsApp's rule, not ours. Text to somebody who has not written in a day returns an error rather than pretending to send — which catches it in your logs rather than in a customer complaint a week later.