Attribution FAQ - How Revenue Attribution Works
Learn how MerchantFlow attributes revenue to traffic sources using attribution models, UTM parameters, and confidence levels. Understand why attribution differs from ad platforms.
Attribution FAQ
Revenue attribution in MerchantFlow determines which marketing channel or traffic source should receive credit for each order. MerchantFlow uses a multi-level attribution system based on recorded customer touchpoints, UTM parameters, and platform-reported source data. This FAQ answers common questions about how attribution works and why results may differ from ad platform reports.
Feature flag: every attribution surface described here is gated behind the
attribution_enabledfeature flag, which is off unless MerchantFlow turns it on for your workspace. No plan tier unlocks it. With the flag off, the Marketing → Attribution nav entry is hidden, the Revenue Attribution card disappears from the dashboard, Traffic, and product pages, and blended cost mode is forced on. See Attribution System for the full list.
How Attribution Works
How does MerchantFlow determine the traffic source for an order?
MerchantFlow uses a multi-level attribution system that checks several data points in priority order:
- Stored attribution record - if MerchantFlow has recorded touchpoints for the order, the credit split calculated by your selected attribution model is used. This is assigned HIGH confidence.
- UTM parameters - if no attribution record exists but the order carries UTM tags (utm_source, utm_medium, utm_campaign), these determine the source. This is assigned MEDIUM confidence.
- Platform primary source - if no UTM tags are present, MerchantFlow falls back to the primary source reported by your e-commerce platform (for example Shopify's
source / mediumstring). This is also assigned MEDIUM confidence. - Unattributed - if none of the above yields a usable source, the order is bucketed as Unattributed with LOW confidence.
What are the confidence levels?
MerchantFlow assigns a confidence level to each attribution:
| Confidence | Source | Meaning |
|---|---|---|
| HIGH | Stored attribution record | Credit calculated from recorded touchpoints using your attribution model |
| MEDIUM | UTM parameters | Source determined from explicit UTM tags on the order |
| MEDIUM | Platform primary source | Source parsed from your e-commerce platform's own attribution field |
| LOW | Unattributed | No usable source data on the order |
Higher confidence means the attribution is more reliable. Every row the attribution report returns carries its own confidence level, and the Revenue Attribution Overview modal shows a single rolled-up Confidence percentage. The full band-by-band split of revenue across HIGH, MEDIUM, and LOW is written to MerchantFlow's server logs rather than shown to you. A large LOW-confidence share usually means UTM tagging needs work.
What is the difference between paid and organic attribution?
MerchantFlow automatically classifies each traffic source into a channel group, and those groups fall into four buckets:
- Paid - Paid Search (CPC, PPC), Paid Social (Facebook, Instagram ads), Display (banner ads)
- Organic - Organic Search (Google, Bing), Organic Social (Facebook, Twitter posts), Referral (other websites)
- Direct - Direct (typed URL, bookmarks) and Email
- Other - Affiliate and Shopping (Google Shopping)
This categorization helps you understand how much of your revenue depends on advertising spend vs. free traffic.
Common Attribution Questions
Why is so much revenue attributed to "Unattributed"?
Revenue appears under "Unattributed" when MerchantFlow cannot determine the original traffic source. (Orders that explicitly report direct are shown under Direct instead.) This happens because of:
- Missing UTM parameters - campaign links without UTM tags cannot be attributed to a specific channel
- Privacy tools - browser privacy settings, ad blockers, and VPNs can strip referrer data
- App traffic - links opened in mobile apps sometimes lose referrer information
- Email clients - some email clients strip tracking parameters
- Bookmarks and typed URLs - returning customers who type your URL or use bookmarks
How to reduce unattributed revenue:
- Add UTM parameters to all paid campaign links
- Tag links in emails and SMS messages
- Use UTM parameters on social media post links
- Review your attribution model and window on the Attribution Settings page at
/dashboard/settings/attribution
Why does my attribution data not match my ad platform?
Discrepancies between MerchantFlow and ad platforms are common and expected:
- Different attribution models - ad platforms use their own models (often giving themselves more credit), while MerchantFlow uses whichever model you select as your default (Last Touch unless you change it)
- Different attribution windows - Google Ads may use a 30-day click window; MerchantFlow uses the attribution window set on the Attribution Settings page (7, 14, 30, 60, or 90 days, defaulting to 30)
- Different counting methods - ad platforms count conversions based on clicks or impressions; MerchantFlow counts actual completed orders
- Cross-device differences - ad platforms track users across devices using logged-in data; MerchantFlow relies on recorded touchpoints, UTM parameters, and platform-reported source data
Recommendation: Use MerchantFlow as your unified source of truth for overall channel performance. Use ad platform data for campaign-level optimization within that platform.
How does MerchantFlow handle orders with multiple touchpoints?
That depends on the attribution model you select on the Attribution Settings page:
| Model | How credit is split |
|---|---|
| First Touch | 100% to the first touchpoint in the journey |
| Last Touch (default) | 100% to the last touchpoint before conversion |
| Linear | Equal credit to every touchpoint |
| Time Decay | Exponential decay measured back from the most recent touchpoint, using a 7-day half-life |
| Position Based | 40% first, 40% last, 20% shared across the middle (50/50 when there are exactly two touchpoints) |
Example: A customer clicks a Google Ad on Monday, visits via an email link on Wednesday, and purchases via a Facebook Ad on Friday. Under Last Touch the order is credited entirely to that Facebook touchpoint, in the Paid Social channel group. Under Linear each of the three touchpoints receives roughly 33%.
In practice MerchantFlow records at most two touchpoints per Shopify order -- the first visit and the last visit from Shopify's customer journey summary, and only when those two differ. A three-step journey like the one above is illustrative of the maths, not of how many touchpoints you will actually see.
Can I manually change the attribution of an order?
Not from the dashboard. Attribution rules are listed at Marketing → Attribution on the Rules tab, but that tab is a read-only viewer -- there is no create, edit, or delete control. Rules are created and changed through the API, and individual orders can be reassigned through /api/attribution/reassign.
A rule matches on the order's source, medium, and campaign values and assigns the matching orders to a specific project and channel. Rules are evaluated in priority order, and the first match wins.
Expense rules work the same way but match on the expense's category, vendor, and type.
For details on setting up rules, see Attribution System.
UTM Parameters
What UTM parameters does MerchantFlow use?
MerchantFlow recognizes the standard UTM parameters:
- utm_source - the platform or source (e.g., google, facebook, newsletter)
- utm_medium - the marketing medium (e.g., cpc, social, email)
- utm_campaign - the specific campaign name
Do UTM parameters override the platform's own source?
Yes. When UTM parameters are present on an order, they take priority over the primary source reported by Shopify or WooCommerce. This is why consistent UTM tagging is the best way to ensure accurate attribution.
What happens if UTM parameters are partial?
If only some UTM parameters are present (e.g., utm_source exists but utm_medium does not), MerchantFlow uses whatever is available and falls back to (none) for the missing medium. The source is still attributed with MEDIUM confidence.
Channel Classification
How are sources grouped into channels?
There are two classifiers, and which one an order goes through depends on its confidence tier.
Orders resolved from UTM fields or the platform source (MEDIUM confidence) are classified at read time from the source and medium pair, in this order -- the first match wins:
- Organic - source is exactly
googleand medium isorganic - Shopping - source is exactly
googleand medium isshoppingorproduct_listing - Paid Search - source is exactly
googleand medium iscpcorppc - Social - source is exactly facebook, instagram, meta, twitter, linkedin, tiktok, snapchat, or pinterest
- Email - an
emailsource or anemailmedium - Referral - a
referralmedium - ChatGPT - source is chatgpt, openai, claude, bard, or gemini, and the medium is not already
referral - Direct - source is
director(direct)
Note how narrow the search rules are: they key on the literal source google, so bing / cpc or duckduckgo / organic do not reach Paid Search or Organic.
Orders with a stored touchpoint record (HIGH confidence) keep the channel group written at sync time by a finer classifier that splits paid from organic -- Paid Social, Organic Social, Paid Search, Organic Search, Email, Referral, Direct, Display, Affiliate, Shopping, Other. That is why one report can list both Paid Social and Social. See Attribution System for the full rules.
Neither classifier looks up referring domains at this stage. Referrer mapping happens earlier, during the Shopify order sync -- see UTM Tracking.
What if the source is not recognised?
Unrecognised sources are grouped as Other. MerchantFlow deliberately does not assume unknown traffic is organic. Orders with no usable source at all get their own Unattributed row instead.
Where to Configure Attribution
- Marketing → Attribution - view Projects, Channels, and Rules on three tabs. This page is a read-only viewer; changes go through the API
- Attribution Settings (
/dashboard/settings/attribution) - choose the Default Attribution Model, set the Attribution Window (7, 14, 30, 60, or 90 days), and toggle Blended Cost Mode. There is no Attribution tab in the Settings tab bar, so reach this page by URL
For a complete setup guide, see Attribution System.
Frequently Asked Questions
How often is attribution data updated?
Attribution data is calculated during each data sync. When new orders come in and sync to MerchantFlow, they are automatically attributed based on available source data and your configured rules.
Can I see attribution at the product level?
Yes, if attribution_enabled is on for your workspace. Open Products, click any product, and the detail page shows a Revenue Attribution flow plus an Attribution Breakdown card subtitled "Revenue sources for this specific SKU". Both are hidden when the flag is off. Product-level sources are the raw source strings recorded on the orders, not the channel groups used elsewhere.
Does MerchantFlow support multi-touch attribution?
Yes. Linear, Time Decay, and Position Based are all multi-touch models, and they are available alongside First Touch and Last Touch. Multi-touch results depend on MerchantFlow having recorded more than one touchpoint for the order; orders that only carry a UTM tag or a platform source fall back to a single-source attribution.
Related Articles
- Attribution System - Full attribution guide
- Traffic Sources - Traffic analysis
- UTM Tracking - UTM setup guide
- KPI Metrics - Understanding metrics
Last updated: August 29, 2026
Last updated on
MerchantFlow FAQ - Common Questions
Find answers to frequently asked questions about MerchantFlow setup, integrations, billing, data privacy, syncing, and e-commerce analytics features.
Bundle Management FAQ
Frequently asked questions about product bundles in MerchantFlow including revenue allocation methods, profitability tracking, and component product analytics.