Skip to content

Contacts

Contacts are the individuals your business can send SMS messages to. Navigate to Flare SMS → Contacts to view and manage your contact database.

Watch on YouTube ↗

Each contact record stores:

FieldDescription
Phone numberRequired. Normalized to E.164 format (e.g. +14165550100)
First / last nameOptional, used in {{first_name}} / {{last_name}} personalization
EmailOptional
BusinessOptional company name
TagsFlexible labels for segmentation (e.g. vip, lead, customer)
SourceHow the contact was added: Manual, Import, Web Form, API, or Inbound SMS
Consent to textImplied (the default) or Express — US numbers need express consent for marketing texts
StatusActive, 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 / AddedWhen the contact was last messaged and when it was created

The Add contact dialog

  1. Navigate to Flare SMS → Contacts.
  2. Click Add contact.
  3. Enter the phone number (required). Ten-digit North American numbers are normalized to E.164 automatically.
  4. Optionally add name, email, and comma-separated tags.
  5. Optionally set Consent to text — see Consent to Text.
  6. Click Add contact.
  1. Click Import CSV.
  2. 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, and telephone all work, so Mobile Phone and Cell Phone headers from a CRM export import as-is. Other columns match the same way: first_name, last_name, email, business/company, and tags.
  3. Pick what happens on a duplicate phone number: Skip the row (default), Update existing fields, or Replace fields and tags.
  4. Optionally select existing tags (or type a new one) to apply to every imported row. Row-level tags values (separated by ,, ;, or | inside the cell) merge with these.
  5. Click Import. A summary toast reports imported / skipped / failed counts.

When nothing in the file can be imported, the whole import is refused and nothing is saved:

MessageWhyWhat 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 arrayThe 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,vip
6475550200,Bob,Jones,,"customer,newsletter"

Three optional columns record consent to text:

ColumnValues
consentexpress or implied (any case). Blank means implied.
consent_dateThe date express consent was obtained, YYYY-MM-DD. Cannot be in the future. Blank uses the import date.
consent_methodHow 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 consent value, or a consent_date that 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 implied or blank row never downgrades a contact that already has express consent.
  • 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.

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.

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.

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.

  • 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.

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.