Paste your enhanced-conversions snippet above, then select Check enhanced conversions to see the issues most likely to break or leak enhanced conversions, with unhashed user-provided data and a missing enable flag checked first.
About the enhanced conversions QA card
The enhanced conversions QA card turns a pasted Google Ads enhanced-conversions snippet into a short report of the setup issues most likely to break or leak enhanced conversions before launch. It reads your gtag('set', 'user_data', { ... }) calls, the gtag('event', ..., { user_data: { ... } }) form, and the GTM dataLayer.push({ user_data: { ... } }) form, then checks them against a fixed rule set: raw (unhashed) email or phone sent with the manual method, an email that is not lowercased and trimmed before hashing, a phone that is not in E.164 form, a mix of hashed and raw fields, an unrecognized user_data key such as zip instead of postal_code, a manual and automatic method conflict, a missing allow_enhanced_conversions flag, and an incomplete address. The issues most worth fixing are listed first.
Paste your snippet, then select Check enhanced conversions. A sample with a raw email, a non-E.164 phone, and a typo field key is loaded so you can see the findings right away. Everything runs in your browser. The pasted snippet, selectors, emails, phone numbers, names, tag ids, and conversion labels are never uploaded or stored. Download a findings CSV for the full report or copy a markdown QA note to paste into a pull request, a launch checklist, or a ticket.
How to use
- Paste your enhanced-conversions snippet into the box. A sample is loaded so you can see how it works.
- Use your gtag('set', 'user_data', { ... }) call, the gtag('event', ..., { user_data: { ... } }) form, or the GTM dataLayer.push({ user_data: { ... } }) form.
- Select Check enhanced conversions to parse the user_data fields and run the rule checks.
- Read the summary and the findings table. The highest-severity issues are listed first, critical before high and medium.
- Select Download findings CSV for the full report, or Copy QA note to paste a markdown summary into a pull request or launch checklist.
Worked examples
A raw email in user_data flags a critical hashing gap
When the manual method sends a plain email address instead of a SHA-256 hash, it is rejected and the raw email is exposed in the data layer, so it is reported as critical.
An un-normalized email is flagged before hashing
When an email has uppercase letters or surrounding whitespace, the hash will not match unless it is lowercased and trimmed first, so the normalization step is reported as a high-severity issue.
A zip key warns about an unrecognized field
When user_data uses zip instead of postal_code, the key is not a recognized enhanced-conversions field and will be ignored, so the typo is flagged.
Frequently asked questions
- What does the enhanced conversions QA card check for?
- It checks whether your Google Ads enhanced conversions setup has the issues most likely to break or leak measurement. It parses your gtag('set', 'user_data', ...) calls, the gtag('event', ..., { user_data: ... }) form, and the GTM dataLayer.push({ user_data: ... }) form, then checks for raw (unhashed) email or phone sent with the manual method, an email that is not lowercased and trimmed before hashing, a phone that is not in E.164 form, a mix of hashed and raw fields, an unrecognized user_data key, a manual and automatic method conflict, a missing allow_enhanced_conversions flag, and an incomplete address. The highest-severity issues are listed first.
- Does it run my snippet or call Google?
- No. It does not execute the snippet and it does not call Google or any server. It reads the structure of your user_data with a tolerant parser and applies fixed rules. It is a review aid that surfaces likely setup gaps; it does not guarantee that a snippet it flags clean behaves correctly at runtime, because the live values depend on your tag and account settings.
- Why must email and phone be hashed for the manual method?
- Google's manual (code) implementation of enhanced conversions requires user-provided data to be SHA-256 hashed before it is sent, and the email must be lowercased and trimmed and the phone must be in E.164 format (a leading + and country code) before hashing, or the hash will not match. The card flags a raw email or phone as critical because an unhashed value is rejected and the raw value is exposed in the data layer. The automatic method lets the Google tag hash values for you.
- Which snippet formats does it accept?
- Three: the gtag set form, gtag('set', 'user_data', { ... }); the gtag event form, gtag('event', 'conversion', { user_data: { ... } }); and the GTM dataLayer form, dataLayer.push({ user_data: { ... } }). Single or double quotes are both accepted, bare or quoted object keys both work, and a nested address object is read. Large pastes are bounded so one parse cannot freeze the tab.
- Is my snippet uploaded anywhere?
- No. Parsing, the rule checks, and the export all run in your browser. The pasted snippet, selectors, emails, phone numbers, names, tag ids, and conversion labels are never sent to a server or saved. Analytics records only a coarse finding-count band and the highest severity, never the snippet content. Download the findings CSV or copy the QA note before you close the tab.
- Can I keep a record of the review?
- Yes. Download findings CSV gives you a spreadsheet-ready file with one row per finding, and any cell that could be read as a spreadsheet formula is escaped so the export is safe to open. Copy QA note gives you a markdown summary, highest severity first, that you can paste into a pull request, a launch checklist, or a ticket.
Use this again tomorrow
Save this page so it's one tap away when you need a quick result.
Ready for a quick Daily Challenge?
Play Daily Challenge on sts.games