Contacts
Contacts
Section titled “Contacts”Contacts are the individuals your business can send SMS messages to. Navigate to Flare SMS → Contacts to view and manage your contact database.
Contact Fields
Section titled “Contact Fields”Each contact record stores:
| Field | Description |
|---|---|
| Phone number | Required. Normalized to E.164 format (e.g. +14165550100) |
| First / last name | Optional, used in {{first_name}} / {{last_name}} personalization |
| Optional | |
| Business | Optional company name |
| Tags | Flexible labels for segmentation (e.g. vip, lead, customer) |
| Source | How the contact was added: Manual, Import, Web Form, API, or Inbound SMS |
| Consent to text | Implied (the default) or Express — US numbers need express consent for marketing texts |
| Status | Active, Opted out, Bounced, or Blocked. Hover a badge for details (e.g. Opted out · SMS STOP · Sep 12). Opted-out contacts are excluded from all sends |
| Last contact / Added | When the contact was last messaged and when it was created |
Adding a Contact Manually
Section titled “Adding a Contact Manually”
- Navigate to Flare SMS → Contacts.
- Click Add contact.
- Enter the phone number (required). Ten-digit North American numbers are normalized to E.164 automatically.
- Optionally add name, email, and comma-separated tags.
- Optionally set Consent to text — see Consent to Text.
- Click Add contact.
Importing Contacts from CSV
Section titled “Importing Contacts from CSV”- Click Import CSV.
- Choose your file. The phone column is required; headers are matched flexibly, ignoring case, spaces, hyphens, and underscores. For the phone column,
phone,phone_number,mobile,mobile_phone,mobile_number,cell,cell_phone,cell_number,number, andtelephoneall work, soMobile PhoneandCell Phoneheaders from a CRM export import as-is. Other columns match the same way:first_name,last_name,email,business/company, andtags. - Pick what happens on a duplicate phone number: Skip the row (default), Update existing fields, or Replace fields and tags.
- Optionally select existing tags (or type a new one) to apply to every imported row. Row-level
tagsvalues (separated by,,;, or|inside the cell) merge with these. - Click Import. A summary toast reports imported / skipped / failed counts.
If the import is refused
Section titled “If the import is refused”When nothing in the file can be imported, the whole import is refused and nothing is saved:
| Message | Why | What to do |
|---|---|---|
| CSV had no valid rows. Fix the listed errors and re-upload. | Every row was rejected: a phone number that isn’t valid, an invalid consent value or date (see Consent columns), or no recognised phone column in the file. | Fix the rows listed in the errors, check that the file has a phone column, and import again. |
| No contacts to import — upload a CSV or POST a contacts array | The file had no contact rows: it was empty, had only a header row, or every phone cell was blank. | Choose the right file, with at least one row that has a phone number. |
If the second message appears when you did choose a file with contacts in it, the upload didn’t reach SIPSTACK. Try again, and contact support if it keeps happening.
Developers can tell these cases apart by the response code: CONTACTS_IMPORT_NO_VALID_ROWS, CONTACTS_IMPORT_EMPTY_FILE, or CONTACTS_IMPORT_NO_INPUT — see Error Codes.
phone,first_name,last_name,email,tags+14165550100,Alice,Smith,alice@example.com,vip6475550200,Bob,Jones,,"customer,newsletter"Consent columns
Section titled “Consent columns”Three optional columns record consent to text:
| Column | Values |
|---|---|
consent | express or implied (any case). Blank means implied. |
consent_date | The date express consent was obtained, YYYY-MM-DD. Cannot be in the future. Blank uses the import date. |
consent_method | How express consent was obtained, as free text. Blank is recorded as “import (declared by uploader)”. |
phone,first_name,consent,consent_date,consent_method+12025550143,Dana,express,2026-09-01,Paper signup sheet at the front desk+14165550100,Alice,implied,,- A row with any other
consentvalue, or aconsent_datethat is invalid or in the future, is not imported and is listed with the import errors. - Each express row is saved to the contact’s consent history, with you as the person who declared it.
- Import only ever upgrades consent: an
impliedor blank row never downgrades a contact that already has express consent.
Searching and Filtering
Section titled “Searching and Filtering”- Search matches name, phone number, and email, across your whole list (not just the page you’re on).
- Tag filter — every tag with its contact count.
- Source filter — Manual, Import, Web Form, API, or Inbound SMS.
- Status filter — All, Active, Opted out, Bounced, or Blocked, each with its count. Opted out includes every contact opted out by STOP, web, or an admin. Bounced covers hard bounces, carrier blocks, and landlines. A soft bounce is temporary and still counts as Active.
- Consent filter — Express, Implied, or None.
Click the Contact, Status, or Added column header to sort. Your filters, search, and sort are saved in the page URL, so you can bookmark or share a filtered view.
Tags are the primary segmentation mechanism: campaigns target audiences by tag, so a clean tag taxonomy here pays off at send time.
Editing a Contact
Section titled “Editing a Contact”Click a row (or Edit in the row menu) to update the phone number, name, email, business, tags, or consent to text. Changes apply immediately. Message history follows the contact record, so editing a phone number preserves the existing thread.
Consent to Text
Section titled “Consent to Text”Each contact’s consent is Implied (the default for contacts you add or import) or Express. Express consent is required to send marketing texts to US numbers: campaigns and drip steps skip US contacts without it. See US Recipients: Express Consent.
To record express consent, add or edit the contact and set Consent to text to Express, then fill in:
- How was it obtained? — Web form, Paper or in-person signature, Verbal (recorded), or Other. Other needs a description; for the rest, details are optional.
- Date obtained — today by default. It cannot be in the future.
The change is saved to the contact’s consent history, along with who made it. Editing a contact that already has express consent shows how it was obtained; changing it back to implied asks you to confirm first.
Opt-Out Management
Section titled “Opt-Out Management”When a contact replies with an opt-out keyword (STOP, UNSUBSCRIBE, etc.), SIPSTACK automatically flags them Opted out: they keep their history but are excluded from all sends. Contacts can opt back in by texting START.
You can opt a contact out manually from the row menu. Manual opt in is also available, but only use it with a clear consent record from the contact. If the contact opted out by texting STOP, Opt in asks for a reason — for example, how they gave you permission again. The reason is required and is saved to the contact’s consent history along with who made the change.
Deleting Contacts
Section titled “Deleting Contacts”- Single delete — row menu → Delete. You must type the contact’s phone number to confirm; deletion is permanent and removes the contact from your list (message history is retained for compliance).
- Bulk delete — select rows with the checkboxes and use Delete N in the toolbar.
Exporting Contacts
Section titled “Exporting Contacts”Click Export to download every contact that matches the current filters (tag, source, status, consent, and search) as a CSV, not only the page on screen. The columns are:
phone_number, first_name, last_name, email, tags, custom_fields, consent_status, opted_out, opted_out_at, opt_out_method, bounce_category, is_blocked
If you move contacts into another tool, keep the opted_out column. Texting an opted-out number from any system is still a compliance violation.
Related Pages
Section titled “Related Pages”- Conversations — message a contact directly
- Campaigns — target audiences by tag
- Signup Forms — collect opted-in contacts from the web
- Compliance — consent and opt-out reporting