> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trackfunnels.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting UTM Links, Pixels, and Integrations

> How to diagnose and resolve common problems with UTM link tracking, GA4 email pixels, and ActiveCampaign, Calendly, and Jotform integrations.

This page covers the most common issues users run into with TrackFunnels — from UTM links not appearing in GA4 to webhooks that aren't firing. Work through the relevant section below, step by step, before reaching out to support. If you've gone through every step and the problem persists, [contact us](https://trackfunnels.com/contact-us/) with your account email and a description of what you've tried.

## UTM Links

If your UTM-tagged URLs are not appearing in GA4 reports, or values look inconsistent, the steps below will help you pinpoint what's going wrong.

<AccordionGroup>
  <Accordion title="My UTM links aren't showing up in GA4">
    <Steps>
      <Step title="Confirm the URL is used exactly as generated">
        Copy the UTM link directly from TrackFunnels and use it without any manual modification. Even a single extra character or a changed parameter value will cause GA4 to misattribute or drop the session.
      </Step>

      <Step title="Verify GA4 is installed on the destination page">
        Open the destination page in a browser, then check your **GA4 Realtime report** while loading the page. If you don't see a hit appear, your GA4 tracking code (gtag.js or GTM tag) may not be installed correctly or may be firing on a different domain.
      </Step>

      <Step title="Check that UTM parameters survive any redirects">
        If the destination URL goes through a redirect (e.g. a link shortener, a redirect rule in your CMS, or a landing page platform), confirm that UTM parameters are being passed through to the final URL. Some redirect configurations strip query strings. Test by pasting the full UTM link into your browser address bar and checking the final URL in the address bar after the page loads.
      </Step>

      <Step title="Allow time for data to appear in standard reports">
        GA4 Realtime reports update within seconds, but standard reports (Acquisition → Traffic acquisition) may have a processing delay of **24–48 hours**. If you can see the hit in Realtime but not in standard reports yet, wait and check again tomorrow.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="UTM values appear inconsistently in GA4 (mixed case, duplicates)">
    This is almost always caused by links that were built **outside TrackFunnels** — in a spreadsheet, typed manually, or copied from an old campaign — where no consistency rules were applied.

    GA4 is case-sensitive: `Email`, `email`, and `EMAIL` are stored as three separate source/medium values. Over time, this fragments your attribution data and makes channel groupings unreliable.

    **Going forward**, build all UTM links through TrackFunnels. The tool enforces lowercase and validates values against your approved list automatically, so every new link you create will follow the same rules.

    <Note>
      Historical data already in GA4 cannot be cleaned up retroactively — GA4 does not support editing or merging existing dimension values. The best approach is to start fresh with consistent links from today and note the date in your GA4 annotations so you can distinguish old from new data in your reports.
    </Note>
  </Accordion>
</AccordionGroup>

## Email Tracking

These steps cover the most common reasons email opens are missing from GA4 or creating duplicate users, and how to resolve each one.

<AccordionGroup>
  <Accordion title="Email opens are not appearing in GA4">
    <Steps>
      <Step title="Check your GA4 credentials in Account Settings">
        Go to **Account Settings → Set Up GA4** and confirm that your **Stream Name**, **Stream URL**, and **Measurement ID** are all entered correctly. These values must match exactly what appears in your GA4 account under **Admin → Data Streams**.
      </Step>

      <Step title="Verify your API Secret Key is valid">
        In your GA4 account, go to **Admin → Data Streams → \[your stream] → Measurement Protocol API secrets** and confirm the secret key you've entered in TrackFunnels is still listed and active. API secret keys can be revoked or rotated — if yours has changed, generate a new one, copy it, and update it in your TrackFunnels Account Settings.
      </Step>

      <Step title="Confirm the pixel is embedded in the email HTML">
        Open the email in your email platform's HTML editor and verify the tracking pixel `<img>` tag is present. If your email editor uses a drag-and-drop builder, the pixel may have been removed when the template was last edited.

        ```html theme={null}
        <!-- Example of how a TrackFunnels pixel looks in email HTML -->
        <img src="https://trackfunnels.com/pixel/..." width="1" height="1" alt="" />
        ```
      </Step>

      <Step title="Check for image-blocking by email clients">
        Many email clients (Outlook, Apple Mail with Mail Privacy Protection, corporate firewalls) block remote images by default. A blocked image means the pixel request never reaches TrackFunnels and the open is not recorded. This is an inherent limitation of pixel-based open tracking across all platforms, not specific to TrackFunnels.
      </Step>

      <Step title="Allow for hit-batching delay">
        TrackFunnels batches Measurement Protocol hits to conserve resources. There may be a delay of **up to a few hours** before opens appear in GA4. If you've just sent a test email, wait and check your GA4 Realtime and standard reports again after an hour.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Each email open creates a separate new user in GA4">
    This is the **expected default behavior** of the GA4 Measurement Protocol. Because email opens happen outside the browser, there is no GA4 session cookie available — so each Measurement Protocol hit is attributed to a new user by default.

    To link email opens to existing users, configure the **GA4 Client ID Personalization Tag**:

    <Steps>
      <Step title="Go to Email Tracking Settings">
        In your TrackFunnels account, navigate to **Account Settings → Email Tracking Settings**.
      </Step>

      <Step title="Enter your CRM's GA4 Client ID merge code">
        In the **GA4 Client ID Personalization Tag** field, enter the merge code your CRM uses for the stored GA4 client ID field (e.g. a custom contact field where you've been recording the `_ga` cookie value).
      </Step>

      <Step title="Save and re-generate affected pixels">
        Save your settings. Because existing pixels cannot be edited, you'll need to delete and recreate any pixels you want to apply this setting to, then re-embed them in your email templates.
      </Step>
    </Steps>

    <Note>
      This configuration only prevents new users from being created if your CRM actually has a GA4 client ID stored for each contact. If contacts were added to your list before you started capturing the GA4 client ID, those opens will still create new users in GA4.
    </Note>
  </Accordion>

  <Accordion title="I don't see the email pixel tabs in my account">
    The **All Email Pixels**, **Email Tracking Pixel Builder**, **Set Up GA4**, and **Email Tracking Settings** tabs are only visible on **Pro plan accounts**.

    If you're on the free plan, these tabs are hidden. Upgrade your account to a Pro plan to unlock them.

    [Upgrade at trackfunnels.com →](https://trackfunnels.com/utm-links-builder)

    If you have already upgraded and the tabs are still not visible, try logging out and back in. If the problem persists, email [malik@trackfunnels.com](mailto:malik@trackfunnels.com).
  </Accordion>
</AccordionGroup>

## Integrations

Follow these steps if data from ActiveCampaign, Calendly, or Jotform isn't appearing in your TrackFunnels dashboards.

<AccordionGroup>
  <Accordion title="My ActiveCampaign webhook isn't receiving data">
    <Steps>
      <Step title="Verify the webhook URL is pasted correctly in ActiveCampaign">
        In ActiveCampaign, go to **Settings → Developer → Manage Webhook** and open the webhook you created for TrackFunnels. Confirm the URL field contains the exact webhook URL generated in your TrackFunnels account. It should look like:

        ```text theme={null}
        https://trackfunnels.com/hook/xx/xxxx/email/xx
        ```

        If anything looks wrong, delete the webhook in ActiveCampaign, generate a new one in TrackFunnels, and re-paste it.
      </Step>

      <Step title="Confirm the correct event is selected">
        The event selected in ActiveCampaign must match the event trigger you chose when generating the webhook in TrackFunnels:

        | TrackFunnels Event Trigger | ActiveCampaign Event to Select |
        | -------------------------- | ------------------------------ |
        | Email Link Click Tracking  | Link Clicked                   |
        | Tag Added Tracking         | Contact Tag Added              |

        If these don't match, data will not flow to TrackFunnels.
      </Step>

      <Step title="Check the Initialize from Source setting">
        On the ActiveCampaign webhook configuration screen, find the **Initialize from Source** field and make sure **all options are selected**. This ensures TrackFunnels captures events regardless of how they were triggered (by the user, by an admin, via the API, etc.).
      </Step>

      <Step title="Confirm the correct list is selected">
        In the **List** field of the ActiveCampaign webhook, make sure you have selected the list whose contacts you want to track. If you're tracking across multiple lists, you may need to create a separate webhook for each list.
      </Step>

      <Step title="Send a test and check TrackFunnels">
        Click a tracked link in a test email (for Link Click Tracking) or add a tag to a test contact (for Tag Added Tracking), then check your TrackFunnels dashboard. If still no data appears, contact [malik@trackfunnels.com](mailto:malik@trackfunnels.com) with your account email and a screenshot of your ActiveCampaign webhook settings.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Calendly bookings aren't showing up in TrackFunnels">
    <Steps>
      <Step title="Confirm both connection steps are complete">
        The Calendly integration requires **two separate connection steps** in TrackFunnels — both are required:

        1. **Connect your Calendly account** (authorises TrackFunnels to verify your paid Calendly plan).
        2. **Connect your Calendly calendar** (creates the actual webhook between Calendly and TrackFunnels).

        If you only completed step one, bookings will not be tracked. Go to **Account Settings → Integrations → Calendly** and check that both buttons have been clicked and show a success status.
      </Step>

      <Step title="Verify Active Status in TrackFunnels">
        Once the webhook connection is established, your Calendly integration screen in TrackFunnels should show **Active Status** next to the webhook. If it shows anything other than Active, disconnect and reconnect the calendar.
      </Step>

      <Step title="Ensure UTM parameters are being passed to your scheduling link">
        TrackFunnels can only attribute a booking to a UTM campaign if UTM parameters are present on the Calendly scheduling link when the visitor books. Make sure you are sharing UTM-tagged links (built in TrackFunnels) that point to your Calendly page — not a plain Calendly URL.

        If users navigate away and return, UTM parameters may be lost. Consider using [Calendly's advanced embed](https://help.calendly.com/hc/en-us/articles/4409838727703) to keep UTM parameters intact through the booking flow.
      </Step>

      <Step title="Check the event type — cancellations and reschedules are not tracked">
        TrackFunnels only tracks **Invitee Created** events (i.e. new bookings). Cancellations, reschedules, and other event types are not tracked. If you're looking for a booking that was rescheduled from an earlier appointment, it may not appear.
      </Step>
    </Steps>

    <Note>
      If you have more than one calendar in your Calendly organisation, all calendars are covered by a single webhook. Use the Calendar/Meeting Name filter in your Calendly Attribution Dashboard to break down results by calendar.
    </Note>
  </Accordion>

  <Accordion title="Jotform submissions aren't showing up in TrackFunnels">
    <Steps>
      <Step title="Confirm the webhook URL is correctly pasted in Jotform">
        In Jotform, open the form you integrated, go to **Edit Form → Integrations → Webhook**, and verify the webhook URL matches the one generated in your TrackFunnels account. If you're unsure, generate a fresh webhook URL in TrackFunnels and re-paste it in Jotform.
      </Step>

      <Step title="Confirm you clicked Complete Integration in Jotform">
        After pasting the webhook URL in Jotform, you must click the **Complete Integration** button to activate it. If you closed the Jotform integrations panel without clicking that button, the webhook was not saved and submissions will not be sent to TrackFunnels.
      </Step>

      <Step title="Verify Active Status in TrackFunnels">
        In your TrackFunnels account under **Account Settings → Integrations → Jotform**, check that the webhook shows **Active Status**. Active Status confirms that TrackFunnels has received at least one submission through the webhook.
      </Step>

      <Step title="Check whether UTM parameters are reaching Jotform">
        For attribution to work, UTM parameters must be passed from your landing page or ad link through to the Jotform form URL at the time of submission. If you're using a standalone Jotform URL (not embedded), make sure UTM parameters are appended to the Jotform link itself. If the form is embedded on your site, the page's UTM parameters need to be forwarded to hidden fields in the form.

        If you're having trouble getting UTM parameters to pass through to Jotform, contact [malik@trackfunnels.com](mailto:malik@trackfunnels.com) for guidance.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## General

If your issue isn't covered in one of the sections above, reach out and we'll help you get it sorted.

<AccordionGroup>
  <Accordion title="I need help that isn't covered here">
    If you've worked through the relevant troubleshooting steps above and your issue isn't resolved, reach out directly:

    **Email:** [malik@trackfunnels.com](mailto:malik@trackfunnels.com)

    To help us resolve your issue as quickly as possible, include:

    * Your **account email address**
    * A clear **description of the problem** and what you've already tried
    * Any **screenshots or error messages** that might be relevant
    * The **integration or feature** you're having trouble with (e.g. Calendly, email pixels, UTM links)

    We typically respond within one business day.
  </Accordion>
</AccordionGroup>
