# Pass the Click ID from External Forms to Your CRM

> When a lead is captured on an external form and then sent to a CRM, pass the AnyTrack Click ID into the destination field so the conversion keeps its campaign attribution instead of landing under Unknown.

When a lead is **captured on an external form** — Typeform, Elementor, Calendly, LeadsHook, Unbounce, and others — and then **sent on to a CRM** such as HubSpot, GoHighLevel, or LeadByte, attribution only survives if the **AnyTrack [Click ID](/docs/anytrack-click-id)** travels with the lead and lands in the right field in the destination.

This page is the one rule that ties those two halves together, plus the exact parameter to use for each platform.

<Prerequisites
  title="Before you begin"
  items={[
    { label: "The AnyTrack Tracking Tag is installed on the page where the form loads", done: true },
    { label: "You have an active AnyTrack property", done: true },
    { label: "You know which CRM or destination the lead is sent to", done: true },
  ]}
/>

## Why attribution breaks between a form and a CRM

AnyTrack uses [click-based attribution](/docs/anytrack-attribution-explained). When a visitor lands on a page that has the Tracking Tag, the tag captures the **Click ID** and stores it as first-party data. When a conversion fires later, AnyTrack matches it back to that session.

A contact created **inside your CRM** from an external form or a Zapier/Make automation never had a tracked browser session of its own. So unless the Click ID is carried across with the lead, the CRM-side events — `Lead`, deal stages, lifecycle changes — have nothing to match on and land under [Unknown](/docs/conversions-showing-as-unknown).

<Callout icon="💡" theme="info">
  The native [HubSpot](/docs/hubspot) and [GoHighLevel](/docs/highlevel) integrations attribute automatically **only when the lead is captured on the CRM's own form**, where the Tracking Tag runs. The moment form capture moves to an external builder — or the contact is pushed in through Zapier or Make — that built-in link is gone and you have to recreate it with the steps below.
</Callout>

## The rule: carry the Click ID across

Two steps, on every external-form → CRM flow:

1. **Capture the Click ID on the form.** AnyTrack appends it to the form through [AutoTag](/docs/autotag) or a hidden field whose value is the `--CLICK-ID--` token. Each form platform exposes it under its own parameter (see the table below).
2. **Map it into the CRM's field.** However the lead reaches the CRM — a native connector, a webhook, or Zapier/Make — map that Click ID value into the destination field AnyTrack reads.

The value is always the same AnyTrack Click ID. Only the **field name** changes per platform.

### Where the Click ID lives on each form

| Form / funnel | Parameter that carries the Click ID |
| :------------ | :---------------------------------- |
| [Typeform](/docs/typeform) | `at_click_id` |
| [Unbounce](/docs/unbounce) | `click_id` |
| [Elementor](/docs/gohighlevel-and-elementor) | `_atid` (hidden field, value `--CLICK-ID--`) |
| [Calendly](/docs/calendly) | `utm_term` or `sfid` |
| [ClickFunnels](/docs/clickfunnels) | `click_id` |
| [LeadsHook](/docs/leadshook) | `click_id` (sent on the webhook) |
| Any standard HTML form | a hidden field you name, with value `--CLICK-ID--` ([Form Tracking](/docs/form-tracking)) |

### Where the Click ID must land in each CRM

| Destination CRM | Field that receives the Click ID |
| :-------------- | :------------------------------- |
| [HubSpot](/docs/hubspot) | the **AnyTrack Click ID** contact property (parameter `atclid`) |
| [GoHighLevel](/docs/highlevel) | the `_atid` custom field |
| [LeadByte](/docs/leadbyte) | `c3` |
| Any custom CRM | a custom field you create to hold the value ([custom integration](/docs/custom-integration)) |

<Callout icon="📘" theme="default">
  **HubSpot property name** > > AnyTrack is renaming this property from "AnyTrack Client ID" to **"AnyTrack Click ID"** to match the value it actually stores (the Click ID, not the visitor Client ID cookie). Until the update reaches your account it may still appear as "AnyTrack Client ID" — it is the same field either way.
</Callout>

## If you use Zapier or Make

When an automation moves the lead from the form to the CRM, the Click ID is just another field to map:

1. Make sure the form passes the Click ID (the hidden field is present and populated — for Typeform that is `at_click_id`).
2. In your Zap or Make scenario, find that field in the form's output.
3. Map it into the CRM field from the table above — for example, into the HubSpot **AnyTrack Click ID** property.
4. Turn the automation on and submit a test lead.

<Callout icon="❗" theme="warning">
  A contact pushed in by Zapier or Make is created server-to-server, with no browser session. Mapping the Click ID through is the **only** thing that keeps that lead attributed. Reapplying a UTM template will not fix it after the fact.
</Callout>

## Verify it works

1. Visit the page where the form loads from a tracked source (or simulate one with UTM parameters), in an incognito window.
2. Submit a test lead through the form.
3. Confirm the Click ID reached the form — for Typeform, check that `at_click_id` is populated in the submission.
4. Open the contact in your CRM and confirm the destination field (for example, the HubSpot **AnyTrack Click ID** property) holds a value like `IBTO9lOfAMybrKiiB1U9YG91IFjs3Dv9AV`.
5. In the AnyTrack [Integration Event Log](/docs/integration-event-log), confirm the conversion is attributed to the correct campaign instead of Unknown.

## Related

<Cards columns={2}>
  <Card title="Why Conversions Show as Unknown" href="/docs/conversions-showing-as-unknown" icon="fa-circle-question" iconColor="blue-500">
    What happens when the Click ID does not travel, and how to fix it.
  </Card>
  <Card title="Form Tracking" href="/docs/form-tracking" icon="fa-pen-to-square" iconColor="blue-500">
    Capture form submissions and pass the Click ID through hidden fields or action URLs.
  </Card>
  <Card title="AnyTrack Click ID" href="/docs/anytrack-click-id" icon="fa-link" iconColor="green-500">
    How the Click ID connects every touchpoint in the customer journey.
  </Card>
  <Card title="AnyTrack Identifiers" href="/docs/anytrack-identifiers" icon="fa-fingerprint" iconColor="green-500">
    The full reference for every field that carries the Click ID value.
  </Card>
</Cards>

<FaqAccordion
  title="FAQ"
  icon="fa-duotone fa-circle-question"
  items={[
    {
      question: "Do I need this if I use the form's native CRM connection?",
      answer: "Yes. A native connection between an external form and a CRM (for example Typeform to HubSpot) moves the lead, but it only carries the Click ID if you map it. Add the Click ID parameter to the connection so it lands in the CRM field."
    },
    {
      question: "My lead has UTM data in the CRM but still shows as Unknown. Why?",
      answer: "UTM values stored on the CRM contact are not the same as a tracked AnyTrack session. Attribution matches on the Click ID, not the UTM values. If the Click ID did not travel into the CRM field, the conversion stays Unknown. See <a href='/docs/conversions-showing-as-unknown'>Why Conversions Show as Unknown</a>."
    },
    {
      question: "What value should the field contain?",
      answer: "The AnyTrack Click ID — a 34-character string such as <code>IBTO9lOfAMybrKiiB1U9YG91IFjs3Dv9AV</code>. AnyTrack substitutes the <code>--CLICK-ID--</code> token, or the platform parameter (for example Typeform's <code>at_click_id</code>), with this value automatically."
    },
    {
      question: "My CRM is not in the table. What do I do?",
      answer: "Create a custom field on the CRM contact to hold the Click ID, then map the form's Click ID parameter into it. See <a href='/docs/custom-integration'>Custom Integrations</a> and <a href='/docs/form-tracking'>Form Tracking</a>."
    }
  ]}
/>
