← Back to the blog
TECHNICAL GUIDE Measurement & attribution

What ctwa_clid Is and How to Track WhatsApp Sales

Learn what ctwa_clid is, where to capture it in a WhatsApp webhook, and how to connect Click-to-WhatsApp ads with verified leads and sales.

ctwa_clid is a click identifier that Meta may include in the referral data of the first message that starts a conversation from a Click-to-WhatsApp ad. Capture it in your WhatsApp webhook and link it to the lead to report subsequent outcomes, provided a real conversion has been verified.

If your report only shows “conversations started,” you still do not know which ad generated a qualified lead, an opportunity, or a sale. Adding another website tag will not solve that gap: a Click-to-WhatsApp ad can take someone straight from the ad into a chat.

This guide explains the signal Meta provides, how to retain it, and when to use it to report a business event. The aim is a traceable connection between an observed source and a verified outcome, without promising perfect attribution.

When the conversation bypasses your website

GA4, the Meta pixel, and Google Tag Manager can observe activity on your website. A Click-to-WhatsApp ad can open WhatsApp directly. Without a website visit, there is no page URL to inspect, website cookie to store, or web event to trigger along that path.

That does not mean the source is unknowable. When a conversation starts from an eligible ad, WhatsApp Business Platform may include referral data in the incoming message webhook. That data can contain ctwa_clid. Meta’s Business Messaging guide describes obtaining the identifier from the referral object and retaining it with the conversation. Meta’s Business Messaging documentation.

Your WhatsApp integration and backend must capture this signal.

CTWA click, message webhook, CRM, verified conversion and CAPI submission

Figure 1. From an ad click to business evidence. A click or a conversation alone does not prove that a sale occurred.

ctwa_clid identifies the Click-to-WhatsApp ad click

ctwa_clid identifies the click that took someone from a Click-to-WhatsApp ad into a conversation. Meta may include it in the message webhook’s referral object. The actual payload depends on the API version and message type. This simplified excerpt highlights the relevant structure; it is not the complete webhook envelope:

{
  "messages": [
    {
      "id": "wamid.example-first-message",
      "from": "<contact-identifier>",
      "timestamp": "1767312000",
      "referral": {
        "source_type": "ad",
        "source_id": "<ad-id>",
        "headline": "<ad-headline>",
        "ctwa_clid": "<meta-click-identifier>"
      }
    }
  ]
}

All values are fictitious. Do not publish real customer payloads, phone numbers, or identifiers. Meta maintains a Click-to-WhatsApp message example in its official WhatsApp Cloud API collection. View Meta’s webhook example.

Before building automations, test the entire path with an ad and a test contact. Locate the messages array in the incoming webhook, preserve referral before transforming the payload, and confirm that the first message is linked to the correct lead.

What each field establishes

Data Source Purpose What it does not prove
ctwa_clid Webhook referral Link a later outcome to a CTWA ad click when Meta provides the identifier That every WhatsApp conversation came from an ad
source_id Webhook referral Retain the identifier of the originating ad or post That a sale or qualified lead exists
Message or conversation ID Webhook and CRM Prevent duplicates and trace the event chain The lead’s commercial quality
Closed-won status or confirmed payment CRM, ERP, or payment system Establish that a real conversion occurred The advertising source when referral evidence is absent

A missing referral is not permission to invent attribution. It may reflect an organic message, a flow that does not provide this signal, or an implementation problem requiring investigation.

Decision tree for present or missing referral.ctwa_clid

Figure 2. Diagnosing a missing signal. Missing referral data calls for investigation; intuition, UTMs, or timing alone do not establish the source.

A minimum data model for retaining the signal

Copying the identifier into a free-text CRM note is not enough. You need a relationship you can retrieve when the contact advances through the sales process. At a minimum, retain:

  • ctwa_clid exactly as Meta provides it;
  • the ID of the message or conversation that received it;
  • an internal lead or contact identifier;
  • the receipt date and time;
  • source_type and source_id when present;
  • processing status, so you can tell whether the signal was stored and subsequent events were sent.

Make processing idempotent: if Meta retries a webhook or your server processes the same delivery twice, it should not create duplicate leads or sales events. This is an architectural recommendation based on implementation experience. A unique message-ID constraint or a processed-events table can support that design.

Minimize the data you retain. Meta treats ctwa_clid as personal data in its customer-information parameter documentation. Follow the parameter-specific hashing requirements rather than applying a blanket hashing rule, and avoid combining it with more information than the measurement purpose requires. Meta’s customer information parameters.

Send the verified conversion to Meta through CAPI

Receiving the webhook establishes a source signal. Your business process must separately define the outcome that counts: an accepted lead, a qualified opportunity, an approved payment, or a signed contract, for example.

When that outcome occurs within the linked conversation, your integration can report the appropriate event through Conversions API for Business Messaging. This schematic example shows the key fields; it is not a complete, ready-to-send Purchase request. Replace placeholders and include any additional fields required for your event, dataset, and integration:

{
  "data": [
    {
      "event_name": "Purchase",
      "event_time": "<unix-timestamp-of-the-real-conversion>",
      "action_source": "business_messaging",
      "messaging_channel": "whatsapp",
      "user_data": {
        "whatsapp_business_account_id": "<waba-id>",
        "ctwa_clid": "<ctwa-clid-received-in-the-webhook>"
      }
    }
  ]
}

action_source describes the business messaging context, messaging_channel identifies WhatsApp, and user_data carries the WhatsApp Business Account identifier and the received click identifier. Your dataset configuration and account authorization must match the integration. Meta’s Business Messaging guidance.

Use the actual conversion time for event_time. Do not reuse the click time or change the timestamp to make an event look more recent. Meta’s CAPI guidance describes an acceptance limit of seven days between the event time and submission. That ingestion limit does not guarantee that every outcome within seven days will be attributed to a campaign. Meta’s event-time requirements.

Meta’s implementation guide recommends sending signals in real time or within an hour. Delays beyond two hours can affect optimization; delays of 24 hours or more can create substantial attribution and delivery problems. Being within the acceptance limit is therefore no substitute for prompt delivery. Meta’s guidance on data freshness.

Evidence at each stage

Stage Minimum evidence Supported conclusion Conclusion not yet supported Next action
Ad click Valid ctwa_clid received in referral A source signal associated with a CTWA click was received The person converted or purchased Link the signal to the message and internal lead
Conversation started Stored message or conversation ID and lead A conversation can be traced to a source signal The lead is qualified Process retries without duplicate records
Business outcome CRM stage, payment, or contract confirmed by the source system The business-defined event occurred Meta will necessarily report or attribute it Prepare one CAPI event with the actual event time
Event submitted CAPI response and submission log A Business Messaging event was submitted to Meta Reporting already establishes causality or definitive ROI Review diagnostics, reporting, and attribution settings

Mistakes that break attribution

Looking for the identifier on your website

A website tracker can capture activity that passes through the site. It cannot capture a field delivered inside a WhatsApp message webhook. Capture the identifier in your WhatsApp integration.

Saving it without a conversation reference

If the same contact uses several channels or returns months later, a note without a message ID, timestamp, or processing status cannot reliably connect an outcome to its source. Store a traceable relationship and handle retries idempotently.

Guessing the source when referral is missing

UTMs, the last source in GA4, and timing can support other analyses, but they do not replace the WhatsApp signal. Record the missing evidence or investigate the flow. Do not label the outcome as CTWA without supporting evidence.

Reporting the same business event more than once

One sale can trigger a stage change, an invoice, a payment notification, and a manual update. Define the business event and its deduplication identifier, then make retries refer to that same event. Do not treat each notification as a new purchase.

Confusing the submission limit with the attribution window

The seven-day requirement concerns the age of event_time when CAPI receives the event. It is not a universal promise about campaign attribution windows, reporting, or ROI.

Implementation checklist

  1. Confirm that the number and account are integrated with WhatsApp Business Platform and that your endpoint receives messages.
  2. Run a test ad and send a test message. Keep a sanitized test payload for debugging; do not place production payloads in a shared repository.
  3. Verify that referral.ctwa_clid, the message ID, and the internal lead remain linked in persistent storage.
  4. Make webhook processing idempotent and log failures securely.
  5. Define what counts as a conversion in your CRM or ERP, and which system is authoritative for that decision.
  6. Send the CAPI event with the actual conversion time, all required parameters, and the appropriate Business Messaging configuration.
  7. Test a controlled conversion, inspect the API response, and document the result before expanding automation.
  8. Review permissions, API versions, privacy practices, and retention rules periodically.

Frequently asked questions

No. It is a click identifier that Meta may expose in the referral data of a WhatsApp message originating from a CTWA ad. It does not depend on a website page loading or on the _ga cookie.

Does it arrive with every WhatsApp conversation?

Do not assume so. Use it only when the received webhook contains a valid reference. Organic messages and flows without referral data require a different measurement approach.

Can I submit a conversion seven days later?

Meta’s CAPI guidance allows an event_time up to seven days before submission. That acceptance limit does not remove the recommendation to send promptly, and it does not establish the campaign’s attribution window.

No. It is a technical attribution signal. Your organization remains responsible for establishing an appropriate basis for processing data, informing people, and protecting the webhook and CRM.

Close the loop with evidence

ctwa_clid helps connect an ad click with a conversation when the platform supplies that reference. Retain the signal from the first message, verify the conversion in your business system, and report the event to Meta using the actual timestamp and observed source.

Do your ads send people to WhatsApp, but leave you unable to connect leads with sales? Request an attribution audit to review your webhook, CRM, and event flow from end to end.

HYPE DIGITAL

Do your ads lead to WhatsApp, but leave you unable to connect leads with sales?

Request an attribution audit to review your webhook, CRM and event flow from end to end.

Let’s talk measurement
← Back to the blog