← Reports Hub 📚 Library

๐Ÿ› ๏ธ Build Playbook ยท Prepared 2026-04-14 ยท For Robert

๐Ÿ“Š HCP Reports Build Playbook

Micro-steps to pull the three priority reports inside Housecall Pro. Honest upfront: I have not seen the HCP UI myself, so each report shows the likely path to try first and a fallback if the UI does not expose it. Fill in the blank lines as you click, so the next person using this doc has confirmed paths. Rate limit on any API fallback: 2 seconds between calls, never skip.

๐Ÿšฆ Pre-Flight โ€” Do These Once Before Any Report

  1. ๐Ÿ”‘ Log into BSP HCP. URL: โ€” fill in after first login โ€” ยท Credentials: โ€” from memory/reference-hcp-export-location.md or ask Kalen โ€”. Ashton has no access. You and Kalen are the only BSP HCP admins.
  2. ๐Ÿ”Ž Confirm customer count. Navigate to Customers (sidebar). Note the total shown. Compare to our export (4,271). If HCP UI shows 4,771, we need a second export with the correct filter to reconcile.
  3. ๐Ÿงญ Find the Reports menu. Kassidy and Ashton both said HCP reports are per-employee and built manually. Try: top nav โ†’ Reports OR sidebar โ†’ Reports OR Settings โ†’ Reports. Document the path in the blank below: โ€” Reports menu location โ€”
  4. ๐Ÿ“ฅ Verify export format options. When viewing a report or customer list, look for CSV / XLSX export buttons. Note: โ€” formats available โ€”
  5. ๐Ÿ” Check if HCP has a public API you can use in parallel. HCP has a Developer API (docs.housecallpro.com). If yes, the API is faster for recurring pulls than re-running a report every time.

๐ŸŽฏ Report 1 โ€” Customer 360 Lookup by Phone

P1 ยท This week

The biggest operational unlock. When Ashton picks up a call, he types a phone number and sees: name, LTV, last service + tech, last 3 jobs, open estimates, warranties, membership, Do Not Service flags, address.

๐Ÿ‘‰ Click Path (Try HCP UI First)

1๐Ÿ” Open the top search bar in HCP
HCP typically has a persistent search bar at the top of the app. Paste a known test phone number (use (913) 302-7665 โ€” Barbara Boyle from the recent list).
2๐Ÿ“‡ Select the matching customer profile
If it matches, a customer card should appear. Click it. Note what you see on that default view.
3๐Ÿ“ธ Screenshot the default customer profile view
Capture every field HCP shows by default. Compare against the wish list below. Note the gaps.

๐Ÿ“ค Required Output Fields (the wish list)

FieldStatus
Name + primary phone + alt phone + emailโœ“ / โœ—
Customer since dateโœ“ / โœ—
Lifetime valueโœ“ / โœ—
Last service date + techโœ“ / โœ—
Last 3 jobs (date ยท type ยท revenue ยท tech)โœ“ / โœ—
Open estimates (count + total value)โœ“ / โœ—
Active warranties (service + expiration)โœ“ / โœ—
Membership statusโœ“ / โœ—
Do Not Service / complaint flagsโœ“ / โœ—
Service address (if different from billing)โœ“ / โœ—
โš ๏ธ Fallback (likely path): HCP's default customer view probably does NOT show all 10 fields in one screen. If any are missing, the solution is Nexus Customer 360 endpoint. I build a Python script that hits HCP API /customers/{id}, /customers/{id}/jobs, /customers/{id}/estimates, aggregates into one JSON response, and renders it as a lookup page at morpheus.callbrightside.com/customer/{phone}. Ashton hits one URL, one screen. Estimated build: 4-6 hours.
โœ… Verification: Type (913) 302-7665 (Barbara Boyle) into whichever path you build. Confirm her name, last service, and any open estimates appear within 3 seconds of entry.

๐Ÿ”ฅ Report 2 โ€” HCP Open Estimates (Ashton-facing)

P1 ยท This week

The HCP parallel to our ST Estimate Recovery Engine. HCP-only customers still have open quotes. Same HOT / WARM / COLD 0-7 / 8-30 / 30+ day buckets.

๐Ÿ‘‰ Click Path (Try HCP UI First)

1๐Ÿ“‘ Navigate to Estimates section
Sidebar โ†’ Estimates (or top nav โ†’ Estimates). Note exact location: โ€” path โ€”
2๐ŸŽ›๏ธ Filter by Status = Open / Pending / Sent
HCP estimate statuses differ from ST. Try filtering to anything that is NOT Accepted / Sold / Declined. Document the status values HCP uses: โ€” statuses โ€”
3๐Ÿ“… Sort by Modified Date descending
Newest first so the hot ones surface. If the column is Created Date, use that instead.
4๐Ÿ’พ Export to CSV if available
Look for Export button, top-right of list view typically. Download and open in Excel / Google Sheets.
5๐Ÿชฃ Add age buckets
In Excel: new column =IF(TODAY()-B2<7,"HOT",IF(TODAY()-B2<30,"WARM","COLD")). Replace B2 with the modified-date column.
6๐Ÿท๏ธ Flag Pure-HCP vs Migrated
If you already have the Segment A list of 247 Pure-HCP customers (CSV on VM at /documents/hcp_segment_A_pure_hcp_reengagement.csv), VLOOKUP on customer ID to mark which open estimates belong to ghost customers. Those go to the top of the call list โ€” they have no ST equivalent.
โš ๏ธ Fallback: If HCP does not have an Open filter, use the Customers list, filter by Has Active Estimate = Yes, export, then manually split by age in Excel. OR I build a Nexus pull via HCP API /estimates?status=open and drop a CSV to /documents/hcp_open_estimates_tracking.csv nightly. Same pattern as the ST tracker CSV we shipped this morning.
โœ… Verification: Row count should roughly match ST's 1,749 Open estimates if migration was 1-to-1. Expect HCP-only to be smaller (247 Pure-HCP customers ร— likely <1 estimate per = maybe 100-200 open estimates in HCP).

๐Ÿ›ก๏ธ Report 3 โ€” Do Not Service List

P1 ยท Before any email send

Mandatory before we send a single email to the HCP segments. Customers flagged DNS must be excluded from every campaign. Missing this = legal / trust risk.

๐Ÿ‘‰ Click Path (Try HCP UI First)

1๐Ÿง‘ Navigate to Customers section
Sidebar โ†’ Customers.
2๐Ÿšซ Apply Do Not Service filter
Most CRMs have a DNS or Do Not Service toggle on customer records. Try: Filters โ†’ Do Not Service = Yes, OR Tags contains "Do Not Service" / "DNS" / "Fire Customer". Note exact path: โ€” DNS filter path โ€”
3๐Ÿ’พ Export list
CSV export with at minimum: Customer ID, Name, Phone, Email, DNS reason (if field exists), date flagged, who flagged.
4๐Ÿ“‹ Save to a restricted location
VM path: /opt/nexus/nexus/scripts/output/hcp_do_not_service.csv. Do not post this to any public URL. Reference-only for campaign exclusion.
5๐Ÿ” Cross-reference against ST's DNS flag
Some DNS customers may exist in both systems with different flag statuses. Take the union of both โ€” if flagged DNS in either system, exclude from every campaign.
โš ๏ธ Fallback: If HCP has no native DNS field, the flag may live in Tags or Notes. Grep the export CSV for DNS, DO NOT SERVICE, FIRE, NEVER CALL, BAD CUSTOMER and pull those into a manual exclusion list. Kalen or Ashton reviews the edge cases.
โœ… Verification: Merge-check against the Segment A + B + C email lists we built. No DNS customer should appear in any outbound email audience. If any do, they get removed before send.

๐Ÿ“Š Priority 2 โ€” Management Visibility (next 1-2 weeks)

P2

Lighter instructions. Each of these is a saved HCP view or filter you build once, then share with the team.

๐Ÿ’ฐ Report 4 ยท HCP Revenue by Month + Service Type
  • HCP Reports โ†’ Sales / Revenue (if it exists)
  • Group by Month and Service Type
  • Export monthly
  • Fallback: HCP API /invoices?completed_after=X&completed_before=Y, aggregate in Nexus
๐Ÿ”ง Report 5 ยท HCP Revenue by Technician
  • HCP Reports โ†’ Technician Performance
  • Filter by date range, group by Technician
  • Export CSV ยท compare to Ramp COGS per tech
๐ŸŽฏ Report 6 ยท Close Rate (Estimates sold / Estimates total)
  • HCP Estimates list ยท Status counts: Sold / Declined / Open
  • Math: Sold / (Sold + Declined) for close rate
  • Compare to our ST 39.2% figure โ€” if wildly different, that tells us something about tech or customer behavior
๐Ÿ† Report 7 ยท Lifetime Value Distribution (Membership cohort)
  • Customers list ยท sort by LTV descending
  • Filter LTV >= $5,000
  • Compare count to our Segment B (277 customers from combined HCP+ST)
  • Kalen uses this to approve the membership pitch cohort
๐Ÿ“ก Report 8 ยท Lead Source Performance (HCP era)
  • Customers list ยท group by Lead Source field
  • Expect 52% blank โ€” document the blank count for Stephanie
  • Match to ST lead source categories where possible
๐Ÿ˜ด Report 9 ยท Dormant Customer List (Audrey email source)
  • Customers list ยท filter: Last Service Date < 12 months ago ยท LTV > $500 ยท Marketable (not DNS)
  • Feed Audrey for cold-bucket mass email (Segment C template)
๐Ÿข Report 10 ยท Commercial vs Residential Breakdown
  • Customers list ยท group by Customer Type
  • Revenue total per bucket ยท avg ticket
  • Kalen uses this for commercial stage-1 scoping

โณ Priority 3 โ€” Future / Strategic

P3
๐Ÿ—“๏ธ Report 11 ยท Warranty Expiration Calendar
Service History filter by Warranty End Date ยท flag next-90-day expirations ยท Ashton or Audrey outreach
๐Ÿค Report 12 ยท Nick Welty Referral Performance
Tag filter Inspector.com referral ยท revenue ยท avg ticket ยท discount dollars applied. Nick wants this documentation per Apr 1 partnership agreement.
๐Ÿ” Report 14 ยท Cross-System Match Health (Nexus-only)
Quarterly. Unique HCP IDs vs unique ST IDs vs overlap %. Nexus job โ€” not HCP.
๐Ÿ“‰ Report 15 ยท Data Quality Audit
Customers list ยท filter blank Lead Source / missing phone / missing email ยท list for backfill or acceptance.

โœ… Session Success Criteria

  1. ๐Ÿ”Ž HCP Reports menu location documented
  2. ๐Ÿ“ฑ Customer 360 view tested with Barbara Boyle phone, gaps noted
  3. ๐Ÿ“‘ HCP Open Estimates export done and bucketed HOT / WARM / COLD
  4. ๐Ÿšซ Do Not Service list exported and stored at /opt/nexus/nexus/scripts/output/hcp_do_not_service.csv
  5. ๐Ÿ”ข Customer count reconciled: does HCP UI show 4,271 or 4,771?
  6. ๐Ÿ“ง Email to Ashton sent listing the three reports, per meeting action item

๐Ÿ†˜ Escalation Paths

ProblemPath
HCP UI does not have a filter I needNote it, move on. Nexus API + script is the fallback for any missing native view.
API rate limit hitIncrease time.sleep() to 3s. Never skip rate limit. Robert's IP has been blocked twice.
Export CSV is malformedTry XLSX export instead. Convert to CSV locally with xlsx2csv.
Customer count discrepancy persists (4,271 vs 4,771)Ping Ashton, Kalen. Might be BSP vs 100 Year HCP confusion. Also verify filters โ€” some HCP views default to "active customers only."
Stuck on UI location of Reports menuIntercom chat button (bottom right in most HCP installs). HCP support can point at it in 5 minutes.

Live at https://morpheus.callbrightside.com/documents/BSP_HCP_Reports_Build_Playbook.html. Paired docs: HCP Executive Brief ยท HCP Intelligence Report ยท Audrey Email Brief ยท Estimate Recovery Engine. Fill the blanks in this page as you click through HCP and re-save it โ€” the next person using this gets confirmed paths, not guesses.