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.

  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

More TikTok guides