Answer WhatsApp messages
Connect a WhatsApp Business number and let your assistant answer messages, inside the 24 hours Meta allows.
What it does
Connects one WhatsApp Business number. Somebody writes to your business on WhatsApp, your assistant answers from a knowledge base you choose, and the whole exchange appears in the inbox on Social media, WhatsApp with whatever the person told you saved as a lead.
It is a separate surface from your website widget, with its own settings. That is deliberate: a WhatsApp message is read on a phone, between other things, by somebody expecting two sentences. Tuning one assistant until it fits both a web page and a phone notification makes both worse.
Whose name is on the reply
Your business's. Every message leaves from your own number, under the name Meta approved for it. Nothing in this product sets that name, nothing you configure here changes it, and the word WelcomeAI appears nowhere in the conversation. Your customer sees the same sender they would see if a person on your team had typed the reply.
That name is the verified name on your WhatsApp Business Account. Meta reviews it, it has to look like your business, and you change it in Meta rather than here. If you want the assistant to introduce itself by a name of its own -- "Mia from Acme" -- write that into its instructions; it is a thing the assistant says, not the name on the account.
The one rule that shapes everything
Meta opens a 24-hour window each time a person writes to you. Inside it, your assistant answers freely and so can anybody on your team. When it closes, WhatsApp stops accepting anything written freehand -- from the assistant and from a person. The only thing that crosses a closed window is a message template approved in advance, which this integration does not send yet.
So a closed window here is harder than the one on Instagram, where somebody on your team can still reply for seven days. Every thread in the inbox carries a countdown, and when it reaches zero the reply box is replaced by a line telling you to answer from the business's own WhatsApp instead.
The number you already have
WhatsApp is the one channel that hands you a contact detail with the first word. Meta addresses the person by their phone number, so:
- the assistant is told it already has their number and does not ask for it, which is what stops it asking somebody writing from their phone to type their phone number;
- the number is written onto the lead the first time anything else is saved, so a conversation that ends after one answer still leaves somebody you can call.
If the person types a different number, that is a correction and it wins.
One caveat worth knowing: for a few countries the id WhatsApp uses differs from the number you would dial -- Argentina's mobile 9 and Mexico's 1 are the documented cases. We store what Meta sends and show it as a phone number, which is right almost everywhere and worth checking when it matters.
What you need before you start
- A phone number on the WhatsApp Business Platform. It cannot be a number currently signed in to the WhatsApp or WhatsApp Business apps unless you migrate it.
- A WhatsApp Business Account in Meta, with that number added and its name approved.
- A knowledge base with your content in it. You choose which one when you connect.
- The Pro plan or above.
Connect it
Today this is a short form rather than a button, and the reason is Meta's: the one-click flow (Embedded Signup) needs Meta to review our app, which is under way. Meanwhile, a business with access to its own Meta app can connect now.
- Open Social media, WhatsApp.
- Choose the knowledge base that answers there.
- Paste the token. In your Meta app, under WhatsApp, API Setup. A system user token does not expire; the temporary one on that screen lasts 24 hours and is only good for a test.
- Paste the phone number id. It is on the same screen, under the number itself.
This is the field to get right. The WhatsApp Business Account id sits directly above it, both are long strings of digits, and only the phone number id ever receives messages. We read the number back from Meta before saving anything, so a wrong id is refused here rather than producing a connection that looks perfect and never answers.
- If the number is on your own Meta app, paste that app's secret too. That app signs every delivery, and without its secret we cannot tell a real message from anybody else's.
- Point Meta at the webhook. The address is on the settings screen once the number is connected; in Meta it goes on the messages field.
What to set
What it answers. The knowledge base, the model, and instructions of its own. These are seeded from the knowledge base when you connect, so it starts out answering exactly as your website does, and every difference afterwards is one you chose. Improving the prompt on your widget does not improve it here.
How a message reads. Plain text is on by default: WhatsApp has a formatting syntax of its own, which is not the one the model writes in, so the markers are removed rather than shown. Links survive and are clickable, and the first one in a message can show a preview -- which is the one way WhatsApp is friendlier than a DM. Meta refuses anything over 4,096 characters; the default here is lower, because a wall of text on a phone is read by nobody.
The bot disclosure. Meta's policy for automated experiences requires telling people they are talking to a bot. We send your line once per conversation, before the first answer.
Asking for their details. Choose the form, and the screen prints the questions it will actually ask, with the required ones marked. The phone number shows as already known.
Who finds out. Pick a Slack channel and it is told the moment somebody is waiting for a person, with what they said, their number, and when the reply window closes. Every public channel is offered; a private one has to have the app invited to it. The list is read when the page loads, so press Refresh next to the field if you have just made a channel or invited the app to one.
Taking a conversation over
Open the thread and switch the assistant off for that person. Their messages keep arriving, the assistant stays quiet, and you type. Switch it back on when you are done. There are two switches and they mean different things: the one in the thread is for one customer, the one in Settings turns the whole number off while you rewrite something.
What it does not do yet
- Templates. Reaching somebody after the 24 hours means a template approved by Meta in advance, and each one costs money per message. Not built.
- Buttons and lists. WhatsApp renders them; this sends text.
- Photos, audio and documents. They arrive and are recorded in the conversation, and the assistant does not answer them. A message with no words is left alone rather than answered with an apology for not being able to see it.
- More than one number per workspace. The screen shows one.
Changing a credential later
The settings screen has a Credentials card. Paste a new token there when the old one expires, or correct an id, and save -- the conversations and the contacts are untouched. An empty field means "keep what is stored", because we never send a token back to the browser.
Beside it is Test connection, and it is the first thing to press when anything looks wrong. It asks Meta two questions and tells you which one failed:
- Is the token alive, and is this the number that receives messages?
- Will Meta actually deliver to us?
The second one is the one that fails silently, and the answer looks identical to success everywhere else in this product.
When something is wrong
Nothing arrives. Press Test connection first. If it says the token works but Meta will not send us anything, the app is not subscribed to your WhatsApp Business account -- save the credentials again, which re-subscribes it, and check the account id is right. If the test is green, check that Meta's webhook for the messages field points at the address on that screen.
Nothing arrives, and the id is the usual reason. The phone number id, not the account id above it in Meta's API Setup. Both are long strings of digits and only one receives messages.
The assistant answers in the inbox but the person never gets it. Look at the error: if it is 131030, the recipient is not on the allowed list of a test number. Free test numbers can only message numbers you registered and verified. A real number has no such list.
A test number and an Argentine mobile do not work together. Meta tells us the sender is +54 9 11 ... and accepts sending only to +54 11 15 ... -- the same phone in two Argentine conventions, and its allowed-recipient list stores the second. We send to the identifier Meta gave us, which is the documented contract and what a real number needs, so the round trip cannot close through a test number. Test with a recipient in another country, or with your real number.
Messages arrive and nothing is answered. Look at the Settings tab: the assistant may be switched off for the number, or the thread may have been taken over. Both are shown.
A reply fails with "more than 24 hours". The window closed between the message arriving and the reply being sent. That is Meta's clock rather than ours, and the answer has to come from the business's own WhatsApp.