Workflow · Attribution ~20 min setup Google Ads · LinkedIn Ads · HubSpot · MCP

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.

3ch
Channels unified per query
5models
Attribution models compared
4-7tp
Typical touchpoints per deal
2min
Runtime after first setup
01 The 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.

02 The 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.
i
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.
03 What 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
Day 0 · Feb 12 LinkedIn Ads
First impression · Thought Leadership post
Sponsored content · "The RevOps stack modernization playbook" · no click
Day 7 · Feb 19 LinkedIn Ads
Second impression · Document Ad
ICP Playbook · viewed 2 minutes · no click
Day 14 · Feb 26 Organic
Brand search · "[company] revops"
Anonymous visit · 4 page views including /platform, /pricing, /case-studies
Day 28 · Mar 12 Google Ads
Click · brand campaign
Keyword: "[company] pricing" · $14.80 CPC · landed on /pricing
Day 31 · Mar 15 Google Ads
Form submission · Book a Demo
GCLID captured · HubSpot contact created · original_source = Paid Search
Day 67 · Apr 20 Direct 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
Model
LinkedIn Ads
Organic Search
Google Ads
Last-touch (HubSpot default)
$0
$0
$42,000
First-touch
$42,000
$0
$0
Linear (6 touchpoints)
$14,000
$7,000
$14,000
W-shaped (30/30/30/10)
$16,800
$4,200
$21,000
U-shaped (40/40/20)
$16,800
$4,200
$21,000
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
04 Setup

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.

01
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 →
02
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.

03
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.

04
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.

05 Prompt 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."
07 Frequently Asked

Quick answers on the workflow.

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.
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.
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.
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.
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.
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.
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.

Run this workflow
this week.

Install the free Growthspree MCP, paste the prompt, reconstruct a deal journey in under 20 minutes. Or have senior GrowthSpree operators implement and run it monthly as part of your RevOps cadence.

300+ Accounts on MCP
4.9/5 G2
Google & HubSpot Partner
Month-to-Month