Where Every Number Comes From

Data provenance for the tracker, Speed to Lead dashboard, and Answer Rate report. All reports
Refresh cadence: Solar CEOs stage changes arrive live (GHL webhook). Everything else refreshes nightly ~12:00 AM ET (full GHL reconciliation) and the Answer Rate report rebuilds ~12:25 AM ET from JustCall. Winter: one hour earlier (11 PM ET).

Tracker table (renu-tracker.solarceos.com)

ColumnSource of truth
Lead DateGHL contact "Created" date — when the contact first existed in GHL.
Appointment DateOpportunity "Appt Time" field in GHL; when that's empty (a GHL workflow race sometimes loses it), the contact's real GHL calendar appointment.
Lead Name / PhoneGHL contact record.
Setter / CloserEntered by the team in the tracker's editable era — frozen since Aug 12 (tracker is read-only now).
Source / SourcesGHL contact field "Lead Sources" (can hold several; first one is the primary).
GHL StageThe card's live stage in the unified pipeline — exact GHL names.
GHL Status + lost reasonThe opportunity's outcome in GHL (open / won / lost / abandoned). When lost, the reason chosen from GHL's lost-reason list — written manually by the team or automatically by call dispositions (since Aug 12).
StatusComputed from GHL Stage + Status via a fixed mapping (e.g. lost + post-appointment stage → "DQ Post-Appt"). Never hand-edited.
Journey dates (Contacted, Appt Set, Showed, No Show, DQ, Closed)Stamped when the tracker first sees the change — instantly for Solar CEOs (webhook), otherwise at the nightly sync (so ±1 day). Appointment-related dates were re-anchored Aug 12 to the calendar event's real booking date; historical cards with no calendar record show blank rather than a guess.
DQ Reason (Pre/Post)Legacy hand-typed fields from the manual era — frozen, not synced. Trust the red reason under LOST instead.
GHL NotesThe contact's real GHL notes (call summaries, closer notes), newest first, HTML stripped, empty note shells skipped. Appointment and lost cards refresh on a nightly rotation (~150/night).
KPI tilesCounts of GHL Stage among the filtered rows; WON/LOST tiles count the GHL opportunity status.

Speed to Lead dashboard (/dashboard.html)

MetricSource of truth
LeadsContacts created in the date range (GHL contact "Created"). Sales Recovery pipeline excluded (historical dump).
DialledA first outbound call exists in the contact's GHL conversation — JustCall calls are logged there automatically. A call from a personal phone or ViciDial does NOT count (it never reaches GHL).
ReachedStage evidence that a conversation happened (Responsive or further). Dialled ≠ Reached on purpose.
Appts / Sat / ClosedStage + status families from GHL (same mapping as the tracker Status).
Speed to leadFirst outbound call time − contact created time, median. Inbound sources only — purchased/dialer lists are excluded because the call precedes the record. "Biz hours" = leads arriving 8 AM–8 PM ET; "all" includes overnight leads called next morning.
Performance by sourceAll of the above, grouped by the GHL "Lead Sources" field.
Cost / CPLHand-entered daily spend (Spend tab, PIN-gated). Nothing pulls from ad platforms yet.

Answer Rate report (/answer-rate.html)

MetricSource of truth
Campaign / agent tablesJustCall sales-dialer call log, last 7 days, pulled nightly. "Human pickup" is JustCall's own classification of who answered — treat as a floor and fair for comparisons, not per-call gospel.
Inbound linesJustCall line calls (incoming): answered vs missed per line.
DispositionsWhat setters picked in JustCall after each dialer call.

ViciDial is invisible to every report until we get access — Eddie's Vici calls appear nowhere here.

Spot-Check (/verify.html)

5 random recent leads straight from the tracker database with one-click GHL links — so anyone can verify the numbers above against GHL at any time. Fresh sample every visit.