Blog18 min read
Fixing attribution in a post-cookie world with your Linky page
How to track conversions as cookies go away, using UTMs, consent mode and first-party data.
Hana

Up to half of your conversions may be invisible to you.
You post on TikTok, Instagram and YouTube. You send a newsletter. Sales go up, and a sponsor asks for a report. Then you open GA4 and find mostly Direct traffic, a little Social, and numbers that don't match what TikTok or Meta are telling you.
You did the work, and the data doesn't show it.
That isn't your fault. Apple's ATT, the loss of third-party cookies and restrictive in-app browsers broke a tracking setup that was already fragile. Last-click reports aren't just a bit off anymore; they actively undercount creator performance.
Your Linky page can fix a lot of this. If you treat your link in bio as a first-party attribution hub instead of a static menu, you can recover lost signal and still respect privacy. That means standardizing UTMs, capturing click IDs, using a custom domain, connecting GA4 and server-side tagging, and running a few focused experiments.
1. The attribution shift that hit your bio link
Brands still expect clean reports with screenshots, ROAS and CPA, and they don't much care that the tracking rules changed last month. The problem is that the stack underneath those reports has cracked.
Apple ATT: dual opt in and half your iOS users in the dark
Under Apple's App Tracking Transparency policy, users have to give each app permission to track them.
According to multiple SDK reports and industry studies, global ATT opt-in rates sit around 35 to 50% as of 2025. That alone hides a big share of iOS journeys at the user level.
On top of that there's the dual opt-in problem. The publisher app needs permission, and so does the advertiser app. If either one is denied, user-level tracking breaks.
For a creator, that can look like this:
- TikTok Ads Manager shows 500 conversions.
- Your sponsor's Shopify and GA4 reports show 220.
The missing conversions come from iOS users who saw your content inside an app and never agreed to tracking there. They still bought. Your report just doesn't show it.
Third party cookies are disappearing
Browsers are restricting third-party cookies. Safari and Firefox already do, and Chrome is phasing them out as part of Privacy Sandbox.
In one survey, 69% of advertisers said losing cookies would hit their business harder than GDPR or CCPA.
The Privacy Sandbox proposals are complicated and keep changing, so most brands are moving budget and engineering time toward first-party data, server-side tagging and conversion APIs.
Creators who depend on simple last-click pixels on sponsor sites are losing signal.
In app browsers are dead zones for attribution
When someone taps your bio link in TikTok, Instagram or Facebook, the page usually opens in a webview inside the app.
Those in-app browsers often:
- Strip or rewrite the referrer.
- Mangle or strip UTMs on redirects.
- Block third-party cookies and some client-side scripts.
- Isolate sessions, so journeys look shorter than they really are.
Some research shows certain in-app browsers are even technically able to watch keystrokes and taps. That raises serious privacy questions, and it makes platform engineers cautious about what external scripts are allowed to do.
For attribution, this breaks several things:
- GA4 labels the traffic as Direct instead of TikTok or Instagram.
- The referrer shows up as a generic domain like l.instagram.com or t.tiktok.com.
- UTMs get dropped when the user moves from the in-app browser to an external one.
- Cross-device journeys vanish when someone watches a Reel on their phone and buys on desktop later.
Why last click is now dangerous for creators
Last-click models were never perfect, but at least they were predictable. Now they:
- Under-credit creator content, which usually happens at the first touch.
- Over-credit Direct and brand-owned channels.
- Produce constant gaps between GA4 and ad platform reports, because each uses different lookback windows and modeling.
Say you send thousands of qualified visitors from TikTok to a sponsor, and the last click in GA4 is a branded Google search two days later. The brand's own channel gets the credit.
You need a different place to anchor your measurement, and your Linky page can be that place. You control the domain, the script and the events there. If Linky is the first stop for your TikTok, Instagram, YouTube and newsletter traffic, you can grab those signals and keep them before they get stripped.
2. Blueprint: turn your Linky page into a first party hub
Use this as an architecture guide. The goal is a small stack that sends social and email clicks through your Linky page, captures attribution data safely, and forwards clean events to GA4 and ad platforms. It takes six steps.
Step 1: Standardize UTMs with a schema that works for creators
UTMs are still one of the most reliable signals you control. What matters is consistency: the same pattern for every sponsor, campaign and platform.
Here's a simple schema:
- utm_source
- tiktok
- youtube
- newsletter
- utm_medium
- bio_link
- story_link
- paid_social
- utm_campaign
- bfcm_2025_launch
- spring_skincare_drop
- sponsorname_q3_2025
- utm_content
- creative or CTA label, for example spark_ad_hook1, grwm_cta_shopnow
- utm_term or utm_content extension
- Stable creator ID or placement ID, for example creator_id_ashley01 or placement_bio_top
With this structure you can:
- Roll up performance across multiple sponsors.
- Merge your data with ecommerce platforms like Shopify and WooCommerce.
- Compare the same campaign across TikTok, Instagram and YouTube.
Here's an example TikTok profile link to your Linky page:
https://links.yourbrand.com?utm_source=tiktok&utm_medium=bio_link&utm_campaign=bfcm_2025_launch&utm_content=bio_shop_all&utm_term=creator_id_ashley01
Keep a simple spreadsheet template or UTM builder in your workflow so nobody on your team has to guess the values.
Step 2: Capture and persist click IDs in first party cookies
Ad platforms add click IDs to links, and those IDs are extremely useful for server-side conversion APIs. The main ones are:
- gclid for Google Ads
- wbraid for iOS Google Ads
- fbclid and igshid for Meta and Instagram
- ttclid for TikTok
- li_fat_id for LinkedIn
Most creators never see these values. They sit in the URL for a moment and then disappear as the user moves between pages or browsers.
A small JavaScript snippet on your Linky page fixes that. On first page load, the script:
- Reads the URL query parameters.
- Checks for known keys such as utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid, ttclid, wbraid, li_fat_id.
- Saves any values it finds into first-party cookies on your Linky domain, with a 30 to 90 day expiry and SameSite=Lax; Secure flags.
Even inside unfriendly in-app browsers, this captures the values before any redirect or script blocking happens. Later, when someone clicks from your Linky page to a sponsor or your own shop, your server-side setup still has those IDs for attribution.
On Linky you don't have to hand-code this. The platform has a built-in parameter capture feature, so it's a switch you turn on rather than JavaScript you write.
Step 3: Use a custom Linky domain for real first party status
If your profile link looks like this:
https://linky.page/yourname
then the cookies are first-party to Linky, not to your brand. A subdomain works better:
https://links.yourbrand.com
Add a CNAME or A record in your DNS pointing links.yourbrand.com to Linky. Linky still serves the page, but from your domain.
That gets you a few things:
- Your attribution cookies are first-party to your brand.
- Browsers treat tracking from links.yourbrand.com differently from tracking on a generic redirect host.
- Corporate firewalls and email filters are less suspicious of your links.
- Sponsors see a more professional link in screenshots.
This is why most revenue-focused creators use custom domains.
Step 4: Wire GA4 as your measurement layer
GA4 is noisy and has strong opinions, but with the right events it can be your main measurement hub.
Set up these events on your Linky page:
- bio_link_click when someone taps from your social profile to Linky.
- affiliate_click when someone clicks a sponsor button on Linky.
- newsletter_signup when someone joins your email list from Linky.
- shop_visit when someone goes from Linky to your store.
- content_download for lead magnets or freebies.
Pass your UTMs and click IDs along as event parameters, for example:
- source, medium, campaign, content, term
- ttclid, fbclid, gclid
Configure cross-domain measurement so GA4 treats links.yourbrand.com and your main site (say yourbrand.com or shop.yourbrand.com) as one session.
Then add the GA4 Measurement Protocol. It's a simple HTTP API that lets your server-side container send events straight to GA4, which helps when browsers block or throttle client-side scripts.
Sending events from both the client and the server gives you redundancy. If one path fails, the other still reports the conversion.
Step 5: Add server side tagging and Conversion APIs
Third-party pixels in the browser break easily, thanks to blockers, network filters and in-app browser rules. A modern stack sends each event twice: once from the browser pixel and once from the server.
A Linky-friendly flow looks like this:
- A user taps a social link and lands on links.yourbrand.com.
- Your Linky page fires a client-side event to GA4 and to your server-side endpoint.
- Server-side Google Tag Manager, running on a subdomain like tag.yourbrand.com or through Cloudflare Workers, receives the event with UTMs, click IDs and consent status.
- The server GTM container forwards enriched events to:
- GA4 via Measurement Protocol
- Meta Conversions API
- TikTok Events API
- Google Ads offline or enhanced conversions
- Any other platforms you or your sponsors ask for
Meta and TikTok both deduplicate events. Attach the same event_id to the browser pixel event and the server event, and the platform will count one conversion when it sees that event_id twice.
Stored click IDs, plus hashed email or phone data sent only with consent, improve match rates. More conversions then show up in ad managers and in your sponsor's CRM as coming from your campaigns.
Step 6: QA and monitoring without extra overhead
You don't need an analytics team, just a simple check you can repeat:
- Open your TikTok or Instagram profile on your phone and tap your Linky link.
- With the in-app browser open, use browser DevTools on desktop or remote debugging to check whether UTMs and click IDs are in the URL.
- Inspect document.cookie for your Linky domain and confirm there are cookies for utm_source, fbclid, ttclid and the other keys.
- In GA4 DebugView, find your events and confirm parameters like creator_id, ttclid and campaign are there.
- In Meta and TikTok Events Manager, check the diagnostics for signal quality, event match rates and deduplication.
Over time, Linky bundles most of this into a guided setup with pre-wired events, parameter mapping and QA hints, so you can spend your time on content and sponsors instead of server logs.
3. Platform playbooks: TikTok, Instagram, YouTube, newsletters
Each platform handles links differently, so your Linky setup needs small adjustments for each source.
TikTok → Linky → site
How TikTok behaves:
- For ads, TikTok appends ttclid to your links.
- Organic links pass fewer parameters, but still carry UTMs if you add them.
- Redirect hosts like vm.tiktok.com sometimes break UTMs that aren't encoded correctly.
- TikTok's in-app browser often reports generic referrers like t.tiktok.com.
- On iOS, WKWebView is worse at keeping cookies between sessions.
What to do:
- Always include full UTMs, with utm_source=tiktok and utm_medium=bio_link or paid_social.
- Make sure your Linky page script captures ttclid and UTMs on first load.
- Send ttclid, along with event_id, to the TikTok Events API for conversion attribution and audience building.
- For Spark Ads or whitelisted ads, keep the same UTM structure so you can compare organic and paid in one view.
Instagram and Facebook → Linky → site
How Meta behaves:
- Meta appends fbclid, and Instagram sometimes adds igshid.
- Meta sometimes strips gclid and other tags on redirects.
- Referrers show up as l.instagram.com or m.facebook.com.
- The in-app browser blocks many third-party cookies and sometimes injects its own scripts.
What to do:
- Don't trust the referrer. Rely on the UTMs you put in the link caption or button.
- Capture fbclid on the first Linky load and store it in a first-party cookie.
- Use the Meta Conversions API with fbclid and hashed email or phone, where people have consented.
- Consider "open in browser" smart links when you need them. Services like URLgenius push users out of the in-app browser into Safari or Chrome, which helps with cookies and referrers.
YouTube → Linky → site
YouTube is friendlier.
How it behaves:
- Organic links in descriptions and channel sections usually keep their query parameters.
- The Referer header may hide the exact video ID.
- Paid ads use gclid, or wbraid on iOS, when auto-tagging is on.
- On Android, many clicks open in Chrome Custom Tabs, which handle cookies like a normal browser.
What to do:
- Use UTMs like utm_source=youtube and utm_medium=bio_link or video_description.
- Use utm_content to tag the video_id or hook type.
- Turn on Google Ads auto-tagging for paid campaigns, and capture gclid and wbraid in your Linky cookie script.
- In GA4, build reports comparing YouTube-driven Linky clicks with newsletter and TikTok clicks, so sponsors see the whole mix.
Newsletters → Linky → site
Email works differently. Most email clients wrap links in redirects for their own tracking, but they tend to keep UTMs intact. That makes newsletter → Linky → site your cleanest baseline channel.
What to do:
- Use utm_source=newsletter and utm_medium=email.
- Use campaign names that match your social pushes, for example bfcm_2025_launch on both.
- Compare conversion rates for newsletter-driven Linky clicks against TikTok or Instagram Linky clicks.
Suppose your newsletter converts at 8% and TikTok at 3% on similar offers, but your experiments and holdouts show TikTok driving more incremental lift. That's a much more useful story to bring to sponsors.
Monthly device and app behavior check
Platforms change all the time. A simple monthly test stops you from slowly losing data without noticing.
Once a month:
-
Create a diagnostic Linky button with full UTMs and some fake click ID parameters, for example gclid=test123 and ttclid=test456.
-
Put that link in:
- Your TikTok bio or a test video.
- Your Instagram bio or a Story.
- A YouTube description.
-
Click it from:
- An iPhone on the latest iOS.
- A major Android device.
Both should have the latest app versions.
-
On your Linky page, check which parameters made it through, confirm the cookies are set, and look at GA4 DebugView.
If you're consistently losing data, fix your UTM encoding or your Linky script before it shows up in sponsor reports.
4. Low lift experiments that prove incremental value
Once your measurement is stable, you can answer the question sponsors actually care about: how much extra value does your Linky traffic create?
Raw clicks aren't enough anymore. The market is moving toward incremental lift.
An experiment menu for creators
You don't need SQL for this, just some structure. Here are four kinds of test:
-
A/B Linky layout tests
- Version A: sponsor button first, then your products, then your newsletter.
- Version B: your products first, sponsor second.
Tag each variant with a layout_id through utm_content or a custom GA4 parameter, and track conversions downstream.
-
CTA and creative tests
- Test "Watch the full tutorial" against "Tap to shop the products" on the same sponsor offer.
Use utm_content to encode cta_watch_tutorial or cta_shop_now.
-
Time-based holdouts
- Show a sponsor link on Monday, Wednesday and Friday.
- Remove it on Tuesday, Thursday and Saturday.
Your sponsor compares site conversions on those days, filtered by your UTMs and other signals.
-
Geo holdouts
- Promote a sponsor heavily in one region.
- Promote it less in a similar region.
The sponsor checks sales by state or country over that period to estimate lift.
Platforms like Pensight and Bio.sites already have creators experimenting with layouts. Linky applies the same approach to attribution, not only design.
How to design tests without a data science team
A few rules keep your tests honest:
- Pick one primary metric per test. For example:
- Incremental conversions.
- Revenue per Linky visitor.
- Conversion rate from Linky click to sponsor purchase.
- Decide on a minimum detectable effect. At creator-scale traffic, aim for a 20% change. Smaller changes need huge sample sizes.
- Run tests over full weekly cycles, including weekdays and weekends. Seasonal events and launches distort short tests.
- Don't stop a test as soon as the numbers look good. Set a fixed duration, for example two full weeks.
How Linky helps with experiments
Linky takes some of the work out of this with:
- Native A/B testing, where you set up two layouts and assign traffic splits.
- Automatic UTM or parameter tagging for each variant.
- GA4 and Looker Studio templates that show:
- Revenue per visitor by source and layout.
- Incremental lift from an experiment.
- Funnels from TikTok view to Linky click to sponsor purchase.
From there you can export a recap for sponsors. A line in it might read:
"TikTok traffic routed through my Linky bio link drove 32% more incremental sales versus holdout regions over 14 days, with a 4.1% conversion rate from Linky click to purchase."
A sentence like that is backed by an actual experiment rather than guesswork.
5. Compliance guardrails: privacy safe does not mean blind
Privacy rules aren't optional, but they aren't working against you either. Creators who respect privacy and still deliver performance data earn more trust from brands.
FTC disclosures and transparency
The US Federal Trade Commission requires you to disclose any material connection between you and a brand. In practice:
- Use clear labels like "Ad" or "Sponsored" near content that drives traffic.
- On your Linky page, add a short line near sponsored links, such as "Some links are sponsored or affiliate links."
Sponsors check for this, and creators who don't comply are riskier to work with.
The FTC's endorsement guides are here: https://www.ftc.gov/business-guidance/resources/ftcs-endorsement-guides
GDPR and PECR for EU and UK users
Visitors from the EU and UK need more careful handling of cookies and tracking:
- Non-essential cookies for analytics or advertising need a lawful basis, which often means explicit consent.
- Use a Consent Management Platform (CMP) on your Linky domain to control GA4, Meta, TikTok and any other ad tags.
- Until a user accepts, the CMP blocks or restricts tracking.
There's also a risk of joint controllership if you and a sponsor decide together how personal data gets used. Your contracts should spell out who is responsible for what.
CCPA and CPRA basics for US, especially California
CCPA and CPRA give California residents rights over their data. You should:
- Provide a clear "Notice at Collection" through a privacy policy link on your Linky page.
- Explain what data you collect (cookies, click IDs, emails) and how you use it.
- Offer an easy "Do Not Sell or Share My Personal Information" option if your setup meets the legal definition of selling or sharing.
The California Attorney General has guidance here: https://oag.ca.gov/privacy/ccpa
Wire compliance into measurement from the start
Build compliance into your tracking design from the beginning instead of adding it later. Pieces to consider:
- Google Consent Mode v2
- Lets GA4 and Google Ads respect user consent.
- When consent is denied, Google uses modeled conversions based on limited signals instead of tracking individuals.
- Server-side tagging
- Checks consent flags before sending events to Meta, TikTok or anyone else.
- If consent is missing, the container sends only minimal anonymous data, or nothing.
- Global Privacy Control (GPC)
- Some browsers send a GPC signal as an opt-out.
- Your CMP and Linky setup should treat it as a valid CCPA/CPRA opt-out.
Linky makes this easier with:
- Pre-configured CMP integrations.
- Consent Mode templates.
- Clear documentation in plain language.
What you end up with is a measurement stack sponsors can trust and regulators will accept.
6. A 30 day implementation roadmap and the metrics that matter
Here's a realistic 30-day plan for an established creator with limited developer help. Treat the timing as a rough guide and adjust it to fit.
Days 0 to 7: Foundation
- Choose a Linky plan that supports:
- Custom domains.
- Custom code or advanced tracking options, if you need them.
- Set up a custom domain such as links.yourbrand.com through DNS, using CNAME or A records, and confirm SSL is working.
- Finalize your UTM taxonomy.
- Write a short, one-page internal guide.
- Share it with your social manager or assistant.
- Turn on or deploy the click ID and UTM capture script on your Linky page.
- If Linky offers a "capture parameters to cookies" feature, switch it on.
Days 8 to 15: Analytics and server side plumbing
- Create or refine your GA4 property.
- Define events for bio_link_click, affiliate_click, newsletter_signup, shop_visit and content_download.
- Set cross-domain rules for links.yourbrand.com and your main site.
- Set up a server-side GTM container.
- Use Google Cloud Platform or a setup based on Cloudflare Workers.
- Route GA4 events through your server-side endpoint.
- Use GA4 DebugView to check the parameters.
- Start logging the important parameters server-side for QA.
- UTMs, click IDs and consent flags.
Days 16 to 23: Conversion APIs and compliance go live
-
Configure:
- Meta Conversions API.
- TikTok Events API.
- Google Ads conversions through Measurement Protocol or offline conversions.
Map in fbclid, ttclid, gclid and wbraid from your cookies.
-
Add a CMP to links.yourbrand.com.
- Connect it to GTM and Consent Mode v2.
-
Update or create your privacy policy.
- Add a clear section on cookies, analytics, click IDs and sponsor measurement.
- Put "Notice at Collection" wording and your affiliate disclosure near the relevant Linky sections.
-
Run full end-to-end tests.
- Click through from TikTok, Instagram, YouTube and your newsletter.
- Confirm that when consent is given, events reach GA4 and the ad platforms.
- Confirm that when consent is denied, the behavior matches your policy.
Days 24 to 30: First experiment and KPI dashboard
- Launch a simple Linky layout A/B test.
- For example, sponsor above your products vs. sponsor below.
- Use Linky's built-in testing, or separate Linky pages with different URLs.
- Build a lightweight dashboard in GA4 or Looker Studio. Focus on:
- Click ID match rate: the percentage of conversions with fbclid, ttclid or gclid.
- Share of events sent server-side vs. pixel only.
- Consent opt-in rate by region.
- Conversion rate and revenue per visitor by utm_source and utm_medium.
- Incremental lift from your A/B or time-based test.
- Prepare a sample report for sponsors. Include:
- Tables of traffic from TikTok, Instagram, YouTube and your newsletter to Linky.
- Conversions and revenue tied to your UTMs and click IDs.
- A short plain-language section explaining what it means.
The story you can then tell sponsors goes something like:
"My Linky hub tracks first touch and click IDs across TikTok, Instagram, YouTube, and newsletter. Even with ATT and cookie loss, we attribute X% of conversions with reliable signals. Experiments show Y% incremental lift during periods when your offer is present versus holdout periods or regions."
Sponsors understand that kind of report, and your own product lines benefit from the same clarity.
ATT, cookie loss and in-app browsers aren't going away, and creators who only have last-click screenshots from GA4 or ad platforms are missing important data. Treat your Linky page as core measurement infrastructure: standardized UTMs, captured click IDs, a custom domain, GA4 with server-side tagging, Conversion APIs that respect consent, and experiments that show real incremental value. That way you can put privacy first and still prove performance.
Start by upgrading your Linky setup on lin.ky, adding a custom domain and turning on parameter capture. Everything else in this blueprint builds on that.