Back to WhatsApp Business

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

Important: This Is The Official API Path

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.

Before You Start
  • 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.
What Meta Requires

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.

Watch The WhatSync Setup Walkthrough

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.

Where To Find Them
  1. Open your WhatsApp Business settings in WhatSync.
  2. Scroll to the Workflow API Credentials section.
  3. Copy your Connection ID. Use it as the connectionId query parameter in the send-template API.
  4. Copy your Service API Key. Send it in the x-service-api-key header or as a Bearer token.
  5. If a key leaks, rotate it from the same section and update every workflow that still uses the old key.
Open Workflow API Credentials

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.

Create The Template

Follow Meta's official template creation guide in WhatsApp Manager, or use the short checklist below.

  1. Open WhatsApp Manager or Meta Business Suite.
  2. Go to the WhatsApp account connected to WhatSync.
  3. Open Message templates.
  4. Create a new template.
  5. Choose the category: Marketing, Utility, or Authentication.
  6. Give the template a simple lowercase name, such as appointment_reminder.
  7. Select the language, such as en.
  8. Write the body and add variables like {{1}}, {{2}}, and {{3}}.
  9. Add sample values for every variable.
  10. Submit it for Meta review and wait until it is approved.
Read Meta's full template guide
Template Example

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

Template Writing Tips
  • 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.

1Choose the trigger

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.

2Pick the approved template

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.

3Map the recipient phone number

Use the customer's WhatsApp-capable phone number in international format with country code. Avoid spaces, brackets, and local-only numbers.

4Fill the template variables

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.

5Call the Send Template API

Your workflow sends an HTTP POST request to WhatSync. WhatSync then sends the template through Meta's official WhatsApp Business API.

6Let webhooks update the record

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.

Endpoint
POST https://your-whatsync-domain.com/api/send-template?connectionId=YOUR_CONNECTION_ID

Method

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.

Basic Template Send
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}}.

Template With Media Header
{
  "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.

Successful Response
{
  "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.

The API says the connection is not ready.

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.

Meta rejects the send.

Check that the template is approved, the template name is exact, the language code is correct, and the number is in international format.

The template has a header error.

If the template has a text, image, video, or document header, your API request must include a matching header object.

The customer did not receive the message.

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.

The wrong value appears in the message.

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.

Read the WhatsApp Business messaging and pricing breakdown