Your screenshot shows two separate problems, and the error message is only telling you about the first one.
- The whatsapp: prefix is being added twice.
The error says: The ‘To’ number whatsapp:+923197318703 is not a valid phone number.
In the Twilio node, WhatsApp is not something you type into the number, it’s a toggle. Open Options and enable “To WhatsApp” (and use the WhatsApp resource/toggle rather than plain SMS). n8n then adds the whatsapp: prefix itself. Since your To field already contains whatsapp:+923197318703, Twilio ends up receiving something like whatsapp:whatsapp:+92…, which is not a valid number.
So: put the plain number in the field (+923197318703) and let the toggle handle the prefix. Same for From.
- Your From and To are the same number.
Both fields are pulling +923197318703, which looks like the user’s own number coming from the webhook body. From must be YOUR Twilio WhatsApp number (in the sandbox that’s Twilio’s shared number, in production it’s your approved WhatsApp Business sender), not the person who messaged you. Right now you’re telling Twilio to send a message from the customer to the customer.
Map it as: From = your Twilio WhatsApp sender, To = {{ $(‘Webhook’).item.json.body.From }} with the prefix stripped if it’s already in there.
Two things that will bite you next, worth knowing now: on the sandbox the recipient must have joined it by sending the join code, otherwise Twilio rejects the message; and outside a 24-hour window since the user’s last message you can only send approved templates, not free text.
While you’re in there, add an error path on that node. A failed WhatsApp send that nobody sees is worse than one that errors loudly.

