WhatsApp setup at a glance
Complete WhatsApp in this order:
- Create or open a Meta app and add the WhatsApp product.
- Connect and approve the WhatsApp business phone number.
- Create the three message templates shown below and wait for Meta to approve them.
- Open Admin > Settings > Notifications and connect the Meta credentials and approved template names.
- Add and verify the webhook callback in Meta.
- Enable the WhatsApp events required by the business and save Settings.
- Place one manual-payment order and one online-payment order, then test a customer status update.
Do not enable WhatsApp notifications until the templates show Approved and the connection in Ordio shows WhatsApp connected.
Browser notifications
Open Settings > Notifications and select Enable beside Browser notifications. Allow notifications when the browser asks. New orders then produce an alert on that device while the business dashboard is connected.
Browser permission is managed separately on each device. If alerts stop, check the browser's site permissions and operating-system notification settings.
Before connecting WhatsApp
WhatsApp messages use the Meta WhatsApp Cloud API. Prepare the following in Meta before deployment:
- A Meta business portfolio
- A Meta app with the WhatsApp product added
- An approved WhatsApp business phone number
- The phone-number ID shown under WhatsApp > API setup
- A permanent access token with permission to send WhatsApp messages
- The app secret from the Meta app settings
- A private verification token that you create for the webhook
Use international phone numbers, including the country code. For example, enter +14155550123, not a local number without its country code.
Create the message templates
Open WhatsApp Manager > Message templates in Meta and create the three templates below. Choose the Utility category and English as the language. Template names must use lowercase letters and underscores.
Meta asks for example values while reviewing a template. The examples are only for approval and do not appear in live orders.
1. Paid order alert
Name the template new_paid_order.
Use four body variables in this order:
| Variable | Live value | Example |
|---|---|---|
{{1}} | Order number | 10482 |
{{2}} | Order total in the configured currency | $27.50 |
{{3}} | Fulfilment method | Collection |
{{4}} | Short item summary | 2 x Coffee, 1 x Sandwich |
Suggested body:
New paid order {{1}}
Total: {{2}}
Fulfilment: {{3}}
Items: {{4}}Add these buttons in the same order:
- A dynamic URL button labelled View order. Use
https://YOUR-STOREFRONT-DOMAIN/order/{{1}}and provide an example order ID when Meta asks for a sample. - A quick-reply button labelled Accept order.
The URL receives the internal order ID, while the message body displays the shorter order number.
2. Pay-later order alert
Name the template new_pay_later_order.
Use five body variables in this order:
| Variable | Live value | Example |
|---|---|---|
{{1}} | Order number | 10483 |
{{2}} | Order total in the configured currency | $19.00 |
{{3}} | Fulfilment method | Delivery |
{{4}} | Payment choice | Pay on delivery |
{{5}} | Short item summary | 1 x Family meal |
Suggested body:
New order {{1}}
Total: {{2}}
Fulfilment: {{3}}
Payment: {{4}}
Items: {{5}}Add the same two buttons, in the same order, as the paid-order template:
- View order dynamic URL
- Accept order quick reply
3. Customer order update
Name the template customer_order_update.
Use two body variables:
| Variable | Live value | Example |
|---|---|---|
{{1}} | Order number | 10482 |
{{2}} | Current order message | Ready for collection. |
Suggested body:
Order {{1}} update
{{2}}This template does not need buttons. Ordio uses it for the enabled customer events, including order received, accepted, preparing, ready for collection, out for delivery, completed and cancelled.
Wait until Meta shows all three templates as Approved before enabling WhatsApp notifications. The current integration sends the English template language code en. A different language requires matching approved templates and a code change to the language setting.
Connect WhatsApp in Ordio
Sign in to /admin and open Settings > Notifications. Enter:
| Field | Where to find it |
|---|---|
| Access token | Permanent access token created for the Meta app |
| Phone-number ID | WhatsApp > API setup |
| Meta app secret | App settings > Basic |
| Webhook verify token | A private value you create for webhook verification |
| Paid-order template | The approved template name, normally new_paid_order |
| Pay-later template | The approved template name, normally new_pay_later_order |
| Customer update template | The approved template name, normally customer_order_update |
| Template language | The approved language code, normally en |
Select Connect WhatsApp. Credentials are saved securely and are not displayed again. Use Replace credentials when a token, secret or template changes. Use Disconnect to remove the saved values.
Confirm that STOREFRONT_BASE_URL in functions/.env contains the current HTTPS storefront address. The dynamic URL buttons in Meta must use the same domain.
Configure the Meta webhook
WhatsApp Functions are included when you run the normal deployment command. In the Meta app, use this callback URL:
https://REGION-PROJECT_ID.cloudfunctions.net/whatsappWebhookReplace REGION with the configured Functions region and PROJECT_ID with the Firebase project ID.
- Paste the callback URL.
- Enter the same webhook verify token saved in Ordio.
- Complete webhook verification.
- Subscribe the WhatsApp business account to the
messagesfield.
The webhook receives delivery states and the Accept order quick reply. Ordio verifies Meta's request signature before processing it.
Enable WhatsApp notifications
After WhatsApp shows as connected in Settings > Notifications:
- Enter the primary business contact number under Business details using its international country code.
- Enable WhatsApp notifications.
- Choose the business and customer events to send.
- Select Save settings.
The primary contact number receives business order alerts. Customer updates use the number connected to the customer's account.
Test before launch
Use Meta test resources or approved production test recipients first.
- Place a pay-at-collection or pay-on-delivery order and confirm the business receives the pay-later template.
- Complete a test online payment and confirm the business receives the paid-order template.
- Select Accept order in WhatsApp and confirm the order changes to accepted in Orders.
- Move the order through the enabled statuses and confirm the customer receives the expected updates.
- Confirm the displayed order number, total, currency, fulfilment method and item summary are correct.
- Disable one customer event and confirm that status sends no message.
- Confirm ordering still completes if Meta temporarily rejects a message.
Common setup problems
The template is rejected: Keep the wording transactional, use the Utility category and provide realistic examples for every variable.
The API reports that a template does not exist: Confirm the template name and language in Settings > Notifications, then confirm the WhatsApp business account belongs to the saved access token.
The API reports a parameter-count error: Match the body variables and buttons exactly as listed above. Paid alerts use four body values; pay-later alerts use five; customer updates use two.
The webhook cannot be verified: Confirm the callback region and project ID, then enter the exact webhook verify token saved in Settings > Notifications.
Messages work only for test numbers: Complete the Meta business, phone-number and template approval steps before sending to other recipients.
The business dashboard says WhatsApp is not connected: Open Settings > Notifications, enter all required Meta values and select Connect WhatsApp.
Verification checklist
- All three English utility templates are approved
- Template variables and buttons follow the documented order
- The Meta access token is permanent and has the required WhatsApp permissions
- The webhook is verified and subscribed to
messages - The primary business number includes its country code
- A new order produces a browser alert after permission is granted
- The business receives paid and pay-later WhatsApp alerts
- The Accept order quick reply updates the correct order
- Customers receive only the enabled WhatsApp status updates
- Disabled events send nothing
- Invalid or missing phone numbers do not block ordering
- Ordering continues if WhatsApp is unavailable