Agent skill
attribution-analyzer
Multi-touch attribution analysis across marketing channels with multiple models
Filed under Analytics and reporting.
From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11
What it does when it runs
Multi-touch attribution analysis across marketing channels with multiple models
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/capabilities/attribution-analyzer" mkdir -p ~/.claude/skills/attribution-analyzer cp -R "/tmp/b2b-gtm-skills/skills/capabilities/attribution-analyzer/." ~/.claude/skills/attribution-analyzer/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/capabilities/attribution-analyzer/SKILL.md, which is licensed MIT (repository). 1,167 words, 16 headings.
Attribution Analyzer
Performs multi-touch attribution analysis on lead-to-conversion journey data. Applies five attribution models (first-touch, last-touch, linear, time-decay, U-shaped) to the same dataset and compares outputs. Identifies highest-impact channels and touchpoints, calculates channel ROI, and recommends budget allocation shifts. Works with CRM data or manually provided touchpoint logs.
Prerequisites
agency.config.jsonin the project root- Touchpoint data: lead journeys with channel, timestamp, and conversion status
- Optional: channel spend data for ROI calculations
- Optional:
crm-writerintegration for pulling journey data from CRM
Phase 0: Read Config
- Read
agency.config.jsonfrom the project root. - Extract channel configuration:
outreach.channels[]-- active marketing channelsoutreach.cadence[]-- touchpoint sequence and timing
- Extract
tools.crmfor CRM data access method. - Extract
tools.analyticsfor any analytics platform integration. - Check for
attribution.default_modelpreference in config.
Phase 1: Gather Touchpoint Data
Collect or retrieve lead journey data. Each journey record needs:
{
"lead_id": "lead_001",
"converted": true,
"conversion_value": 5000,
"conversion_date": "2024-03-15",
"touchpoints": [
{
"channel": "linkedin_ad",
"timestamp": "2024-02-01T10:00:00Z",
"type": "impression",
"content": "CRO case study carousel"
},
{
"channel": "cold_email",
"timestamp": "2024-02-05T14:30:00Z",
"type": "email_open",
"content": "Touch 1 -- PAS framework"
},
{
"channel": "website",
"timestamp": "2024-02-06T09:00:00Z",
"type": "page_visit",
"content": "Case study page"
},
{
"channel": "cold_email",
"timestamp": "2024-02-10T11:00:00Z",
"type": "email_reply",
"content": "Touch 2 follow-up"
},
{
"channel": "demo_call",
"timestamp": "2024-02-15T15:00:00Z",
"type": "meeting",
"content": "Discovery call"
}
]
}
Data sources:
- Manual input (user provides CSV or JSON)
- CRM pull via
crm-writer(read from Outreach CRM tab) - Analytics export (Google Analytics, Mixpanel)
If data is incomplete, flag gaps and proceed with available data.
Phase 2: Apply Attribution Models
Apply all five models to every converted lead's touchpoint chain:
Model 1: First-Touch Attribution
- 100% credit to the first touchpoint in the journey
- Use case: understanding which channels drive awareness and initial discovery
- Formula:
credit = conversion_valueassigned entirely to touchpoint[0]
Model 2: Last-Touch Attribution
- 100% credit to the last touchpoint before conversion
- Use case: understanding which channels close deals
- Formula:
credit = conversion_valueassigned entirely to touchpoint[n-1]
Model 3: Linear Attribution
- Equal credit distributed across all touchpoints
- Use case: valuing every interaction in the journey equally
- Formula:
credit_per_touch = conversion_value / touchpoint_count
Model 4: Time-Decay Attribution
- More credit to touchpoints closer to conversion
- Use case: understanding recent influence while acknowledging earlier touches
- Formula:
weight = 2^((days_before_conversion * -1) / half_life)where half_life = 7 days - Normalize weights so they sum to 1.0
Model 5: U-Shaped (Position-Based) Attribution
- 40% to first touch, 40% to last touch, 20% split among middle touches
- Use case: valuing both discovery and closing while acknowledging the nurture
- Formula:
- First touch:
0.4 * conversion_value - Last touch:
0.4 * conversion_value - Middle touches:
(0.2 * conversion_value) / middle_touch_count
- First touch:
For each model, aggregate credit by channel across all converted leads.
Phase 3: Compare Model Outputs
Build a comparison matrix:
CHANNEL ATTRIBUTION COMPARISON
===
Channel | First-Touch | Last-Touch | Linear | Time-Decay | U-Shaped
-----------------|-------------|------------|---------|------------|--------
LinkedIn Ads | $12,000 | $3,000 | $7,500 | $5,200 | $8,400
Cold Email | $8,000 | $15,000 | $10,000 | $11,800 | $9,600
Website/Organic | $3,000 | $2,000 | $6,500 | $4,000 | $3,200
Demo Calls | $0 | $18,000 | $6,000 | $12,000 | $7,200
Referrals | $2,000 | $0 | $3,000 | $1,500 | $1,600
Calculate the consensus score per channel:
- Average attribution value across all 5 models
- Rank channels by consensus score
- Flag channels with high variance (score differs more than 2x between models)
Phase 4: Channel ROI Analysis
If spend data is available, calculate ROI per channel per model:
CHANNEL ROI (by attribution model)
===
Channel | Spend | First-Touch ROI | Linear ROI | Time-Decay ROI | Consensus ROI
-----------------|---------|-----------------|------------|----------------|-------------
LinkedIn Ads | $2,000 | 6.0x | 3.8x | 2.6x | 4.2x
Cold Email | $500 | 16.0x | 20.0x | 23.6x | 19.2x
Website/Organic | $1,000 | 3.0x | 6.5x | 4.0x | 3.2x
Identify:
- Highest ROI channel: best return per dollar regardless of model
- Most scalable channel: high ROI with room to increase spend
- Underperforming channel: low ROI across multiple models
- Discovery channel: high in first-touch but low in last-touch
- Closing channel: high in last-touch but low in first-touch
Phase 5: Touchpoint Sequence Analysis
Beyond channel-level attribution, analyze touchpoint patterns:
Winning sequences (most common paths among converted leads):
TOP CONVERSION PATHS:
1. LinkedIn Ad -> Cold Email -> Website -> Demo Call (35% of conversions)
2. Cold Email -> Cold Email -> Demo Call (25% of conversions)
3. Referral -> Website -> Demo Call (20% of conversions)
Average touches to conversion:
- Overall: X touchpoints
- By channel entry point: which first-touch channel leads to fastest conversion
- By deal size: do larger deals require more touches
Drop-off points:
- Where in the sequence do leads most commonly go cold
- Which channel transitions have the highest drop-off rate
Phase 6: Recommendations
Generate actionable recommendations:
BUDGET RECOMMENDATIONS:
===
1. INCREASE: [Channel] -- [reason, supported by data]
Current spend: $X -> Recommended: $Y (+Z%)
Expected impact: [projected additional revenue]
2. DECREASE: [Channel] -- [reason, supported by data]
Current spend: $X -> Recommended: $Y (-Z%)
Expected savings: [amount freed up]
3. TEST: [Channel/tactic] -- [hypothesis to validate]
Budget: $X for [duration]
Success metric: [what to measure]
SEQUENCE RECOMMENDATIONS:
===
1. Prioritize [channel] as first touch for [segment]
2. Ensure [channel] is always in the path -- linear model shows consistent contribution
3. [Channel] is most effective as the final touch before conversion
Phase 7: Output
Return structured JSON:
{
"attribution_report": {
"analysis_date": "2024-03-15",
"data_summary": {
"total_leads": 150,
"converted_leads": 45,
"total_revenue": "$225,000",
"total_touchpoints_analyzed": 487,
"average_touches_to_conversion": 4.2,
"date_range": "2024-01-01 to 2024-03-15"
},
"models": {
"first_touch": { "channel_scores": {} },
"last_touch": { "channel_scores": {} },
"linear": { "channel_scores": {} },
"time_decay": { "channel_scores": {}, "half_life_days": 7 },
"u_shaped": { "channel_scores": {} }
},
"consensus_ranking": [
{ "channel": "cold_email", "consensus_score": 19200, "consensus_roi": "19.2x" }
],
"top_conversion_paths": [],
"drop_off_analysis": {},
"channel_roi": {},
"recommendations": {
"increase": [],
"decrease": [],
"test": [],
"sequence_changes": []
}
}
}
Example Usage
Trigger phrases:
- "Run attribution analysis on our pipeline"
- "Which channel is driving the most revenue?"
- "Compare first-touch vs last-touch attribution"
- "Analyze our marketing touchpoints for Q1"
- "What's the ROI of our cold email vs LinkedIn ads?"
- "Show me the conversion paths for our best deals"
User: Run attribution analysis on our Q1 pipeline
Assistant: [pulls touchpoint data from CRM, applies 5 models, builds comparison matrix, identifies cold email as highest ROI channel, recommends increasing email volume and testing LinkedIn content changes]
User: Which channel should we invest more in?
Assistant: [runs full attribution, finds LinkedIn drives discovery but email closes deals, recommends maintaining LinkedIn for awareness and doubling email follow-up sequences]
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- attribution by coreyhaines31 · 46,928
- serp-analyzer by OpenClaudia · 677
- copywriting-analyzer by Othmane-Khadri · 290
- utm-attribution-strategy by thatrebeccarae · 130
- objection-analyzer by LaGrowthMachine · 34
- campaign-impact-analyzer by LaGrowthMachine · 34
- call-analyzer by octavehq · 11
- market-analyzer by varunk130 · 5
Need help setting it up?
This page tells you what attribution-analyzer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.