Google Ads conversions
Wire Google Ads conversion tracking onto the gtag.js that GA4 already loads with the ads key under config.analytics.google - conversion ID, per-event labels, and the Consent Mode v2 signals.
Add ads under config.analytics.google to wire conversion tracking onto the gtag.js that GA4 already loads - no extra script, same consent gating:
analytics: {
google: {
measurementId: "G-XXXXXXXXXX",
ads: {
conversionId: "AW-XXXXXXXXX",
conversionLabels: {
purchase: "AbC-D_efG-h12_34iJ",
sign_up: "ZyX-w9vU8t76_54sR",
},
},
},
},Get both values from Google Ads: create a conversion action under Goals → Conversions, choose the Google tag setup, then copy the AW- conversion ID and each action's label.
conversionIdalone registers Google Ads as a second gtag destination - remarketing audiences and the conversion linker work immediately, and consent grants already carry the Consent Mode v2 signals (ad_storage,ad_user_data,ad_personalization) Google requires in the EEA.conversionLabelsmaps built-in or custom events to labels; each fires an extraconversionping toAW-XXXXXXXXX/LABEL. Thepurchaselabel carriesvalue,currency, andtransaction_id, so Smart Bidding and deduplication work once you enable "use transaction IDs" on the conversion action.- The key is strictly additive: omit
adsand GA4 is unchanged; omit a label and that event sends no ping.
Prefer not to tag in code? Link GA4 to Google Ads and import GA4 key events as conversions instead - no ads config, at the cost of delayed, modeled imports.
Pageviews and attribution
PostHog capture settings (SPA pageviews, page-leaves, dead clicks, web vitals) and first-touch attribution - the first_touch cookie, the user field it lands on, and the person properties it feeds.
AI-driven analytics review
Connect an AI coding agent to PostHog via MCP, run the standard growth queries against the built-in events, and close the measure → change → re-measure loop.