Contacts & Staying Legal
For the business owner or team member who manages the lead list and wants to keep every call and message on the right side of the law.
Your contacts are your business. This page explains how to get them into the platform cleanly, and — just as importantly — how the platform keeps you compliant automatically. Calling and texting people is heavily regulated (a single wrong call can cost hundreds of dollars), so the platform is built to stop you from making an illegal call before it happens. You don't have to be a lawyer. You just have to tell the truth about where each contact came from and what they agreed to. The platform does the rest.
Importing your list (CSV wizard)
The fastest way to load contacts is a CSV file — a spreadsheet exported from your CRM, a trade-show badge scanner, or any list of phone numbers. Go to Contacts and click Import CSV. The wizard has four short steps.
Step 1 — Upload your file
- Make sure the first row of your file is column headers (like
first_name,phone,email). - Click to choose a
.csvfile. You can import up to 5,000 rows at a time. - Not sure of the format? The upload screen has a Download a sample CSV link. Open it, replace the example rows with yours, and you're guaranteed a clean import.
The sample file uses these columns: first_name, last_name, phone, email, timezone, tags, notes. Only phone is truly required — everything else is optional.
Step 2 — Map your columns
The wizard reads your headers and takes its best guess at which of your columns is the phone number, the first name, and so on. Review each match and fix any that are wrong using the dropdowns. You can map these fields:
| Field | What it's for |
|---|---|
| Phone (required) | The number to call or text. This is the only field you must map. |
| First name / Last name | Used to personalize calls and messages. |
| Stored on the contact; also used for chat-only contacts. | |
| Timezone (IANA) | Optional. Leave it blank and the platform figures it out for you (see below). |
| Tags | Comma-separated labels for organizing (e.g. vip,trade-show). |
| Notes | Free text that lands on the contact record. |
| Consent status column | Only if your file already records consent per person. Otherwise you'll set it in Step 3. |
You'll see a preview of your first five rows so you can confirm the mapping looks right. You can't continue until the phone column is mapped.
Step 3 — Consent (the important part)
Every contact you import must carry a consent status — this is a legal requirement, not a formality. You have two choices:
- One status for the whole batch (most common). Pick the consent level that describes how you got this list (see the consent section below), then describe the proof in the Consent proof / source description box (for example, "signed badge-scan consent card, CHAMPS Chicago 2026").
- Per-row from your file, if you mapped a consent column in Step 2. The platform reads each row's value and translates it (e.g.
writtenbecomes prior express written consent,verbalbecomes express consent).
You'll also fill in a List source — a short name for where these leads came from (e.g. "CHAMPS Chicago 2026"). This shows up on every contact and lets you filter your whole list by source later.
If you choose No consent on record, the platform shows a red warning and lets you proceed only for record-keeping — those contacts cannot be dialed by any campaign until you upgrade their consent.
Step 4 — Import report
When the import finishes you get a clean summary so you know exactly what happened:
| Report number | Meaning |
|---|---|
| Created | New contacts added to your list. |
| Duplicates in file | The same number appeared twice in your CSV; only the first was kept. |
| Already existed | The number was already in your contacts; it was skipped (never duplicated). |
| Invalid phone | The number couldn't be understood and was skipped. A few examples are shown so you can fix them. |
| Forced to DNC | The number was on your internal do-not-call list, so it was imported but marked do-not-call automatically (your suppression list always wins). |
From here you can jump straight to View contacts or import another file.
Timezone auto-detection
You don't need to know anyone's timezone. If you leave the timezone blank, the platform detects it from the area code of the phone number at the moment a call is placed (US and Canada). This is what powers the calling-window protection below — a call to a 212 number is treated as New York time, a 415 as California time, and so on. If an area code isn't recognized, the platform skips the call rather than guessing, so you're never at risk of dialing someone at the wrong hour.
Consent levels, in plain words
Consent is the legal permission a person gave you to contact them. The platform tracks five levels. The two that let you run outbound campaigns are at the top:
| What you'll see | Plain meaning | Can you run campaigns to them? |
|---|---|---|
| Prior express written consent | They signed something or checked a box specifically agreeing to receive automated/marketing calls or texts — a signed form, a web opt-in, a badge-scan consent card. This is the strongest, safest grant. | Yes — for any campaign. |
| Express consent | They verbally agreed to be contacted (e.g. said "sure, call me" at your booth). | Yes — but only for campaigns that require the lighter "express" level, not for ones that require written consent. |
| No consent on record | You have their number but no record they agreed to be contacted. | No. Never dialed until you upgrade this. |
| Do not call | They're on your suppression list. | No. Never dialed, ever. |
| Opted out | They asked to stop hearing from you. | No. Never dialed, ever. |
The rule the platform enforces is simple: written consent covers everything; verbal consent covers only campaigns that ask for verbal; and the bottom three are never callable. When you build a campaign, you tell it what level it requires, and the platform quietly filters out anyone who doesn't clear that bar — you can't accidentally include them.
What proof to keep
For anything above "No consent on record," keep a record of how you got permission. When you import (or later, when you change someone's consent), you fill in a consent source / proof description — a sentence like "web form opt-in, firebarlabs.com/contact, 2026-06-14" or "signed consent card at trade show." That description is stored on the contact (shown as Consent source on their page) and is your paper trail if you're ever asked to prove permission. Keep the underlying document (the signed form, the screenshot of the web opt-in) in your own records too.
The Do-Not-Call (DNC) list
Your workspace keeps its own internal do-not-call list. Any number on it is never dialed by any campaign — no matter what consent status the contact has. It's an absolute stop.
How numbers get on it (automatically)
You rarely have to touch this list, because the platform adds numbers for you whenever:
- A contact opts out during a call or chat (see the next section).
- You import a list and mark it as do-not-call or opted-out — those numbers land on the DNC list on the way in.
- You import a number that was already on your DNC list — it's forced back to do-not-call automatically (shown as "Forced to DNC" in your import report).
Adding a number manually
To add one yourself, go to Settings → Compliance, find the Internal do-not-call list, enter the phone number and an optional reason (e.g. "customer request"), and click Add to DNC. This does more than add to the list — it also opts out any matching contact and pulls them out of every campaign in one move. You can remove a number from the list from the same screen if it was added by mistake.
The platform's internal DNC is separate from the federal Do-Not-Call registry. Federal registry scrubbing is an optional add-on your provider may connect; if it isn't connected, the internal list is what's protecting you. Ask your provider if you handle consumer cold-calling at scale.
What happens when someone opts out
This is the safety net that matters most. When a contact says "stop calling me" — whether on a voice call or in a chat conversation — the platform performs a single, complete opt-out on your behalf. In one action it:
- Flips their consent to "Opted out" so no future campaign can ever include them.
- Adds their number to your internal do-not-call list.
- Removes them from every active campaign immediately, so no queued or in-progress call goes out.
- Writes it to the audit log with a timestamp and where the opt-out came from.
You don't have to remember to do any of this, and you can't accidentally skip it. It works identically for voice and chat, so a customer who opts out by text is protected exactly the same as one who opts out by phone. The same all-in-one action runs whenever you set a contact to "Opted out" or "Do not call" by hand, or use the bulk Add to DNC action — the list, the campaigns, and the audit trail always stay in sync.
Lead scores & pipeline status
Every contact carries two pieces of "how promising is this lead" intelligence that update on their own as calls and chats happen.
The score (0–100) and its band
Each contact has a score from 0 to 100, shown as a colored badge on the contacts list. It moves automatically after each call or chat based on what happened:
| Band | Score | What it means |
|---|---|---|
| Hot | 60–100 | Green. Strong interest — prioritize these. |
| Warm | 25–59 | Amber. Some engagement, worth following up. |
| Cold | 0–24 | Gray. Little or no traction yet. |
What moves the score
Good outcomes push it up; bad ones pull it down. Roughly:
| What happened on the call/chat | Effect on score |
|---|---|
| Booked an appointment | Large increase |
| Showed interest | Solid increase |
| Asked for a callback / got transferred to a person | Moderate increase |
| Left a voicemail | Tiny increase |
| No answer | Tiny decrease |
| Not interested | Moderate decrease |
| Opted out | Drops to the floor |
A positive or negative tone in the conversation nudges the score a little further in the same direction. Scores never go below 0 or above 100.
The pipeline status
Alongside the score, each contact sits in one of five pipeline stages that describe where they are in your funnel:
New → Working → Qualified → Customer — plus Unqualified for dead ends.
The platform advances contacts through these stages automatically:
- A booked appointment (or a Hot score) moves someone to Qualified.
- A warming score moves someone to Working.
- An opt-out or a clear "not interested" moves someone to Unqualified.
- Once someone is marked a Customer, the platform never downgrades them — a routine missed call won't knock a paying customer back down your funnel.
You never lose progress to a random no-answer: the platform won't bounce a "Working" lead back to "New" over a single missed call.
Tags & bulk actions
Tags are free-form labels you attach to contacts — vip, trade-show, spanish-speaker, whatever helps you organize. You can add tags during import, or select contacts on the list and tag them in bulk.
On the Contacts page, tick the checkboxes next to any contacts to reveal a bulk action bar with three options:
| Action | What it does |
|---|---|
| Add tag | Prompts for a tag and applies it to everyone selected (no duplicates). |
| Add to DNC | Runs the full opt-out on every selected contact — consent flipped, added to do-not-call, removed from all campaigns. |
| Delete | Permanently removes the selected contacts (asks you to confirm first). |
Above the list you can also search by name, phone, or email and filter by consent status or by list source, so you can slice your list any way you need before acting on it.
The contact page: one unified timeline
Click any contact's name to open their page. Everything you know about that person lives in one place:
- Details — source, timezone, tags, consent source, consent proof, notes, and when they were added.
- Change consent — update their consent level with a required reason/evidence note. Every change is audit-logged, and setting them to do-not-call or opted-out automatically pulls them from every campaign.
- Activity timeline — a single, newest-first story that merges every interaction: voice calls, chat and SMS conversations, and consent/DNC events. You can see at a glance that a contact was imported, called twice, texted once, and then opted out — in order, with no digging.
- Call history — the detail on each call: direction, status, outcome, duration, and cost.
- Consent audit trail — a plain record of every consent change and opt-out for this contact, with timestamps. This is your proof, ready whenever you need it.
The takeaway: you can always answer "did we have permission to contact this person, and what did we do?" from a single screen — which is exactly what you'd want if anyone ever asks.
Related: Getting started · Building your agents · Running campaigns · FAQ & troubleshooting