# New contacts

Start an iMessage conversation with someone who never wrote to your sender: sending the first message, what it may contain, pacing, warm-up and keeping your sender safe

A sender you order through Zernio can message people who have never written to it.

Zernio enforces the provider's rules for you, so a send that would put the sender at risk is refused before it goes out.

## Before you start

It is the most powerful thing an iMessage sender does and the easiest way to lose one.

Apple shows a stranger's message with a **Report Junk** button, and reports can get a sender blocked for good. A blocked sender is not refundable.

<Callout type="info">
If you can, let the contact write first with an [opt-in link](/platforms/imessage/opt-in). A conversation the contact opens needs no pacing, has no content rules and records their consent.
</Callout>

## Send the first message

Use [`POST /v1/inbox/conversations`](/messages/create-inbox-conversation) with the sender's `accountId`, the recipient in `participantId` and the text in `message`:

```json
{
  "accountId": "68b2…",
  "participantId": "+15551234567",
  "message": "Hi Sarah, this is Derek from Acme. You asked for a demo on our site. Is it okay if I text you here? Just reply stop if not."
}
```

The recipient is a phone number in international format with the leading `+`, or an iMessage email address.

The response returns the new `conversationId`. The contact's reply lands in that same thread.

From the dashboard, open **Inbox**, press **New message**, pick the iMessage sender under **From** and enter the phone number or email.

**Existing threads.** If you already have a thread with that contact because they wrote to you before, the same call sends a normal message in it, with none of the rules below.

## What the first message may contain

The first message introduces you and opens a conversation.

You do not need to know the person already: a cold introduction, including a sales one, is fine. Say who you are and why you are writing, and ask something they can answer.

It must not contain:

- links or bare domains (`example.com`)
- email addresses
- phone numbers
- prices or currency amounts
- attachments, voice notes, location pins or a contact card

This is the provider's own rule for opening messages, and Zernio checks it before sending.

A message that breaks it is not sent. It returns `400` with code `invalid_content`, saying what was flagged and showing an opener that works.

Nothing else about the wording is checked, but it decides whether your sender survives. Recipients report as junk:

- an advertisement
- a promotion
- fake urgency
- a message that reads like it went to a list

Write to one person, as yourself.

First messages that work:

- *Hi Mark, this is John from Pratt Media. I help local roofers get more leads. Would you be open to a quick chat?*
- *Hi Chris, Sam from Northwind Builders here. I build websites for contractors like you. Would you like to see a couple of examples?*
- *Hi Jack, I'm Bill. You requested a demo on our website, could you confirm it's still relevant? Or just let me know if you changed your mind.*
- *Hello, this is Maria from Sunrise Dental. Just checking you're still okay for your cleaning on Thursday?*

Ones that get reported:

- *HUGE SALE this weekend only, half off everything!*
- *Dear customer, we offer the best web design packages in town. Contact us today!*
- *Congratulations, you've been selected for an exclusive reward.*

Once the contact replies, the thread is an ordinary conversation: links, attachments and everything else in the [inbox](/platforms/imessage/inbox) work.

## Following up before they reply

Until the contact writes back, you can send the first message plus **two follow-ups, at least 24 hours apart**.

- A follow-up sooner returns `429` with code `new_contact_limit` and the time it becomes allowed.
- A fourth message returns `409` with code `recipient_must_message_first`.

As soon as the contact replies, the thread is an ordinary conversation with no limits.

Senders are judged on their reply rate (keep it above roughly 30%). A stranger who ignores three messages is best left alone.

**Follow-ups count as openers.** Apple and the provider treat every message to someone who has not replied as starting a conversation.

A follow-up is held to the same rules as the first message: no links, emails, phone numbers, prices or attachments.

It also uses a slot of the 15-minute spacing and the daily warm-up below. On a sender's first day, an opening to one person and a follow-up to another use both of the day's slots.

## Pacing and warm-up

Each sender may open **one new conversation every 15 minutes**, and a new sender warms up over its first three weeks:

| Days since the sender went live | New conversations per 24 hours |
|---|---|
| Days 1 to 2 | 2 |
| Days 3 to 4 | 5 |
| Days 5 to 7 | 10 |
| Days 8 to 14 | 20 |
| Days 15 to 21 | 30 |
| After day 21 | 50 |

The 24 hours roll: a slot frees up 24 hours after the message it was used for. Openings and follow-ups to people who have not replied both use slots.

A send over either limit is not sent and returns `429` with code `new_contact_limit`. The error message says when the next one is allowed.

**Refused vs rejected.** A message Zernio refuses before sending (for example one with a link) does not use a slot. A request the provider receives and rejects does, because the provider counts it.

The warm-up counts from when a number ordered through Zernio went live.

Senders you registered from your own provider account are not warmed up by Zernio, but the 15-minute spacing still applies.

## Contacts who have gone quiet

The same care applies to people who wrote to you before but not recently.

Messages to contacts who have not written in the last 24 hours are spaced at least **2 minutes apart** per sender. A send inside that window returns `429` with `new_contact_limit` and the time to retry.

Replies to contacts who wrote within the last day are never paced, even when many arrive at once.

## If it fails
| Status | Code | Meaning | What to do |
|---|---|---|---|
| `400` | `invalid_content` | The first message contains a link, email, phone number, price or attachment | Remove it; the error says what was flagged and shows an opener that works |
| `429` | `new_contact_limit` | The sender is inside the 15-minute or 2-minute spacing, at its warm-up cap for the day, or a follow-up came less than 24 hours after the last one | Retry after the time in the error, or spread contacts across senders |
| `409` | `recipient_must_message_first` | The contact has not replied to your last three messages, or the sender has no ability to message new contacts (a sender registered from your own provider account without that add-on) | Wait for the reply, or share an opt-in link |
| `409` | `recipient_opted_out` | The contact opted out of this sender | Wait for their START or an opt-in link tap |
| `400` | | The recipient is not a `+` international phone number or an email | Fix the recipient |