Skip to main content
Conversion tracking requires a Business plan subscription or higher.
When it comes to conversion tracking, a lead event happens when a user performs an action that indicates interest in your product or service. This could be anything from:
  • Signing up for an account
  • Booking a demo meeting
  • Joining a mailing list
A diagram showing how lead events are tracked in the conversion funnel
In this guide, we will be focusing on tracking new user sign-ups for a SaaS application that uses Google Tag Manager to manage client-side tracking scripts.

Prerequisites

First, you’ll need to enable conversion tracking for your Dub links to be able to start tracking conversions:
If you’re using Dub Partners, you can skip this step since partner links will have conversion tracking enabled by default.
To enable conversion tracking for all future links in a workspace, you can do the following: To enable conversion tracking for all future links in a workspace, you can do the following:
  1. Navigate to your workspace’s Analytics settings page.
  2. Toggle the Workspace-level Conversion Tracking switch to enable conversion tracking for the workspace.
Enabling conversion tracking for a workspace
This option will enable conversion tracking in the Dub Link Builder for all future links.
Alternatively, you can also enable conversion tracking programmatically via the Dub API. All you need to do is pass trackConversion: true when creating or updating a link:
const link = await dub.links.create({
  url: "https://dub.co",
  trackConversion: true,
});

Set up Dub Analytics in Google Tag Manager

To track lead conversion events with Google Tag Manager, you’ll need to install the Dub analytics script and configure lead tracking tags.

Step 1: Add Dub Analytics Script to GTM

First, you’ll need to add the Dub analytics script to your website using Google Tag Manager. In your GTM workspace, navigate to the Tags section and click New to create a new tag.
GTM New Tag
Select Custom HTML as the tag type and add the following code:
<script>
  (function (c, n) {
    c[n] =
      c[n] ||
      function () {
        (c[n].q = c[n].q || []).push(arguments);
      };

    var methods = ["trackClick", "trackLead", "trackSale"];
    for (var i = 0; i < methods.length; i++) {
      (function (method) {
        c[n][method] = function () {
          var args = Array.prototype.slice.call(arguments);
          args.unshift(method);
          c[n].apply(null, args);
        };
      })(methods[i]);
    }

    var s = document.createElement("script");
    s.defer = 1;
    s.src = "https://www.dubcdn.com/analytics/script.conversion-tracking.js";
    s.setAttribute("data-publishable-key", "dub_pk_xxxxxxxx"); // Replace with your publishable key
    document.head.appendChild(s);
  })(window, "dubAnalytics");
</script>
Make sure to replace dub_pk_xxxxxxxx with your actual publishable key from your Dub workspace (under the Analytics settings page)
Configure the tag to fire on All Pages by setting the trigger to All Pages - Page View. Name this tag “Dub Analytics Script” and save it. To read the dub_id cookie that Dub Analytics sets, you’ll need to create a User-Defined Variable in Google Tag Manager. In your GTM workspace, navigate to the Variables section and click New to create a new variable.
GTM Dub ID Cookie Variable
Configure the variable with the following settings:
  • Variable Type: Select 1st Party Cookie
  • Cookie Name: Enter dub_id
  • Variable Name: Name it “Dub ID Cookie”
Click Save to create the variable.
This variable will automatically read the dub_id cookie value set by the Dub Analytics script. You can use this variable in your tags to pass the Dub ID when tracking conversion events.

Step 3: Create Lead Tracking Tag for Form Submissions

Next, create a tag to track leads when users submit forms on your website. Create another Custom HTML tag with the following code:
<script>
  (function () {
    // Get form data - customize these selectors based on your form
    var name = document.getElementById("name")
      ? document.getElementById("name").value
      : "";
    var email = document.getElementById("email")
      ? document.getElementById("email").value
      : "";

    // Get dub_id from cookie using GTM variable
    var clickId = {{Dub ID Cookie}} || "";

    // Only track if email is present
    if (email) {
      // Track the lead event
      dubAnalytics.trackLead({
        eventName: "Sign Up",
        customerExternalId: email,
        customerName: name || undefined,
        customerEmail: email,
        clickId: clickId || undefined,
      });
    }
  })();
</script>
Important: You’ll need to customize the DOM selectors (getElementById('name'), getElementById('email')) to match your actual form field IDs or use different methods to capture the form data based on your website’s structure.
Configure this tag to fire on Form Submission by creating a new trigger:
  • Trigger Type: Form Submission
  • This trigger fires on: Some Forms (or All Forms if you want to track all form submissions)
  • Add conditions to specify which forms should trigger lead tracking
Name this tag “Dub Lead Tracking - Form Submission” and save it.

Step 4: Create Lead Tracking Tag for Thank You Pages

For tracking leads on thank-you pages (recommended approach), create another Custom HTML tag:
<script>
  (function () {
    // Get query parameters from URL
    var params = new URLSearchParams(window.location.search);
    var email = params.get("email");
    var name = params.get("name");

    // Get dub_id from cookie using GTM variable
    var clickId = {{Dub ID Cookie}} || "";

    // Only track if email is present
    if (email) {
      // Track the lead event
      dubAnalytics.trackLead({
        eventName: "Sign Up",
        customerExternalId: email,
        customerName: name || undefined,
        customerEmail: email,
        clickId: clickId || undefined,
      });
    }
  })();
</script>
Configure this tag to fire on specific pages by creating a Page View trigger with conditions:
  • Trigger Type: Page View
  • This trigger fires on: Some Page Views
  • Add conditions like:
    • Page URL contains /thank-you
    • Or Page Path equals /success
    • Or whatever URL pattern matches your thank-you pages
Name this tag “Dub Lead Tracking - Thank You Page” and save it. Here’s the full list of attributes you can pass when sending a lead event:
PropertyRequiredDescription
clickIdYesThe unique ID of the click that the lead conversion event is attributed to. You can read this value from dub_id cookie. If an empty string is provided (i.e. if you’re using tracking a deferred lead event), Dub will try to find an existing customer with the provided customerExternalId and use the clickId from the customer if found.
eventNameYesThe name of the lead event to track. Can also be used as a unique identifier to associate a given lead event for a customer for a subsequent sale event (via the leadEventName prop in /track/sale).
customerExternalIdYesThe unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer.
customerNameNoThe name of the customer. If not passed, a random name will be generated (e.g. “Big Red Caribou”).
customerEmailNoThe email address of the customer.
customerAvatarNoThe avatar URL of the customer.
modeNoThe mode to use for tracking the lead event. async will not block the request; wait will block the request until the lead event is fully recorded in Dub; deferred will defer the lead event creation to a subsequent request.
metadataNoAdditional metadata to be stored with the lead event. Max 10,000 characters.

Testing your setup

To test your GTM setup, you can use the Preview mode in Google Tag Manager:
  1. Enable Preview Mode: In your GTM workspace, click the Preview button in the top right corner
  2. Enter your website URL and click Connect
  3. Navigate to a page with a form or your thank-you page
  4. Submit a test form or visit the thank-you page with query parameters
  5. Check the GTM debugger to see if your tags are firing correctly

Verify lead tracking

You can also verify that leads are being tracked by:
  1. Checking your browser’s developer console for any JavaScript errors
  2. Using the Network tab to see if requests are being sent to Dub’s analytics endpoint
  3. Viewing your Dub dashboard to confirm that lead events are appearing in your analytics

Common troubleshooting tips

  • Tag not firing: Check that your triggers are configured correctly and that the conditions match your page structure
  • Form data not captured: Verify that your DOM selectors match your actual form field IDs or names
  • Multiple events: Make sure your tags aren’t firing multiple times by checking trigger conditions
  • Missing publishable key: Ensure you’ve replaced the placeholder with your actual publishable key
Client-Side Tracking Limitations:
  • Ad blockers – Users with ad blockers may prevent tracking scripts from loading
  • JavaScript disabled – Events won’t be tracked if users have JavaScript disabled
  • Network issues – Failed network requests won’t retry automatically
  • Privacy concerns – Some users may block client-side tracking for privacy reasons
For more accurate conversion tracking, consider using server-side conversion tracking

View your conversions

Once you’ve completed the setup, all your tracked conversions will show up in Dub Analytics. We provide 3 different views to help you understand your conversions:
Time-series line chart
  • Funnel chart: A funnel chart view visualizing the conversion & dropoff rates across the different steps in the conversion funnel (clicks → leads → sales).
Funnel chart view showing the conversion & dropoff rates from clicks → leads → sales
  • Real-time events stream: A real-time events stream of every single conversion event that occurs across all your links in your workspace.
The Events Stream dashboard on Dub