How-to guide

Attribution for Shopify β€” Track Where Your Sales Actually Come From

Shopify has decent analytics β€” you can see traffic sources, top products, and conversion rates. But it can't tell you which Instagram creator drove that batch of sales on Wednesday, or whether your newsletter link outperformed the influencer collab you ran last week. That's a different kind of tracking.

What Shopify analytics can't tell you

Shopify groups traffic into broad sources: direct, search, social, email. It can tell you that 40% of your sales came from β€œsocial” β€” but not which creator, which post, or which campaign within social drove them. If you're working with multiple influencers or running multiple campaigns, that level of grouping is nearly useless for making decisions.

Even with UTM parameters, Shopify's reporting is limited. You can see sessions by campaign, but attribution to actual orders is shallow and often unreliable, especially when users visit multiple times before buying.

The result: you're spending time and budget on creator deals and campaigns but you can't prove which ones are working. You're making decisions based on vibes rather than data.

How link-level attribution works

The idea is simple: instead of every creator and campaign pointing at the same URL, you give each source its own tracked link. When a visitor clicks that link and arrives at your store, a small tracking cookie is set. When they make a purchase, that cookie is read and the sale is attributed to the link they came from.

This gives you revenue-per-source data rather than just click-per-source data. Clicks are interesting; revenue is actionable.

Setting up attribution on your Shopify store

01

Add the LinkOwl script to your Shopify theme

In your Shopify admin, go to Online Store β†’ Themes β†’ Edit code. Find your theme.liquid file and paste the LinkOwl script tag just before the closing </head> tag. This one snippet handles click tracking across your entire store.

02

Add the purchase event on your order confirmation page

To attribute sales (not just visits), you need to fire a purchase event when an order completes. In Shopify, go to Settings β†’ Checkout β†’ Additional scripts and add the LinkOwl purchase event snippet. This fires once per completed order and sends the purchase data to LinkOwl, tying it to the original tracked link.

03

Create tracked links for each source

In LinkOwl, create a tracked link for each marketing source: one per influencer, one per social platform, one per newsletter campaign. Each link points to your Shopify store URL. Share the appropriate link with each creator or use it in each campaign. From now on, purchases will be attributed to the correct source.

04

View revenue per link in your dashboard

Your LinkOwl dashboard shows clicks and purchases per link. For Shopify stores, this means you can see which influencer, which campaign, and which platform is actually making you money β€” not just driving traffic. Filter by date range to evaluate specific campaigns or ongoing creator partnerships.

Does it work if I use Stripe directly?

Yes. If you're not using Shopify's built-in checkout and instead have a custom site with Stripe, LinkOwl works the same way β€” add the script tag to your site and fire the purchase event from your Stripe webhook or payment success callback. The setup is slightly different but the result is identical: revenue attributed to each tracked link.

What changes when you have this data

With revenue-per-source data, you stop making decisions based on engagement metrics and start making them based on revenue. You'll quickly identify which creators convert, which platforms are worth your time, and which campaigns paid off.

You can also have honest conversations with creators about rev-share based on actual data. Instead of guessing, you'll know exactly what each person drove.

Know exactly where your Shopify sales come from.

Works with Shopify and Stripe. One script tag setup.

Free to use Β· Β£0.05 per attributed first purchase Β· No subscription

Start tracking free β†’