Skip to main content
When a customer taps a Click-to-WhatsApp ad (or a boosted post) and messages you, WhatsApp attaches a referral to that message. It says which ad the customer came from, what the ad showed, and includes a unique click ID (ctwaClid). Wassist stores this referral and exposes it in three places: WhatsApp only attaches the referral to the message the customer sends straight from the ad. latestReferral lets you attribute the rest of the conversation to that ad too, including later messages, orders and handoffs.

The referral object

Every field except messageId and createdAt can be null. WhatsApp only sends the fields that apply to the ad.

Finding conversations from an ad

The list conversations endpoint accepts three filters: referralSourceId and ctwaClid match any referral in the conversation, not just the latest one.

Reacting in real time

Every message.received and subscription.message.received webhook carries message.referral and latestReferral. That means your service can tag the lead or route it to a sales queue as soon as the first message arrives:

Sending conversions back to Meta

Send ctwaClid to Meta’s Conversions API for Business Messaging when a WhatsApp conversation turns into a lead or a purchase. Meta then credits the conversion to the ad in Ads Manager and uses it to optimise delivery.
The dataset ID, access token and required fields come from your Meta Business setup. Check Meta’s Conversions API documentation for the current payload.

Existing conversations

Referrals are also available for messages received before this feature launched, so historical ad-driven conversations show a latestReferral too. welcomeMessage is usually null on these older messages because it wasn’t stored at the time. The click ID and ad details are filled in.

What’s Next

Webhooks

Receive message.received events with the referral attached.

Conversation Routing

Send ad-driven conversations to your own service instead of the agent.