How Enhanced Conversions Work (30-Second Version)
When someone clicks your Google Ad, fills your form, and books a meeting through RevenueHero, Google Ads records a "conversion." But Google can only match that conversion to the original ad click if it has enough signal.
Enhanced conversions send a hashed (SHA-256) version of the booker's email alongside the conversion event. Google matches this hashed email against signed-in Google users to improve attribution accuracy. The hashing happens automatically in the browser before any data leaves the page.
Without enhanced conversions: Google relies solely on cookies and click IDs, which break with cross-device journeys, Safari ITP, and ad blockers.
With enhanced conversions: Google matches the hashed email to its user graph, recovering conversions that would otherwise be "unattributed."
β

β
What you're building: A pipeline where RevenueHero fires a MEETING_BOOKED event containing the booker's email, Google Tag Manager captures it, and pushes the hashed email + conversion event to Google Ads.
β
What you'll set up

β
Pre-flight: Confirm RevenueHero Events Fire on Your Page
Before touching Google Ads or GTM, verify that RevenueHero's JavaScript events actually work on your page. If this step fails, nothing downstream will work.
- Open your page with the RevenueHero-connected form in Chrome
- Open DevTools (F12 or Cmd+Option+I)
- Go to the Console tab
- Paste this snippet and press Enter:

β
- Fill out your form and book a test meeting
- You should see
RevenueHero Event: PAGE_LOADEDwhen the scheduler appears, andRevenueHero Event: MEETING_BOOKEDwith the email when the meeting books
β
If you don't see these events: Your RevenueHero integration isn't firing JavaScript events. Check that your form is connected to an Inbound Router and that the scheduler loads as an embedded widget (not a redirect). Contact RevenueHero support before proceeding.
β
Step 1: Enable Enhanced Conversions in Google Ads
This step is required. If you skip it, everything you set up in GTM will be silently ignored.
β
1a. Account-Level Setting
- Log into Google Ads
- Click Goals in the left sidebar
- Click Conversions β Settings (the gear icon at the top, NOT an individual conversion action)
- Expand "Enhanced conversions for web"
- Toggle it ON
- Accept the customer data terms when prompted
- For "How do you want to set up enhanced conversions?", select "Google Tag Manager"
- Click Save
Important: If you select "Google Tag Manager" here, data sent via any other method (Google tag, API) will be ignored. You can only use one data collection channel.
β
1b. Conversion Action-Level Setting
- Go to Goals β Conversions β Summary
- Click on the specific conversion action you're tracking (e.g., "Demo Booked" or "Meeting Scheduled"). If you haven't created one yet: click the + button β Website β name it "Meeting Booked" β category "Submit lead form" β set a value if desired β Save
- Click the conversion action name to open its settings
- Scroll to "Enhanced conversions" and confirm it shows as ON
- Note down these three values (you'll need all three in Step 7). Find them under the conversion action β "Tag setup" β "Use Google Tag Manager":
- Conversion ID (looks like:
123456789) - Conversion Label (looks like:
AbCdEfGhIjKlMn) - Conversion Tracking ID =
AW-+ your Conversion ID (e.g.,AW-123456789)
β
Step 2: GTM β Conversion Linker Tag
The Conversion Linker preserves the GCLID (Google Click ID) across pages. Without it, Google can't connect the conversion back to the ad click.
Check first: In GTM, go to Tags and search for "Conversion Linker." If one already exists firing on All Pages, skip this step.
β
If you don't have one:
- Go to Tags β New
- Tag Configuration: Select "Conversion Linker"
- Leave all settings as default
- Triggering: Select "All Pages"
- Name it:
Conversion Linker - Save
β
Step 3: GTM β RevenueHero Event Listener Tag
This tag listens for RevenueHero's MEETING_BOOKED postMessage event and pushes the booker's email into GTM's dataLayer.
- Go to Tags β New
- Tag Configuration: Select "Custom HTML"
- Paste this code:

β
- Triggering: Select "All Pages"
- Name it:
RevenueHero - Meeting Booked Listener - Save
β
What this does: When RevenueHero's scheduler fires the MEETING_BOOKED event via window.postMessage, this script catches it and pushes a meeting_booked event with the booker's email into GTM's dataLayer.
Why "All Pages"? The listener must be active before the meeting books. Since the scheduler can appear on any page with your form, this needs to run everywhere. It's dormant until a MEETING_BOOKED message arrives β zero performance impact.
β
Step 4: GTM β Data Layer Variable for Email
This variable reads the booker_email value from the dataLayer push in Step 3.
- Go to Variables β User-Defined Variables β New
- Variable Configuration: Select "Data Layer Variable"
- Set Data Layer Variable Name to:
booker_email - Leave Data Layer Version as "Version 2"
- Name it:
DLV - Booker Email - Save
β
Step 5: GTM β User-Provided Data Variable
This variable tells GTM which data is personally identifiable information that should be hashed and sent to Google.
- Go to Variables β User-Defined Variables β New
- Variable Configuration: Select "User-Provided Data". If you don't see this option, you need the "Google Ads User-Provided Data" template from the Community Template Gallery.
- Set Type to: "Manual Configuration"
- Under Email: Click the variable picker (the brick icon) and select DLV - Booker Email
- Leave all other fields (Phone, First Name, Last Name, Address) empty
- Name it:
UPD - RevenueHero - Save
β
Why only email? Email has the highest match rate for enhanced conversions. RevenueHero provides booker_name as a single string (not split into first/last), which would require parsing and adds failure points. Email alone is sufficient.β
Step 6: GTM β Custom Event Trigger
This trigger fires when the meeting_booked event appears in the dataLayer.
- Go to Triggers β New
- Trigger Configuration: Select "Custom Event"
- Set Event name to:
meeting_booked - Select "This trigger fires on: All Custom Events"
- Name it:
CE - Meeting Booked - Save
β
Step 7: GTM β Google Ads Tags (Two-Tag Setup)
You need TWO tags: one records the conversion, one sends the hashed email. Both fire on the same trigger.
Why two tags? Google removed the "Include user-provided data from your website" checkbox from the Conversion Tracking tag in early 2025. Enhanced conversions now require a separate User-Provided Data Event tag alongside your Conversion Tracking tag. If you only create one tag, you'll get conversions without enhanced data (or enhanced data without conversions).
β
7a. Conversion Tracking Tag
- Go to Tags β New
- Tag Configuration: Select "Google Ads Conversion Tracking"
- Enter your Conversion ID (from Step 1b)
- Enter your Conversion Label (from Step 1b)
- Triggering: Select CE - Meeting Booked
- Name it:
Google Ads - Meeting Booked Conversion - Save
β
7b. User-Provided Data Event Tag
- Go to Tags β New
- Tag Configuration: Select "Google Ads User-Provided Data Event"
- Enter your Conversion Tracking ID in
AW-XXXXXXXformat (from Step 1b:AW-+ your Conversion ID) - Under User-Provided Data: select UPD - RevenueHero from the variable picker
- Triggering: Select CE - Meeting Booked (same trigger as 7a)
- Name it:
Google Ads - Meeting Booked UPD - Save
β
Both tags must fire on the same event. The Conversion Tracking tag records the conversion. The User-Provided Data Event tag sends the hashed email. If only one fires, you get either a conversion without enhanced data or enhanced data without a conversion.
β
Step 8: Test in GTM Preview Mode
Do NOT skip this step. This catches 90% of setup errors before publishing.
8a. Start Preview Mode
- In GTM, click the "Preview" button (top right)
- Enter the URL of your page with the RevenueHero-connected form
- Click "Connect" β a new tab opens with your page + the Tag Assistant panel
8b. Trigger a Test Conversion
- Fill out your form with a real email address (use your own work email)
- Complete the booking through the RevenueHero scheduler
- After the meeting books, switch to the Tag Assistant panel
β
8c. Verify in Tag Assistant
- In the left sidebar, look for the "meeting_booked" event in the event timeline. If you don't see it: the event listener (Step 3) isn't capturing the RevenueHero event.
- Click on the "meeting_booked" event
- Under "Tags Fired", verify you see BOTH:
Google Ads - Meeting Booked ConversionANDGoogle Ads - Meeting Booked UPD - Click on the conversion tag, check the "Values" section
- Verify the Conversion ID and Conversion Label are correct
- Under the Variables tab, check that
DLV - Booker Emailshows the email address you entered
β
8d. Verify Enhanced Data in Network Tab
This is the definitive check that the hashed email is being sent.
- Open Chrome DevTools (F12) β Network tab
- In the filter bar, type:
googleadservices.com/pagead/conversion - Submit another test form and book a meeting
- Look for the network request that appears
- Click on it β Payload tab
- Look for the
emparameter
- If you see
em=tv.1~em.followed by a long hash string: Enhanced conversions are working. The email was hashed and sent. - If you see
em=tv.1~em.with nothing after it (or noemparameter): The email variable was empty. Go back and check Steps 3-5.
β
Step 9: Publish and Monitor
9a. Publish
- In GTM, click "Submit" (top right)
- Name your version (e.g., "RevenueHero Enhanced Conversions")
- Click "Publish"
β
9b. Monitor (after 72 hours)
Enhanced conversion diagnostics take up to 72 hours to populate. Don't panic if you see nothing immediately.
- In Google Ads: Goals β Conversions β Summary
- Click your "Meeting Booked" conversion action β "Diagnostics" tab
- Check for:
- "Tag status: Active" β your tag is firing
- "Enhanced conversions status: Recording" β hashed data is being received
- Match rate β typical range: 30-60%


β
Bonus: Track Qualified Leads
RevenueHero fires a PAGE_LOADED event when the scheduler is displayed. Since the scheduler only appears for qualified leads, this event means "lead qualified." You can create a second, lower-value conversion for Smart Bidding.
- Create a new conversion action in Google Ads (e.g., "Qualified Lead" with a lower value)
- Replace the Custom HTML tag from Step 3 with this expanded version:
β

β
- Create a new Custom Event trigger for
revenuehero_qualified - Create a new Google Ads Conversion Tracking tag with the new conversion's ID/Label, triggered by
revenuehero_qualified
This gives Google Ads two conversion signals: one for reaching the scheduler (high volume, lower value) and one for actually booking (lower volume, higher value). Smart Bidding benefits from both.

You can push any of these fields into the dataLayer for use in other GTM tags (analytics, CRM, ad platforms).

