← Back to all projects
Ready

Q2 2026 Cross-System Attribution Reconciliation

Period: April 1 – June 20, 2026 | Stores: Fabric Outlet + Shiplap | Run: 2026-06-21


Ground Truth: Shopify Web Revenue

Store Orders Revenue
Fabric Outlet 2,004 $127,209
Shiplap 1,849 $147,736
Total web 3,853 $274,945
All-channel (web + POS + subscriptions) 6,531 $384,966

Web = source_name='web' only. POS ($79,642), subscriptions ($4,955), draft orders ($2,502) excluded from web figure.


Meta Ads Attribution

Store Spend Attributed Revenue Purchases ROAS % of Web
Fabric Outlet $11,123 $94,565 1,538 8.50x 74%
Shiplap $16,840 $90,696 1,141 5.39x 61%
Total $27,962 $185,262 2,679 6.62x 67%

Attribution window: 7-day click + 1-day view (Meta default)


Klaviyo Attribution

Store Total Attributed Campaign Flow Direct/Organic
Fabric Outlet $148,347 $51,775 $7,623 $88,949
Shiplap $189,431 $82,256 $1,258 $105,917
Total $337,778 $134,031 $8,882 $194,866

Scope note: Klaviyo "Placed Order" tracks ALL orders from email subscribers — includes POS, subscription, and phone orders, not just web. This is why Klaviyo total ($338k) exceeds Shopify web ($275k) but stays within all-channel ($385k).

Attribution window: 5-day click + 5-day open (Klaviyo default)


Reconciliation

Metric Value Context
Shopify web (ground truth) $274,945 Actual web orders
Shopify all-channel $384,966 Full business revenue
Meta attributed $185,262 67% of web
Klaviyo attributed $337,778 88% of all-channel
Meta + Klaviyo campaign $319,293 116% of web — overlaps exist
Est. cross-channel overlap ~$67,016 50% of campaign buyers also saw Meta ad

Is Klaviyo double-counting?

No. Klaviyo total ($338k) vs all-channel ($385k) = 88% — appropriate for a business where most customers are email subscribers. The $63k gap above web revenue ($338k - $275k) is accounted for by POS and subscription orders from Klaviyo subscribers.

Is Meta double-counting with Klaviyo?

Likely yes — estimated ~$67k overlap. Any customer who received an email campaign AND clicked a retargeting ad within the respective attribution windows will appear in both systems. This is structural to multi-touch attribution, not an error.


Risk Assessment: MEDIUM

Primary concern: Meta view-through attribution inflating ROAS

  • FO: Meta claims 74% of FO web revenue — high for a store with $127k web revenue
  • Shiplap: Meta claims 61% of Shiplap web revenue
  • These percentages are elevated by Meta's default 1-day view-through window, which counts users who simply saw an ad (but didn't click) and later purchased organically

Not a concern: Klaviyo scope

  • Klaviyo vs all-channel comparison ($338k / $385k = 88%) is expected and healthy
  • Flow attribution is low ($9k) — flow performance appears underreported or flows are under-optimized

Action Items

Priority Action Impact
P1 Switch Meta attribution to 7-day click only (remove 1-day view) in both FO and Shiplap ad accounts Remove view-through inflation; get accurate ROAS
P2 Re-benchmark ROAS after window change — expect FO to drop from 8.5x → ~5-6x (view-through was padding ~30%) More accurate performance data for Q3 budgeting
P3 Investigate low Klaviyo flow revenue ($9k) — may indicate flows need optimization or flow attribution window is too tight Potential revenue recovery from automated flows
P3 Order-level dedup (Shopify order IDs in Meta + Klaviyo) for exact cross-channel attribution Precise overlap measurement; lower priority than window fix

No Q2 Close Blockers

  • Shopify web revenue ($274,945) is clean — no double-counting in the transactional record
  • Klaviyo + Meta over-claim is an attribution reporting issue, not a revenue recognition issue
  • Q2 final close can proceed; channel reporting should note these attribution methodology caveats

Generated by: scripts/q2_attribution_reconciliation.py | JSON output: reports/q2-attribution-reconciliation-2026.json