To see which social platform sends you visitors, give each platform its own version of your link with a small tag on the end, such as ?utm_source=instagram&utm_medium=bio. Google Analytics reads the tag and lists every platform on its own row. Below is the full setup in eight steps for nine platforms, with prompts you can paste into your own AI and the exact place each link goes.
For a long time I could tell you how many people visited my site from social media. I could not tell you which platform they came from. Instagram, TikTok and LinkedIn all landed in one pile, and a good share of it was filed under “direct,” which is analytics for “no idea.” I was spending hours a week on six platforms and guessing which ones earned it.
The fix took one afternoon and cost nothing. Every platform now has its own tagged link, and my report shows one clean row per platform. This post is that setup, written so you can follow it click by click or hand most of it to your AI.
You need Google Analytics on your website. If you don't have it yet, it takes about ten minutes: follow step 4 of my bio link guide, then come back here.
Why your analytics can't tell platforms apart
When someone taps a link inside a social app, the page opens in that app's own built-in browser. Those browsers often don't pass along where the visitor came from. Your analytics receives a visitor with no return address and files them under “direct.” A tag fixes this because it travels inside the link itself, so it arrives no matter which app opened it.
One big pile. You can't tell which platform earned the visit.
One row per platform. Now you know where to spend your time.
The three words that do the work
A tracked link is your normal link with a few labels added after a question mark. The labels are called UTM tags. You only need to understand three of them.
yourdomain.com/linkYour page?utm_source=instagramSource: which platform&utm_medium=bioMedium: where on that platform| The tag | The question it answers | Examples |
|---|---|---|
| utm_source | Which platform sent this person? | instagram, tiktok, linkedin, youtube |
| utm_medium | Where on that platform was the link? | bio, post, story, video |
| utm_campaign | Optional: which launch or promotion was it part of? | spring_workshop, book_launch |
Set it up step by step
Eight steps. Pick how you want to work and every step changes to match. The parts where you sign in to a social account are marked, because those are yours to click.
In the prompts, replace anything in [SQUARE BRACKETS] with your own details before you send it. The prompts work in any chat assistant.
- Write your naming rules
- Build one tracked link per platform
- Make short links on your own domain
- Paste each link into its platform
- Tag the links you post, too
- Test every link
- Read the report
- Keep a link log
Write your naming rules
What this does: keeps your report clean. Analytics treats “Instagram,” “instagram” and “ig” as three different sources, so you decide the spelling once and never change it.
With your AI
I am setting up UTM tracking so Google Analytics 4 shows which social platform sends visitors to my website. I am active on: [LIST YOUR PLATFORMS] I share links in these places: [BIO, POSTS, STORIES, VIDEO DESCRIPTIONS, DIRECT MESSAGES, EMAIL SIGNATURE] Write me a one-page naming rule sheet: 1. One utm_source value per platform. Lowercase, no spaces, the plain platform name. 2. One utm_medium value per placement. Lowercase, one word each. 3. A simple pattern for utm_campaign that I only use for launches and promotions. 4. Three rules I must never break, in plain language. Keep it short enough to print on one page.
By hand
Use these and you never have to think about it again:
| Rule | What to do |
|---|---|
| Source | The plain platform name: instagram, tiktok, linkedin, youtube, facebook, threads, pinterest, bluesky. For X, pick twitter or x and stay with it. |
| Medium | Where the link sits: bio, post, story, video, dm. |
| Campaign | Leave it off for everyday links. Add it only for a launch: spring_workshop. |
| Always | Lowercase. No spaces (use an underscore). Same spelling forever. |
Build one tracked link per platform
What this does: turns your one link into a set, one for each platform. They all open the same page. Only the tag on the end differs.
With your AI
The page I want people to land on is: [https://YOURDOMAIN.COM/link] My platforms: [INSTAGRAM, TIKTOK, LINKEDIN, YOUTUBE, X, FACEBOOK, THREADS, PINTEREST, BLUESKY] Give me a table with one row per platform and these columns: - Platform - Tracked link, using utm_source=[platform name in lowercase] and utm_medium=bio - A short address I could use instead, in the pattern YOURDOMAIN.COM/go/[two or three letters] Rules: everything lowercase, no spaces, and do not add any other tags. If my page address already contains a question mark, join the tags with an ampersand instead of a second question mark.
By hand
Copy the rows you need and swap in your own page address:
| Platform | The link to paste |
|---|---|
yourdomain.com/link?utm_source=instagram&utm_medium=bio | |
| TikTok | yourdomain.com/link?utm_source=tiktok&utm_medium=bio |
yourdomain.com/link?utm_source=linkedin&utm_medium=bio | |
| YouTube | yourdomain.com/link?utm_source=youtube&utm_medium=bio |
| X | yourdomain.com/link?utm_source=twitter&utm_medium=bio |
yourdomain.com/link?utm_source=facebook&utm_medium=bio | |
| Threads | yourdomain.com/link?utm_source=threads&utm_medium=bio |
yourdomain.com/link?utm_source=pinterest&utm_medium=bio | |
| Bluesky | yourdomain.com/link?utm_source=bluesky&utm_medium=bio |
Prefer a form to typing? Google has a free one called the Campaign URL Builder. Search for “GA4 Campaign URL Builder,” type your page address, fill in utm_source and utm_medium, leave the other boxes empty, and copy the link it generates at the bottom.
Make short links on your own domain
What this does: hides the long tag behind a tidy address like yourdomain.com/go/ig. Several platforms show your link exactly as typed, and a short one looks cleaner and is easier to say out loud in a video.
This step is optional. A long tagged link works fine. I use short ones because they look like part of my brand.
With your AI
I want short addresses on my own domain that forward to my tracked links. My website runs on: [WORDPRESS / SQUARESPACE / WIX / SHOPIFY / PLAIN HTML FILES / OTHER: ___] Here are my tracked links: [PASTE THE TABLE FROM PROMPT 2] 1. Tell me the simplest way to create these forwards on my platform, one click at a time. Wait for me to type "done" after each step. Never ask for my password. 2. If my site is plain HTML files, write a tiny redirect page for each short address instead. Each one needs a meta refresh, a JavaScript redirect, a plain "Continue" link and a noindex tag. Tell me the folder and file name for each. 3. Remind me how to check that the tag is still on the address after the forward happens.
By hand
- Sign in to your website builder and look in settings for URL redirects (sometimes called URL mappings, or a redirect manager). On WordPress, this usually comes from a redirect plugin.
- Create a new redirect. In the “from” box, type the short path, for example
/go/ig. - In the “to” box, paste the full tracked link for that platform from step 2.
- Save, then repeat for each platform:
/go/tt,/go/li,/go/yt,/go/x,/go/fb.
Two cautions.
- Outside link shorteners. Paste the full tagged link in as the destination and test it. Some shorteners only carry tags through on paid plans, so never assume.
- Link-in-bio tools. If your bio points to a page on a tool's domain, your own analytics can't see which platform the visitor started on. Use the tool's built-in stats, or move your bio page to your own domain. Also check whether the tool adds its own tags automatically, because those can replace yours.
Paste each link into its platform
What this does: puts the right link in the right profile. This is the step that makes everything else work, and it's the one only you can do.
Open the platforms you use. Apps move their menus around, so if a label looks different, look for Edit profile and then a field called Website, Link or Links.
- Open your profile and tap Edit profile.
- Tap Links, then Add external link.
- Paste your Instagram link. Add a short title if you like, then tap Done.
You can add up to five links. Only the first one shows on your profile; the rest sit behind a small “and more” tap, so put this one first. Links typed into a caption are not tappable.
TikTok
- In the mobile app, open your profile and tap Edit profile.
- Tap Website, paste your TikTok link including
https://, and save.
If you don't see a Website field, your account doesn't qualify yet. The guides I checked say it appears at 1,000 followers or on a Business account (Settings and privacy, Account, Switch to Business Account), and it varies by country. A Business account limits you to commercial sounds, so weigh that first. Until then, type your short link into your bio text. It won't be tappable, which is exactly when a short, easy-to-type link earns its keep.
LinkedIn (your profile)
- Open your profile and click the pencil icon in the top section.
- Scroll down to Website. Paste your LinkedIn link and type the words people should see, such as “Work with me.”
- Click Save.
No Website field? Add the link in two other places instead. Under Contact info, add it as a website. In the Featured section, click the plus sign and choose Add a link. For Featured, use utm_medium=featured so you can tell the two apart.
LinkedIn (company Page)
- Open your Page as an admin and click Edit page.
- Put your link in the Page's website field.
- If you see a Buttons tab, turn on the custom button, choose a label such as “Visit website,” paste the link, and save.
LinkedIn ties the prominent custom button to Premium Company Pages. Without it, the button sits behind the Page's “More” menu.
YouTube
- On a computer, open YouTube Studio and click Customization.
- Open the Profile tab and find Links.
- Click Add link, type a title, paste your YouTube link, and click Publish.
You can add up to 14 links. The first one sits next to the Subscribe button, so make it this one. Links in the description of a regular video are clickable. Links in Shorts descriptions and comments are not.
X
- Open your profile and tap Edit profile.
- Paste your X link into the Website field and save.
One website link per profile. X shows the address itself, so a short link looks best here.
Facebook (Page or profile)
- Page: open the Page, choose Edit (it may read Edit Page or Edit Page Info), find Website, paste your Facebook link, and save.
- Personal profile: tap Edit profile, open Contact and basic info, find Websites and social links, add the link, and save.
On a personal profile, check the privacy setting beside the link. If it isn't set to Public, only friends will see it.
Threads
- Open your profile and tap Edit profile.
- Tap Link (or Links), add your Threads link, and tap Done.
Threads announced up to five profile links in 2025. Some accounts still show a single field.
- On a computer: click the more options icon at the bottom left, choose Settings, then Edit profile.
- In the app: tap your profile picture, open View profile, then Edit profile.
- Paste your Pinterest link into Website and save.
Claiming your website is a separate step in Pinterest's settings. It unlocks Pinterest's own stats for your site and is worth doing once.
Bluesky
- Open your profile and tap Edit Profile.
- Bluesky has no separate link field. Paste your link into the Description and save.
The description holds 256 characters and shows the link as you typed it. Use your short link here.
With your AI: when a menu has moved
I want to change the website link on my [PLATFORM] [PERSONAL PROFILE / BUSINESS PAGE] using the [iPHONE APP / ANDROID APP / WEBSITE ON A COMPUTER]. Walk me through it one tap at a time and wait for me to type "done" after each step. If I tell you a button is not where you said, ask me what I see on the screen and adjust. Never ask for my password. When the link is saved, tell me how to check it from a different account or a private browser window.
Tag the links you post, too
What this does: separates “they came from my bio” from “they came from that one post.” Same platform name, different medium.
| Where the link goes | Medium to use | Is it tappable? |
|---|---|---|
| Instagram story | story | Yes, with the Link sticker |
| Instagram caption | Skip it | No. Point people to your bio instead |
| LinkedIn, Facebook or X post | post | Yes |
| YouTube video description | video | Yes on regular videos, no on Shorts |
| A direct message | dm | Yes |
For a launch, add a campaign so you can see the whole push in one place: ?utm_source=linkedin&utm_medium=post&utm_campaign=spring_workshop.
With your AI
Keep this one saved. Use it every time you're about to share a link.
Here are my naming rules: [PASTE YOUR RULES FROM STEP 1] I am about to share this link: [PASTE THE PAGE ADDRESS] Platform: [PLATFORM] Placement: [POST / STORY / VIDEO DESCRIPTION / DIRECT MESSAGE] Campaign, if any: [NAME, OR "NONE"] Give me the tracked link, following my rules exactly. Then give me one line I can paste into my link log: date, platform, placement, campaign, and the link.
By hand
Take the link you built in step 2 and change one word. For a LinkedIn post, utm_medium=bio becomes utm_medium=post. For a campaign, add &utm_campaign=your_name to the end. That's all there is to it.
Test every link
What this does: proves the tag survives the trip. A link can open the right page and still lose its tag on the way, and you won't know unless you look.
- On your phone, open each social app and tap the link on your own profile.
- When the page opens, look at the address bar. The tag should still be on the end:
utm_source=instagram. If it's gone, a redirect or shortener dropped it. Go back to step 3. - On a computer, open Analytics and click Reports, then Realtime. Within a few minutes your visit should appear with the source you just used.
- Repeat for each platform. It takes about a minute each.
Platforms sometimes add their own code to the end of your link. That's normal, and your tag stays alongside it.
Read the report
What this does: shows you the answer you came for: one row per platform, with visitor counts.
- Click Reports, then Acquisition, then Traffic acquisition.
- Above the first column of the table there's a small dropdown. It usually reads “Session primary channel group.” Click it and choose Session source / medium.
- Read the rows: “instagram / bio,” “linkedin / post,” and so on.
- To see campaigns, click the plus sign beside that dropdown and add Session campaign.
- Set the date range at the top right to the last 28 days.
Realtime shows a visit within minutes. This report fills in later the same day or the next, and numbers can keep settling for a day or two. Analytics may also sort platforms into groups with names like Organic Social, Organic Video or Unassigned. Ignore the groups and read the source / medium rows.
With your AI: let it read the numbers
Here are my last 28 days from Google Analytics, Traffic acquisition report, by session source / medium: [PASTE THE ROWS, INCLUDING SESSIONS AND ENGAGED SESSIONS] Hours I spend per week on each platform: [PLATFORM: HOURS, ...] Tell me, in plain language: 1. Which platform sends the most visitors, and which sends the most engaged visitors. 2. Visitors per hour of my time, for each platform. 3. One platform to give more time, and one to give less. Do not guess beyond these numbers. If there is too little data to decide, say so and tell me how long to wait.
By hand: what to look for
- Sessions tells you how many visits each platform sent.
- Engaged sessions tells you how many of those people stayed and did something. A platform that sends fewer visitors who stay can be worth more than one that sends many who leave.
- Compare both against the hours you spend on each platform. That's the decision.
Keep a link log
What this does: stops the system from drifting. Six months from now you'll want to know exactly how you spelled a campaign. A simple sheet remembers so you don't have to.
With your AI
Make me a link log I can paste into Google Sheets or Excel. Columns: Date added, Platform, Placement, Campaign, Short link, Full tracked link, Where I pasted it, Tested (yes or no), Notes. Fill in one row for each of these links: [PASTE YOUR TABLE FROM PROMPT 2] Give it to me as comma-separated text so I can paste it straight into a sheet.
By hand
Open a new spreadsheet and add these columns: date added, platform, placement, campaign, short link, full tracked link, where you pasted it, and tested (yes or no). Add one row per link. Every time you create a new tagged link, it gets a row before it gets posted.
Then set a reminder for 28 days from today: “Read my platform report.”
Five mistakes that quietly break tracking
- Mixing capitals. “LinkedIn” and “linkedin” show up as two rows. Lowercase, always.
- Tagging links inside your own website. Tags are for links that bring people in from outside. Put a different tag on a button between two of your own pages and it writes over where the visitor really came from.
- Trusting a shortener without testing it. Tap the link, check the address bar, every time you make a new one.
- Changing names halfway. Switching from
twittertoxin June splits your year into two rows. Pick once. - Using one link everywhere. If the same tagged link sits in three bios, you're back to one pile with a nicer name.
Proof this works: here's mine
Every one of my bios points to its own short link. My Instagram bio uses dahliaimanbay.com/go/ig, LinkedIn uses /go/li, YouTube uses /go/yt, and so on. Each one forwards to my front door page with that platform's tag attached. When I open my report, I see which platform earned the visit, and I plan my week from that.
If you don't have a page for those links to land on yet, build that first: your bio link is a front door, not a dead end. And once you know where your yeses come from, the next habit is tracking every “no”.
Key takeaways
Frequently Asked Questions
A UTM tag is a short label added to the end of a link, after a question mark, such as utm_source=instagram. It does not change the page that opens. It tells Google Analytics where the visitor came from, so each platform shows up on its own row in your reports.
Links tapped inside social apps open in the app's built-in browser, which often does not pass along where the visitor came from. Analytics then files the visit under direct. A tag inside the link itself solves this because it arrives with the visitor no matter which app opened the page.
Use the plain platform name in lowercase for utm_source, such as instagram, tiktok or linkedin. Use utm_medium for where the link sits: bio, post, story or video. Keep the spelling identical every time, because Analytics treats different capital letters as different sources.
They can, because some platforms show the full address. Create a short address on your own domain, such as yourdomain.com/go/ig, that forwards to the long tagged link. Visitors see the short version and Analytics still receives the tag.
The Realtime report in Google Analytics shows a tagged visit within a few minutes, which is how you test each link. The Traffic acquisition report fills in later the same day or the next, and figures can keep settling for a day or two.
Sources
- Google Analytics Help: Collect campaign data with custom URLs
- Google Analytics Help: Default channel group
- Google Analytics Help: Data freshness
- YouTube Help: Manage your YouTube channel's profile
- LinkedIn Help: Add a custom call-to-action button to your LinkedIn Page
- Pinterest Help: Add your website to your profile
- Search Engine Land: Instagram now allows up to 5 links in bio
- TechCrunch: Threads now lets creators add up to 5 links to profiles