Attio Workflow Guide
How To Send Official WhatsApp Messages From An Attio Workflow
This guide explains how to send approved WhatsApp templates from an Attio workflow (or any automation tool) through WhatSync using Meta's official WhatsApp Business API.
Send Type
Approved templates
Transport
Meta Cloud API
Best For
Automated workflows
WhatSync has more than one WhatsApp connection method. This guide is only about the official WhatsApp Business API connection, the one connected through Meta/Facebook.
The official send flow in WhatSync sends approved WhatsApp templates. It does not use the QR-code linked-device sender. If your team wants to automatically start a WhatsApp conversation from Attio, a form, a CRM workflow, Zapier, Make, n8n, or your own backend, use the template send API described below.
- A Meta Business Portfolio where you have admin access.
- A phone number that can be connected to WhatsApp Business Platform.
- A connected WhatsApp Business API account inside WhatSync.
- Your connection ID and service API key copied from Workflow API Credentials.
- At least one approved WhatsApp message template in Meta.
- An Attio workflow, automation tool, or backend that can make an HTTP POST request.
WhatsApp is permission-based. For business-initiated messages, Meta expects you to use approved templates and to message people who have given you permission to contact them.
If a customer replies, WhatsApp webhook events are sent back to WhatSync and synced to Attio, so your team can see what happened after the workflow sent the message.
Add your own workflow/send video here when it is ready. The written guide below is designed to stand on its own until then.
Step 0: Copy Your Connection ID And Service API Key
Every workflow send needs two values from your WhatSync account: your connection ID and your service API key. You cannot guess these from the guide examples — copy the real values from your WhatsApp Business settings page.
- Open your WhatsApp Business settings in WhatSync.
- Scroll to the Workflow API Credentials section.
- Copy your Connection ID. Use it as the
connectionIdquery parameter in the send-template API. - Copy your Service API Key. Send it in the
x-service-api-keyheader or as a Bearer token. - If a key leaks, rotate it from the same section and update every workflow that still uses the old key.
Step 1: Create A WhatsApp Template In Meta
Templates are pre-approved messages. You create them in Meta, Meta reviews them, and then WhatSync can send them from your workflow. If you have never done this before, start with Meta's official guides below instead of asking support.
These are Meta's own pages for creating templates, setting up a WhatsApp Business account, and understanding the Business Platform requirements.
Follow Meta's official template creation guide in WhatsApp Manager, or use the short checklist below.
- Open WhatsApp Manager or Meta Business Suite.
- Go to the WhatsApp account connected to WhatSync.
- Open Message templates.
- Create a new template.
- Choose the category: Marketing, Utility, or Authentication.
- Give the template a simple lowercase name, such as
appointment_reminder. - Select the language, such as
en. - Write the body and add variables like
{{1}},{{2}}, and{{3}}. - Add sample values for every variable.
- Submit it for Meta review and wait until it is approved.
Template name
appointment_reminder
Template body
Hi {{1}}, this is a reminder that your appointment with {{2}} is scheduled for {{3}}. Reply here if you need to make a change.
{{1}}
Customer name
{{2}}
Team member
{{3}}
Date and time
- Use templates for the first message in a business-initiated conversation.
- Write the template exactly as the customer should see it. Avoid vague placeholders like 'Hi {{1}}, your thing is ready.'
- Use variables only for values that change: name, appointment time, invoice number, property name, order link, or agent name.
- Add sample values when submitting the template in Meta. Meta uses samples during review.
- Keep marketing copy clear and compliant. Customers should understand why they are receiving the message.
- Create separate templates for different intents instead of reusing one generic template for everything.
Step 2: Add The Send Step To Your Attio Workflow
The workflow can live in Attio automations, Zapier, Make, n8n, your backend, or any tool that can send HTTP POST requests. Its job is to decide when to message the customer and then call WhatSync with your connection ID and service key.
Start from a real business event: new lead, form submitted, invoice due, booking confirmed, support handoff, renewal reminder, abandoned checkout, or any other event your team already tracks.
Select the WhatsApp template that matches the event. The template name and language code used in the workflow must match the approved template in Meta.
Use the customer's WhatsApp-capable phone number in international format with country code. Avoid spaces, brackets, and local-only numbers.
Map template variables in order. In this app, {{1}} is sent as param_0, {{2}} as param_1, {{3}} as param_2, and so on.
Your workflow sends an HTTP POST request to WhatSync. WhatSync then sends the template through Meta's official WhatsApp Business API.
Meta sends delivery/read/failed events back to WhatSync. WhatSync stores those events and syncs them into Attio when sync is enabled.
Step 3: Call The WhatSync Send Template API
This is the API call your workflow sends to WhatSync. WhatSync validates the connection, builds the Meta payload, and sends the template through the official WhatsApp Business API.
POST https://your-whatsync-domain.com/api/send-template?connectionId=YOUR_CONNECTION_IDMethod
POST
Content Type
application/json
Auth
Session or service API key
For server-to-server workflows, authenticate with your service API key from the Workflow API Credentials section usingx-service-api-keyor anAuthorization: Bearerheader.
curl -X POST "https://your-whatsync-domain.com/api/send-template?connectionId=YOUR_CONNECTION_ID" \
-H "Content-Type: application/json" \
-H "x-service-api-key: YOUR_SERVICE_API_KEY" \
-d '{
"phoneNumber": "14155550123",
"templateName": "appointment_reminder",
"language": "en",
"parameters": {
"param_0": "Ava",
"param_1": "Maya from Sales",
"param_2": "Tuesday at 2:00 PM"
}
}'In this example, param_0 fills {{1}}, param_1 fills {{2}}, and param_2 fills {{3}}.
{
"phoneNumber": "14155550123",
"templateName": "invoice_ready",
"language": "en",
"header": {
"type": "document",
"link": "https://example.com/invoice-1042.pdf",
"filename": "invoice-1042.pdf"
},
"parameters": {
"param_0": "Ava",
"param_1": "INV-1042",
"param_2": "$240.00"
}
}If the approved template has a document, image, video, or text header, the request must include a matching header. A document sent by link should include a filename.
{
"success": true,
"data": {
"messaging_product": "whatsapp",
"contacts": [
{
"input": "14155550123",
"wa_id": "14155550123"
}
],
"messages": [
{
"id": "wamid.HBg..."
}
]
}
}A successful API response means Meta accepted the message request. Final delivery is confirmed later by webhook events such as sent, delivered, read, or failed.
What Happens After You Send
WhatSync does not guess whether a WhatsApp message was delivered. It waits for Meta to send official webhook events.
Stage 1
accepted
Stage 2
sent
Stage 3
delivered
Stage 4
read
When Meta sends a status webhook, WhatSync stores the status and syncs it into Attio if sync is enabled. If Meta sends a failed event, WhatSync stores the failure status and the error details it receives from Meta.
Common Problems
Most send issues come from template approval, parameter order, missing media headers, or incorrect phone numbers.
Reconnect WhatsApp Business in WhatSync and confirm the official Business API card shows Connected. The connection needs a Meta access token and WhatsApp phone number ID.
Check that the template is approved, the template name is exact, the language code is correct, and the number is in international format.
If the template has a text, image, video, or document header, your API request must include a matching header object.
Check the webhook status in WhatSync or Attio. Meta can return failed status events when a recipient is not reachable or the template violates policy.
Check parameter order. param_0 fills {{1}}, param_1 fills {{2}}, and param_2 fills {{3}}.
Official Meta Resources
Use these official resources when creating templates, checking WhatsApp policy, learning the Cloud API, or training your team.