Likes are not sales
A reel can get thousands of views and still sell nothing. Another post with fewer likes can fill your COD queue. You only know which is which if every link tells you where the buyer came from. That is what UTM parameters do. They are short tags added to the end of a link. When someone taps it, Google Analytics records the tags with the visit, and with any sale that follows. Tag your Instagram links once, and you stop guessing which posts pay.
The tags that matter
| Tag | What Google says it records | Instagram example |
|---|---|---|
| utm_source | The referrer, such as google or newsletter4 | |
| utm_medium | The marketing medium, such as cpc or email | social |
| utm_campaign | The product, slogan or promo code | diwali_kurtis |
| utm_content | Which creative or link, when a campaign has more than one | bio_link |
One naming rule for every link
Google says to always use utm_source, utm_medium and utm_campaign. It also warns that values are case sensitive. So utm_source=Instagram and utm_source=instagram land as two sources in your report. Pick one rule and write it down. Use lowercase, and use underscores instead of spaces. Keep the source as instagram and the medium as social for free posts. GA4 files the medium social under Organic Social. For paid ads, GA4's Paid Social group looks for a social site plus a medium that starts with paid, such as paid_social. Name campaigns after the offer, like diwali_kurtis, and use utm_content for the exact link.
Your bio link and story links
Your bio link is the one link on your profile, so tag it with utm_content=bio_link. Change the campaign when the offer changes. Give each story link its own utm_content too, such as story_0915 or story_new_saree. That way a story that sold ten sarees stands out from one that sold none. Tag links you share in DMs and WhatsApp broadcasts too, with their own source, so they do not blur into Instagram. Google's Campaign URL Builder does the joining for you. Paste your product page link, fill in the tags, and copy the result. If you add tags by hand, a question mark must separate them from the page address.
Tags for a month of posts
Here is how one store might tag a festive month. The bio link reads utm_source=instagram, utm_medium=social, utm_campaign=diwali_kurtis and utm_content=bio_link. A story on day one uses the same first three tags with utm_content=story_day1. A paid reel uses utm_medium=paid_social and utm_content=reel_cotton. Each link points to the same product page, but each shows up as its own row. Keep the list in a shared sheet, so anyone who posts for you uses the same names. Add a column for the date each link went live. When a sale shows up weeks later, you can still match it to the post that started it.
Reading the results in GA4
Open Reports, then Acquisition, then Traffic acquisition. The table starts grouped by channel. Use the dropdown above it to switch to Session source / medium, or to Session campaign. Now each tagged link has a row with sessions, key events and total revenue. Sort by revenue, not sessions. A story with forty visits and six orders beats a reel with four hundred visits and none. For COD, check your own order list too, because a returned parcel is not a sale.
Make the data trustworthy
Tags only help if your store sends data in the first place. Add GA4 to your site and check that your own test visit shows up. On The Storemate you paste your Google Analytics ID into the tracking settings, and the tag loads once a shopper accepts analytics cookies. It records visits, so match your best tagged links against orders in your sales report. Shoppers who decline will not appear in GA4, so treat your reports as a strong sample, not a full count. Tag every link, review the report weekly and post more of what sells.