The three paths a sale can take, and why they need different tracking
"Sales from Instagram" actually covers three different flows, and conflating them is the most common reason people give up on attribution entirely.
| Path | What it is | What you can see |
|---|---|---|
| Native Instagram Shopping checkout | Purchase completed inside the Instagram app itself | Aggregate performance in Meta Commerce Manager |
| Link-driven sale via bio or story link | Click leaves Instagram, purchase happens on your own site | Full order detail, if UTMs are matched at checkout |
| Link sticker or bio link with no parameters | Click leaves Instagram, nothing attached to identify the post | Instagram's own tap count only, no downstream detail |
Only the middle path gives you real revenue attribution, and it only works if the tracking is set up before the click happens, not reconstructed afterward from a spike in traffic.
Step 1: separate native checkout from link-driven sales
If you sell through Instagram Shopping directly, that revenue lives inside Meta's own reporting and it isn't something a link tracker, Raydar or anything else, can see or add to. Decide which path a given post is optimized for before you measure it. A post tagged for in-app checkout and a post pointing to a bio link are answering different questions, and holding them to the same tracking standard just produces confusing numbers. Plenty of accounts run both at once, native product tags on some posts and a bio link driving to a fuller site experience on others, which is fine as long as you're not trying to sum the two into one figure. They live in different systems and stay there.
Step 2: tag every bio and story link with UTM parameters
Every link you post, in your bio, in a story link sticker, in a caption, should carry UTM parameters that identify the specific post, not just "instagram" as a blanket source. A UTM builder makes this consistent across a posting schedule, and if the parameters themselves are unfamiliar, what are UTM parameters covers the basics. For the mechanics specific to this platform, including how Instagram's professional account insights report bio link taps, see how to track link clicks on Instagram.
Step 3: match UTM data to your store's order data
UTM parameters only become sales data once your store or CRM records them at the point of purchase and lets you filter orders by source and campaign. Most ecommerce platforms do this natively if the UTM is present in the URL that led to checkout. If it isn't captured there, it never becomes a revenue number, no matter how clean your click tracking upstream was. This is also where a shorter attribution window costs you without any warning: if your store only remembers the last UTM for 24 or 48 hours, a visitor who clicks from Instagram on Monday and buys on Thursday shows up as direct traffic instead, which is a second, separate reason your Instagram-attributed revenue tends to read lower than the platform's real influence on the sale.
Step 4: add a discount code as a backup that doesn't depend on a cookie
This is the part most guides on this topic miss. Instagram's in-app browser, the mini browser that opens when someone taps a link without leaving the app, runs its own cookie session, separate from the person's regular Safari or Chrome session. If someone clicks from Instagram, doesn't buy right away, and later completes the purchase in their normal browser, the cookie your UTM tracking set never carries over, and that sale looks organic or direct instead of Instagram-driven.
A discount code sidesteps this entirely, because it gets typed in manually at checkout regardless of which browser or session the purchase happens in. Give Instagram, or even individual posts, a unique code (something short enough that people will actually type it in) and you get an attribution signal that survives the exact gap where cookie tracking fails. It also survives a phone getting restarted, an app getting reinstalled, or a purchase happening on a completely different device days later, none of which a cookie can do.
| Scenario | Cookie set | Cookie survives to purchase |
|---|---|---|
| Click in Instagram's in-app browser, buy in the same session | Yes | Usually yes |
| Click in Instagram's in-app browser, close the app, return later in-app | Yes | Sometimes, depends on session persistence |
| Click in Instagram, then buy later in Safari or Chrome instead | Yes, but in a different browser context | No, the two sessions don't share cookies |
| Click in Instagram, use a saved discount code days later, any browser | Not needed | Yes, a code doesn't depend on a cookie at all |
Step 5: account for the gap instead of being surprised by it
Once you know this happens, treat your UTM-based revenue number as a floor, not a ceiling. It's real revenue you can prove came from Instagram. The true number is higher, by an amount you can only estimate from the redemption rate on your backup discount code. Reporting both numbers, the provable UTM figure and the code-redemption figure, is more honest than picking whichever one looks better.
Step 6: compare Instagram's tap counts to your landing sessions
A professional Instagram account shows you tap counts on the bio link in its own insights. Compare that number to the sessions your landing page or link-in-bio tool actually logged for the same window. A big gap between the two usually means broken or missing redirects, not a sudden loss of interest, and it's worth chasing down before you draw any conclusion about the post itself. Run this comparison monthly at minimum, since a redirect that quietly broke three weeks ago looks identical to a slow week unless you're checking both numbers against each other.
Step 7: review revenue by post, weekly, not just by campaign
Campaign-level totals hide which specific post did the work. Pull revenue by UTM content or post identifier on a weekly cadence, and you'll usually find that a small number of posts account for most of the traceable revenue, which tells you more about what to make next than an aggregate monthly number ever will.
Does it matter whether the link is in your bio, a story, or a Reel caption
Not for the tracking mechanics themselves. A UTM-tagged link works the same whether it sits in your bio, a story link sticker, or a caption. What changes is how Instagram surfaces the tap count back to you: a professional account's insights show taps on the bio link as a running total, while story link stickers report per-story. Give each placement its own UTM content value regardless of where it lives, since that is what actually lets you tell a bio-link click apart from a story-link click later, not which part of the app it came from.
Set expectations before you report a number
Whoever you report Instagram revenue to should understand it going in as a provable minimum, not a complete figure. Say so plainly: "this is what we can trace with certainty, and the in-app browser means the real number is somewhat higher." That framing holds up better over time than a single tidy number that later turns out to have been an undercount all along, and it sets the right expectation for why a discount code matters as much as the tracking link does.
What this setup honestly cannot do
A link-in-bio tool like Raydar can tell you which post drove a click, with country, city-level geo, and first-touch and last-touch attribution up to the moment that visitor lands on your page. It cannot see what happens after that, whether they added something to a cart, whether they paid, whether they returned three days later and bought on desktop instead. That handoff is where your store's own order data, matched by UTM or by the backup discount code, has to take over. Anyone claiming a single tool sees the whole path from tap to purchase, on Instagram specifically, is skipping over the in-app browser problem above.