Skip to main content

How to Send WhatsApp Messages from Clay Using TimelinesAI

Integrate TimelinesAI with Clay to automatically send WhatsApp messages to your leads and contacts directly from your Clay tables.

Updated this week

Overview

This integration allows you to:

  • Send personalized WhatsApp messages to contacts in your Clay table

  • Automate outreach workflows triggered by data enrichment

  • Track message delivery with unique message IDs

  • Organize conversations with automatic labeling

Time to set up: 5-10 minutes


Prerequisites

Before you begin, make sure you have:

  • An active TimelinesAI account with at least one WhatsApp number connected

  • A Clay account with an existing table containing phone numbers

  • Your TimelinesAI API key (we'll show you where to find this)


Step 1: Get Your TimelinesAI API Key

  1. Log in to your TimelinesAI account

  2. Navigate to Integrations β†’ Public API

  3. Copy your API token

πŸ”’ Keep this key secure. Treat it like a passwordβ€”don't share it publicly.


Step 2: Add an HTTP API Column in Clay

  1. Open your Clay table containing the contacts you want to message

  2. Click + Add Column

  3. On "add enrichment" search for "whatsapp"

  4. Select HTTP API from the results


Step 3: Configure the API Request

A configuration panel will appear. Fill in the following settings:

Basic Settings

Setting

Value

Method

POST

URL

https://app.timelines.ai/integrations/api/messages

πŸ“Έ Screenshot 3: Clay HTTP API configuration panel showing Method and URL fields

Headers

Add two headers by clicking + Add Header:

Header Key

Header Value

Authorization

Bearer YOUR_API_KEY

Content-Type

application/json

⚠️ Important: Include the word Bearer followed by a space before your API key.


Step 4: Configure the Request Body

This is where you map your Clay columns to the WhatsApp message.

  1. Scroll to the Body section

  2. Select Raw or JSON mode

  3. Paste the appropriate JSON structure (see options below)

Option A: Basic Setup (Recommended for Most Users)

Use this if you have one WhatsApp account or want the simplest setup:

json

{   "phone": "",   "text": "" }

Required columns:

  • Phone Number β€” Recipient's phone in international format

  • Message Text β€” The message you want to send

Option B: Advanced Setup

Use this if you have multiple WhatsApp accounts in your workspace or want to auto-label conversations:

json

{   "phone": "",   "text": "",   "whatsapp_account_phone": "",   "label": "" }

Additional columns:

  • Sender WhatsApp Number β€” Which team member's WhatsApp sends the message

  • Label β€” Auto-tag the conversation (e.g., "Clay Lead")


Step 5: Map Your Columns

For each field in the JSON body:

  1. Place your cursor inside the empty quotes ""

  2. Type / or click the + icon

  3. Select the corresponding column from your table

Example mapping:

JSON Field

Maps To

"phone"

Your phone number column

"text"

Your message content column


Step 6: Set Up Response Handling (Optional)

To capture the message ID for tracking:

  1. Find the Results Path or Output section

  2. Enter: data.message_uid

This stores the unique message identifier in your Clay table.


Step 7: Test Your Integration

  1. Click Save and Run or Run for first 10 rows

  2. Check the new HTTP API column for results

  3. Verify in TimelinesAI that the message was sent

Success Indicators

βœ… Column shows 200 status code

βœ… Response contains "status": "ok"

βœ… Message appears in your TimelinesAI inbox

βœ… Recipient receives the WhatsApp message


Field Reference

Required Fields

Field

Format

Description

phone

+14155551234

Recipient's phone number in international format

text

Any text

Message content. Use \n for line breaks

Optional Fields

Field

Format

Description

whatsapp_account_phone

+14155551234

Sender's WhatsApp number (for multi-user workspaces)

label

Any text

Auto-apply a label to the conversation


Phone Number Format

Phone numbers must be in international format:

+[country code][area code][local number]

Examples:

Country

Format

United States

+14155551234

United Kingdom

+447911123456

Germany

+4915123456789

Brazil

+5511999998888


Troubleshooting

Common Errors

Error

Cause

Solution

401 Unauthorized

Invalid API key

Check that you included Bearer (with space) before your key

400 Bad Request

Invalid phone format

Ensure phone number includes country code (e.g., +1)

403 Forbidden

Quota exceeded

Check your TimelinesAI plan message limits

404 Not Found

Wrong URL

Verify the URL is exactly https://app.timelines.ai/integrations/api/messages

Message Not Received?

  1. Check the phone format β€” Must include country code

  2. Verify WhatsApp account is connected β€” Go to TimelinesAI β†’ WhatsApp Accounts

  3. Check message quota β€” Ensure you have available message credits

  4. Wait a moment β€” Messages are sent with ~2 second delays to avoid spam detection


Good to Know

Message Credits

  • Sending a text message uses 1 credit

  • Sending a message with an attachment uses 2 credits

  • Failed messages have credits restored automatically

Rate Limiting

Messages are sent with a small delay (~2 seconds) between each to comply with WhatsApp's guidelines and avoid spam detection.

Multi-User Workspaces

If your workspace has multiple team members with connected WhatsApp accounts:

  • Leave whatsapp_account_phone empty to use the default (most recently connected) account

  • Specify the phone number to route messages through a specific team member's WhatsApp


Example Use Cases

Lead Outreach

Send personalized welcome messages to new leads as they're added to your Clay table.

json

{   "phone": "{{Lead Phone}}",   "text": "Hi {{First Name}}, thanks for your interest in {{Company}}! I'd love to chat about how we can help. When works best for a quick call?",   "label": "Clay Lead" }

Follow-Up Sequences

Trigger follow-up messages based on enrichment data or time delays.

Event Reminders

Send WhatsApp reminders to webinar or meeting registrants.


Need Help?

Did this answer your question?