Last updated: November 4, 2026
Say you send one newsletter, post the same product on Instagram, and run a small Google Ads campaign in the same week. By Friday you have 30 orders. Your order list says 11 came from "Direct", 9 from "Organic: Google", 6 from "Unknown" and 4 from "Referral: instagram.com". The newsletter, which took the longest to write, does not appear at all. WooCommerce UTM tracking is the five-minute habit that fixes this. It is free, it works with the Order Attribution feature already inside WooCommerce, and it is the reason some stores can say "email brought 40% of revenue" while others guess.
This guide covers the five UTM parameters, how to turn on the built-in tracking, why orders still show Unknown and how to reduce it, how to tag links for ads, email and AI tools, and the mistakes that quietly break the data.
Key takeaways
- UTM parameters are five tags on the end of a URL that name the source, medium, campaign, term and content of a visit.
- WooCommerce reads them for free through Order Attribution, at WooCommerce > Settings > Advanced > Features.
- Order Attribution only records data when an order is placed, uses last click, and keeps its data in session cookies, so it cannot show visits that did not buy.
- "Unknown" origins come from manual orders, cached cart and checkout pages, stripped query strings, privacy settings and gateway redirects.
- Tag every link you control. Untagged email and social links are counted as direct or referral, which is why email looks like it brings nothing.
What are the 5 UTMs?
The five UTM parameters are utm_source (where the visitor came from, such as newsletter or instagram), utm_medium (the type of channel, such as email, social or cpc), utm_campaign (the campaign name, such as spring_sale), utm_term (the keyword, used mainly for paid search) and utm_content (which link or creative, used to tell two links in one email apart).
They are added to a URL after a question mark and joined with ampersands. A full example looks like this.
https://example.com/product/blue-mug/?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_content=hero_button
Source, medium and campaign are the ones you will use every time. Agencies that run several stores should use one naming rule for all of them, which makes white-label reports comparable across clients. Term and content are optional. The values are plain text. Keep them lowercase and consistent: "Newsletter" and "newsletter" are two different sources to most tools.
Is UTM tracking still used in 2026?
Yes. UTM parameters are still the standard way to label your own links, because they live in the URL and do not depend on cookies, pixels or consent. Ad platforms add their own click IDs (gclid for Google, fbclid for Meta), but email, social posts, partner links and QR codes have nothing unless you add UTMs.
What has changed is where the data is read. Ten years ago you read UTMs in Google Analytics. Today WooCommerce reads them itself and writes the source onto the order, and analytics plugins that run inside WordPress read them on the landing page. You no longer need an outside account to benefit from tagging links.
How to set up UTM tracking in WooCommerce without a plugin
Turn on Order Attribution at WooCommerce > Settings > Advanced > Features. From then on, every new order records the referring URL, any UTM parameters, the device type and the session's page views, and the order list gets an Origin column. No extension or outside account is required.
The details below come from the WooCommerce Order Attribution documentation, checked on November 4, 2026.
- Go to WooCommerce > Settings > Advanced > Features and enable Order Attribution.
- Place a test order from a tagged link while logged out. Open the order and look for the Origin value and the attribution details.
- Open WooCommerce > Analytics and find the Order attribution report, which groups orders by origin.
Origins the feature can record are Referral (the referring site), Organic (search), UTM campaigns, Direct (type-in), Web Admin (orders added from the backend) and Unknown. Three rules decide which one an order gets:
- UTM and organic sources always override any previous source in the session.
- A direct visit never overrides a previously identified source.
- Within a session, a referral never overrides the previous source.
This is a last-click model. The data is held in seven browser cookies with the sbjs_ prefix, most of which expire with the session (30 minutes by default), and nothing is written to WooCommerce until an order is placed. The documentation is explicit that the feature "cannot be used to track your visitors across sessions". It also notes that some web application firewalls flag these cookies and return 403 errors, and that WooCommerce 9.0 added a filter to base64-encode them as a workaround.
Why does order attribution show Unknown?
Unknown means WooCommerce could not read a source when the order was created. WooCommerce support staff list manual orders, order meta that did not save, cached cart or checkout pages, browser privacy settings, payment gateway redirects and links without tracking parameters as the usual causes. Most stores can cut Unknown rows sharply with three fixes, but not to zero.
Two support threads on WordPress.org show the pattern. In one thread from November 2025, a store owner wrote that many orders showed Unknown and it was "difficult to identify where the order is exactly coming from." WooCommerce support replied that Unknown appears when the order is created manually or when the order meta is not saved properly, and advised excluding the cart and checkout pages from WP Rocket, LiteSpeed Cache and Cloudflare caching and making sure URLs preserve query strings. In an earlier thread, support said Unknown "usually happens when WooCommerce is unable to determine the source of traffic", naming browser privacy settings, payment gateway redirections and a lack of tracking parameters. That owner's Unknown and Direct rows traced back to HubSpot short links and a deposit payment gateway.
The three fixes, in order of effect:
- Exclude cart, checkout and order-received pages from every cache layer. Page cache plugins, server cache and a CDN each need their own exclusion. A cached checkout page cannot write attribution.
- Keep query strings on links. Link shorteners, some redirect plugins and some CDN rules strip everything after the question mark. Test each tool by clicking a tagged link and reading the address bar at the landing page.
- Tag every link you own. An untagged link from an app that sends no referrer becomes Direct. A tagged link is never Unknown or Direct.
The rows that remain are mostly shoppers whose browser blocks cookies, shoppers who paid on a gateway page and did not return, and orders you created by hand. Those are limits of the method, not configuration errors.
How to track UTM data from ads, email and AI tools
Ads: let the click IDs do the work and add UTMs as a backup. Email: tag every link in every template with source, medium and campaign. Social: tag the link in the bio and in each post. AI tools: you cannot tag them, so rely on the referrer and a tool that names them.
| Channel | utm_source | utm_medium | utm_campaign | Notes |
|---|---|---|---|---|
| Google Ads | cpc | campaign name | Google adds gclid automatically. Keep UTMs for tools that do not read it. | |
| Meta ads | facebook or instagram | paid_social | campaign name | Meta adds fbclid. Use the URL parameters field in the ad. |
| Newsletter | newsletter | date or topic, e.g. 2026-11-spring | Use utm_content to tell the hero button from the footer link. | |
| Instagram bio or post | social | post topic | Without a tag, in-app browsers often send no referrer and the visit becomes Direct. | |
| Partner or affiliate | partner name | referral | deal name | Give each partner a unique source value. |
| QR code on packaging | packaging | offline | product line | The only way an offline visit gets a source. |
| ChatGPT, Perplexity, Gemini | not controllable | not controllable | not controllable | Identified by referrer. Google Analytics 4 now has an AI Assistant channel for this, per Google's channel group list. StorePinger names them in the sources report. |
Where the data lands depends on the tool. Order Attribution writes it to the order. GA4 reads it on the landing page, if the shopper is tracked. StorePinger's sales by source reads it on the landing page, keeps it with the visit in your own database, and matches the paid order later, so a cached checkout page does not lose the source.
How to build the links: a worked example
Decide a naming rule once, write it down, and build every link from it. A rule most stores can keep is lowercase, underscores instead of spaces, source equals the site or tool, medium equals the channel type, campaign equals the month and the topic.
This is a worked example, not a customer result. A store sends a newsletter about a blue mug to 5,000 subscribers and posts the same mug on Instagram. The two links are:
/product/blue-mug/?utm_source=newsletter&utm_medium=email&utm_campaign=2026_11_blue_mug
/product/blue-mug/?utm_source=instagram&utm_medium=social&utm_campaign=2026_11_blue_mug
After a week the Order attribution report shows 25 orders for the email link and 5 for the Instagram link. The email went to 5,000 people and 500 clicked, so the email conversion rate is 25 divided by 500, or 5%. Instagram sent 400 visits and 5 orders, or 1.25%. At an average order value of $30, email brought $750 and Instagram $150. Next month the Instagram post gets a discount code and the email gets sent twice. You can only make that call because both links were tagged.
Google's free Campaign URL Builder produces the same format if you prefer a form to typing. Any tool that writes the five standard parameters works with WooCommerce.
How to check UTM data in WooCommerce after a campaign
Open WooCommerce > Analytics > Order attribution for the campaign's date range and read orders and revenue per origin. Then open individual orders to see the full source, medium and campaign values. For visits that did not buy, you need an analytics plugin that records the landing page, because Order Attribution writes nothing until an order exists.
- Set the date range to the campaign window plus a few days, because some shoppers buy later.
- Read the Order attribution report. Origins with UTM values appear with the source and medium you tagged.
- Open two or three orders from each origin and confirm the campaign value is the one you expect. A typo in one email template shows up here first.
- Compare revenue per origin, not only order count. Export to CSV if you report to anyone else.
- Note the number of Unknown and Direct orders. If Direct jumped during an email send, some email links were untagged.
In StorePinger the same campaign appears in the traffic sources report as visits, and sales by source shows the paid orders it brought, so you can see that 500 people clicked and 25 paid. Add the conversion funnel and that is what tells you whether a weak campaign had a weak offer or a broken checkout. The live visitors view shows the first clicks arriving minutes after a send, which is the fastest way to confirm a link works.
When UTM tracking is the wrong tool
UTMs label links you control. They cannot tell you about organic search, referrals from sites you do not manage, AI assistants, or a shopper's earlier visits. For those you rely on the referrer, on ad click IDs and on a tool that records visits. Use UTMs for what they are good at and stop expecting them to explain everything.
Two situations where owners over-invest in UTMs. First, a store with no email list and no paid ads: nearly all traffic is organic search and referral, and tagging does nothing. Spend the time on the basics of reading your traffic instead. Second, a store that wants multi-touch attribution across weeks: Order Attribution is last click and session based by design, and no amount of tagging changes that. If multi-touch matters, GA4 or a dedicated attribution tool is the place, and the alternative page explains the trade-off in privacy and completeness.
Is UTM tracking free?
Yes. UTM parameters cost nothing to add and WooCommerce reads them for free through Order Attribution. Paid extensions add reports, first-click and last-click views and exports, but the tagging itself and the per-order source are free.
As of November 2026, the UTM Tracking extension on woocommerce.com is listed at $59 per year, and several analytics plugins include UTM reporting in their paid tiers. Whether you need one depends on whether the Order attribution report answers your questions. If you want to see visits that did not buy, or sources next to live visitors and carts, you need a plugin that records the visit, not only the order.
What is the WooCommerce shortcode for tracking orders?
There is no WooCommerce shortcode for UTM or source tracking. The shortcodes people usually mean are [woocommerce_order_tracking], which shows a form where a customer enters an order number and email to see order status, and [woocommerce_my_account], which shows the account area. Source tracking is a setting, not a shortcode.
If a tutorial tells you to paste a shortcode to track where orders come from, it is describing a third-party plugin's feature. Check the plugin's own documentation for what the shortcode outputs before using it on a live page.
Common mistakes
- Mixing cases and spellings. "Newsletter", "newsletter" and "news_letter" are three sources. Pick one rule and write it in a shared document.
- Tagging internal links. A UTM on a link from your home page to your shop page overwrites the real source with "homepage". Only tag links that start outside your site.
- Using medium for the campaign name. Medium is the channel type: email, social, cpc, referral. Campaign is the name. Swapping them makes every report unreadable.
- Letting a shortener strip the tags. Test every shortened link by opening it and reading the final URL.
- Caching the checkout. The most common cause of Unknown that is under your control.
- Expecting UTMs to track returning shoppers. Order Attribution cookies expire with the session. A shopper who comes back tomorrow from a bookmark is Direct, and that is correct under last click.
- Reading only the order count. Thirty orders from a $5 coupon campaign can be worth less than ten from a full-price email. Look at revenue per source, not orders alone, and check the store reports for coupon cost.
- Tagging a cart recovery email the same as a campaign. Give recovery emails their own utm_medium, such as cart_recovery, so recovered orders are not credited to the newsletter. The abandoned cart recovery page explains how those emails work.
Conclusion
UTM tracking is five words on the end of a link and one checkbox in WooCommerce. The payoff is an order list where email, social, ads and partners each get the credit they earned, instead of a wall of Direct and Unknown. Turn on Order Attribution, write a naming rule, tag every link you send this week, and exclude the cart and checkout from caching. Then read the Order attribution report next Monday. If you also want to see the visits that did not end in an order, and to have AI tools like ChatGPT named as a source, the traffic sources report in StorePinger reads the same tags on the landing page and keeps them in your own database. The WooCommerce Analytics vs Google Analytics guide explains how the two kinds of counting fit together.