- Add CSS components: .page-meta badges, .domain-header, .install-banner - Fix invisible tab navigation (explicit color for light/dark modes) - Rewrite generate-docs.py with design system templates - Domain indexes: centered headers with icons, install banners, grid cards - Skill pages: pill badges (domain, skill ID, source), install commands - Agent/command pages: type badges with domain icons - Regenerate all 210 pages (180 skills + 15 agents + 15 commands) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
231 lines
8.2 KiB
Markdown
231 lines
8.2 KiB
Markdown
---
|
|
title: "Campaign Analytics"
|
|
description: "Campaign Analytics - Claude Code skill from the Marketing domain."
|
|
---
|
|
|
|
# Campaign Analytics
|
|
|
|
<div class="page-meta" markdown>
|
|
<span class="meta-badge">:material-bullhorn-outline: Marketing</span>
|
|
<span class="meta-badge">:material-identifier: `campaign-analytics`</span>
|
|
<span class="meta-badge">:material-github: <a href="https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/campaign-analytics/SKILL.md">Source</a></span>
|
|
</div>
|
|
|
|
<div class="install-banner" markdown>
|
|
<span class="install-label">Install:</span> <code>claude /plugin install marketing-skills</code>
|
|
</div>
|
|
|
|
|
|
Production-grade campaign performance analysis with multi-touch attribution modeling, funnel conversion analysis, and ROI calculation. Three Python CLI tools provide deterministic, repeatable analytics using standard library only -- no external dependencies, no API calls, no ML models.
|
|
|
|
---
|
|
|
|
## Input Requirements
|
|
|
|
All scripts accept a JSON file as positional input argument. See `assets/sample_campaign_data.json` for complete examples.
|
|
|
|
### Attribution Analyzer
|
|
|
|
```json
|
|
{
|
|
"journeys": [
|
|
{
|
|
"journey_id": "j1",
|
|
"touchpoints": [
|
|
{"channel": "organic_search", "timestamp": "2025-10-01T10:00:00", "interaction": "click"},
|
|
{"channel": "email", "timestamp": "2025-10-05T14:30:00", "interaction": "open"},
|
|
{"channel": "paid_search", "timestamp": "2025-10-08T09:15:00", "interaction": "click"}
|
|
],
|
|
"converted": true,
|
|
"revenue": 500.00
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Funnel Analyzer
|
|
|
|
```json
|
|
{
|
|
"funnel": {
|
|
"stages": ["Awareness", "Interest", "Consideration", "Intent", "Purchase"],
|
|
"counts": [10000, 5200, 2800, 1400, 420]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Campaign ROI Calculator
|
|
|
|
```json
|
|
{
|
|
"campaigns": [
|
|
{
|
|
"name": "Spring Email Campaign",
|
|
"channel": "email",
|
|
"spend": 5000.00,
|
|
"revenue": 25000.00,
|
|
"impressions": 50000,
|
|
"clicks": 2500,
|
|
"leads": 300,
|
|
"customers": 45
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Input Validation
|
|
|
|
Before running scripts, verify your JSON is valid and matches the expected schema. Common errors:
|
|
|
|
- **Missing required keys** (e.g., `journeys`, `funnel.stages`, `campaigns`) → script exits with a descriptive `KeyError`
|
|
- **Mismatched array lengths** in funnel data (`stages` and `counts` must be the same length) → raises `ValueError`
|
|
- **Non-numeric monetary values** in ROI data → raises `TypeError`
|
|
|
|
Use `python -m json.tool your_file.json` to validate JSON syntax before passing it to any script.
|
|
|
|
---
|
|
|
|
## Output Formats
|
|
|
|
All scripts support two output formats via the `--format` flag:
|
|
|
|
- `--format text` (default): Human-readable tables and summaries for review
|
|
- `--format json`: Machine-readable JSON for integrations and pipelines
|
|
|
|
---
|
|
|
|
## Typical Analysis Workflow
|
|
|
|
For a complete campaign review, run the three scripts in sequence:
|
|
|
|
```bash
|
|
# Step 1 — Attribution: understand which channels drive conversions
|
|
python scripts/attribution_analyzer.py campaign_data.json --model time-decay
|
|
|
|
# Step 2 — Funnel: identify where prospects drop off on the path to conversion
|
|
python scripts/funnel_analyzer.py funnel_data.json
|
|
|
|
# Step 3 — ROI: calculate profitability and benchmark against industry standards
|
|
python scripts/campaign_roi_calculator.py campaign_data.json
|
|
```
|
|
|
|
Use attribution results to identify top-performing channels, then focus funnel analysis on those channels' segments, and finally validate ROI metrics to prioritize budget reallocation.
|
|
|
|
---
|
|
|
|
## How to Use
|
|
|
|
### Attribution Analysis
|
|
|
|
```bash
|
|
# Run all 5 attribution models
|
|
python scripts/attribution_analyzer.py campaign_data.json
|
|
|
|
# Run a specific model
|
|
python scripts/attribution_analyzer.py campaign_data.json --model time-decay
|
|
|
|
# JSON output for pipeline integration
|
|
python scripts/attribution_analyzer.py campaign_data.json --format json
|
|
|
|
# Custom time-decay half-life (default: 7 days)
|
|
python scripts/attribution_analyzer.py campaign_data.json --model time-decay --half-life 14
|
|
```
|
|
|
|
### Funnel Analysis
|
|
|
|
```bash
|
|
# Basic funnel analysis
|
|
python scripts/funnel_analyzer.py funnel_data.json
|
|
|
|
# JSON output
|
|
python scripts/funnel_analyzer.py funnel_data.json --format json
|
|
```
|
|
|
|
### Campaign ROI Calculation
|
|
|
|
```bash
|
|
# Calculate ROI metrics for all campaigns
|
|
python scripts/campaign_roi_calculator.py campaign_data.json
|
|
|
|
# JSON output
|
|
python scripts/campaign_roi_calculator.py campaign_data.json --format json
|
|
```
|
|
|
|
---
|
|
|
|
## Scripts
|
|
|
|
### 1. attribution_analyzer.py
|
|
|
|
Implements five industry-standard attribution models to allocate conversion credit across marketing channels:
|
|
|
|
| Model | Description | Best For |
|
|
|-------|-------------|----------|
|
|
| First-Touch | 100% credit to first interaction | Brand awareness campaigns |
|
|
| Last-Touch | 100% credit to last interaction | Direct response campaigns |
|
|
| Linear | Equal credit to all touchpoints | Balanced multi-channel evaluation |
|
|
| Time-Decay | More credit to recent touchpoints | Short sales cycles |
|
|
| Position-Based | 40/20/40 split (first/middle/last) | Full-funnel marketing |
|
|
|
|
### 2. funnel_analyzer.py
|
|
|
|
Analyzes conversion funnels to identify bottlenecks and optimization opportunities:
|
|
|
|
- Stage-to-stage conversion rates and drop-off percentages
|
|
- Automatic bottleneck identification (largest absolute and relative drops)
|
|
- Overall funnel conversion rate
|
|
- Segment comparison when multiple segments are provided
|
|
|
|
### 3. campaign_roi_calculator.py
|
|
|
|
Calculates comprehensive ROI metrics with industry benchmarking:
|
|
|
|
- **ROI**: Return on investment percentage
|
|
- **ROAS**: Return on ad spend ratio
|
|
- **CPA**: Cost per acquisition
|
|
- **CPL**: Cost per lead
|
|
- **CAC**: Customer acquisition cost
|
|
- **CTR**: Click-through rate
|
|
- **CVR**: Conversion rate (leads to customers)
|
|
- Flags underperforming campaigns against industry benchmarks
|
|
|
|
---
|
|
|
|
## Reference Guides
|
|
|
|
| Guide | Location | Purpose |
|
|
|-------|----------|---------|
|
|
| Attribution Models Guide | `references/attribution-models-guide.md` | Deep dive into 5 models with formulas, pros/cons, selection criteria |
|
|
| Campaign Metrics Benchmarks | `references/campaign-metrics-benchmarks.md` | Industry benchmarks by channel and vertical for CTR, CPC, CPM, CPA, ROAS |
|
|
| Funnel Optimization Framework | `references/funnel-optimization-framework.md` | Stage-by-stage optimization strategies, common bottlenecks, best practices |
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
1. **Use multiple attribution models** -- Compare at least 3 models to triangulate channel value; no single model tells the full story.
|
|
2. **Set appropriate lookback windows** -- Match your time-decay half-life to your average sales cycle length.
|
|
3. **Segment your funnels** -- Compare segments (channel, cohort, geography) to identify performance drivers.
|
|
4. **Benchmark against your own history first** -- Industry benchmarks provide context, but historical data is the most relevant comparison.
|
|
5. **Run ROI analysis at regular intervals** -- Weekly for active campaigns, monthly for strategic review.
|
|
6. **Include all costs** -- Factor in creative, tooling, and labor costs alongside media spend for accurate ROI.
|
|
7. **Document A/B tests rigorously** -- Use the provided template to ensure statistical validity and clear decision criteria.
|
|
|
|
---
|
|
|
|
## Limitations
|
|
|
|
- **No statistical significance testing** -- Scripts provide descriptive metrics only; p-value calculations require external tools.
|
|
- **Standard library only** -- No advanced statistical libraries. Suitable for most campaign sizes but not optimized for datasets exceeding 100K journeys.
|
|
- **Offline analysis** -- Scripts analyze static JSON snapshots; no real-time data connections or API integrations.
|
|
- **Single-currency** -- All monetary values assumed to be in the same currency; no currency conversion support.
|
|
- **Simplified time-decay** -- Exponential decay based on configurable half-life; does not account for weekday/weekend or seasonal patterns.
|
|
- **No cross-device tracking** -- Attribution operates on provided journey data as-is; cross-device identity resolution must be handled upstream.
|
|
|
|
## Related Skills
|
|
|
|
- **analytics-tracking**: For setting up tracking. NOT for analyzing data (that's this skill).
|
|
- **ab-test-setup**: For designing experiments to test what analytics reveals.
|
|
- **marketing-ops**: For routing insights to the right execution skill.
|
|
- **paid-ads**: For optimizing ad spend based on analytics findings.
|