Duplicate submissions can be a nightmare for lead tracking. Every time a user refreshes the thank-you page after submitting a form, conversion tags can fire again—resulting in inflated lead counts and misleading analytics.
Here’s how to prevent that using Google Tag Manager (GTM) and a small JavaScript tweak.
Why Page Reloads Trigger Duplicate Leads
By default, GTM triggers fire on every page load. On a lead form, this means:
- User submits the form → tag fires
- User refreshes the thank-you page → tag fires again
This leads to duplicate lead counts and inaccurate reporting.
Detecting Page Reloads with JavaScript
Browsers provide navigation information via the Navigation Timing API:
performance.navigation.type
Values:
- 0 → New page load
- 1 → Page reload
- 2 → Back/forward navigation
We can use this to check if a page is being reloaded.
Setting Up GTM Variables
- JavaScript Variable
- Name: js-reload
- Global Variable Name: performance.navigation.type
- Custom JavaScript Variable
- Name: cjs-reload
- Code:
function(){
return performance.navigation.type == 0 ? false: true;
}

This returns true for reloads and false for new page loads, making trigger conditions easy to manage.
Configuring the Lead Form Trigger
- Edit your Page View or Form Submission trigger.
- Add a condition:
- Fire tag only if cjs-reload equals false.
This ensures the lead form conversion tag fires once per actual submission, even if the user refreshes the page.
Benefits
- Accurate lead tracking
- Prevents duplicate submissions
- Cleaner analytics and reporting
Testing
Always use GTM Preview Mode to confirm that:
- The tag fires once on a new submission
- It does not fire again on page reload
This simple setup ensures reliable tracking for your lead forms without duplicates.
