Campaign Math · Quellwood Provisions · Q3 2026 (July 1 – September 30)

$5,064 of this quarter's $72,621 in paid spend bought clicks that Quellwood's analytics can't tie back to the campaign that paid for them.

And which campaign worked best depends on a rule nobody chose.

Every rule names qw_search_brand the top campaign. That result is real. Below it, the order is a choice: 9 of 12 paid campaigns move two or more places depending on the rule, and qw_search_nb_gift-boxes's return on spend runs from 0.69× to 1.88×.

Why the top holds: 44% of revenue comes from customers with one recorded visit, where every rule gives the same answer by arithmetic, and among paid campaigns, qw_search_brand takes the largest share of those one-visit sales (11%).

Every-rule winners: qw_search_brand and qw_shopping_all-products rank in the top 3 under all four rules. Fund them without argument.

Unattributable: 12.5% of conversions, $61,682 in revenue, reach no campaign and no traceable source: Direct, Unassigned, (not set) or an unmatched campaign name. 26% of those got there through a tracking defect, seeded at the published or stated rate listed below.

GA4: Since November 2023, GA4 offers no first-click, linear or position-based model. Its default is data-driven attribution, which cannot be reproduced outside Google. These four rules can be, and they bracket it. Google's note

Measurable floor: For a brand that sells mostly through retailers, this is the slice of marketing where the math can be checked. Most ad money also moves shelf sales that web analytics never sees.

Rank of each paid campaign under each rule

Ranked by attributed revenue. Highlighted lines move two or more places between rules.

Last-clickFirst-clickLinearPosition-based1111qw_search_brandqw_search_brand2222qw_shopping_all-productsqw_shopping_all-products3533qw_meta_rt_site-visitorsqw_meta_rt_site-visitors41155qw_meta_rt_cart-abandonersqw_meta_rt_cart-abandoners5766qw_tiktok_pro_chili-crispqw_tiktok_pro_chili-crisp6344qw_meta_pro_chili-crispqw_meta_pro_chili-crisp7477qw_meta_pro_lookalike-buyersqw_meta_pro_lookalike-buyers8688qw_search_nb_chili-crispqw_search_nb_chili-crisp9101111qw_affiliate_partner-networkqw_affiliate_partner-network10899qw_search_nb_spice-blendsqw_search_nb_spice-blends1191010qw_search_nb_gift-boxesqw_search_nb_gift-boxes12121212qw_meta_pro_giftingqw_meta_pro_gifting

Source: synthetic GA4 export, Q3 2026 (July 1 – September 30); 5,556 purchases after deduplication on transaction ID. Paths use last-non-direct-click conventions, 90-day lookback inside the export window.

The campaigns: return on spend is a range, not a number

Each row is one paid campaign's return on ad spend under the four rules. The dot colors mark the rule; the labels mark the low and high ends.

Last-clickFirst-clickLinearPosition-based
0×1×2×3×4×5×6×7×8×9×qw_search_nb_gift-boxes0.69×1.88×qw_meta_pro_lookalike-buyers1.03×2.76×qw_meta_pro_chili-crisp1.62×4.10×qw_meta_rt_cart-abandoners1.93×4.42×qw_search_nb_chili-crisp1.40×2.95×qw_search_nb_spice-blends1.68×3.14×qw_meta_rt_site-visitors2.93×4.76×qw_meta_pro_gifting0.98×1.51×qw_affiliate_partner-network3.98×4.89×qw_search_brand7.55×8.95×qw_tiktok_pro_chili-crisp1.68×1.97×qw_shopping_all-products4.79×5.05×

Return on ad spend = revenue attributed under the rule ÷ the campaign's spend in the spend table. Sorted by the width of the range.

CampaignPlatformSpendLast-clickFirst-clickLinearPosition-basedRank rangeReading
qw_search_brandGoogle$5,904$51,691$44,593$52,835$50,1151Top 3 under every rule
qw_shopping_all-productsGoogle$7,667$38,720$36,749$37,222$37,4052Top 3 under every rule
qw_meta_rt_site-visitorsMeta$7,226$34,395$21,202$29,478$28,5823–5Depends on the rule
qw_meta_rt_cart-abandonersMeta$4,868$21,534$9,379$17,052$16,2264–11Depends on the rule
qw_tiktok_pro_chili-crispOther paid$8,816$14,870$17,375$14,768$15,5075–7Depends on the rule
qw_meta_pro_chili-crispMeta$6,483$10,501$26,569$17,373$18,0413–6Depends on the rule
qw_meta_pro_lookalike-buyersMeta$8,320$8,590$22,954$14,385$15,0404–7Depends on the rule
qw_search_nb_chili-crispGoogle$6,118$8,563$18,022$12,036$12,7926–8Depends on the rule
qw_affiliate_partner-networkOther paid$2,077$8,257$10,160$8,770$9,0359–11Depends on the rule
qw_search_nb_spice-blendsGoogle$4,897$8,232$15,377$10,832$11,4098–10Depends on the rule
qw_search_nb_gift-boxesGoogle$8,094$5,614$15,216$9,521$10,0479–11Depends on the rule
qw_meta_pro_giftingMeta$2,152$2,114$3,260$2,556$2,63812Depends on the rule

Attributed revenue by rule. "Depends on the rule": rank moves two or more places, or return on spend varies by 1.5× or more. Email campaigns carry no media spend and are not ranked: qw_email_weekly-newsletter $40.7K (last-click); qw_email_abandoned-cart $27.8K (last-click); qw_email_welcome-series $18.0K (last-click). Revenue credited to no campaign, last-click: Organic social $22.0K; Organic search $69.3K; Referral (incl. payment gateway) $36.4K; Direct (no tracked source) $53.2K; Unassigned, (not set), unmatched $16.9K.

The hygiene audit: can the data answer the question?

Nine classes of tracking defect, each planted in this quarter at a published or stated rate. The four that touch the most revenue are below. "Documented case" says whether a published account exists of this defect changing a budget decision.

Class 9

Platform reports more than GA4

$42,504

more revenue in platform reports than in GA4

Seeded at
+20% over GA4 last-click
Results in
12 instances
Documented case
none published

Class 8

Safari cookie expiry splits journeys

$41,074

of revenue on journeys it touched

Seeded at
Safari 30.42% of users × return gaps over 7 days
Results in
24,806 instances
Documented case
none published

Class 1

Missing UTMs

$27,328

of revenue on journeys it touched

Seeded at
6% of paid-social + email sessions
Results in
4,234 instances
Documented case
none published

Class 5

Payment-gateway self-referral

$23,075

of revenue on journeys it touched

Seeded at
4% of purchases
Results in
238 instances
Documented case
none published
Other defects found (6)
ClassDefectSeeded atInstancesRevenue touchedSpend on itDocumented case
4Duplicate purchase sends3% of purchases152$14,160—none published
3(not set) source1% of sessions2,480$14,005—none published
2bOff-spec medium → Unassigned2% of tagged sessions1,483$10,529—none published
4Missing transaction_id0.5% of purchases35$3,136—none published
7gclid lost on redirect2% of Google Ads clicks1,073$2,811—none published
6Bot / invalid traffic3% of paid clicks / 1% of other sessions4,613$0$2,240Uber / Frisch

Bot traffic touches no revenue: bots don't buy. Its cost is the spend on non-human paid clicks. It is the only class with a published decision case: Uber cut about two-thirds of a ~$150M rider-ad budget and installs did not move (Daily Maverick, 2021).

Where the untraced spend sits

CampaignPlatform clicksGA4 sessions matchedGapUntraced spend
qw_meta_pro_lookalike-buyers10,5558,0702,485$1,959
qw_meta_rt_site-visitors12,66910,9201,749$998
qw_search_nb_gift-boxes6,2215,707514$669
qw_search_nb_chili-crisp8,2627,537725$537
qw_meta_pro_chili-crisp8,9138,295618$449
qw_tiktok_pro_chili-crisp9,4169,298118$110
qw_meta_pro_gifting2,3732,268105$95
qw_shopping_all-products17,51417,342172$75
qw_search_brand12,42512,305120$57
qw_meta_rt_cart-abandoners8,3218,24081$47
qw_search_nb_spice-blends5,3205,27248$44
qw_affiliate_partner-network3,7533,71142$23
Total$5,064

Untraced spend = spend × (platform clicks − GA4 sessions carrying the campaign's name) ÷ platform clicks. Bot clicks are counted on both sides, so they don't shrink the gap. Untraced spend here counts only the seeded tracking defects: this synthetic quarter has no other click loss (consent refusals, ad blockers, visitors who leave before the tag fires), so a real account's gap would be larger. Class 2a, case / spelling variants (12% of tagged sessions): case differences are matched back to their campaign; spelling variants are not, and land in the unattributable count. No published decision case.

Method and data

Synthetic data: Quellwood Provisions is an invented brand. Its quarter of data is generated from a fixed seed, with tracking defects planted at the rates listed above. The method is real.

The four rules. Each purchase's path is the buyer's recorded sessions in the 90 days before it, Direct visits removed (GA4's last-non-direct-click convention, applied to all four rules alike). Last-click gives the last touch 100%. First-click gives the first touch 100%. Linear splits evenly. Position-based gives 40% to the first and last touches and splits 20% across the middle; with two touches it is 50/50. A path with only Direct visits goes to Direct. Purchases are deduplicated on transaction ID, as GA4 does.

Rates. Each defect rate is either published (cited) or a stated assumption bounded by published figures. None was chosen to make the result dramatic, and none was adjusted after the result was seen. The verdict copy and the rule for choosing it were committed before the data was generated.

Check it by hand. GA4 event export, one gzip CSV per month: July, August, September (1,400,182 events; joined, their rows hash to SHA-256 bef7049239e1448f…), and the daily spend table. Every attribution number on this page comes from those files. The hygiene audit counts the defects the generator planted; it reads the seed log, true sessions and true orders, published here too.

Run this on your own GA4 export and spend sheet