Skip to content

Order Sources Report

The Order Sources report answers the question every store owner eventually asks: where are my paying customers actually coming from?

It groups your orders by the UTM parameters attached to them, so you can see which campaign, which channel, and which specific ad produced real revenue, not just traffic. A campaign that sends thousands of visitors but produces four orders looks very different here than it does in your analytics tool.

Accessing the Order Sources Report

Go to your WordPress dashboard, then FluentCart → Reports, and open the Sources tab.

Only orders that carry a UTM source appear here. Orders placed by someone who came to your store directly, through an untagged link, or over a channel you never tagged are excluded. The report would otherwise be dominated by a single meaningless "unknown" row.

Report Columns and Metrics

Each row is a unique combination of campaign, source, and medium. Every order matching that combination is rolled up into it.

UTM Columns

Use the Columns control above the table to show or hide any of these:

  • UTM Campaign: the campaign the link belonged to (utm_campaign).
  • UTM Source: where the traffic came from, such as google or newsletter (utm_source).
  • UTM Medium: the kind of channel, such as cpc or email (utm_medium).
  • UTM Term: the keyword, for paid search (utm_term).
  • UTM Content: which variant of an ad or link was clicked (utm_content).
  • UTM ID: your own campaign identifier (utm_id).

Revenue Metrics

  • Orders: how many orders came from this source.
  • Gross Sales: total paid across those orders.
  • Net Sales: gross sales minus refunds, tax, and shipping tax. This is the figure to judge a campaign on.
  • Average Order: gross sales divided by order count.
  • Average Order Net: net sales divided by order count.

The Gross / Net switch above the table toggles which pair of these the table displays: Gross shows Gross Sales and Average Order, Net shows Net Sales and Average Order Net.

Rows are sorted by gross sales, highest first, so your best-performing sources are always at the top.

Judge campaigns on Net Sales, not Gross

Gross Sales includes tax, shipping tax, and orders that were later refunded. A campaign that drives high-refund purchases can look strong on gross and poor on net. Net Sales is the honest number.

Filtering the Report

Date Range

The date selector at the top scopes the report to a period. Every metric recalculates, and comparison figures update alongside it so you can see whether a source is growing or fading.

The Search field above the table filters results by UTM values as you type, matching against UTM Campaign, UTM Source, and UTM Medium. It's the quickest way to jump to a specific campaign.

Advanced Filters

Beyond the date range, you can narrow the report using the same advanced filter engine that powers the Orders screen. That means you can answer much more specific questions: which campaigns produced orders over $100?, which sources brought in subscription customers?, how did this campaign perform for customers in Germany?

Turn on the Advanced Filter switch above the table, click + Add, and pick a property group (Order Property, Customer Property, Transactions Property, Utm Property, or Tax Property), then choose a field within it, an operator, and a value. Conditions can be combined into groups joined with AND / OR, so complex questions are expressible without exporting anything.

Available operators depend on the field, and include Equals for exact matches (including matching an order by its order hash or a payer's email address) and Includes for partial text matches on fields such as customer email.

Advanced filtering requires FluentCart Pro

The Order Sources report itself is available to every FluentCart store. Advanced filters on it are a Pro feature.

How FluentCart Attributes an Order

Understanding what the report is measuring makes it far more useful.

Last touch wins

FluentCart records attribution on every order using a last-touch model. When a visitor arrives through a tagged link, that marketing touch replaces whatever was previously stored for them. Whichever campaign brought them back for the visit where they actually bought is the one credited.

This matters when a customer discovers you through one campaign and returns weeks later through another. Only the returning touch is credited. The report shows what closed the sale, not what started the relationship.

Ad click identifiers

Alongside the six standard UTM parameters, FluentCart captures the click identifiers ad platforms append to your links:

IdentifierPlatform
gclidGoogle Ads
gbraid, wbraidGoogle Ads, for iOS clicks where gclid is unavailable
gad_campaignid, gad_sourceGoogle Ads campaign details carried on the URL itself
fbclidMeta (Facebook and Instagram)
msclkidMicrosoft Advertising

These appear on the order's source card rather than as report columns, and they're what lets you reconcile an individual FluentCart order against the click record in your ad platform. They also survive situations where cookie-based attribution fails, because they travel on the URL.

Referring URL

When a visitor arrives without UTM parameters, FluentCart records the referring URL instead. Referrals from your own domains are ignored, so a customer moving between your own pages doesn't overwrite the real external source that brought them.

To credit the right campaign at checkout, FluentCart has to remember the marketing touch that brought a visitor in, and it does that by storing the campaign values in the visitor's own browser. Privacy rules such as GDPR and Germany's TDDDG treat that storage the same way they treat cookies, and campaign attribution is not something a shop strictly needs in order to sell.

FluentCart therefore announces every attribution write before it happens, so a consent manager can step in and decide. Three things can follow:

  • No consent integration is present. The write goes ahead exactly as it always has, which is the case for most stores. Nothing changes and nothing needs configuring.
  • A consent manager holds the decision. The campaign values stay in page memory only and are never written to the device. If the visitor accepts on that same page, the touch is stored and the campaign is not lost.
  • The visitor refuses, or withdraws later. Nothing is written, and anything already stored is cleared, so a withdrawal takes effect on past data rather than only on future visits.

Orders that arrive without stored attribution still appear in your reports. They simply carry no marketing source, the same as any untagged visit.

INFO

Wiring your consent banner to this gate takes a few lines of JavaScript, and there is a working example among the code snippets.

Where to see a single order's attribution

The report shows aggregates. To see the attribution recorded against one specific order, open the order and check its source card; see Order Details Overview.

Using the Report

Find your most profitable channel. Sort by Net Sales and compare Average Order Net across sources. A channel with fewer orders but a much higher average order value is often worth more than a high-volume one.

Check whether a campaign paid for itself. Filter to the campaign's run dates, read Net Sales, and compare against what you spent.

Spot untagged traffic. If your report totals are far below your actual order count, most of your orders are arriving without UTM tags. Tag your outbound links (email campaigns, ads, affiliate links, social posts) and the report fills in.

Compare ad variants. With utm_content set per creative, the UTM Content column tells you which variant actually converted.