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
~/ai-projects/mission-control/plans/q2-attribution-reconciliation-2026.md