Google can see the click and the page views. It cannot see the phone call two days later, the chat that ended as a booked appointment, or the deal that closed a month on. KarmaFlow sees all of those, tied to the same person. This integration sends them to your Google Analytics 4 property as ordinary events, joined to the visitor's original GA session, so your GA4 reports and your Google Ads bidding learn from what actually happened, not only from what happened in the browser.
It works for every Google Ads campaign type, Search, Performance Max, Display, Video, Demand Gen and Shopping, because it never touches the campaign: it feeds the GA4 property you already link to Ads.
conversation_outcome event, and a generate_lead event when the outcome is one you count as a conversion (a list you edit, e.g. booked, qualified).gclid, gbraid, wbraid). Later off-site events for that contact are sent under the same client id, so GA4 credits them to the original session's source and campaign.{{field}} values from the run, so a workflow can decide what counts and when.Smart Bidding optimises toward what you import. Give it chat_started and it buys people who open the widget. Give it conversation_outcome with generate_lead on booked and qualified outcomes, and it buys people who convert in the conversation. The event map is where that choice is made.
Off-site conversions finally count. A tradesperson's leads convert on the phone; a clinic's convert in a chat; a B2B pipeline converts weeks later in a CRM. None of that is visible to a web-only tag. Sent as GA4 events under the visitor's own client id, they land inside the attribution window of the original ad click.
One place to see what reached Google, and why not. Every send and every deliberate skip is listed with a reason in plain words: Not sent, no web identity, Not sent, do not contact, Rejected by Google with Google's message. Nothing fails silently.
| Outcome | How it happens |
|---|---|
| Bids follow real conversions | Key events imported into Ads from conversation_outcome, generate_lead, purchase and your own workflow events |
| Value-based bidding | Closed-won deals send purchase with value and currency; any workflow event can carry a value field |
| Offline journeys attributed | Calls, texts and deals credited to the ad click through the captured GA client id |
| Audiences you can act on | Build GA4 audiences from these events, for example "chatted, not booked" for remarketing or "purchase in 365 days" as an exclusion, and let GA4 export them to Ads |
| Compliance you can explain | Opt-out to DENIED consent signals, no PII parameters, hashed identifiers only where you turn them on |
flowchart LR
subgraph Site["Your website"]
Tag["Your Google tag<br/>(gtag / GTM)"]
Widget["KarmaFlow tracker,<br/>chat widget, forms"]
end
subgraph KF["KarmaFlow"]
Contact["Contact record<br/>GA client id · session id<br/>gclid / gbraid / wbraid"]
Bus["Events: calls, texts, deals,<br/>tickets, conversation outcomes"]
Map["Event map +<br/>workflow steps"]
Log["Recent deliveries<br/>(every send and skip, with a reason)"]
end
subgraph Google["Google"]
GA4["GA4 property"]
Ads["Google Ads"]
end
Tag -->|"client_id, session_id"| Widget
Widget -->|"captured on chat, form, tracked link"| Contact
Bus --> Map
Contact --> Map
Map -->|"Measurement Protocol"| GA4
Map --> Log
GA4 -->|"key events imported,<br/>audiences exported"| Ads
Map -.->|"Upload Google Ads Conversion<br/>(gclid or hashed email/phone)"| Ads
Two facts about the join worth knowing before you set expectations:
| Google tag alone | A CRM's native Ads connector | KarmaFlow | |
|---|---|---|---|
| Sees chats, calls, texts, deals, tickets | No | Deals only, usually | All of them, from the platform that runs the agents |
| Knows the conversation's outcome | No | No | Yes, from your own analytics prompt |
| Joins to the original session | Yes, in-browser only | Rarely | Yes, via the captured client id |
| Works across all Ads campaign types | Yes | Often Search only | Yes, through the GA4 link |
| Shows every skipped send and why | No | Rarely | Yes, per row |
| Consent Mode v2 and no-PII parameters | Your responsibility | Varies | Built in |
Sign in to KarmaFlow to open Settings → Integrations → Google Analytics 4.