Fix guide · Framer · medium · about 30 min
TikTok click ID (ttclid) lost on Framer: how to fix
For the finding “Click ID from TikTok ads is not stored”. Also for: Any website, Shopify, WordPress, 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.
- Open a private (incognito) window, open developer tools (F12) on the Network tab and tick Preserve log.
- 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. - If the first request is a redirect (
301,302,307,308), check its Location header. Does the new address still containttclid=test123? - Accept the cookie banner and wait a few seconds.
- Open Application > Cookies (Chrome) or Storage > Cookies (Firefox) for your domain and find
ttclid. It should holdtest123. 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.
- Point your ads at the final address. In our test on Framer-hosted sites on 2026-10-23, Framer redirected
httptohttps, the domain withoutwwwto thewwwversion 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. - 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. - 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
ttclidis lost, point ads for that audience at the localized URL directly: Framer does not redirect visitors who arrive on a non-default locale. - 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
ttclidthrough. TikTok notes the click ID can be up to 1,000 characters long; do not truncate it. - Make sure the pixel runs on the landing page after consent. The pixel reads
ttclidfrom 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 forcookie_consent_update, the event the banner pushed after Accept in our tests. If they only fire on the next page,ttclidis no longer in the address and the cookie is never written. See “TikTok Pixel does not fire after consent”. - 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. - 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”.
- 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.
- Pass the click ID to your server events. For the Events API, send it as
user.ttclidand the_ttpvalue asuser.ttp. TikTok also reads attclidparameter frompage.urlif it is there. - 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
ttclidandttp.
How to verify the fix
- Repeat the test above with the exact ad URL: no redirect drops
?ttclid=test123, and after accepting cookies thettclidcookie holdstest123. - Open another page of the site:
ttclidis still there. - 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 (
ttclidappended 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 frompage.url): https://business-api.tiktok.com/portal/docs?id=1771100879787009 - TikTok Business Help Center, Using cookies with TikTok Pixel (
ttclidand_ttpfirst-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=test123redirected (308) tohttps://www.superlist.com/?ttclid=test123;http://www.superlist.com/?ttclid=test123tohttps://and/updates/?ttclid=test123to/updates?ttclid=test123kept the parameter; a custom redirect on framer.com (/features?ttclid=test123to/?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_updatedata layer event after Accept.
More TikTok guides
- TikTok Pixel fires before consent on Framer: how to fix
- TikTok Pixel not firing after consent on Framer: how to fix
- Repeated TikTok event IDs drop real conversions: how to fix
- Duplicate TikTok Pixel events on Framer: how to fix
- TikTok Pixel event_id missing on Framer: how to add it
- TikTok Pixel tracks a button on desktop but not on mobile
- Two TikTok Pixels on one site: when it's fine, how to fix
- TikTok Events API deduplication: match the pixel's event_id
- How to set up the TikTok Events API (with deduplication)