Integration

Scrub GoHighLevel Contacts for TCPA Litigators

How do I check new GoHighLevel contacts for TCPA litigators before my team calls them?

Short answer

Add a Custom Webhook step to a GoHighLevel workflow that sends each new contact's phone number to NumberBroom's API, save the answer into four custom fields, and branch on it: tag known TCPA litigators, and landlines too if you text, so the workflow never hands them to your dialer. NumberBroom charges $0.20 a number from prepaid API credits; GoHighLevel bills Custom Webhook as a premium workflow action.

Checking a whole list? Preview 20 rows of it free →

On this page

A lead that lands in GoHighLevel can be checked before anyone calls it. One workflow sends the contact's phone number to NumberBroom, writes the answer onto the contact, and tags the ones your team should not dial: known TCPA litigators always, and landlines or disconnected numbers if you text or run an autodialer.

Before you start

  • A NumberBroom API key and credits. Sign in, open Settings, create a key labelled for GoHighLevel and add credits ($10 minimum). Set a daily limit on the key if you want a hard cap on what a busy day of leads can spend.
  • A GoHighLevel sub-account with workflows. Custom Webhook is a premium action, so check how your agency bills premium executions.

Step 1: Create four custom fields

In the sub-account's settings, add four single-line text custom fields on contacts: NB Outcome, NB Line Type, NB Carrier and NB Litigator.

Step 2: Start the workflow

Create a workflow with the trigger Contact Created. To scrub contacts you already have, add a second trigger, Contact Tag added, with a tag such as nb-scrub, and tag the contacts you want checked. Then add an If/Else step: continue only when NB Outcome is empty. That one condition is what stops a contact from being charged twice.

Step 3: Add the Custom Webhook

SettingValue
EventCUSTOM
MethodPOST
URLhttps://numberbroom.com/api/v1/verify
AuthorizationBearer Token, with your NumberBroom API key (it starts with nb_live_)
Content-Typeapplication/json
Raw Body{"phone": "{{contact.phone}}"}
Save response from this WebhookOn

Save the action, then run Test Workflow with a real contact that has a phone number. GoHighLevel needs one real response before it can offer the answer's fields in later steps. The test is a real lookup and is charged like any other.

Step 4: Save the answer on the contact

Add an Update Contact Field step and map four values from the webhook's saved response:

Contact fieldResponse fieldWhat it holds
NB Outcomeoutcomeclean, litigator, not_mobile, disconnected or invalid
NB Line TypelineTypeMobile, landline, VoIP, toll-free or other
NB CarriercarrierThe carrier that serves the number
NB Litigatorlitigatoryes, no, or not_checked when the number was not looked up

Use litigator, not isLitigator: the second is true, false or empty, and an empty value in a text field reads the same as a number that was never checked.

Step 5: Branch on the answer

  • Everyone: if NB Litigator is yes, add a tag such as nb-litigator, turn on Do Not Disturb for calls and texts, and end the workflow for that contact.
  • If you text or autodial: if NB Outcome is anything other than clean, add nb-do-not-call. That removes landlines, VoIP, disconnected and invalid numbers as well as litigators, the same as NumberBroom's full scrub.
  • If you dial by hand and keep landlines: branch on NB Litigator alone, the same choice as the Litigators only scrub.

Point your dialer, SMS campaigns and pipelines at contacts without those tags, and the check runs on every lead before a person or a campaign reaches it.

What it costs

NumberBroom charges $0.20 a number from your API credits. A number that is not a US number is answered free, and a lookup that fails is never charged. GoHighLevel bills the Custom Webhook step separately as a premium action. If a day's leads would run past the daily limit you set on the key, the extra lookups are refused, not charged, and their NB fields stay empty; tag them with nb-scrub the next day to check them.

For a list of thousands of existing contacts, exporting a CSV and uploading it is usually cheaper: list scrubs are priced in volume bands that drop past 2,000 numbers. Keep a spreadsheet instead? The same lookup runs from Google Sheets, and every field is documented in the API reference.

Frequently asked questions

Will a contact be charged twice if it enters the workflow again?

Not if you keep the first If/Else step below, which skips any contact whose NB Outcome field is already filled. Every call to the API is a new lookup, so that check is what keeps a re-entered or re-tagged contact from being charged again. Turning off re-entry in the workflow's settings helps too.

What happens if the lookup fails?

NumberBroom charges nothing for a lookup that does not return an answer, and the webhook step fails, so the contact's NB fields stay empty. To check it again later, add the nb-scrub tag: the workflow only scrubs contacts whose NB Outcome is empty, so it runs once more for that contact.

Does this check the Do Not Call Registry?

No. This uses the NumberBroom API, and the API does not check the Do Not Call Registry: every answer says so (dncEvaluated: false). It checks line type, carrier and known TCPA litigators. A list you upload from the same NumberBroom account can include the federal Registry check under your own SAN, on lists of up to 1,000 numbers.

What does GoHighLevel charge for this?

GoHighLevel counts Custom Webhook as a premium workflow action. Each sub-account gets 100 free premium executions for its lifetime; after that each one is $0.01 unless the account has a Workflow Pro plan. That is GoHighLevel's pricing as of October 9, 2026, separate from NumberBroom's $0.20 a number.

Got a backlog of contacts already?
Export them from GoHighLevel as CSV and upload the file. A list scrub is priced in volume bands, cheaper than the API past 2,000 numbers, and you can preview 20 rows free.
Preview 20 rows free

Founder, NumberBroom · 10 years in telecommunications and marketing

Cameron Hoffman is the founder of NumberBroom and has spent 10 years working in telecommunications and marketing. He built NumberBroom after repeatedly watching outbound teams dial purchased lists that were full of dead numbers, landlines and TCPA litigators.