---
title: 'What is GCLID? Google click IDs, examples, and redirect checks'
description: 'Find a GCLID in a Google Ads landing URL, test whether redirects preserve it, and understand how click IDs differ from UTMs and conversion events.'
canonical: 'https://plainrouter.com/library/gclid'
format: Guide
published_at: '2026-09-17'
last_updated: '2026-10-20'
---

# What is GCLID? Google click IDs, examples, and redirect checks

**GCLID means Google Click Identifier.** Google Ads auto-tagging adds this identifier to eligible ad landing URLs so Google's measurement systems can associate activity with an ad click. In a URL, the parameter name is ` gclid `; the value after ` = ` is the identifier. [Google's GCLID definition](<https://support.google.com/google-ads/answer/9744275>).

A GCLID in the address bar does not prove that a conversion was recorded. First verify the URL reached the page intact, then check collection and conversion reporting separately. This guide explains Google Ads measurement; it does not require a Plainrouter account or represent a Plainrouter Google Ads delivery integration.

## What does a GCLID look like in a URL?

Here is a synthetic landing URL:

```text
https://shop.example/pricing?plan=team&gclid=Demo-Click_123#plans
```

| Part | Meaning |
| --- | --- |
| ` /pricing ` | Landing-page path |
| ` plan=team ` | An existing application parameter |
| ` gclid=Demo-Click_123 ` | A fictional click ID for checking query handling |
| ` #plans ` | A page fragment, separate from the query string |

Real values are generated by Google. ` Demo-Click_123 ` is deliberately fictional: it can test whether your site preserves a parameter, but it cannot attribute a conversion to a real Google Ads click. Treat the real value as opaque. Do not lowercase it, trim it into another value, or assume a fixed length or a campaign-name encoding.

Google documents adding auto-tagging parameters before a URL fragment and preserving them through redirects. [Auto-tagging checks](<https://support.google.com/analytics/answer/2938246>).

## GCLID vs UTM parameters: what is the difference?

| Field | Who supplies it? | What it is for |
| --- | --- | --- |
| ` gclid ` | Google Ads auto-tagging | Associating a click with Google Ads measurement |
| ` utm_source `, ` utm_medium `, ` utm_campaign ` | Your campaign naming or URL configuration | Readable campaign labels for analytics |
| A purchase or lead event ID | Your event-producing application | Identifying one business event, including retries |

UTMs can describe many visits with the same labels. They are not a substitute for Google's click identifier. A GCLID is also not a purchase ID: one person can perform more than one business action after a visit, and your event identity must describe the action.

Leave auto-tagging enabled when using the Google integrations that require it. If your analytics also needs campaign labels, use a consistent naming scheme and test the resulting URL. Google's [auto-tagging guidance](<https://support.google.com/google-ads/answer/3095550>) explains the reporting relationship. For the actual configuration fields and ValueTrack placeholders, use our [Google Ads tracking-template examples](</library/google-ads-tracking-template>).

## How do you check whether a redirect drops GCLID?

Use a test landing page you control and a fictional identifier. There is no need to click your own paid ad to check URL handling.

1. Open browser developer tools, select **Network**, and enable **Preserve log**.
1. Load the landing URL with ` gclid=Demo-Click_123 ` in its query string. Use ` & ` if other parameters already follow ` ? `, and put the parameter before ` # `.
1. Inspect each document redirect. Read the response's ` Location ` header, then the next request URL.
1. Confirm that the destination still contains exactly the same decoded value, including letter case. Also check parameters your application needs, such as ` plan=team `.
1. Inspect the final document URL and any later client-side navigation. A router can remove the query after the initial HTTP response.
1. Separately verify that your permitted measurement code receives the click context. A passing URL check proves transport, not consent, tag execution, a conversion, or attribution.

For example, this redirect loses the click ID:

```text
From: https://shop.example/start?plan=team&gclid=Demo-Click_123
To:   https://shop.example/pricing?plan=team
```

This one retains it:

```text
From: https://shop.example/start?plan=team&gclid=Demo-Click_123
To:   https://shop.example/pricing?plan=team&gclid=Demo-Click_123
```

Check the first hop where the value changes. Common places to inspect include HTTPS or hostname redirects, locale redirects, login returns, a link shortener, and client-side route changes. Fix the responsible rule rather than adding a second ` gclid ` parameter to compensate. Google's [redirect troubleshooting procedure](<https://support.google.com/analytics/answer/2938246>) describes checking each hop; this example uses fictional data.

## How do you read GCLID without breaking the query string?

Use a URL parser instead of splitting a string at ` ? ` or ` & `. This example runs locally in a browser console or modern Node.js. It makes no network request and stores nothing:

```js
const landing = new URL('https://shop.example/pricing?plan=team&gclid=Demo-Click_123#plans');
const values = landing.searchParams.getAll('gclid');

if (values.length !== 1 || values[0] === '') {
    throw new Error('Expected one non-empty gclid parameter');
}

const clickId = values[0];
console.log(clickId); // Demo-Click_123
```

` URLSearchParams ` decodes query encoding. Do not decode the returned value a second time. A value in ` #gclid=... ` is a fragment, not a top-level query parameter. If more than one ` gclid ` appears, investigate how the URL was assembled instead of arbitrarily selecting the first or last.

Reading a URL is not permission to persist or send its identifiers. Apply your consent and data-handling requirements before storage or advertising use. Do not paste real click IDs, customer details, or production URLs containing personal data into public support posts or online decoders.

## Why is GCLID missing or not working?

| Observation | What to check next |
| --- | --- |
| A fictional test value disappears at a redirect | The first ` Location ` header or browser navigation that removes or changes it |
| A test value remains, but a real visit has no GCLID | Auto-tagging settings and the actual traffic source; an organic or manually typed visit is not an ad-click test |
| The landing page has ` gbraid ` or ` wbraid ` instead | Google's platform-specific measurement behavior; do not rename either parameter to ` gclid ` |
| GCLID is present but no conversion appears | Tag/event firing, permitted collection, conversion-action setup, and reporting diagnostics |
| The URL has two ` gclid ` values | A template, suffix, redirect, or script may be appending a value more than once |
| A test URL containing a query returns an error | Application or edge rules that reject unknown parameters |

For their differences and field-handling checks, read [GBRAID vs WBRAID vs GCLID](</library/gbraid-wbraid>). Not every Google Ads measurement flow exposes the same identifier. Google's [iOS measurement guidance](<https://support.google.com/analytics/answer/11367152>) describes circumstances where GBRAID or WBRAID is used. Absence of GCLID by itself is not proof that measurement is broken.

## Can you generate, decode, or upload a GCLID?

You can invent a string to test URL preservation, but you cannot turn that string into a valid Google ad click. Do not hardcode a sample into a live Final URL or reuse one visitor's real identifier for another visitor.

Treat GCLID as an identifier to pass through the supported measurement flow, not a readable campaign report. Use authorized Google Ads reporting to inspect campaign outcomes. For conversion imports, follow Google's [click-conversion upload guide](<https://developers.google.com/google-ads/api/docs/conversions/upload-offline>): possessing a click ID alone does not satisfy the rest of the conversion contract.

## What should you do next?

- Configure campaign labels with the [tracking-template and Final URL suffix guide](</library/google-ads-tracking-template>).
- Use UTM parameters for static campaign labels; they do not generate Google click IDs.
- Compare setup, event sources and destinations in the [server-side tracking tools guide](</library/server-side-tracking-tools>).
- For Meta's click identifier, read [fbclid](</library/fbclid>); for its browser-cookie fields, compare [fbp and fbc](</library/fbp-fbc>).

## Sources

- [Google Click Identifier definition](<https://support.google.com/google-ads/answer/9744275>)
- [Google Ads auto-tagging](<https://support.google.com/google-ads/answer/3095550>)
- [Check auto-tagging and redirect handling](<https://support.google.com/analytics/answer/2938246>)
- [Google's iOS measurement changes](<https://support.google.com/analytics/answer/11367152>)
- [Upload click conversions through Google Ads API](<https://developers.google.com/google-ads/api/docs/conversions/upload-offline>)
- [URLSearchParams.getAll](<https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/getAll>)
