01Common questions
Why was this lead rejected?
Open Rejection ledger, tap the row. The drawer shows the reason (duplicate, existing customer, out of area, wrong trade, invalid phone, junk email, or screened message) and the evidence: the matching record, the ZIP versus your area, or the lookup result. Every rejection has one.
Put a lead back.
In the same drawer, tap Restore this lead. It goes to your CRM immediately and the withheld amount is released from your totals. If it will keep happening, adjust the rule under Settings (ZIP list, duplicate window, trade keywords).
Add or change a vendor.
Settings → Lead sources. Enter the real cost per lead; without it, the dollars-withheld figure for that vendor reads zero. Pick how that vendor delivers: post to your intake URL, forward emails to your lead mailbox, or leave delivery as is and let the scan judge it in your CRM.
Change my service area or trades.
Settings → Service area and Matching rules. Leads outside your ZIPs or trades are parked, never deleted. Empty lists switch that filter off.
A lead never arrived in my CRM.
Every delivery is read back from your CRM and kept as a receipt. Find the lead in your ledger; the drawer shows the CRM record ID and a direct link. If it is missing, contact support and we re-deliver the same day and find out why.
Does CRM Goalie delete anything from my CRM?
No. Rejected leads are parked in a stage, status, tag or field you designate, with a note carrying the evidence. Nothing is removed. Ever.
What happens if CRM Goalie goes down?
Leads pass through to your CRM unchecked and are logged for review. Worst case is one junk lead through; a real lead is never lost.
02Connecting your CRM
| CRM | What we need | Where to find it | How verdicts appear |
|---|---|---|---|
| GoHighLevel | Location ID + Private Integration key | Sub-account → Settings → Private Integrations (contacts, opportunities, tags) | Tags + note; rejects parked in your "Rejected" stage |
| ServiceTitan | Tenant ID, Client ID, Client Secret, Application Key | developer.servicetitan.io → My Apps → New App (private) → then Settings → Integrations → API Application Access | goalie tags + pinned note |
| Housecall Pro | API key (MAX plan) | My Apps → API → Create API key | Tags + notes |
| JobNimbus | API key (+ Rejected status name) | Settings → API → New API key | Tags, optional status move, note |
| AccuLynx | API key | Account Settings → Add-On Features & Integrations → API Keys | Contact marker + notes |
| HubSpot | Private App access token | Settings → Integrations → Private Apps | goalie_verdict / goalie_reason properties + lead status |
| Salesforce | My Domain URL, Consumer Key, Consumer Secret | Setup → App Manager → New Connected App (client credentials flow) | Lead status Unqualified + Task with evidence |
| Pipedrive | API token | Settings → Personal preferences → API | "CRM Goalie verdict" person field + pinned note |
| Anything else | Nothing | Choose "Other CRM / webhook" | Clean leads forwarded to your intake; rejects held on our side |
Credentials are encrypted the moment you paste them and are never displayed again.
03Vendors and credits
| Vendor | Best delivery lane | Credit window | Notes |
|---|---|---|---|
| Angi | Forward lead emails to your lead mailbox | 45 days | Call attempt within 24 hours required; credits are store credit and expire after six months; annual plans get no credits |
| HomeAdvisor | Lead mailbox | 30 days | Partial credit if the correct task is in your profile |
| Thumbtack | Lead mailbox | File promptly | Use their category names; approved credits can be converted to cash within 10 business days |
| Networx | Lead mailbox | 14 days | Decisions are final; file right the first time |
| Google LSA | CRM scan | Rate within 30 days | No disputes since 2024; only "Very dissatisfied" ratings; expect 15–25% yield |
| Facebook / forms | Intake URL | — | Prevention only; no credits exist |
03bRecipes
Speed-to-lead in GoHighLevel (5 minutes)
Automation → Workflows → Create. Trigger: Contact Tag added → tag goalie-passed. Actions: Send SMS ("Hi {{contact.first_name}}, this is [Company] — got your roof request, calling you in 2 minutes") → Wait 2 min → Assign to user / Call whisper. Publish. Junk never carries the tag, so the workflow never fires on junk. Rejected leads carry goalie-rejected; you can add a second workflow that moves them to a "Rejected" stage if you did not set one in onboarding.
Google Sheets live log (Zapier or Make, 5 minutes)
In Zapier: Trigger Webhooks by Zapier → Catch Hook, copy the hook URL, paste it under Settings → Automations → Verdict webhook. Send a test lead from Onboarding step 4 so Zapier sees a sample. Action: Google Sheets → Create Spreadsheet Row, map at, verdict, reasonCode, amountWithheld, lead.firstName, lead.phone, lead.zip. Every decision now lands in a sheet in under a second. Slack: same trigger, action Slack → Send Channel Message with a filter on verdict = rejected if you only want interceptions.
Lead sellers that bill per accepted lead
Give the seller your intake URL with &strict=1 appended. Accepted leads get HTTP 200 with billable: true; rejected leads get HTTP 422 with accepted: false and the reason, which their posting system treats as a decline. You only pay for leads that passed. Ask the seller to confirm they honor post responses; most ping/post platforms do.
Consent certificates (TrustedForm / Jornaya)
If your web forms run the free TrustedForm script, the certificate URL arrives with the lead (xxTrustedFormCertUrl). We store it on the lead’s record, show it in the Ledger evidence view and the CSV export, pin it to the contact in your CRM as a note, and pass it through the verdict webhook — so your consent proof travels with the lead everywhere it goes.
04Guide: what "lead quality" actually means
About one in five paid leads is not a real opportunity: it is a person you already have, a number that does not ring, an address outside your area, or a job you do not do. Quality is not a feeling; it is that ratio per vendor. CRM Goalie measures it as the junk rate on the Source quality page. Under 10% is a clean vendor. Over 25% means the vendor costs more than it delivers once you count the time your team spends on the junk. Over 35% is a vendor to pause. The table shows dollars wasted per vendor from your own cost per lead, so the conversation with a vendor rep is a number, not an opinion.
05Guide: duplicates, and why they cost the most
A duplicate is a lead you already own: the same phone, email, or property address arriving again inside your duplicate window (30 days by default). Marketplaces resell the same homeowner to several contractors and sometimes to the same contractor twice; homeowners also fill out several forms. Duplicates were 46% of interceptions in our sample data and are the single largest bucket almost everywhere. CRM Goalie matches on normalized phone (formats collapsed), normalized email (Gmail dots and plus-tags ignored), and normalized address, then shows you the original record it matched. Widen the window under Settings if you see repeat submitters slipping through; narrow it if legitimate return customers are being parked.
06Guide: getting your money back from marketplaces
Angi, HomeAdvisor, Thumbtack, Networx and CraftJack all publish credit policies; almost no contractor files consistently because the windows are short and the paperwork is tedious. CRM Goalie drafts the request the moment a marketplace lead is rejected for a creditable reason, in that platform's own category language, with the evidence attached and a file-by date. You review, file in the vendor portal, and mark it filed; the dashboard tracks pending, granted, applied and expiring credits. Two honest limits: platforms decide, not us, and Google LSA no longer accepts disputes at all, so for LSA the only lever is rating the lead within 30 days and tightening your job types and ZIPs.