---
name: implement-enhanced-conversions
description: >-
  Adds hashed first-party data (email, optionally phone) to the web conversion tags so Google can
  match conversions to signed-in users that cookie-based attribution loses, typically recovering
  15-25% more attributed conversions on Display/Video/Demand Gen and 5-10% on Search. The tag and
  data-layer work is human (GTM user-provided-data wiring plus the account-level toggle in the Ads
  UI); VigilDog owns the evidence: a clean pre-implementation baseline and a disciplined before/after
  uplift comparison by campaign type via GAQL. Use when attribution gaps exist between Google Ads
  and backend numbers, especially on upper-funnel campaigns. Not the base tag setup
  (set-up-google-ads-conversion-tracking), not the leads-matching flavor used with CRM imports
  (that lives in set-up-offline-conversion-tracking), and not ad-blocker resilience
  (implement-server-side-tagging).
---
# Enhanced Conversions for Web

## Purpose
Send hashed user identifiers along with each web conversion so Google can attribute conversions
that cookies alone cannot connect back to an ad interaction, cross-device journeys and
view-heavy upper-funnel paths above all. The mechanism is privacy-preserving by design: data is
hashed before transmission and matched against Google's own hashed identifiers. VigilDog's job is to
prove the uplift with numbers, not vibes.

## When to run
- Base conversion tracking is live and healthy, and backend counts still exceed Google Ads
  counts beyond normal attribution slack.
- The account runs Display, YouTube, or Demand Gen where view-based journeys go unattributed.
- Smart Bidding needs a denser conversion signal on mid/upper funnel spend.
- An audit shows enhanced conversions available but never enabled.

## When NOT to run
- Conversion tracking itself is missing or broken, set-up-google-ads-conversion-tracking first;
  this feature supplements a working tag, never replaces it.
- The gap is lead-to-CRM attribution: the leads variant belongs to
  set-up-offline-conversion-tracking (identifier captured at lead time, outcomes imported later).
- The loss mechanism is ad blockers or tracking prevention, implement-server-side-tagging.
- No user-provided data exists at the conversion moment (e.g., anonymous content goals), there
  is nothing to hash; stop.

## Prerequisites
- Working, deduplicated web conversion actions.
- Email available on the conversion page or in the data layer at conversion time (phone optional;
  email alone is sufficient, do not stall the rollout waiting for phone).
- GTM access (recommended path) or developer bandwidth for the gtag route.
- Consent in order for EU/EEA traffic (configure-google-consent-mode).

## Procedure
1. Capture the baseline first with VigilDog, before any tag changes. Run `gads_run_gaql_query` for
   the trailing 28 days: conversions and conversion value per campaign type (Search, Shopping,
   Display, Video, Demand Gen, PMax) and per conversion action. Persist the table; the uplift
   verdict in step 7 depends on it.
2. HUMAN STEP (outside VigilDog): make user data available at conversion time, the developer
   ensures the email (and phone if easy) is present in the data layer on the conversion event,
   pushed before the conversion tag evaluates. Plain text, untrimmed of meaning but trimmed of
   whitespace; no pre-hashing, the tag stack hashes automatically, and hand-rolled hashes break
   matching.
3. HUMAN STEP (outside VigilDog), GTM route: create data-layer variables for the identifier fields,
   build a user-provided-data variable (manual configuration) mapping email/phone to them, and
   attach that variable to every Google Ads conversion tag's user-data setting. gtag route
   instead: enable enhanced conversions on the base tag config and add the user-data parameters
   to each conversion event snippet.
4. HUMAN STEP (outside VigilDog): enable enhanced conversions at the account level in the Google
   Ads conversion settings UI and select the matching implementation method (GTM vs gtag). Check
   individual conversion actions for stale action-level overrides and clear them, action-level
   settings trump the account switch.
5. HUMAN STEP (outside VigilDog): debug, GTM preview on a test conversion must show the user-data
   fields populated in the conversion tag; then publish.
6. Confirm ingestion: after 48-72 hours the conversion action diagnostics in the Ads UI should
   report enhanced conversions recording (HUMAN checks the diagnostics panel; VigilDog meanwhile
   watches daily conversion counts via `gads_run_gaql_query` for the step-7 comparison).
7. Measure uplift with VigilDog at day 7-14: rerun the step-1 query for the post-launch window and
   compare per campaign type. Expected pattern: mid/upper funnel (Display, Video, Demand Gen) up
   roughly 15-25%, Search up a modest 5-10%. Report the actual deltas per type and flag anything
   contradicting the pattern.
8. Close out: document status per conversion action (recording / waiting / error) and the uplift
   table; feed the result into the account's monthly review baseline so the step change is not
   later misread as organic growth.

## Decision rules
- Email is the workhorse identifier; add phone only if free to obtain. Never block launch on
  optional fields.
- Never pre-hash; malformed manual hashing is a silent match-rate killer. Send plain text and let
  the tag hash.
- 48-72 hours before expecting diagnostics to move; 7-14 days before judging uplift. Anything
  earlier is noise.
- Uplift near zero on upper funnel → data probably not arriving; re-debug the variable mapping
  rather than concluding "it doesn't work for us".
- Uplift evaluated only against the pre-captured baseline, split by campaign type, account
  totals hide the effect because Search dominates volume but gains least.
- Implementation-method setting in the Ads UI must match reality (GTM vs gtag); a mismatch shows
  as persistent "waiting for data".
- Post-launch bidding may spend more into upper funnel as it sees more conversions, expected;
  note it in the review rather than reverting.

## Common failure modes
- Nested data-layer structures where the variable path is wrong, so the email field is silently
  empty, inspect the actual data-layer shape in the debugger, never assume flat keys.
- Stale per-action enhanced-conversion configs overriding the account-level switch.
- Whitespace or casing artifacts in emails suppressing match rates.
- Judging success on total account conversions instead of per-type deltas.
- Rolling this out while base tracking is broken, then attributing the chaos to enhanced
  conversions.
- Only instrumenting the highest-volume conversion action and leaving secondary actions without
  user data, producing a confusing partial uplift, attach the user-data variable to every
  conversion tag in one pass.
- Privacy team surprised post-launch: brief them beforehand with the actual mechanism (client-side
  hashing before transmission, matching against Google's hashed identifiers, no plain-text
  retention) so the rollout is not paused mid-flight.
- Comparing uplift across a period that also contained a promo or seasonality swing; where
  possible, judge against the same weeks' prior-year pattern as a second reference.

## Related skills
- Run before: set-up-google-ads-conversion-tracking (hard dependency),
  configure-google-consent-mode (EU/EEA), implement-transaction-id-deduplication.
- Siblings: set-up-offline-conversion-tracking (leads-matching flavor + CRM import),
  implement-server-side-tagging (different loss mechanism; can carry the same data server-side).
- Afterward: run-a-monthly-performance-review (bake the step change into baselines),
  set-up-conversion-based-bidding (denser signal may unlock target-based bidding).
- If the uplift also shifts budget-limited campaigns into cap territory:
  handle-budget-limited-campaigns.
