Chatfuel With Causality Engine: Check the Events Meta Counts
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-11-11
The short answer: if Ads Manager credits your click-to-WhatsApp ads with more orders than the shop booked from those chats, two rules are stacked on top of each other: Chatfuel's AI decides that a sale happened, and Meta decides which ad gets it. Chatfuel, the AI agent that answers, qualifies and sells on WhatsApp, Instagram, Facebook, TikTok and website chat, sends conversion events over Meta's Conversions API only for conversations that began from a click-to-WhatsApp ad, credits them by click ID, and warns that deals closing after Meta's 7-day attribution window are not credited (conversion events article). The store's GA4 sees none of that unless the links in the chat carry tags. Tag them, export GA4's Attribution paths report, and open the free first finding of Causality Engine, a causal attribution tool that reads that one file, at app.causalityengine.ai/start.
Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.
What to settle before trusting the ad column:
- The price of a signal is not the problem. For example, 300 accepted events a month at $0.02 each cost 300 x $0.02 = $6 from the wallet, per the conversion events article. What matters is who decides each one fired.
- Open the event set you already have. Ads optimization, Default events for all ads, sends LeadSubmitted on Chat switched to human agent unless you change it. Find what fires OrderCreated, if anything.
- Find the chat in GA4. The links Fuely AI sends are the ones you typed into its instructions (payment link article). Untagged, they arrive with no source.
Chatfuel beside the read
| Chatfuel | Causality Engine | |
|---|---|---|
| The product | AI sales agent for chat channels (entry) | A causal read of a GA4 export (entry) |
| Its result | Events such as ViewContent, AddToCart and OrderCreated sent to Meta; Purchase is not offered (conversion events article) | What each channel caused, next to last-click, with a data-health score from 0 to 100 (how it works) |
| Who decides | A trigger: a booking, a handoff, a status, a keyword, or a Custom AI instruction the AI matches to the conversation | The paths recorded in the export |
| Payments | No built-in gateway; the AI shares your link or checks a receipt photo (payments article) | Purchases as GA4 recorded them |
| GA4 channel | Whatever the tags on your typed links say; source whatsapp is a social source (Google's rules) | Every channel in the file |
| Link between them | None | None (integrations) |
| Cost | $0.02 per event Meta accepts | Free first finding, then €99 per read excluding VAT (pricing, checked on 11 November 2026) |
Who decides that an order happened
Chatfuel's own guidance is careful. Each event has an event type and a trigger, and its ready-made set for an online store selling in chat is ViewContent when someone asks about a product, AddToCart when they ask for a payment link, and OrderCreated when they send the payment confirmation (conversion events article). Meta's Purchase event is left out because Meta wants an order value and a chat does not carry one.
The trigger for that last step is usually a Custom AI instruction of up to 512 characters, such as "Contact sent the payment confirmation". The AI reads the conversation, messages your team typed by hand included, and decides. Chatfuel offers no Stripe or PayPal connection: the payments article says the AI can check a photo or screenshot of a receipt and "can't process charges". So an OrderCreated in Ads Manager can rest on an image in a chat, not on an order in Shopify.
Two more limits come from the same article. Events fire only for chats that started from an ad, so customers who wrote on their own are skipped. And for long sales cycles Chatfuel itself advises reading the outcome "as a trend, not a total".
Tagging the links the AI sends
Nothing in the Chatfuel help centre adds UTM parameters for you. The payment link instruction is plain text in Additional instructions, and a store link goes in the same way (payment link article). That gives you the place to tag.
Chatfuel answers ad leads through a separate automation for the ads that click to WhatsApp source, while Main bot covers everything else (ads article). My recommendation: write a different link into each. For example, the ad automation sends ?utm_source=whatsapp&utm_medium=paid_chat&utm_campaign=ctwa, and Main bot sends ?utm_source=whatsapp&utm_medium=chat.
Google's default channel group page then sorts them. Its published source list classes whatsapp as social, so the first link lands in Paid Social, because its medium starts with "paid", and the second in Organic Social. Without the split, a sale your ad paid for is filed as organic. Without any tags, it joins (direct) / (none), which Google's direct traffic page ties to links lacking UTM parameters.
The worked example: 84 events, 41 tagged purchases
For example, with numbers invented for the arithmetic and no shop behind them: in one week Ads Manager shows 84 OrderCreated events on click-to-WhatsApp ads. The shop books 690 orders that week. Meta's other campaigns claim 402 and Google Ads 311. In GA4's last-click view, Paid Social from the paid_chat links holds 41 purchases, Organic Social from the chat links 16, and Direct 188.
84 + 402 + 311 = 797 orders claimed against 690 booked, 797 - 690 = 107 too many. The chat's own gap is 84 - 41 = 43 events with no tagged purchase behind them: bank transfers confirmed by screenshot, buyers who typed the shop's address instead of tapping, and confirmations the AI read generously.
Causality Engine does not arbitrate those 43. What its how-it-works page promises is narrower: Direct split back to the channels that sent those 188 buyers, each channel's caused share beside the last-click figure rebuilt from the same file, a data-health score per channel, and a next step tested in one region first. If Paid Social's caused share comes out well under Meta's figure, change one ad set's budget in one region and watch the store, not the event count.
The free check: a code only the chat gives out
Chatfuel documents no holdout, so this one is by hand. Its Keywords trigger is meant for promo codes and words an ad asks people to send (conversion events article). Give the ad automation one discount code that appears nowhere else, then count orders using it in the shop's own order export after 7 days.
For example, 52 orders carry the code in a week in which Ads Manager credits 84 OrderCreated events. The 52 are orders the store can prove came through the chat; the 32 between them are the claims nobody can check. That comparison costs nothing and needs no other product.
To weigh every channel against every other, Causality Engine, which I founded, reads the GA4 export on its start page with a free finding computed in the browser; the full read is €99 once and refundable within 30 days (one-off read).
What the pairing leaves out
- Sales that never touch the shop. A bank transfer confirmed in chat has no GA4 purchase, so the read cannot weigh it.
- Which ad or prompt worked. The read is per channel. Chatfuel's per-ad event sets answer that question, inside Meta.
- Thin data. The read wants 12 months or more of GA4 history, calls a channel under 1% of credit on both methods too small to act on (pricing for agents), and declines where spend is too small for a signal (homepage).
Each OrderCreated pays off for two vendors at once: Chatfuel takes $0.02 for it from your wallet (conversion events article), and Meta then reports the same event as a conversion its ad delivered, so both firms see their figure rise with every chat the AI judges to be a sale, and neither has to match it to the shop's orders.
See also
- Chatfuel: the wallet, Meta's fees and plans
- How to use Chatfuel: qualifying click-to-WhatsApp ad leads
- Chatfuel on the marketplace: Chatfuel's affiliate program terms
- Causality Engine: the read, its prices and its limits
- How to use Causality Engine: one export to one regional test
- Causality Engine on the marketplace: the affiliate terms, as the owner's
- Chatfuel vs ManyChat: an AI agent against designed flows
- How to export GA4 data for attribution: twelve months of paths, step by step
FAQ
Do Chatfuel's Meta events reach Causality Engine?
No. They go from Chatfuel to Meta over the Conversions API and stop there. Causality Engine sees only GA4's Attribution paths file, in which a chat appears if a tagged link from it led to a recorded visit (integrations page).
Why does Chatfuel not send Meta's Purchase event?
Its conversion events article says Meta requires an order value with Purchase and a chat does not carry one, so it offers OrderCreated for stores and QualifiedLead for service businesses.
Should OrderCreated be the campaign goal?
Chatfuel's rule is the deepest event that fires about 10 times a week or more (Ads optimization guidance). Fine for teaching Meta who buys; a poor figure for revenue, since a screenshot can trigger it. Report revenue from the shop.
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.
With Joris van Huët, interim and fractional CMO in Utrecht. From EUR 5,000 a month, monthly cycles, a 30-day exit.