---
title: "TikTok click ID (ttclid) lost on Framer: how to fix"
description: "On your Framer site the ttclid from TikTok ad clicks is not stored in the ttclid cookie. Check redirects, Auto Locale, consent and the pixel setup."
updated: "2026-10-23"
url: "https://ispixelworking.com/guides/tiktok.click_id_not_set/framer"
---

# TikTok click ID (ttclid) lost on Framer: how to fix

Fix guide · Framer · medium · about 30 min · updated 2026-10-23

For the finding “Click ID from TikTok ads is not stored” (`tiktok.click_id_not_set`).
Also for: [Any website](https://ispixelworking.com/guides/tiktok.click_id_not_set/generic), [Shopify](https://ispixelworking.com/guides/tiktok.click_id_not_set/shopify), [WordPress](https://ispixelworking.com/guides/tiktok.click_id_not_set/wordpress), [Webflow](https://ispixelworking.com/guides/tiktok.click_id_not_set/webflow).

## What this means

When someone clicks a TikTok ad, TikTok adds a click ID to the landing page address: `?ttclid=...`. The TikTok Pixel on your Framer site should read it, store it in a first-party cookie also named **`ttclid`**, and send it with its events, so that a lead or booking later in the visit can be tied back to the ad click. On your site, the click ID did not make it.

Why it costs you money:

- TikTok has a weaker link between ad clicks and conversions, which lowers attribution and reported results.
- If you send server events through the TikTok Events API, they usually take the click ID from the same cookie, so they lose it too.

## How to confirm it yourself

Our check opens your page in a browser in the EU as if arriving from a TikTok ad, with a test click ID in the URL, accepts the cookie banner, and then looks for the click ID. If our report shows a **redirect chain**, start there: it often shows exactly where the parameter was dropped.

1. Open a **private (incognito) window**, open developer tools (F12) on the **Network** tab and tick *Preserve log*.
2. Open the exact URL your ads use, with a made-up click ID added: `https://yourdomain.com/landing?ttclid=test123`. Use the **published** site: Framer does not run custom code in the canvas preview.
3. If the first request is a redirect (`301`, `302`, `307`, `308`), check its **Location** header. Does the new address still contain `ttclid=test123`?
4. Accept the cookie banner and wait a few seconds.
5. Open **Application > Cookies** (Chrome) or **Storage > Cookies** (Firefox) for your domain and find `ttclid`. It should hold `test123`. You should also see `_ttp`, the pixel's browser ID.

If the `ttclid` cookie is missing, or holds something else, the click ID is being lost.

## How to fix

Work through the chain: the link must arrive with `ttclid`, the pixel must run on that page after consent, and it must be allowed to write first-party cookies.

1. **Point your ads at the final address.** In our test on Framer-hosted sites on 2026-10-23, Framer redirected `http` to `https`, the domain without `www` to the `www` version used by that site, and an address with a trailing slash to the version without it. All of these kept `?ttclid=test123`. Still use the exact final address (the domain your site ends up on, `https`, no trailing slash) in every ad URL, so visitors land without a redirect.
2. **Check your own redirects.** Redirects you set up yourself are under **Site Settings > Hosting > Redirects**. In the same test, a redirect set up there also kept the query string. Framer notes that changing a page's path in the canvas or CMS does not update your redirect rules, so old rules can send ad clicks somewhere unexpected. Test every redirect your ads pass through with `?ttclid=test123`, and link ads to the destination page directly.
3. **Check Auto Locale if your site is localized.** With **Auto Locale** turned on, Framer redirects visitors who land on the default locale to a matching language version, based on their browser's language preferences and their device's time zone. Framer's documentation does not say whether this redirect keeps the query string. Test your ad URL with a browser language and time zone that trigger it. If `ttclid` is lost, point ads for that audience at the localized URL directly: Framer does not redirect visitors who arrive on a non-default locale.
4. **Check redirects outside Framer.** Framer redirects only paths within your current domain; a whole old domain has to be redirected at that domain's own host. Domain forwarding at a registrar, link shorteners and campaign link tools in front of the site commonly drop the query string. Test them, and avoid them in ad URLs unless they pass `ttclid` through. TikTok notes the click ID can be up to 1,000 characters long; do not truncate it.
5. **Make sure the pixel runs on the landing page after consent.** The pixel reads `ttclid` from the address of the page it runs on. If you use Framer's Cookie Banner with Google Tag Manager (GTM), the TikTok tags must fire on the same page right after the visitor accepts, through a trigger for `cookie_consent_update`, the event the banner pushed after Accept in our tests. If they only fire on the next page, `ttclid` is no longer in the address and the cookie is never written. See "TikTok Pixel does not fire after consent".
6. **Make sure the pixel is on every landing page.** If the base code sits in custom code, open its entry in **Site Settings > Code**: under **Pages**, a selection other than **All** leaves some landing pages without the pixel, and code in one page's own **Custom Code** section runs only there. TikTok recommends placing the base code as early as possible in the `<head>`, so choose **Start of `<head>`** as its **Placement**.
7. **Check that first-party cookies are on.** In TikTok Events Manager, open **Tools > Events > Data sources**, select your pixel and open the **Settings** tab. First-party cookies are on by default, but when they are switched off, no new first-party cookies are set. TikTok's Pixel Helper reports this as "First-Party Cookies Not Found".
8. **If a plugin installs the pixel**, check its documentation for how it stores the click ID and when it starts after consent. PixelFlow, a third-party plugin, says it holds its TikTok Pixel until marketing consent; its Framer page does not mention click IDs.
9. **Pass the click ID to your server events.** For the Events API, send it as `user.ttclid` and the `_ttp` value as `user.ttp`. TikTok also reads a `ttclid` parameter from `page.url` if it is there.
10. **Publish** the site after any change.

## Common causes

- Ads link to an address that redirects outside Framer (old domain, registrar forwarding, link shortener) and the redirect drops `ttclid`.
- A localized site redirects visitors by browser language and time zone, and that redirect has not been tested with the ad URL.
- The TikTok tags in GTM fire only on the next page, not right after consent.
- The base code runs only on some pages, not on the ad's landing page.
- First-party cookies are switched off in the pixel's settings.
- Server events are sent without `ttclid` and `ttp`.

## How to verify the fix

1. Repeat the test above with the exact ad URL: no redirect drops `?ttclid=test123`, and after accepting cookies the `ttclid` cookie holds `test123`.
2. Open another page of the site: `ttclid` is still there.
3. Re-run the check on IsPixelWorking. The issue should be gone, and the redirect chain in the report (if any) should keep the click ID.

## Sources

- TikTok Business Help Center, TikTok Click ID (`ttclid` appended to landing page URLs): https://ads.tiktok.com/resources/help/article/tiktok-click-id?lang=en
- TikTok API for Business, Send TikTok Click ID (ttclid) (pixel stores it in a first-party cookie named `ttclid`, up to 1,000 characters, `user.ttclid`, parsed from `page.url`): https://business-api.tiktok.com/portal/docs?id=1771100879787009
- TikTok Business Help Center, Using cookies with TikTok Pixel (`ttclid` and `_ttp` first-party cookies, on by default, no new cookies when off): https://ads.tiktok.com/resources/help/article/using-cookies-with-tiktok-pixel?lang=en
- TikTok API for Business, Events API 2.0 setup guide for Web (first-party cookies in pixel Settings): https://business-api.tiktok.com/portal/docs?id=1771100865818625
- TikTok API for Business, Send TikTok Cookie (_ttp) (`user.ttp`): https://business-api.tiktok.com/portal/docs?id=1771100936446977
- TikTok Business Help Center, TikTok Pixel Helper ("First-Party Cookies Not Found", pixel code early in the head): https://ads.tiktok.com/resources/help/article/tiktok-pixel-helper-2.0?lang=en
- Framer Help, How to setup redirects to maintain SEO ranking (Site Settings > Hosting > Redirects, path changes not updated, sub-paths within the current domain only): https://www.framer.com/help/articles/how-to-setup-redirects-to-maintain-seo-ranking/
- Framer Help, How does Automatic Locale work (redirects from the default locale by browser language and time zone, no redirect on non-default locales): https://www.framer.com/help/articles/how-does-automatic-locale-work/
- Framer Help, Add Google Tag Manager to your site (Site Settings > Code, Placement, Pages): https://www.framer.com/help/articles/how-to-add-google-tag-manager-to-your-site/
- Framer Academy, Add Custom Code to your site in Framer (page-level custom code, not loaded in the canvas preview): https://www.framer.com/academy/lessons/custom-code
- Framer Academy, Add a Cookie Banner to your site in Framer: https://www.framer.com/academy/lessons/cookie-banner-component
- PixelFlow Docs, GDPR and Tracking Consent (third-party plugin; TikTok Pixel held until marketing consent): https://docs.pixelflow.so/gdpr-and-tracking-consent-xcxgh
- PixelFlow, Send conversions from Framer to your ad platforms (third-party plugin; no mention of click IDs): https://pixelflow.so/framer
- IsPixelWorking live test, 2026-10-23 (responses served by Framer hosting): `superlist.com/?ttclid=test123` redirected (308) to `https://www.superlist.com/?ttclid=test123`; `http://www.superlist.com/?ttclid=test123` to `https://` and `/updates/?ttclid=test123` to `/updates?ttclid=test123` kept the parameter; a custom redirect on framer.com (`/features?ttclid=test123` to `/?ttclid=test123`) kept the query string.
- IsPixelWorking live test, 2026-10-01: on a published Framer site with the Cookie Banner and a GTM ID, the banner pushed a `cookie_consent_update` data layer event after Accept.
