PII (Personally Identifiable Information) should never be sent to Google Analytics, not only it breaches GA Terms of Use, but you also leaking sensitive user data. So how to remove PII from URL, such as query string params (email, userId, ...) or even from location path when using Google Tag Manager (GTM) and Google Analytics 4 (GA4)?
Related Questions in GOOGLE-TAG-MANAGER
- Google Analytics doesnt register events when redirected in a second page
- Google Analytics 4 does not show data (realtime/debugview)
- Load dataLayer Variables prior to gtag configuration in GTM
- Google Task Manager with Goole Consent with custom Consent Popup
- GTM GA4 Custom HTML tag to new Google Tag - possible?
- Share link preview on whatsapp contain google tag manager code
- more_than_30_sec event in GA4 strange behavior
- How do I track use of google translate widget in GTM?
- Retrieve visitor's Google query, pass it to the URL parameters and collect it for analytics purposes
- How do I create a GA4 report showing event count when the events have unique/custom names?
- Cookiebot via GTM / no conversions in Google ADS
- Events transmitted through the Measurement Protocol with the user_id are not received in GA4
- How can I track quiz answers width GTM?
- How to setup signup tracking for Googles oauth2 signup cross-domain with google tag manager
- GA4 doesn't collect my event parameter but GTM collects
Related Questions in GOOGLE-ANALYTICS-4
- Google Analytics doesnt register events when redirected in a second page
- Google Analytics 4 does not show data (realtime/debugview)
- Google Analytics API - requesting all deviceId for particular UTM-marker
- Looker Studio - Need to verify setup of filtering out traffic that selects a specific external link
- Date issue - how do I parse date in this SQL
- link_url is truncating URL after 100 character in GA4
- Unable to get user ID for paid users on GA4
- How to see total unique users on FB Analytics?
- more_than_30_sec event in GA4 strange behavior
- Can't mix metrics (aggregated values) and dimensions (non-aggregated values) in Looker Studio
- How do I create a GA4 report showing event count when the events have unique/custom names?
- Can we fetch ga:users and ga:newusers in single fetch?
- GA4 doesn't collect my event parameter but GTM collects
- DV360 traffic is not reported after enabling auto-tagging
- Discrepancy between Day 1 retention rates in Firebase and Google Analytics 4 (GA4)
Related Questions in PII
- PayPal Express Checkout - get PII / billing information from the PayPal account on payment
- How to config spaCy NER model to stop tokenizing words and giving false positives?
- How to tune/filter out spaCy NER model flagging body parts as PERSON?
- How to fix this issue "identitymodeleventsource does not contain definition for showpii" in web api
- How do you mask sensitive request params in gqlgen?
- PII Encryption problem on registration page
- Is there a way that I can leverage a JSON Schema to flag / classify an attribute as PII
- How can I allow certain entities (e.g., names, organizations) in Azures PII Entity Recognition method so that they are not recognized/masked?
- [Google]Are the sub and name and email from the userinfo endpoint confidential or public?
- google DLP Masking not working for characters which i want to ignore
- Extract schema name based on current Snowflake column
- How to Mask PII data in AWS ORACLE RDS?
- Best way to transmit sensitive data during SSO redirect between two sites
- How do I avoid giving all users access to PII of other users in the system?
- How to extract a non-English address from a string
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Let's assume you've got already set up GA4 property and GTM installed on your page.
So let's create new tag for GA4 configuration. As Measurement ID I use lookup table variable (it's perfect when you've got multiple environments like testing, staging, production - all those have separate Measurement ID, but uses same GTM install script), but you can just simply write your G-XXXXXXXXX Measurement ID here. Then expand Fields to Set section, add
page_locationas Field Name and click on lego button next to Value.Click on + (plus button) in upper right corner to add new variable.
As a Variable Type choose Custom JavaScript. In upper left corner write name of your new variable, I used
Redacted Page Location.And now we are getting closer to how to remove PII. In Custom JavaScript section insert JS function which should return redacted URL. Mine function uses regular expressions to replace PII from URL with some redacted text. Parameters I wanted to redact from url path are IDs of company, project, epic, and task; and userId from query params.
Let's say the URL of my page is
https://www.example.com/company/2247/projects/2114/epics/19258/tasks/19259?userId=1234567, this function redacts it tohttps://www.example.com/company/REDACTED_COMPANY_ID/projects/REDACTED_PROJECT_ID/epics/REDACTED_EPIC_ID/tasks/REDACTED_TASK_ID?userId=REDACTED_USER_ID.Select newly added custom variable, it's name should be in Value field, and save your GA4 tag.
.
Now let's test it. Switch to Preview mode and open your web site. In GA head to Debug View of your GA4 property, wait for page_view to pop up in timeline (maybe you will have to reload you page again), click on it and expand page_location variable. You should see your redacted URL.
That's all, enjoy!