Send conversions to Meta and Google Ads
Meta and Google Ads optimise towards what they are told. If they only see page views and button taps, they buy more page views and button taps. ConnectWiz knows what happened next — the lead, the appointment, the sale and its value — and sends that back to the platform, credited to the ad click that brought the person.
One set of rules decides every send, for both platforms, and every send passes the same consent check.
Before you start
- Meta: connect your dataset in Marketing → Conversions (Dataset ID and Access token). Tick This platform is the only thing sending conversions to this dataset only after checking: if a Conversions API Gateway or another tool also sends to the same dataset, every sale is counted twice.
- Google Ads: connect your account and match the events — see Connect Google Ads. Google Ads is part of the Pro plan and above, and open during the trial.
- Your website: for website leads, connect your website so ConnectWiz knows which click each visitor came from.
What is sent when
| ConnectWiz event | When | Meta | Google Ads |
|---|---|---|---|
| Lead | A form is submitted — on your website, or a form hosted by ConnectWiz | Lead | Your Lead action |
| Lead | A WhatsApp message arrives with a website ref code | Lead | Your Lead action |
| Appointment | An appointment is booked | Schedule | Your Appointment action |
| Stage | A deal enters a stage you mapped | The stage's event | The stage's action |
| Sale | A deal is won | Purchase, with value and currency | Your Sale action, with value |
| Value change | A won deal's value changes | — | Restates the sale's value |
| Cancel | A won deal is reopened or lost | — (nothing is sent) | Retracts the sale |
The same table, with what is switched on in your workspace right now, is under Marketing → Conversions (What is sent when) and in the Google Ads settings.
Details that matter:
- A lead needs a person. A submission of a form that does not create a contact is kept, but nothing can be sent for it — there is nobody to match.
- Not every submission is a lead. Spam is never sent, and neither is a form your team handed to someone (a personal form link, the front-desk kiosk).
- Ad lead forms are not sent back. A lead filled in on Meta or Google is already known to that platform.
- Appointments: a cancelled appointment is not sent, and moving an appointment to another time is not a new one.
- Stages: for Meta, choose the event under Reported to Meta as on the stage in your deal pipeline. For Google, map the stage under Deal stages (optional) in the Google Ads settings. An unmapped stage sends nothing.
- Sales go for every contact — not only for people who wrote to you on a Meta channel.
- A cancelled sale. Meta is told nothing. Google gets a retraction, so the sale stops counting in your campaigns.
- A sale won again after a cancel goes to Google as a new sale, under a new order number — Google never accepts an order number twice. The first win keeps its original number, so nothing already sent changes meaning.
Which click gets the credit
Every event is credited to one touch — the moment ConnectWiz learned where the person came from:
- a form submission: the touch that came with the submission;
- an appointment or a deal: the touch recorded when it was created;
- otherwise, the person's most recent touch.
A later click never changes the source of an earlier sale.
How each platform receives it
Meta gets each event under the source that fits it best:
| Meta action source | When |
|---|---|
| Business messaging | The person has a Meta messaging conversation with you (WhatsApp, Messenger, Instagram) — the only source that ties a result to a click-to-message ad. |
| Website | The event is a website form, with the page address and the visitor's browser (and their IP and Meta browser cookies, when known). |
| System generated | Everything else, such as a deal won for a person who never chatted. These carry Meta's CRM markers: event source crm, lead event source ConnectWiz. |
Deduplication with your pixel. A website lead keeps the event id the site
script put into the form (cw_event_id). Use the same id in your pixel's Lead
event and Meta counts the browser event and ConnectWiz's server event as one —
see Connect your website.
Google Ads matches a conversion on the Google click id from the visit
(gclid, gbraid or wbraid) or, through enhanced conversions for leads, on
the person's hashed e-mail and phone. With neither, nothing is sent. The
conversion time is in your workspace's time zone.
Consent
Before anything leaves, ConnectWiz checks what the person allowed — at the
moment of sending, so a consent withdrawn while the event waited still counts.
An event held back is recorded as held back by consent (refused_consent)
with the reason; it is never sent later.
People who came from your website
For a website visit, a website form and a WhatsApp link click from your site, the site recorded two separate answers (see Consent on your website):
- marketing cookies (
consent.ads) — from your cookie banner; - ad measurement (
consent.ad_measurement) — your form's optional checkbox for sharing hashed details with Meta and Google.
| What the person allowed | Meta | Google Ads |
|---|---|---|
| Ad measurement (on this visit, a later one, or a qualifying consent on file) | Sent, with hashed details; ad click ids too, unless they declined marketing cookies | Same |
| Marketing cookies, but not ad measurement | Nothing (no_ad_measurement_consent) | The ad click alone, with no e-mail or phone |
| Neither, or they declined marketing cookies | Nothing (ads_consent_denied / no_ad_measurement_consent) | Nothing |
Everyone else
For people who came from a click-to-message ad, a lead form, the chat widget, or from no known source:
- if the touch recorded that they declined ads, nothing is sent
(
ads_consent_denied); - otherwise ConnectWiz needs a consent the person gave themselves — for
example a form's consent checkbox, a chat widget registration, a keyword they
sent on WhatsApp or Telegram, an SMS reply, a confirmation link in an e-mail, a
Messenger opt-in, a lead ad's disclaimer, your website's consent manager, or a
yes to a question you asked. A consent typed in by your team, imported, sent
through the API, noted by the AI assistant or synced from İYS does not
count. Without one, the event is held back as
no_legal_basis.
Most contacts without a recorded consent fall into no_legal_basis. That is the
check working, not a fault.
What is never sent
Form answers, answers to sensitive fields (for example health questions), contact custom fields, notes and messages never leave for an ad platform. What can go is limited to:
- Meta: the person's name, e-mail and phone (hashed), your ConnectWiz contact id, Meta's own lead id if they came from a Meta lead ad, the ad click and browser ids, the page address, IP and browser for website events, and the value and currency of a sale.
- Google Ads: the e-mail and phone (hashed), the Google click id, the value and currency, and the time.
Your privacy notice must cover sharing this hashed data with Meta and Google for ad measurement. That is your responsibility as the data controller.
Is it working?
Three places show it:
- Marketing → Conversions → Integration health (Meta): how many events Reached Meta, Days active, Average delay, how many were sent With a strong identifier, Not sent, and why, how many were held back by consent, Google Ads' share that reached Google, and What is sent when.
- Settings → Integrations → Google Ads → What reaches Google (last 28 days): Reached Google, Failed, Not sent, Held back by consent.
- Reports → Conversions → Delivery to ad platforms, for any period — see Conversion report.
The most common reasons an event did not go:
| Reason | Means |
|---|---|
no_legal_basis | No consent ConnectWiz can demonstrate. |
no_ad_measurement_consent | A website visitor without the explicit ad-measurement consent. |
ads_consent_denied | The visitor declined advertising cookies on the site. |
no_match_key | Nothing the platform could match the person on. |
already_sent | A duplicate that would have counted the same conversion twice. |
event_time_too_old | Older than the 7 days Meta accepts. |
not_configured | Switched on, but the dataset or token is missing. |
What you see in Meta and Google Ads
- Meta Events Manager: in your dataset,
Lead,Schedule,Purchaseand your stage events arrive from the server. A website lead that your pixel also reported with the same event id is shown once. - Google Ads: the conversions appear on the Import from clicks conversion actions you matched, credited to the original ad click. Google processes uploaded conversions with a delay, so allow some hours before judging a day. A retracted sale disappears from the totals; a restated one shows its new value.
Ask your own AI agent
Whether the signals reach the platforms is also a question your AI agent can
answer: conversion_delivery_health in
Analyse conversions with Claude.