> ## Documentation Index
> Fetch the complete documentation index at: https://docs.recepta.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Contacts

> Where contacts come from, how they're organized, and how to import them.

A contact is a person Recepta.ai knows about. Contacts are what campaigns and sequences run against, and what call and message history attaches to.

## Where contacts come from

Every contact carries a `source` recording how it arrived:

| Source     | Created by                                                       |
| ---------- | ---------------------------------------------------------------- |
| `CALL`     | Someone called or was called                                     |
| `CSV`      | Bulk import                                                      |
| `API`      | Created through the [Contacts API](/api-reference/contacts)      |
| `FACEBOOK` | A [Facebook lead ad](/integrations/facebook-lead-ads) submission |
| `MANUAL`   | Added by hand in the dashboard                                   |

Contacts also sync from a connected [CRM](/integrations/overview).

<Tip>
  Source is the most useful filter you have. Facebook leads, inbound callers, and an old customer list need genuinely different sequences — don't work them the same way.
</Tip>

## Importing

CSV import handles bulk lists. Recepta.ai maps your columns to contact fields, and phone numbers are normalized to E.164 automatically, so mixed formats in an export won't break the import.

<Steps>
  <Step title="Clean the list first">
    Remove duplicates, obviously dead records, and anyone who has asked not to be contacted. Importing junk costs you deliverability and answer rates.
  </Step>

  <Step title="Include what you'll personalize with">
    Name and phone are the minimum. Service address, last job, and last-contacted date are what let a sequence say something specific.
  </Step>

  <Step title="Import a small batch first">
    Twenty rows. Check the mapping landed correctly before running thousands through.
  </Step>

  <Step title="Tag on import">
    Tag the batch so you can target it precisely later — `quotes-q3`, `dormant-2024`. Untagged imports blur into one another within a month.
  </Step>
</Steps>

<Warning>
  Only import people you have a lawful basis to contact. A purchased list is a fast route to spam complaints, carrier blocks, and TCPA exposure — and it will damage sending reputation for your legitimate campaigns.
</Warning>

## Organizing

<Columns cols={2}>
  <Card title="Tags" icon="tag">
    How you segment. Tag by campaign, service, source batch, or lifecycle stage. Sequences target tags.
  </Card>

  <Card title="Status" icon="circle-half-stroke">
    Where the contact stands with you. Keep it current — stale statuses mean campaigns target people who already bought.
  </Card>
</Columns>

Custom fields carry anything specific to your business — equipment model, plan tier, gate code — and can be used to personalize sequence steps.

## Suppression

When someone opts out of SMS or email, they're suppressed automatically and permanently. Suppression survives re-import: adding the same number again does not re-enable messaging to it.

<Warning>
  Never try to work around a suppression. It's a legal violation on both SMS and email, and it damages every campaign you run afterward.
</Warning>

## Over the API

Contacts can be created, read, updated, and deleted programmatically — useful for syncing from a system Recepta.ai doesn't integrate with natively.

```bash theme={null}
curl -X POST https://api.recepta.ai/api/v1/api/contacts \
  -H "x-api-key: $RECEPTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Dana",
    "lastName": "Reyes",
    "phone": "+14155551234",
    "source": "API",
    "tags": ["quotes-q3"]
  }'
```

See the [Contacts API](/api-reference/contacts), and subscribe to `contact.created` and `contact.updated` via [webhooks](/api-reference/webhooks) to keep your own systems in step.
