NewRead our latest case study, published by Google Read it here

Workflow · Attribution

Full-funnel deal journey
in one Claude query.

A copy-paste prompt that reconstructs every touchpoint a contact had before converting, impression → click → anonymous visit → form → contact → MQL → SQL → opportunity → closed-won. Reads across Google Ads, LinkedIn Ads, and HubSpot in a single conversation through the free Growthspree MCP.

Channels unified per query
3chChannels unified per query
Attribution models compared
5modelsAttribution models compared
Typical touchpoints per deal
4-7tpTypical touchpoints per deal
Runtime after first setup
2minRuntime after first setup

01The Problem in 60 Seconds

Every deal has a story.
Your CRM only tells you the last page.

HubSpot logs the deal as "Paid Search." But that contact saw 14 LinkedIn Sponsored Content impressions over 60 days, read three blog posts, watched a webinar, then finally Googled your brand name and clicked a paid search ad. Google gets the credit. LinkedIn, content, and webinar marketing get nothing.

The fix is simple in concept: reconstruct the full journey using data from every touchpoint system. In practice, it has meant 4–6 hours per deal of CSV exports, pivot tables, and guesswork. Most teams stopped trying years ago.

This workflow makes that reconstruction a 90-second Claude query. One prompt reads across Google Ads, LinkedIn Ads, and HubSpot in parallel, matches touchpoints by contact ID, cookie, and click ID, and returns the complete journey, plus five attribution models side-by-side so you can see where the models disagree. The disagreement is where your budget decisions sit.

02The Prompt

Copy this prompt into
Claude Desktop.

Change the gold variables based on what you want to analyze: a single deal ID, a cohort, or a blanket 90-day view. Everything else stays as-is.

claude_desktop, deal_journey_prompt.md
RoleYou are reconstructing the full multi-channel deal journey for [ACCOUNT_NAME]. Most CRMs show only the last-touch source, hiding the 4–7 earlier touchpoints that actually shaped the deal. Your job is to surface the complete journey and expose where attribution models disagree.

ScopeAnalyze: [single_deal_id | cohort | all_closed_won_last_90_days]
Time window: [90 days] (extend to 180 for enterprise cycles)

Task1. Pull HubSpot deal and contact data via growthspree-mcp hubspot connector. Include: deal ID, amount, close date, stage history, contact ID, email, company, original source, recent source, GCLID, li_fat_id, page view history.

2. Pull Google Ads touchpoints for each contact via growthspree-mcp google_ads connector. Match by GCLID first, then by email-to-Customer-Match, then by date-proximity. Include: campaign, ad group, keyword, impression date, click date, conversion action.

3. Pull LinkedIn Ads touchpoints for each contact via growthspree-mcp linkedin_ads connector. Match by li_fat_id, then by Lead Gen Form email, then by company-level targeting overlap. Include: campaign, impression date, engagement type, content asset.

4. Reconstruct the full journey per deal:
   • Order all touchpoints chronologically
   • Identify the impression-to-first-visit lag
   • Identify the first-visit-to-form-fill lag
   • Identify the form-fill-to-close lag
   • Tag every touchpoint as assist, first-touch, or last-touch

5. Apply five attribution models to each deal and return side-by-side:
   • First-touch (100% to first touch)
   • Last-touch (100% to last touch: HubSpot default)
   • Linear (equal weight across all touchpoints)
   • W-shaped (30% first, 30% lead creation, 30% opportunity, 10% middle)
   • U-shaped (40% first, 40% conversion, 20% middle)

Output formatFor each deal analyzed:
- Chronological timeline of all touchpoints with channel, asset, and date
- Attribution breakdown across the 5 models side-by-side
- Highlight models that disagree most (biggest budget-decision risk)
- One-line channel-mix narrative ("Journey: LinkedIn nurture → brand search → content download → demo")

For cohort analysis, aggregate: average touchpoints per deal, % of deals where last-touch disagrees with W-shaped, top 3 assist channels by revenue contribution.

End with a recommendationBased on where models disagree most, propose one specific budget reallocation and explain the reasoning in CFO-readable language.

// If a contact has no GCLID or li_fat_id, match by email to Google Customer Match lists and LinkedIn Matched Audiences.
// For pre-conversion anonymous visits, use the HubSpot tracking cookie to link back to the eventual contact.
// If touchpoints span multiple browsers/devices, note it as a caveat in the output.

Three connectors required. This prompt calls Google Ads, LinkedIn Ads, and HubSpot. All three come bundled in the free Growthspree MCP, one authentication flow covers them all. See section 04 for the 4-step install.

03What Claude Returns

A journey. A timeline.
A budget decision.

Sample single-deal output from a mid-market B2B SaaS account. Real structure, illustrative numbers. Notice how different attribution models tell different stories for the same deal.

Claude · via Growthspree MCP

Pulling touchpoints from all three platforms. Running in parallel.

growthspree.hubspot.get_deal { id: 47829, include: [contacts, timeline] }
growthspree.google_ads.get_touchpoints { match: [gclid, email, customer_match], window: 90d }
growthspree.linkedin_ads.get_touchpoints { match: [li_fat_id, email, matched_audience], window: 90d }

Reconstructing journey for Deal #47829, Acme Corp · $42,000 · Closed-Won. Contact: VP RevOps. 6 touchpoints across 67 days.

Deal Journey · Acme Corp · 67 days $42,000
  1. Day 0 · Feb 12LinkedIn Ads
    First impression · Thought Leadership post Sponsored content · "The RevOps stack modernization playbook" · no click
  2. Day 7 · Feb 19LinkedIn Ads
    Second impression · Document Ad ICP Playbook · viewed 2 minutes · no click
  3. Day 14 · Feb 26Organic
    Brand search · "[company] revops" Anonymous visit · 4 page views including /platform, /pricing, /case-studies
  4. Day 28 · Mar 12Google Ads
    Click · brand campaign Keyword: "[company] pricing" · $14.80 CPC · landed on /pricing
  5. Day 31 · Mar 15Google Ads
    Form submission · Book a Demo GCLID captured · HubSpot contact created · original_source = Paid Search
  6. Day 67 · Apr 20Direct sales
    Closed-won · $42,000 ACV · annual contract 36 days from first contact to close · 2 discovery calls · 1 demo · 1 contract review

Attribution models side-by-side:

$42,000 revenue · allocated by model
ModelLinkedIn AdsOrganic SearchGoogle Ads
Last-touch (HubSpot default)$0$0$42,000
First-touch$42,000$0$0
Linear (5 marketing touchpoints)$16,800$8,400$16,800
W-shaped (30/30/30/10)$16,800$4,200$21,000
U-shaped (40/40/20)$19,600$2,800$19,600
The disagreement is the insight. HubSpot credits Google Ads with $42K. First-touch credits LinkedIn with $42K. The truth sits in the middle, LinkedIn's two early impressions seeded the category, organic/brand search confirmed interest, Google Ads closed the click. Budget recommendation: Keep Google Ads brand budget flat. It's the closer. Increase LinkedIn awareness budget 20%. It's the opener, and the last-touch model is hiding its contribution. Journey summary: LinkedIn impression → brand search → Google Ads click → demo → close.
TIME ELAPSED: 94 SECONDS · SAME ANALYSIS MANUALLY: 4-6 HOURS

04Setup

Four steps. About ten minutes.

First-time setup only. Every subsequent run takes 3–5 minutes because Claude runs the three platform queries in parallel.

  1. Install · 3 min

    Install the free Growthspree MCP

    Head to growthspreeofficial.com/mcp. Click install and authorize the OAuth flow. One flow grants Claude read access to Google Ads, LinkedIn Ads, and HubSpot, the three you need for this workflow.

    Install now
  2. Verify · 1 min

    Confirm all three connectors are live

    Open Claude Desktop. Click the tools icon. You should see growthspree-mcp with google_ads, linkedin_ads, and hubspot all showing green. If any of the three shows red, re-run the OAuth flow for that specific platform.

  3. Paste & configure · 2 min

    Paste the prompt and pick your scope

    Copy the prompt from section 02. Replace [ACCOUNT_NAME]. Choose your scope: a single deal ID for one story, a cohort for a pattern, or all_closed_won_last_90_days for a full view. Extend the window to 180 days if your sales cycle runs enterprise.

  4. Review · 4 min

    Review the output and save the journey

    Claude returns the chronological journey, the 5-model attribution comparison, and one concrete budget recommendation in 90–120 seconds. Save the output as markdown for your next CFO conversation. Re-run monthly to track how the journey pattern evolves, the first-touch-to-close lag is the best forward indicator of sales cycle health.

05Prompt Variations

Three ways to cut the same data.

Same underlying prompt, different angle. Useful for win stories, loss post-mortems, and segment-level strategy.

  • 01 / Closed-lost post-mortem

    Trace the journey for deals that died

    Pipe the same prompt against closed-lost deals. Surface the channel mix that's bringing in deals that won't close, usually a sign the ICP filter or messaging is off somewhere in the journey.

    Tweak

    Change scope to all_closed_lost_last_90_days. Add: "Compare channel mix of closed-lost deals vs closed-won. Flag overrepresented channels."

  • 02 / Win-story memo

    Auto-draft the win-story one-pager

    For each closed-won deal, have Claude write a narrative paragraph: useful for sales all-hands, QBR decks, or case study raw material. Turns a data dump into a story.

    Tweak

    Append: "For each deal, write a 100-word narrative paragraph of the journey in plain English, suitable for a sales all-hands or case study."

  • 03 / ICP-segment cohorts

    Break journeys down by ICP segment

    Different ICP segments have radically different journey shapes. Enterprise buyers take 8 touchpoints. Mid-market takes 4. SMB takes 2. Have Claude cohort the analysis by segment.

    Tweak

    Add: "Cohort the analysis by ICP segment from HubSpot. Return one journey profile per segment (Enterprise, Mid-Market, SMB) with average touchpoints and top channel mix."

FAQ

Quick answers on the workflow.

What does this full-funnel deal journey workflow do?

This Claude prompt reads across Google Ads, LinkedIn Ads, and HubSpot in one conversation and returns the complete touchpoint sequence for any deal, impression → click → anonymous visit → form → contact → MQL → SQL → opportunity → closed-won. It also shows the channel contribution to each stage so you can see which channels assist versus which drive the last touch. Typical output covers 4–7 touchpoints per deal across 60–90 days.

How is this different from the LinkedIn Ads attribution workflow?

The LinkedIn attribution workflow measures a single channel's dark-funnel contribution. This full-funnel workflow reconstructs the entire multi-channel buyer journey across Google Ads, LinkedIn Ads, and HubSpot together. Use LinkedIn attribution when you need to defend or allocate LinkedIn budget specifically. Use full-funnel deal journey when you need to understand how all your paid channels combine to produce a closed-won deal.

Can I run this for a single deal or do I need a cohort?

Both work. You can pass a single HubSpot deal ID and get the full touchpoint reconstruction for that specific deal. Or you can specify a cohort (all closed-won deals in the last 90 days, or all deals above a certain ACV) and get aggregated channel contribution across the cohort. Single-deal analysis is useful for CFO conversations and win stories. Cohort analysis is useful for budget planning.

Does this require offline conversion tracking to work?

No, offline conversion tracking is not a prerequisite. This workflow reconstructs the journey from impression and click data on the ad side plus contact and deal data on the CRM side, without needing offline conversion events flowing back to the platforms. That said, if you do have offline conversion tracking configured, the analysis is sharper because platform algorithms have been learning from revenue signals, and the workflow will reference that data when present.

What attribution models does this workflow support?

The prompt returns first-touch, last-touch, linear, W-shaped, and U-shaped attribution side-by-side for the same journey, so you can see how the story changes depending on the model. Most B2B SaaS teams find that W-shaped and linear attribution tell a fundamentally different story from last-click. The workflow calls out where the models disagree most, which is typically where the biggest budget-decision risk sits.

How accurate is the touchpoint reconstruction for anonymous visits?

The workflow reconstructs anonymous touchpoints through two signals: the HubSpot tracking cookie that links pre-form page views to the eventual contact record once the form fires, and the ad-platform first-party identifiers (GCLID, li_fat_id) captured on form submission. Anonymous visits from different browsers or devices than the one that submitted the form are not captured, that's a limitation of any attribution system, not something unique to this workflow.

How long does this take to run?

First run takes about 20 minutes end-to-end, 10 minutes to install and authenticate the Growthspree MCP, 10 minutes for Claude to run the multi-platform queries and return the output. Subsequent runs take 3-5 minutes because the connections are already authenticated and Claude can run platform queries in parallel. This replaces a half-day of CSV exports and spreadsheet joins.

Pick a time with a senior operator

Thanks. We have your email.

Calendar not loading? Open it in a new tab