Tracks how many appointments each ad campaign produced. Use it to allocate spend toward campaigns that book the most intros and discoveries.
Intros Booked — meetings classified as "intro" (or "Investor Success Profile" / "ISP"), counted by booking date (hs_createdate) within the selected range.
Discoveries Booked — meetings classified as "discovery" (HubSpot enum types Discovery Call - Main or Discovery Call - Setters), counted by booking date.
Classification logic matches the setter and closer dashboards exactly, so totals reconcile.
First-touch attribution from the meeting's primary contact:
1. hs_analytics_source_data_2 (Drill Down 2) — the campaign or ad name. Most specific.
2. If empty, fall back to hs_analytics_source_data_1 (Drill Down 1) — the platform (e.g., "Facebook").
3. If both empty, fall back to hs_analytics_source (Original Source) — e.g., "Paid Social", "Direct Traffic".
4. If all three are empty, the row appears as (not set).
Each row's badge tells you which level of attribution it is: DD2 (campaign-specific), DD1 (platform only), or SRC (source only). DD2 rows are the most actionable — you know which specific campaign drove the appointment.
Many leads have empty Drill Down 2 — older contacts, leads from sources without UTM tracking, manual entries. Showing them at the platform/source level keeps the totals honest. They reconcile against the setter and closer dashboards.
The dashboard also treats purely numeric DD2 values as malformed (a defunct integration left HubSpot user IDs stamped on some older contacts) and falls back to DD1 for those. Real campaign names are typically alphabetic or alphanumeric.
Discoveries Booked descending (the higher-value metric), with Intros Booked as tiebreaker. (not set) rows sink to the bottom regardless of count.
Cost per intro / discovery — pending. The ad spend Google Sheet currently only tracks daily platform totals (Meta/Google/LinkedIn), not per-campaign breakdown. Cost-per columns will be added once campaign-level spend is available.
Funded investments — deferred to a later version. Investment attribution should arguably use the Closed Won milestone-stamped property (traffic_source_2_before_closed_won) rather than first-touch, which is a separate design decision.
Cache — this dashboard fetches live from HubSpot every load (no R2 cache). Loads can take 30–90 seconds for "Last 12 months."