What this means
A query report can use the marketing visits recorded with an online order. These records can include the first visit, the last visit, the last visit from a link or another website, and a complete list of recorded visits in order. They describe available tracking; they do not prove that a campaign caused a purchase.
Recording needs the visitor's analytics consent. An internal move between pages is not another marketing visit. A new visit starts after 30 minutes without activity. A completed purchase starts a fresh journey; an unfinished checkout or a failed response does not erase its recorded visits. A journey also expires after 30 days.
What you need to know
Older orders are not given invented campaign records. An older journey that recorded its first and last visits can keep those facts while its full history stays unknown. A blank campaign means no campaign was recorded for that visit; it does not mean a campaign earned zero sales.
Complete history supports up to 512 recorded visits in one journey. Above that limit, the full history stays unknown while recorded first and last visits remain available. Upstorr does not present a shortened list as complete. This is an Upstorr recording limit.
The query reader includes the recorded visit time, classified source, traffic type, and recorded campaign tags. It does not include private checkout addresses or payment-provider secrets. Each report stays limited to the selected store.
A query can also use ReportMarketingSessions to read current recorded store visits alongside order sales. Saving the query saves its instructions; reopening or running it fetches current visit records. Visit counts and order sales must be added separately before they are combined, so extra visits do not multiply a sale.
The live visit source loads the most recent 89 days that remain within the provider's three-month storage limit. ReportMarketingCoverage shows the loaded time range and whether the provider sampled the records. An observed visit count describes records returned by the provider. It is not an exact session total when sampling occurred. When the source is sampled, every exact session count stays blank, including records that were individually unsampled. The joined calculation also leaves exact session totals blank when the requested period starts before the loaded range. A missing order journey keeps its attributed orders and sales blank; it is not assigned to a guessed campaign.
Upstorr stops the query if this source exceeds 10,000 observed visits or cannot be loaded. It does not use a shortened list or replace a failed source with zero visits. These visit records do not supply advertising spend, ad impressions, or cross-device history.
Simple example
A shopper arrives through a tagged Google link, returns through a tagged email link, and later returns directly. When all three visits were recorded, their history has three entries in that order. The first is Google, the last is direct, and the last non-direct visit is email. A query counting recorded visits by source shows one visit for each source. That count alone does not decide how the order's sales should be attributed.
Related guides
Use Write and save a query report for query controls, saving, charts, and downloads. Read Understand online store analytics for the limits of tracking and attribution.
Advertising figures need recorded ad data. Ad spend, Return on ad spend, Cost per acquisition, Customer acquisition cost, Ad impressions, Ad clicks and Ad clickthrough rate stay blank when that data is unavailable. The summary, nested totals and CSV keep those values blank too, including dates with no records. A blank is not zero. WhatsApp sends and reads, email opens and clicks, and message charges are separate facts; they are not substituted for ad results.
Compare visits with sales credit
Open Marketing performance by channel or Marketing performance by campaign in Reports. Choose your dates and attribution model, then run the report. Money is shown in INR. You can save it, open it again, change its query and download its CSV using the shared report controls.
POS sales appear in the None channel and have no campaign tags. Each model counts each original POS order once; adding models does not multiply its sales. An online order with missing visit history stays unknown. For example, a POS sale of ₹118 including ₹18 GST and a free POS order have two orders, ₹118 total sales and a ₹50 average before GST. Later reversals affect sales on their recorded day without changing that original average.
First click credits the first recorded visit. Last click credits the last visit. Last non-direct click credits the last visit from another source, or the last Direct visit if no other source was recorded. Any click gives full credit to each different selected marketing group; its totals can therefore exceed the original sale. Linear divides credit equally between recorded visits, including Direct visits. For example, two Google visits, one email visit and one Direct visit give Google half the sale and each other source a quarter.
Filtering a selected group keeps that group's original credit. It does not divide the sale again between the remaining rows. Add a marketing grouping before filtering it. The summary includes all matching groups even when the table's row limit hides some. Nested subtotals also include all matching rows for their group.
Sessions stays unknown if visits were sampled or the chosen dates start before available visit history, including an empty result. Observed visits counts only the records received; it is not an estimate of all visits. Unknown sales history or missing exchange rates stays unknown too. Sales amounts use the financial event's original day; visit and order counts keep their original units.
Conversion rate divides attributed orders by sessions and shows the result as a percentage. For example, half an order credited to a channel with two sessions is 25%. The summary and nested subtotals calculate the rate from their full order and session totals; they do not add or average the displayed percentages. A zero or unknown session count, or unknown order credit, leaves the rate blank. Currency does not change this percentage.
Average order value divides the credited original product sales after discounts by credited orders. It excludes GST, shipping, fees and later refunds or exchanges. For example, original orders worth ₹100 and ₹300 after discounts have a ₹200 average. The summary and nested subtotals use all matching original sales and order credit, including hidden rows; they do not average the displayed averages. A group with no credited orders stays blank. A known free order has a zero average. Missing original sales, order history or exchange rates stays blank. Each original sale uses its own recorded UTC day. A later refund with an unknown date keeps the affected sales totals unknown while preserving known original order credit and its original average.
You can group by Date, channel, site, traffic type and UTM fields. Cross-device linking and advertising-provider cost, click and impression measures are not available.
Add Date, then use Group dates by for day, week, month, quarter or year. Visits use their recorded India time; sales use their recorded financial-event day in India. Changing the date grouping keeps each model's original sales credit. A date-only report counts each original order once in every model, including Any click.
A Date filter can narrow the recorded days even when Date is not a grouping. It filters visits by visit day and sales by financial-event day, even if you previously grouped dates by month. A sale can still receive credit from an earlier visit. Other marketing grouping filters require that grouping in the report.
Include dates with no records fills the selected range with calendar rows, up to 1,000 date groups. Empty dates have zero sales and order counts. Their average order value stays blank; a known free order has a zero average. Conversion rate stays blank when there are no known sessions. Older or sampled visits stay unknown. Turn this option off to show only recorded dates. A measure filter removes the empty-date option.
An undated financial change appears under Unknown and keeps the affected sales totals blank. A date filter keeps that uncertainty when the change could belong to the selected dates; it does not invent a day. Original order credit and its original average can remain known. The date grouping uses India days, while currency conversion still uses each transaction's recorded UTC day.
Compare models in one report
Use Compare models to add another model's order and sales columns beside the current measures. For example, compare Average order value (First click) with Average order value (Linear) in the same table. Sessions and observed visits stay shared; adding a model does not multiply visits.
Each named column keeps its own model when you change the main Attribution model. That main choice controls measures without a model in their name. You can choose named columns for a chart, filter or sort, save the report, reopen it and download them in the CSV. Money columns use INR; percentages keep their units. The summary and nested subtotals calculate each model separately from all matching groups, including rows hidden by the table limit.
Marketing performance reports can select up to 64 measures. A comparison changes credit assigned to recorded orders; it does not supply missing customer history, advertising spend or campaign records.