04.05
Score and prioritize your database with the reactivation workbook
Paste your cleaned export into a free spreadsheet that segments every contact, picks a permitted channel, scores priority from 0 to 100 and ranks who to contact first.
Video walkthrough
- A score you can explain to anyone: five factors, 100 points
- Mapping your CRM export into the workbook's yellow columns
- Reading the Segments tab: tiers, channels, missing consent
- Changing a weight and watching the ranks move
- Sending tiers back to the CRM as a field or tag
What you're building
A working copy of the Database Reactivation Workbook with your contacts in it. Every contact gets a segment, the one channel you are allowed to use first, a priority score from 0 to 100, a tier (A, B or C) and a rank. Tier A contacts are your first pilot.
Why it matters
With 3,000 contacts and 5 hours a week, you will reach a few hundred people. A score decides which few hundred, and because every point is visible you can argue with it and change it. Black-box "AI lead scores" cannot be checked; this one can.
What you need
- Your cleaned WORKING.csv with the Reactivation fields filled (chapters 2 and 3)
- Excel 2016 or later, Google Sheets, or Numbers (the workbook uses DATEDIF, COUNTIFS, INDEX/MATCH)
- The workbook below
Time and cost
- Time
- 40 to 60 minutes the first time, 10 minutes per refresh
- Cost
- $0
Step by step
Download the workbook and read the Instructions tab
XLSXDatabase Reactivation Workbook (.xlsx)Six tabs: Instructions, Scoring, Contacts (1,000-row import area), Segments, Pilot tracker (100 rows), Results. Includes 12 fictional example rows to delete.CSVContacts import template (.csv)The 17 input columns with three example rows, for building your data in any tool first.Check: The workbook opens and the example rows show scores in the grey columns.
Map your export columns to the workbook
Where each workbook column comes from Workbook column HighLevel export Follow Up Boss export Allowed values contact_id the contact ID column if your export has one, otherwise a row number a row number you add any unique text first_name, last_name, email, phone same names first phone and email columns text relationship Relationship (custom) Relationship (custom) past-client, sphere, lead, unknown strength Relationship Strength Relationship Strength 1, 2, 3 last_conversation Last Conversation Date Last Conversation Date a date, or blank email_opt_out Email DND unsubscribed tag present Y or N sms_consent SMS Consent (and SMS DND off) SMS Consent (and number not orange) Y, N, U phone_dnc Phone DNC Check Phone DNC Check Y = Listed, N = Clear, U = Not checked dnd_all DND all do-not-contact tag present Y or N homeowner Homeowner Homeowner Y, N, U years_in_home this year minus Year Purchased same number source, consent_source, notes Source, Consent Source Source, Consent Source text Check: Your WORKING.csv has the 17 columns in the template's order.
Paste into the Contacts tab
Delete the 12 EXAMPLE rows (clear cells A2:Q13 only, not whole rows). Copy your data without the header row and use Paste Special > Values into A2. Do not paste into the grey columns R to W; they calculate.
Grey columns: months_quiet (months since last conversation), channel (the first permitted channel: Text, then Email, then Call, or None), segment, score, tier, rank among scored contacts.
Check: Row 2 shows a segment and score, and the last contact row is filled down to its rank.
Set the report date and review the weights
Leave Report date as
=TODAY()for a live view, or type a fixed date to freeze a snapshot. Then read the weights. The defaults total 100 at most:Factor Points Why Relationship Past client 30, Sphere 20, Former lead 10 People who trusted you before answer first Strength 5 per level (1 to 3) Your judgment of how well you know them Time quiet 6 to 23 months 25, 24 to 59 months 15, 60+ 5, never 5 Long enough to need a nudge, recent enough to remember you Homeowner in your market 15 Owners can list; renters may buy Years in home 7+ years 15, 4 to 6 years 8 Longer tenure usually means more equity and life change Tier A is 70 or more, Tier B 45 to 69, Tier C below 45. These weights are a starting framework, not research findings. Change any value; scores, tiers, ranks and the Segments tab update. The Scoring tab shows the new maximum in B18.
Check: Scoring!B18 shows 100 with default weights.
Read the Segments tab
COUNTIFS formulas count each segment by tier, each first channel, contacts ready for a pilot (Tier A plus B), scored contacts with no consent source, and phones that still need a DNC check. If "Missing consent source" is high, go back to chapter 3 before texting anyone.
Check: The segment total equals the number of rows you pasted.
Send tiers back to your CRM
Sort Contacts by rank. In HighLevel, create a dropdown custom field Priority Tier (A, B, C), then import a CSV with email, phone and Priority Tier through Contacts > Import mapping the column to that field. In Follow Up Boss, import one file per tier (email plus name) and type the tag
tier-a,tier-bortier-cin the import's Tags box; Follow Up Boss applies those tags to every contact in the file, new and existing.Check: A Smart List filtered on Priority Tier = A (HighLevel) or tag tier-a (Follow Up Boss) shows the same count as Tier A in the Segments tab.
What success looks like
- Every contact has a segment, channel, score and tier
- You can explain any contact's score from five numbers
- Tier A count is known and visible in the CRM
- No Suppressed or Recently active contact has a tier
Copyable templates
Already in the workbook. Shown here so you can rebuild it in any spreadsheet.
=IF(A2="","",IF(OR(T2="Suppressed",T2="Recently active"),0,
IF(F2="past-client",Scoring!$B$3,IF(F2="sphere",Scoring!$B$4,IF(F2="lead",Scoring!$B$5,0)))
+ MAX(1,MIN(3,N(G2)))*Scoring!$B$6
+ IF(H2="",Scoring!$B$10,IF(R2<24,Scoring!$B$7,IF(R2<60,Scoring!$B$8,Scoring!$B$9)))
+ IF(M2="Y",Scoring!$B$11,0)
+ IF(N(N2)>=7,Scoring!$B$12,IF(N(N2)>=4,Scoring!$B$13,0))))=IF(A2="","",IF(L2="Y","None",IF(AND(E2<>"",J2="Y"),"Text",IF(AND(D2<>"",I2<>"Y"),"Email",IF(AND(E2<>"",K2="N"),"Call","None")))))Try it
Database prioritizer
12 fictional contacts, report date 2026-10-01. Same rules as the workbook.
| Contact | Segment | Score | Channel |
|---|---|---|---|
In pilot | Past client | 100 (A) | Text |
In pilot | Past client | 88 (A) | Text |
In pilot | Past client | 80 (A) | Text |
In pilot | Past client | 78 (A) | |
In pilot | Sphere | 75 (A) | |
| Dormant lead | 68 (B) | Text | |
| Dormant lead | 30 (C) | ||
| Dormant lead | 20 (C) | ||
| Needs review | 10 (C) | ||
| Suppressed | - | None | |
| Recently active | - | Text | |
| Suppressed | - | None |
Tier A is 70 or more, Tier B is 45 to 69. Select a name to see exactly where its points came from. Opted-out and DND contacts never score, whatever the weights.
The workbook's rules on 12 fictional contacts. Change a weight and watch the order change; select a name to see its points.
How to test it
- In the demo above, set Homeowner points to 0. Maya Ortiz should drop from 100 to 85. Do the same in your workbook's Scoring tab and check one homeowner's score drops by 15.
- Set dnd_all = Y on a Tier A contact. Their segment must become Suppressed, tier '-', and they leave the rank.
- Pick 5 Tier A contacts. Would you happily call each one today? If not, adjust weights until the top of the list matches your judgment.
Troubleshooting
Grey columns show #VALUE! in months_quiet.
last_conversation holds text, not a date. Re-enter as a date (YYYY-MM-DD) or format the column as Date.
Everyone is Needs review.
relationship values do not match exactly. Use past-client, sphere, lead or unknown in lower case.
Numbers shows formulas as errors.
Use Excel or Google Sheets for the workbook. Upload to Google Drive and open with Google Sheets if you lack Excel.
Rank has gaps or ties.
Equal scores share a rank. Break ties by sorting on strength or months_quiet.
Advanced technical details
Optional. You can follow every step above without these.
Technical detailsHow the logic was tested
The same rules live in TypeScript (reactivation.logic.ts) and are covered by unit tests: exact tier boundaries at 70 and 45, the 100-point maximum, channel suppression for DND and opt-outs, whole-month counting that matches Excel's DATEDIF, and pilot stop rules. The workbook formulas were evaluated against the 12 example contacts and produce the same scores, tiers and ranks.
Rank formula: =IF(OR(A2="",V2="-"),"",COUNTIFS($V$2:$V$1001,"<>-",$U$2:$U$1001,">"&U2)+1). Extend the ranges if you paste more than 1,000 contacts.
Sources
Written from the best available information. One or more steps could not be confirmed; see the notes in the chapter. Last checked 2026-10-20.
- Getting Started: Import Existing ContactsHighLevel Help Center · read 2026-10-20
- How to Use Custom FieldsHighLevel Help Center · read 2026-10-20
- Importing Contacts OverviewFollow Up Boss Help Center · read 2026-10-20
- TagsFollow Up Boss Help Center · read 2026-10-20