marketing-attribution-dashboard
About marketing-attribution-dashboard
A skill for ecommerce marketing teams that explains how to choose attribution tools, configure tracking, and compare models. It emphasizes consistent UTM tagging and order data to assess channel contribution for budget decisions.
Key features
- 01Compare GA4 and attribution tools
- 02Configure ecommerce attribution tracking
- 03Standardize channel UTM tagging
- 04Build a blended ROAS dashboard
- 05Check attribution coverage and gaps
Use cases
- 01Evaluate ad spend against actual orders
- 02Find attribution overlap across channels
- 03Prepare channel data for budget reviews
- 04Measure a new channel’s contribution
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill marketing-attribution-dashboardAfter installing, type/marketing-attribution-dashboardin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
tile.jsonevals/attribution-model-weight-computation/criteria.jsontask.mdevals/react-dashboard-architecture-and-kpi-rep/criteria.jsontask.mdevals/touchpoint-collection-and-channel-classi/criteria.jsontask.mdDetails
From the project READMEMarketing Attribution Dashboard
Overview
Every ecommerce business faces attribution chaos: Meta says it drove 300 purchases, Google says 280, and your order management system shows 400 total. The overlap is real, the methodologies differ, and single-touch last-click models misrepresent the true value of upper-funnel channels. A proper attribution dashboard aggregates all marketing data in one place and applies a consistent model so you can make defensible budget decisions. For most merchants, a third-party attribution tool — not custom code — is the fastest path to accurate channel ROI.
When to Use This Skill
- When ad spend decisions rely on platform-reported ROAS rather than actual order data
- When you suspect paid social is stealing attribution from organic search or email
- When preparing a quarterly marketing budget review and need a defensible data source
- When launching a new channel and need to measure its true incremental contribution
- When reporting marketing performance to investors or a board
Core Instructions
Step 1: Choose the right attribution tool
| Platform | Best For | Shopify | WooCommerce | BigCommerce | Price |
|---|---|---|---|---|---|
| Triple Whale | Shopify-native, real-time pixel + CAPI | App Store | Limited | Limited | $129+/mo |
| Northbeam | Advanced multi-touch, TV/podcast spend | App Store | Via pixel | Via pixel | $500+/mo |
| Rockerbox | Mid-market, all channels including offline | App Store | Via pixel | Via pixel | $500+/mo |
| GA4 (free) | All platforms, good enough for most | Via tag | Via tag | Via tag | Free |
| Wicked Reports | WooCommerce-native, integrates with Klaviyo | Limited | Plugin | Limited | $299+/mo |
Start with GA4 for most stores — it is free, handles multi-channel attribution with configurable models, and integrates natively with Google Ads. Upgrade to Triple Whale or Northbeam when you need real-time pixel data that survives iOS 14 restrictions.
Step 2: Set up attribution reporting
Shopify
With GA4 (recommended starting point):
- Go to Shopify Admin → Online Store → Preferences → Google Analytics
- Enter your GA4 Measurement ID (
G-XXXXXXXXXX) - Enable Enhanced Ecommerce under GA4 property settings
- In GA4 → Reports → Acquisition → Traffic Acquisition: set secondary dimension to
Session campaignto break down by campaign - In GA4 → Reports → Acquisition → Traffic Acquisition: set the comparison period to 30 days and filter by
Session mediumto isolate paid, organic, email, and social
With Triple Whale (Shopify-native, recommended for paid social):
- Install Triple Whale from the Shopify App Store
- Go to Triple Whale → Pixel Setup and add the Triple Whale pixel to your theme — this is a first-party pixel not blocked by iOS 14
- Connect your ad accounts: Triple Whale → Integrations → connect Meta, Google Ads, and TikTok
- Triple Whale's Summary Page shows a unified ROAS view across all ad platforms using your actual Shopify order data as the source of truth
- Use Triple Whale → Attribution → Model Comparison to compare last-click, first-click, and linear attribution in a single view
WooCommerce
With GA4:
- Install MonsterInsights (free tier) or Google Site Kit from the WordPress plugin directory
- Go to MonsterInsights → Settings → Analytics and connect your GA4 property
- Enable enhanced ecommerce tracking — MonsterInsights handles the data layer events automatically
- For UTM attribution reports: go to GA4 → Reports → Acquisition → Traffic Acquisition and filter by source/medium
With Wicked Reports (WooCommerce-specific):
- Install Wicked Reports from the WordPress plugin directory
- Connect your WooCommerce store and email platform (Klaviyo, Mailchimp)
- Wicked Reports assigns multi-touch attribution to each order by tracking the full customer journey from first ad click to purchase
- Go to Wicked Reports → ROI to see revenue per ad campaign using your actual order data
BigCommerce
- Go to BigCommerce Admin → Settings → Analytics → Google Analytics
- Enter your GA4 Measurement ID and enable Enhanced Ecommerce
- For advanced attribution: install Triple Whale or Northbeam from the BigCommerce App Marketplace — both support BigCommerce via tracking pixel
- In BigCommerce Analytics, go to Analytics → Marketing to see channel-level attribution based on BigCommerce's built-in last-click model
Custom / Headless
For headless stores, capture first-touch attribution server-side before building any reporting layer. Third-party tools like Triple Whale, Northbeam, or Rockerbox all provide a JavaScript pixel + server-side API for custom stacks.
If you need to build custom multi-touch attribution:
interface TouchpointEvent {
sessionId: string;
customerId?: string;
anonymousId: string;
channel: string; // 'paid-social' | 'paid-search' | 'organic' | 'email' | 'sms' | 'direct'
source: string; // 'meta' | 'google' | 'tiktok' | 'klaviyo'
medium: string;
campaign?: string;
orderId?: string;
orderValue?: number;
timestamp: Date;
}
function classifyChannel(utm: UtmParams, referrer?: string): string {
if (utm.medium === 'cpc' || utm.medium === 'paid') return 'paid-search';
if (utm.medium === 'paid-social' || utm.source?.match(/meta|facebook|instagram|tiktok/i)) return 'paid-social';
if (utm.medium === 'email') return 'email';
if (utm.medium === 'sms') return 'sms';
if (referrer?.match(/google|bing|yahoo/i)) return 'organic-search';
if (referrer && !referrer.includes(process.env.STORE_DOMAIN!)) return 'referral';
return 'direct';
}
// Attribution model: 40% first touch, 40% last touch, 20% distributed across middle
function positionBasedWeights(touchpoints: TouchpointEvent[]): number[] {
const n = touchpoints.length;
if (n === 1) return [1];
if (n === 2) return [0.5, 0.5];
const middleShare = 0.2 / (n - 2);
return touchpoints.map((_, i) => {
if (i === 0) return 0.4;
if (i === n - 1) return 0.4;
return middleShare;
});
}
Use a dedicated attribution API service like Rockerbox or Northbeam rather than building the full attribution engine from scratch — the complexity of cross-device stitching and model computation is not worth custom-building for most stores.
Step 3: Configure UTM tracking consistently
UTM parameters are the foundation of any attribution system. Without consistent UTMs, even GA4 cannot attribute sessions correctly.
Standard UTM structure:
| Channel | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Meta Ads | facebook or instagram | paid-social | spring-2026-prospecting |
| Google Ads | google | cpc | brand-search |
| TikTok Ads | tiktok | paid-social | ugc-spring-2026 |
| Klaviyo email | klaviyo | email | welcome-series |
| SMS | postscript | sms | abandoned-cart |
Use Google's Campaign URL Builder at ga-dev-tools.google.com/campaign-url-builder to generate UTM links consistently.
In Klaviyo: Go to Klaviyo → Account → Settings → UTM Tracking and enable auto-UTM tagging — Klaviyo appends UTM parameters to all email links automatically.
In Meta Ads: Go to Ads Manager → Campaign → URL Parameters and add utm_source={{site_source_name}}&utm_medium=paid-social&utm_campaign={{campaign.name}}&utm_content={{ad.name}} to your ad URL parameters at the campaign level.
Step 4: Build a blended ROAS dashboard in GA4
- Go to GA4 → Explore → Free Form and create a new exploration
- Set Dimensions: Session source/medium, Session campaign
- Set Metrics: Sessions, Ecommerce purchases, Purchase revenue, Transactions
- Add a filter:
Session mediumcontainspaidto isolate paid channels - Use GA4 → Advertising → Attribution to compare last-click vs. data-driven attribution models side by side
- For manual ROAS: export GA4 revenue by channel → enter ad spend from each platform → calculate
Revenue / Spendin a spreadsheet
Automate with Google Looker Studio (free):
- Connect Looker Studio to GA4, Google Ads, and your Shopify/WooCommerce data source
- Build a blended channel dashboard using Looker Studio's Blend Data feature
- Join GA4 session data with Google Ads spend by campaign name
Step 5: Measure attribution health
| Metric | Target | Where to Find |
|---|---|---|
| Channel coverage (% of orders with UTM attribution) | > 70% | GA4 Acquisition report |
| Email channel share of attributed revenue | Varies by business | GA4 filter by utm_medium=email |
| Paid social EMQ score (for Meta CAPI) | 7+ / 10 | Meta Events Manager |
| Cross-channel ROAS discrepancy | < 30% variance vs. platform-reported | Compare GA4 vs. Ads Manager |
Best Practices
- GA4 is ground truth, not platform dashboards — every ad platform over-attributes to itself; your order database and GA4 are the closest thing to ground truth
- Use position-based attribution for budget decisions — it rewards both discovery (first-touch) and closing (last-touch) channels; linear attribution underweights email and organic
- Set a 30-day lookback minimum — customers research for weeks before buying; 7-day windows miss upper-funnel contributions from paid social
- Consistent UTMs are more important than the tool — even the best attribution tool fails with inconsistent or missing UTM parameters; audit UTM coverage before buying a tool
- Compare models, not just the default — looking at the same period under last-click vs. linear vs. position-based reveals which channels are being systematically over- or under-credited
Common Pitfalls
| Problem | Solution |
|---|---|
| Direct traffic massively over-attributed | Set a 30-min session timeout in GA4; check for missing UTM parameters on all ad campaigns |
| Email channel under-attributed | Enable auto-UTM in Klaviyo; test all links to verify UTMs survive ESP link tracking |
| Platform ROAS looks great but profitability is flat | Platforms count view-through attribution; compare attribution windows — use 7-day click only |
| Dashboard loads slowly | Use pre-aggregated GA4 summary tables; avoid building attribution from raw event exports |
Related Skills
- @meta-ads-integration
- @google-ads-ecommerce
- @tiktok-ads-integration
- @affiliate-program
- @influencer-marketplace-integration