Sift

Documentation

What Sift does, how to install it, and what it keeps.

Installing Sift

  1. Open the GoHighLevel App Marketplace from inside the sub-account you want to use Sift in.
  2. Find Sift and choose Install.
  3. Review the permissions screen and approve.
  4. You land back here on a confirmation page. Sift is now connected to that one sub-account.

Installing into a second sub-account is a separate install. Sift never reaches across sub-accounts, and it holds no agency-level access.

Permissions it asks for, and why

ScopeWhy Sift needs it
contacts.readonlyCompare an incoming list against contacts that already exist, so an import does not create a duplicate of someone you already have.
contacts.writeWrite back the cleaned result, only when you explicitly choose to import it.
locations.readonlyConfirm which sub-account the install belongs to, and show its name on the confirmation screen.
Sift does not request conversations, calendars, payments, or opportunities. If a future version needs a scope it does not have today, GoHighLevel will show you a fresh consent screen. Scopes cannot be widened silently.

What a clean run does

1. Normalize

Skip-trace exports, county files, and broker CSVs disagree about column names, phone formatting, and what counts as an address. Sift maps them into one internal shape first, so every rule below applies identically regardless of the source.

2. Dedupe on the property address

One property commonly returns several owner phone numbers, and sometimes several spellings of the same owner. Deduplicating on the phone number leaves you with one lead per number, which is not what a property list is. Sift keys on the normalized property address and keeps the numbers as alternates on that single record.

3. Scrub litigators

Known serial TCPA plaintiffs are removed on every import path. This is the one category Sift deletes outright.

A plain DNC entry is not a litigator and is never removed. It is kept, marked, and left for you to decide about. Conflating the two throws away contactable records and hides the ones that actually carry risk.

4. Classify phones honestly

Each number is classified as mobile, landline, VoIP, or unknown. Unknown stays unknown. Sift will not default an unclassified line to mobile to make the row importable, because that default is how a landline ends up in an SMS campaign.

5. Cap numbers per record

A configurable ceiling on how many phone numbers survive per property, applied to every source file. Without a consistent cap, one heavily traced record can turn into a dozen contacts and quietly distort every count in the sub-account.

6. Hand back a receipt

Sift returns the cleaned file and a report: rows in, rows out, and a line for every reason a row was cut, with counts. Nothing is removed without appearing on that report.

What Sift stores

An install stores the GoHighLevel access and refresh tokens for that sub-account, its location id, and the timestamp of the install. That is what lets Sift talk to your sub-account without asking you to log in again.

Uploaded lists are processed and returned. Sift does not keep your list after a run completes. See Privacy for the full statement.

Uninstalling

Remove Sift from the sub-account's installed apps in GoHighLevel. The stored tokens for that location are deleted and become useless immediately. There is nothing else to clean up.

Support

Email support@synrgii.com. Include the sub-account name and, if the question is about a specific run, the report from that run.