Send Conversions API Event
Report a conversion — a lead, a purchase, a cart — to Meta's Conversions API from this conversation's channel, so ad optimisation can see what happened after the click.
Getting here
Automate → Workflows, open a workflow, click + on the canvas, then pick Send Conversions API Event under Add Steps.
Before you start
- An owner, admin or agent can add this step and save the workflow. Publishing that workflow — the thing that makes it run on live conversations — is an owner or admin action.
- Building and running workflows depends on your plan; see pricing.
- This conversation's channel needs a WhatsApp, Messenger or Instagram connection in Settings → Integrations. Until then the drawer shows a connect card instead of the fields — on WhatsApp the dataset is created automatically on the first send; on Messenger and Instagram an owner or admin must link a Dataset ID and Dataset access token from Meta Events Manager on the channel in Settings → Channels.
Set up
- Open the workflow and click + where the event belongs.
- Pick Send Conversions API Event.
- Choose Meta CAPI event name from Meta's business-messaging list.
- Optional: set Value and Currency as a pair — naming only one sends the event with no price.
- Optional: set Test event code to have the event land in Meta Events Manager's Test Events instead of counting as real traffic.
- Save the step, then publish the workflow.
Fields
- Meta CAPI event name
- Which conversion this is, from Meta's business-messaging list (Purchase, LeadSubmitted, InitiateCheckout, AddToCart, ViewContent, OrderCreated and others).
- Default: LeadSubmitted
- Limits: Only Meta's business-messaging names are offered — the web-pixel-only names (Lead, CompleteRegistration) are rejected by Graph and do not appear here.
- Value
- The sale or lead's amount — a number, or a placeholder like
{{deal.value}}. - Limits: Sent only paired with Currency; either alone is dropped, not sent as a bare number.
- Currency
- A 3-letter ISO code, or a single placeholder like
{{deal.currency}}that resolves to one. - Limits: Sent only paired with Value.
- Test event code (optional)
- Meta Events Manager's test code, from its Test Events tool.
- Limits: With a code set, the event lands in Test Events and is not counted as real traffic.
How it works
- What leaves Inchat, and when: the instant the step runs, one call to Meta's Conversions API carrying the event name, a de-duplication id, and identity signals for THIS conversation's channel — on WhatsApp, the WhatsApp Business Account id and the customer's phone number hashed with SHA-256 (never sent in the clear); on Messenger, the Page id and the page-scoped user id; on Instagram, the Instagram Business Account id and the IG-scoped id — plus the value/currency pair when both resolve, and Meta's click-to-WhatsApp click id when this conversation has one.
- WhatsApp events specifically need that click id on every send — Graph rejects a WhatsApp business-messaging event without one. A conversation with no ad signal at all (no referral, or one that declares organic traffic — a post, a shortlink) is not sent and does not fail either: the step reports it was skipped with the reason, and does not page anyone, since an always-on workflow meeting an ordinary organic thread every run is expected, not a misconfiguration. A conversation whose referral DOES suggest ad traffic but carries no click id is different — that is attribution being lost — and the step fails.
- A price is sent only as a matched pair. Naming just a Value, or just a Currency, or one of the two failing to resolve to something valid, still sends the event — it goes out with no price, and the step succeeds with a note explaining exactly what was missing, visible in the run's Activity tab.
- The Graph call is made every time the step runs, whether or not Meta ends up counting it twice — de-duplication happens on Meta's side, not by Inchat skipping the send. A Purchase fired from a run that started because a deal reached a pipeline stage is keyed to that deal, so Meta folds a repeat of the same win (a correction, a re-open and re-win) into one count, within the week-long window Meta dedups on. Every other event, and Purchase from any other trigger, is keyed to this conversation and the UTC calendar day, so a repeat later the same UTC day is folded into one but a repeat the next UTC day counts again.
When it fails
- This conversation's channel has no usable Conversions API dataset or token: the step fails with Channel has no CAPI dataset/token configured.
- The conversation has no channel at all: the step fails with Conversation has no channel for CAPI.
- A WhatsApp conversation whose referral suggests ad traffic carries no click-to-WhatsApp click id: the step fails, naming the ad id when one is known.
- Meta's Graph API refuses the call (an expired token, a misconfigured dataset, a Meta-side error): the step fails with CAPI Graph call failed and the reason Graph gave. This reason reaches the run's own Activity tab, not only Sentry.
- A failed event does not stop the run: the step is recorded failed and the flow moves straight to the next one.
Limits
- It publishes even with nothing connected. The connection card blocks editing the fields in the drawer, but not saving or publishing the workflow — a step left this way fails every time it runs, with the reason shown on the run (see When it fails), until the channel is connected.
- An organic WhatsApp conversation — one that never started from a click-to-WhatsApp ad — can never send an event from this step: it is skipped by design, permanently, for that conversation.
- It reports a conversion; it does not read one back. There is no way for a later step to ask Meta whether the event was accepted beyond a failed step meaning Graph refused it outright.
- It sends the Graph call every run — de-duplication is Meta's, not a skip on Inchat's side, so a workflow that fires this step often still spends Graph API calls even on repeats Meta will fold together.
Use cases
- Send Purchase with
{{deal.value}}and{{deal.currency}}in a workflow on the Deal Stage Changed trigger, when the deal reaches a won stage, so the ad account that brought the lead sees the sale. - Send LeadSubmitted as soon as a WhatsApp conversation starts from a click-to-WhatsApp ad, before anything else in the flow runs.
Related
- Move Deal to Stage — Open this contact's deal in a pipeline stage, or move it if one is already open — one fact from the funnel's point of view, with an optional amount and a guard against re-opening a deal someone has since moved.
- HTTP Request — Call an outside API over HTTPS and keep its response for later steps and conditions. Two things to know before using it today: placeholders in the URL and body are not resolved, and production had no host on its outbound allow-list at the time of writing — see Limits.
- Workflows: how a flow runs — A workflow is one trigger, optional conditions and an ordered list of steps; only a published workflow runs, and this article explains how a run starts, forks, pauses, fails and stops.
Reading this with an AI assistant? Plain Markdown version.