A full-funnel dashboard integrates data from Google Analytics 4, HubSpot, and Salesforce to track the complete customer journey from website visit to closed deal. It provides unified visibility across marketing, sales, and revenue operations teams.
Most companies struggle with data silos - marketing teams analyze GA4 data, sales teams work in Salesforce, and no one has a complete picture of customer acquisition and conversion. This fragmentation leads to:
Companies implementing unified full-funnel dashboards typically see:
With Airbook's no-code platform, most companies complete their full-funnel dashboard setup in 2-4 weeks:
What it provides: Website traffic, events, conversions, attribution, and user behavior data across your entire funnel
What it provides: Leads, contacts, marketing campaigns, email metrics, and marketing automation data
What it provides: Opportunities, accounts, sales activities, revenue data, and complete sales pipeline tracking
What it provides: Data integration, SQL workspace, cross-platform analytics, and automated reporting without engineering
Set up connections to all three platforms with proper permissions and data access:
Define how customers move through your funnel and connect identities across platforms:
Create cross-platform metrics that give you complete funnel visibility:
Create dashboards tailored to different stakeholders' needs:
Successful full-funnel dashboards require careful mapping of how data flows between GA4, HubSpot, and Salesforce. Here's how to structure your data relationships for maximum insight.
Identifier | GA4 | HubSpot | Salesforce |
---|---|---|---|
Email Address | User ID (when logged in) | Primary contact identifier | Contact/Lead email |
UTM Parameters | Campaign tracking | Original source data | Lead source fields |
Client ID | GA4 client identifier | HubSpot tracking code | External ID fields |
Phone Number | N/A | Contact property | Contact/Lead phone |
Here are comprehensive SQL queries to build your full-funnel dashboard, connecting data across GA4, HubSpot, and Salesforce.
-- Full Funnel Performance Dashboard
WITH funnel_data AS (
-- GA4 Traffic Data
SELECT
DATE_TRUNC('month', event_date) AS month,
traffic_source.source AS source,
traffic_source.medium AS medium,
traffic_source.campaign AS campaign,
COUNT(DISTINCT user_pseudo_id) AS website_visitors,
COUNTIF(event_name = 'form_submit') AS form_submissions,
COUNTIF(event_name = 'purchase' OR event_name = 'generate_lead') AS ga4_conversions
FROM ga4_events
WHERE event_date >= '2024-01-01'
GROUP BY month, source, medium, campaign
),
hubspot_leads AS (
-- HubSpot Lead Data
SELECT
DATE_TRUNC('month', createdate) AS month,
original_source_type AS source,
original_source_data_1 AS medium,
original_source_data_2 AS campaign,
COUNT(*) AS total_leads,
COUNTIF(lifecyclestage = 'marketingqualifiedlead') AS mqls,
COUNTIF(lifecyclestage = 'salesqualifiedlead') AS sqls,
COUNT(DISTINCT CASE WHEN dealstage IS NOT NULL THEN contact_id END) AS leads_to_opportunities
FROM hubspot_contacts c
LEFT JOIN hubspot_deals d ON c.contact_id = d.primary_contact_id
WHERE c.createdate >= '2024-01-01'
GROUP BY month, source, medium, campaign
),
salesforce_opportunities AS (
-- Salesforce Opportunity Data
SELECT
DATE_TRUNC('month', o.createddate) AS month,
l.leadsource AS source,
l.lead_source_detail__c AS medium,
l.utm_campaign__c AS campaign,
COUNT(*) AS total_opportunities,
COUNT(CASE WHEN o.stagename = 'Closed Won' THEN 1 END) AS closed_won_deals,
SUM(CASE WHEN o.stagename = 'Closed Won' THEN o.amount ELSE 0 END) AS total_revenue,
AVG(CASE WHEN o.stagename = 'Closed Won' THEN o.amount END) AS avg_deal_size
FROM salesforce_opportunities o
JOIN salesforce_leads l ON o.lead_id__c = l.id
WHERE o.createddate >= '2024-01-01'
GROUP BY month, source, medium, campaign
),
combined_funnel AS (
SELECT
COALESCE(f.month, h.month, s.month) AS month,
COALESCE(f.source, h.source, s.source) AS source,
COALESCE(f.medium, h.medium, s.medium) AS medium,
COALESCE(f.campaign, h.campaign, s.campaign) AS campaign,
-- Funnel Metrics
COALESCE(f.website_visitors, 0) AS website_visitors,
COALESCE(f.form_submissions, 0) AS form_submissions,
COALESCE(h.total_leads, 0) AS total_leads,
COALESCE(h.mqls, 0) AS mqls,
COALESCE(h.sqls, 0) AS sqls,
COALESCE(s.total_opportunities, 0) AS total_opportunities,
COALESCE(s.closed_won_deals, 0) AS closed_won_deals,
COALESCE(s.total_revenue, 0) AS total_revenue,
COALESCE(s.avg_deal_size, 0) AS avg_deal_size
FROM funnel_data f
FULL OUTER JOIN hubspot_leads h ON f.month = h.month
AND f.source = h.source
AND f.medium = h.medium
AND f.campaign = h.campaign
FULL OUTER JOIN salesforce_opportunities s ON COALESCE(f.month, h.month) = s.month
AND COALESCE(f.source, h.source) = s.source
AND COALESCE(f.medium, h.medium) = s.medium
AND COALESCE(f.campaign, h.campaign) = s.campaign
)
SELECT
month,
source,
medium,
campaign,
website_visitors,
total_leads,
mqls,
sqls,
total_opportunities,
closed_won_deals,
total_revenue,
avg_deal_size,
-- Conversion Rates
ROUND(SAFE_DIVIDE(total_leads, website_visitors) * 100, 2) AS visitor_to_lead_rate,
ROUND(SAFE_DIVIDE(mqls, total_leads) * 100, 2) AS lead_to_mql_rate,
ROUND(SAFE_DIVIDE(sqls, mqls) * 100, 2) AS mql_to_sql_rate,
ROUND(SAFE_DIVIDE(total_opportunities, sqls) * 100, 2) AS sql_to_opportunity_rate,
ROUND(SAFE_DIVIDE(closed_won_deals, total_opportunities) * 100, 2) AS opportunity_to_customer_rate,
-- Overall Conversion Rate
ROUND(SAFE_DIVIDE(closed_won_deals, website_visitors) * 100, 4) AS overall_conversion_rate
FROM combined_funnel
WHERE website_visitors > 0 OR total_leads > 0
ORDER BY month DESC, total_revenue DESC;
-- Multi-Touch Attribution for Revenue
WITH customer_touchpoints AS (
SELECT
sf.contact_email,
sf.opportunity_id,
sf.close_date,
sf.amount,
-- First Touch (GA4)
ga.source AS first_touch_source,
ga.medium AS first_touch_medium,
ga.campaign AS first_touch_campaign,
ga.event_date AS first_touch_date,
-- Lead Creation (HubSpot)
hs.original_source_type AS lead_source,
hs.original_source_data_1 AS lead_medium,
hs.original_source_data_2 AS lead_campaign,
hs.createdate AS lead_create_date,
-- Last Touch Before Opportunity
sf.leadsource AS last_touch_source,
sf.lead_source_detail__c AS last_touch_medium,
sf.utm_campaign__c AS last_touch_campaign
FROM salesforce_opportunities sf
LEFT JOIN hubspot_contacts hs ON sf.contact_email = hs.email
LEFT JOIN (
SELECT
user_id,
MIN(event_date) AS event_date,
FIRST_VALUE(traffic_source.source) OVER (
PARTITION BY user_id ORDER BY event_timestamp ASC
) AS source,
FIRST_VALUE(traffic_source.medium) OVER (
PARTITION BY user_id ORDER BY event_timestamp ASC
) AS medium,
FIRST_VALUE(traffic_source.campaign) OVER (
PARTITION BY user_id ORDER BY event_timestamp ASC
) AS campaign
FROM ga4_events
WHERE user_id IS NOT NULL
GROUP BY user_id
) ga ON sf.contact_email = ga.user_id
WHERE sf.stagename = 'Closed Won'
AND sf.close_date >= '2024-01-01'
),
attribution_revenue AS (
SELECT
'First Touch' AS attribution_model,
first_touch_source AS source,
first_touch_medium AS medium,
first_touch_campaign AS campaign,
COUNT(DISTINCT opportunity_id) AS deals_attributed,
SUM(amount) AS revenue_attributed,
AVG(amount) AS avg_deal_size
FROM customer_touchpoints
WHERE first_touch_source IS NOT NULL
GROUP BY first_touch_source, first_touch_medium, first_touch_campaign
UNION ALL
SELECT
'Lead Creation' AS attribution_model,
lead_source AS source,
lead_medium AS medium,
lead_campaign AS campaign,
COUNT(DISTINCT opportunity_id) AS deals_attributed,
SUM(amount) AS revenue_attributed,
AVG(amount) AS avg_deal_size
FROM customer_touchpoints
WHERE lead_source IS NOT NULL
GROUP BY lead_source, lead_medium, lead_campaign
UNION ALL
SELECT
'Last Touch' AS attribution_model,
last_touch_source AS source,
last_touch_medium AS medium,
last_touch_campaign AS campaign,
COUNT(DISTINCT opportunity_id) AS deals_attributed,
SUM(amount) AS revenue_attributed,
AVG(amount) AS avg_deal_size
FROM customer_touchpoints
WHERE last_touch_source IS NOT NULL
GROUP BY last_touch_source, last_touch_medium, last_touch_campaign
)
SELECT
attribution_model,
source,
medium,
campaign,
deals_attributed,
ROUND(revenue_attributed, 2) AS revenue_attributed,
ROUND(avg_deal_size, 2) AS avg_deal_size,
ROUND(revenue_attributed / SUM(revenue_attributed) OVER (PARTITION BY attribution_model) * 100, 1) AS revenue_share_pct
FROM attribution_revenue
WHERE deals_attributed >= 1
ORDER BY attribution_model, revenue_attributed DESC;
Design your full-funnel dashboard with role-specific views that help each team optimize their part of the customer journey while understanding the complete picture.
Effective funnel visualization helps teams quickly identify bottlenecks, opportunities, and trends across the entire customer journey from first touch to closed deal.
Understanding what your full-funnel dashboard data means and how to act on insights is crucial for optimizing your entire customer acquisition and conversion process.
Funnel Stage | Industry Average | Good Performance | Excellent Performance |
---|---|---|---|
Visitor → Lead | 2-5% | 5-10% | 10%+ |
Lead → MQL | 20-30% | 30-50% | 50%+ |
MQL → SQL | 25-35% | 35-50% | 50%+ |
SQL → Opportunity | 40-60% | 60-80% | 80%+ |
Opportunity → Customer | 15-25% | 25-35% | 35%+ |
Full-funnel dashboards are essential for different teams and company stages. Here's when and how each role should leverage this integrated view.
Use for: Campaign optimization, channel performance, lead quality analysis
Key insight: Which campaigns and channels drive the highest-quality leads that convert to revenue
Use for: Lead source performance, pipeline health, conversion optimization
Key insight: Which lead sources convert best and how to prioritize sales efforts
Use for: Process optimization, attribution modeling, forecasting accuracy
Key insight: End-to-end funnel performance and optimization opportunities
Use for: Strategic decisions, budget allocation, growth planning
Key insight: Overall funnel health and investment ROI across all channels
Building full-funnel dashboards requires careful attention to data quality, integration setup, and stakeholder alignment. Here are the most common pitfalls and how to avoid them.
Use Airbook's native connectors to establish direct API connections with each platform. The integration process involves: (1) OAuth authentication for each data source, (2) selecting relevant tables and fields, (3) configuring data sync schedules, and (4) mapping customer identifiers across systems.
Timeline: Complete setup typically takes 2-3 hours with no technical expertise required.
The primary identifier is email address, which exists in all three systems. Secondary identifiers include: phone numbers, company domains, GA4 client IDs, HubSpot contact IDs, and Salesforce account IDs. UTM parameters and lead source data provide additional context for attribution.
Success rate: Email-based matching typically achieves 85-95% accuracy when data hygiene is maintained.
For real-time decision making, set up hourly syncs for critical data (new leads, opportunity updates). Daily syncs work for historical analysis and reporting. Weekly syncs are sufficient for strategic planning and trend analysis.
Best practice: Start with daily syncs, then optimize based on business needs and data volume.
Core metrics include: (1) Visitor-to-lead conversion rate, (2) Lead-to-opportunity conversion rate, (3) Opportunity-to-customer conversion rate, (4) Average deal size by source, (5) Sales cycle length by channel, (6) Customer acquisition cost (CAC), and (7) Lifetime value (LTV).
Industry benchmark: B2B SaaS companies typically see 2-5% visitor-to-lead, 15-25% lead-to-opportunity, and 25-35% opportunity-to-customer conversion rates.
Multi-touch attribution assigns fractional credit to each touchpoint in the customer journey. Common models include: (1) Linear (equal credit to all touches), (2) Time-decay (more credit to recent touches), (3) U-shaped (high credit to first and last touches), and (4) W-shaped (high credit to first, middle, and last touches).
Recommendation: Start with linear attribution for simplicity, then test time-decay models based on your sales cycle length.
Marketing attribution tracks which channels generate leads and opportunities, while revenue attribution tracks which channels generate actual closed deals and revenue. Revenue attribution provides more accurate ROI calculations but requires longer measurement periods.
Key insight: Channels that generate high-quality leads may differ from those that drive revenue, making both metrics essential.
With Airbook's no-code platform, you need basic understanding of: (1) SQL for custom queries, (2) Your company's data structure across GA4, HubSpot, and Salesforce, (3) Marketing and sales processes for proper metric definition, and (4) Dashboard design principles for effective visualization.
Learning curve: Most marketing ops professionals become proficient in 1-2 weeks with provided templates and training.
Top mistakes include: (1) Inconsistent UTM parameter usage across campaigns, (2) Poor data hygiene leading to matching errors, (3) Overly complex dashboards that confuse users, (4) Inadequate testing of attribution models, and (5) Lack of stakeholder buy-in and training.
Success factor: Start simple with core metrics, ensure data quality, and gradually add complexity based on user feedback.
Implement data validation checks including: (1) Cross-platform record count verification, (2) Spot-checking individual customer journeys, (3) Comparing aggregated metrics with source system reports, (4) Setting up automated data quality alerts, and (5) Regular audit schedules with data stewards.
Industry standard: Aim for 95% data accuracy with monthly validation processes and automated anomaly detection.
Companies typically see 300-500% ROI within 6 months through: (1) 25-40% improvement in marketing efficiency, (2) 15-25% increase in sales conversion rates, (3) 50-70% reduction in reporting overhead, and (4) 20-30% better budget allocation across channels.
Payback period: Most companies recover implementation costs within 2-4 months through improved decision-making and efficiency gains.
Track adoption metrics including: (1) Daily active users by team, (2) Time spent in dashboards per user, (3) Number of data-driven decisions documented, (4) Reduction in ad-hoc reporting requests, and (5) Improvement in forecast accuracy and goal attainment.
Success indicator: 80%+ of marketing and sales team members using dashboards weekly indicates strong adoption.
Most beneficial for companies with: (1) 5+ marketing team members, (2) 10+ sales team members, (3) Multiple marketing channels and campaigns, (4) Sales cycles longer than 30 days, and (5) Annual recurring revenue (ARR) above $1M.
Sweet spot: Series A-B companies with 20-100 employees see the highest impact from unified funnel analytics.
Follow this complete implementation guide to connect GA4, HubSpot, and Salesforce data into unified funnel analytics. Most companies complete setup in 2-4 weeks and see ROI within 2-4 months.