> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/ai-text-agents/campaigns/importing-contacts.md).

# Importing contacts

Format and map contacts, interpret partial imports, and understand duplicate handling in Text Sequences.

Prepare the recipient list before [creating a sequence](/ai-text-agents/campaigns/create-a-campaign.md). Importing a contact makes it eligible for processing; it does not confirm that a message was sent.

## Prepare the file

Use **CSV or XLSX, up to 5 MB**, with a header row and one contact per row. Include:

* A phone-number column. International E.164 format, such as `+573001234567`, is the safest choice; store it as text so a spreadsheet does not remove the plus sign.
* A name column when needed for personalization.
* A column for every required template variable.
* Optional columns for conversation context.

National-format numbers may be normalized using the sequence's region/time-zone context. Do not rely on that for a mixed-country list. Fix ambiguous or invalid numbers before importing.

Only import people you are permitted to contact. Importing a number does not override opt-outs, blocks, or provider restrictions.

## Upload and map

1. In the creation wizard, upload the file.
2. Map **Phone number** to the recipient column.
3. Map each template variable. Check auto-suggested mappings rather than accepting them blindly.
4. Optionally map conversation variables; preview several rows, including empty values.
5. Finish and wait for the import result. Retain the original file until you have checked the outcome.

An empty value required by the template needs correction even if the phone number is valid.

## Read the import outcome

| Outcome   | Meaning                                                                 |
| --------- | ----------------------------------------------------------------------- |
| Received  | Rows submitted for ingestion.                                           |
| Inserted  | New recipients added to this sequence. Not a delivery count.            |
| Duplicate | Numbers already present in the same sequence; skipped, not added again. |
| Invalid   | Rows rejected with validation errors; correct the reported row/field.   |

For ingestion results, received rows are accounted for as inserted, duplicate, or invalid. An import may partly succeed. Correct the failed rows and use the available import route again; do not recreate the whole sequence just because some rows were invalid.

{% hint style="info" %}
Re-importing a number already in a Text Sequence does not reactivate that recipient, reset its attempt count, or resend its message. Contact reactivation in other campaign products is not a Text Sequence feature.
{% endhint %}

## Add contacts to a running sequence

New recipients supplied through a supported ingestion or connected-source route can wake a sequence waiting for contacts. Sending still follows its schedule and limits. Inspect **Connections** for sources already connected to that sequence and their synchronization results.

The file upload described here belongs to the creation wizard. Do not assume that **Settings** contains a second upload control. If your sequence has no available post-creation import/source route, check with support before planning a continuously replenished list.

Same-sequence duplicates and cross-sequence sending protection are different: see [message logic and limits](/ai-text-agents/campaigns/message-logic-and-limits.md) before planning another outreach.

*Source review: September 17, 2026.*

{% content-ref url="/pages/uRpzLaOCmIdzifXeO9xO" %}
[Managing your sequence](/ai-text-agents/campaigns/managing-your-campaign.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dapta.ai/ai-text-agents/campaigns/importing-contacts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
