Google Analytics does not allow you to store any personally identifiable information. CRM systems often allow last-click tracking using UTM or their own parameters.
This situation leaves marketers with siloed data. On the one hand side, Google Analytics contains web and mobile analytics data, and on the other side, CRM data. CRM data contains the key to analyzing customer lifetime values and cohorts.
Many of our clients want to somehow connect both analytics and CRM data to make decisions based on the whole customer journey.
One way to circumvent this is by hashing the email address into Google Analytics during a form submission.
In this article I’ll explain how exactly to do this and how to connect the CRM data back to the hashed emails.
Here a quick summary on how it works:
We use the e-commerce transactions feature of Google Analytics to trigger a transaction on a form fill event. The transaction ID contains a hashed identifier (an email address). This allows us to understand the Google Analytics path of the user. In a second step we match the data from the CRM to understand how valuable the lead submission is. The lead could for example convert into an opportunity and into a paying customer, or it could be a junk lead.

Try Windsor.ai today
Access all your data from your favorite sources in one place.
Get started for free with a 30 - day trial.
Now back to our guide. It comprises of two steps:
Before you get started you will need to make sure that you have
- Edit rights on the Google Analytics view of your website
- Edit and publish rights on your Google Tag Manager container on your website
Google Analytics
Step 1
First of all we have to enable the E-commerce setup in Google Analytics (in case it is not yet turned on)

Google Tag Manager
Step 1
Download the Tag Manager configuration by clicking on the image below.
Step 2
Head to Google Tag Manager and head to the Admin section and in the Containers section select Import Container. Now you have to import the JSON file you have downloaded in Step 1 and select the workspace where you want to import it. Choose the import option Merge and select Rename conflicting tags, triggers, and variables.
Step 3
Head to the tag named ‘[windsor.ai] save transaction to Google Analytics’ and make sure that it is linked to the right Google Analytics variable.
Step 4
Open the tag named ‘[windsor.ai] save hashed email as transaction id’. Now you can see that the tag triggers on
id="email"
or type="email"
. As there is no standard on how forms are built (unfortunately it can get messy) you will need to check your forms now. Here’s how I did it on our website:Head to all the pages where you have an email field which you want to track. Right click on the email field and select inspect.

You will now see how the email field is defined. In the screenshot above you can see that on our website the
type="email"
. So we use this identifier in the tag. Please make sure to check your forms to make sure the tag fires correctly.Step 5 (Optional, but please read)
I have set the triggers to fire on all DOM ready events. You might want to change it to trigger only on certain relevant forms and pages.
Step 6
Now you can preview and publish your configuration. To test if it is working as expected you can submit a form. You should now see an e-commerce transaction logged in Google Analytics for each form fill.
To sync back the data you can now either use
A) A data integration software like ours, where you can match the data. Once the data is joined you can run a multi touch attribution model on the whole customer journey (across web analytics and CRM data). This allows you to get a clear picture across systems on what works, and what doesn’t. A sample customer journey visualization looks like this:
We integrate with Salesforce Snowflake, Marketo, HubSpot, Zoho, Microsoft Dynamics and Stripe. You can start a free trial here.
B) Run manual Google Analytics exports and upload them into your CRM.
Connect Google Analytics to your CRM and start analysing the whole customer journey.