# Quarterly attribution readout: pipeline by channel, checked against the CRM

Source: https://mcpforgtm.com/recipes/attribution-readout (StackMCP, independent directory of official MCP servers)

## Goal

Marketing leaders who need a quarterly pipeline-by-channel number they can defend, with deal counts checked against the CRM before anyone sees it. HubSpot can be swapped for Salesforce, Attio or Pipedrive.

## Connected tools

- HockeyStack: https://mcp.hockeystack.com/mcp (setup: https://mcpforgtm.com/tools/hockeystack)
- HubSpot: https://mcp.hubspot.com (setup: https://mcpforgtm.com/tools/hubspot)
- Slack: https://mcp.slack.com/mcp (setup: https://mcpforgtm.com/tools/slack)

## Guardrails

- Read only in HockeyStack and HubSpot. Preview reports instead of saving them.
- Create or update a HockeyStack report only after I approve it.
- Keep sourced and influenced pipeline separate. Never add up influenced pipeline.
- Show me the CRM check before the summary, and list any deals that don't match.
- Post to Slack only after I approve the exact text. Keep the post to totals and channels, with deal names only in the gaps list I review.

## Steps

1. Search my HockeyStack reports and dashboards for pipeline sourced or influenced by channel. List each one with its name and, where it's shown, the date range and attribution settings. Don't create or change anything.
2. Using {report name}, show me pipeline sourced and influenced by channel for {quarter}, with deal count and amount for each, in separate columns. If no saved report fits, preview one for {quarter} and show me its definition. Don't save it.
3. Cross-check the deal counts in HubSpot: find deals in {pipeline} created in {quarter} and compare the count with HockeyStack's deals for the same range. Show me a table, and list by name any deal that's in one and not the other. Don't change any records.
4. Draft a short Slack post for {channel} with the channel table totals, one line on what changed since last quarter, and a note on any deals that didn't reconcile. Post it only after I approve it. If I ask to save the previewed report in HockeyStack, do that only after I approve it too.

## Expected output

Readout table, CRM check and the Slack post waiting for approval. Example (all names fictional):

```
Report: 'Pipeline by channel, Q3' (saved HockeyStack report, Jul 1 to Sep 30)
Company: Mossgate Labs (fictional)

Channel        Sourced          Influenced
Paid search    9 deals, $310K   21 deals, $890K
Events         6 deals, $420K   14 deals, $760K
Organic        11 deals, $280K  25 deals, $640K
Partners       4 deals, $190K   7 deals, $330K
Outbound       12 deals, $510K  18 deals, $700K

CRM check
HockeyStack: 42 sourced deals. HubSpot (deals created Jul 1 to Sep 30, New Business pipeline): 45.
3 HubSpot deals missing from HockeyStack: Larkspur Freightworks (fictional) $40K, Quarry Lane Analytics (fictional) $25K, Ashgrove Dental Group (fictional) $18K. All 3 were created by import on Sep 29.

Draft Slack post for #marketing-leadership (not posted):
Q3 pipeline by channel: 42 sourced deals, $1.71M. Outbound and events led on sourced amount. Influenced totals count a deal in every channel that touched it, so they add up to more than total pipeline. 3 deals created by import on Sep 29 are not in the attribution data yet.

No HockeyStack reports were created or changed. Reply 'post' to send.
```

## Watch for

- Influenced pipeline counted as if it adds up: A deal touched by three channels shows up as influenced in all three. Keep sourced and influenced in separate columns, and never sum the influenced column into a total.
- Different date logic in each tool: A report built on close date or touch date won't match a CRM count built on create date. Ask for the date field and range the report uses, and use the same one in the HubSpot query.
- Deal counts that don't reconcile: Ask for the deals that are in one tool and not the other, by name. If the gap is more than a few deals, find the cause (imports, a filtered pipeline, a sync delay) before you post anything.
- A report changed by accident: HockeyStack's MCP can create and update reports, and other people may rely on a saved report. Use preview for anything new, and say 'don't save' in each prompt until you've decided.
