Marketing attribution
Instagram vs email: comparing WooCommerce revenue by source
To compare Instagram and email sales in WooCommerce, tag every Instagram and email link with UTM parameters, then group orders by UTM source or medium. WooCommerce order attribution saves those tags on each order, so you can total orders and net sales for each. Without tags, most clicks from both land in Direct or Referral and the comparison is meaningless.
This guide covers why untagged traffic hides, how to tag both channels the same way, how to total and compare them, and what the comparison can't tell you.
Why Instagram and email are hard to compare out of the box
WooCommerce's order attribution decides an order's source from the link the buyer arrived on. Instagram and email are both awkward:
| Visit | What WooCommerce often records |
|---|---|
| Tap on an untagged link in an Instagram bio or story | Referral from an Instagram domain, or Direct if the app didn't pass a referrer |
| Click on an untagged link in an email | Usually Direct, because many email clients don't pass a referrer |
| Click on a tagged link from either | Source type utm, with your utm_source, utm_medium and utm_campaign |
So an untagged comparison might show Instagram as a handful of referrals and email as nothing at all, while Direct quietly holds most of both. The fix is the same for both channels: UTM parameters. WooCommerce reads them from the URL, so they work even when the app hides where the click came from.
How to tag Instagram and email links the same way
Use one naming scheme for both, so you can compare like with like:
| Where | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Instagram bio link | instagram |
social |
bio |
| Instagram story or post | instagram |
social |
the campaign name |
| Instagram paid ads | instagram |
paid-social |
the campaign name |
| Newsletter | newsletter |
email |
the send name, e.g. oct-newsletter |
| Automated emails (welcome, abandoned cart) | klaviyo or your tool's name |
email |
the flow name |
A few rules keep it clean:
- Lowercase everything.
Instagramandinstagramare two different sources in every grouping. - Keep medium broad (
email,social,paid-social) and put detail in campaign. That way "email vs social" is one grouping by medium. - Check your email tool's settings. Many can add UTM tags to every link automatically. Make sure their values follow your scheme.
- Test each link in a private window with a test order, and check the Order attribution box on the order.
The UTM tracking guide covers the full parameter list and common tagging mistakes.
How to compare Instagram and email revenue
Once a month or two of tagged orders has built up, total them. Core Analytics has no attribution report, so use one of the methods in how to see orders by channel: an export with attribution meta, WooCommerce's free WooCommerce Analytics extension (which has an Orders by Source report), SQL, or a tool that reads attribution.
Group two ways:
- By UTM source to compare
instagramwithnewsletterdirectly. - By UTM medium to compare all
emailwith allsocial, across tools and campaigns.
Then add the untagged leftovers. Grouping by source also shows referral orders under the referring site's host name, so look for Instagram domains among your referral sources too. Which websites send you customers explains how referral sources are recorded.
What to compare
| Measure | Why it matters |
|---|---|
| Orders | Volume: which channel produces more buyers |
| Net sales | Revenue after coupons and refunds, before tax and shipping |
| Net sales per order | Whether one channel brings bigger baskets |
| Change vs last period | Whether a channel is growing or fading |
Say Instagram brought 46 orders and $2,580 in net sales last month, and email brought 31 orders and $2,790. Instagram wins on volume, email on revenue and on order value ($90 against $56). Both facts matter: Instagram may be finding new customers while email sells to people who already know you.
What the comparison can't tell you
- It's last click only. WooCommerce credits the last identified source. Instagram often introduces a customer who later buys through Google or a newsletter. Under last-click attribution, Instagram gets nothing for that.
- Session-only memory. Attribution cookies last for the browser session. A follower who taps your post, leaves, and buys tomorrow by typing your address shows as Direct.
- No visits, so no conversion rate. WooCommerce only records buyers. To know what share of Instagram visitors buy, you need visit counts from Google Analytics or Instagram's own insights.
- Email lists are warm. People on your list already know you, so email usually converts better. That doesn't mean Instagram is failing.
- Consent and blockers. Visitors who decline marketing cookies (with a WP Consent API banner) or block scripts end up as Unknown. See why attribution says Unknown.
The quick way: ask Askshelf
Askshelf adds Analytics › Askshelf to WordPress admin. Its "orders by channel" lookup groups orders and net sales by UTM source, UTM medium, UTM campaign, source type or device, for any date range, with an optional comparison period.
Compare orders from instagram and newsletter in October with September.
You can ask the same thing by medium ("email vs social") or by campaign. Askshelf groups by what WooCommerce stored, so untagged Instagram clicks appear under their referring host name or under Direct, not under instagram. It doesn't calculate profit or return on ad spend. See the order attribution use case for more.
What to do with the result
- Tag first, judge later. Give tagging a full month before drawing conclusions.
- Judge each channel on its job. If Instagram brings first-time buyers and email brings repeat buyers, you need both. The new vs returning customers guide shows how to look at that split.
- Move Instagram followers onto your list. A sign-up offer in your bio turns an expensive channel into a cheap one.
- Revisit after big sends or launches, and read the hub on WooCommerce order attribution for how all channels fit together.
Common questions
Why do my Instagram sales show as Direct in WooCommerce?
When the Instagram app opens a link without passing a referrer, WooCommerce sees a visit with no source and labels it Direct. Adding UTM parameters to the link fixes this, because WooCommerce reads the tags from the URL itself.
How does WooCommerce know an order came from email?
Only if the link in the email carried UTM parameters such as utm_medium=email. Email clients often open links without a referrer, so untagged email clicks usually show as Direct.
Can WooCommerce count Instagram purchases made days after seeing a post?
Usually not. WooCommerce's attribution cookies last for the browser session and credit the last identified source. Someone who sees a post today and buys next week after a Google search is credited to Google.
See how Askshelf handles this: Order attribution reports for WooCommerce