SMS

How do I collect SMS opt-ins?

Collect SMS opt-ins by explaining what you will send, asking the person to agree, and retaining evidence of that agreement.

A phone number entered at checkout may be intended for delivery updates. Adding that number to a promotional campaign requires permission that covers those messages.

What permission does my program need?

Promotional messages need permission for promotions. A request for service updates covers that informational purpose.

The CTIA messaging principles set industry expectations for US business texting. Exhibit II expects written permission for promotions. Informational messages need express permission. A relevant response to a conversation the customer starts needs no additional permission under that guidance.

Adding an offer can change a reminder into a promotion. CTIA gives this example:

Adding a call-to-action (e.g., a coupon code to an informational text) may place the message in the promotional category.

Choose your content before collecting permission, so the invitation covers the messages you actually send. Apply the destination's legal requirements alongside industry guidance. Express written consent explains the US legal definition.

What should the invitation tell the person?

Show who will send, what they will send, and how the person can stop it.

CTIA section 5.1.1 calls for the program, sender identity and number, fees, opt-out instructions, help details and applicable terms. Keep those disclosures visible beside the action that records agreement. A keyword advertisement needs disclosures too.

For recurring messages, explain the frequency. Send an enrollment confirmation with opt-out and support details. Section 5.1.2.1 describes that confirmation.

Let the person take the agreeing action themselves. Do not preselect their agreement or hide it inside unrelated terms, because neither establishes an informed choice about your messages.

What evidence should I retain?

Keep the consent time, the person's identity and number, and the invitation they agreed to.

CTIA section 5.1.2 also names the collection method, campaign and IP address where applicable. Save the wording and the action used to agree. A timestamp alone cannot show whether the person agreed to reminders or promotions.

If your program requires double opt-in, ask the person to confirm from their phone before treating enrollment as complete. SMS consent models explains that extra step.

You record the decision through POST /v1/preferences. Retain the supporting evidence in your own system.

Set channel to sms and handle to the phone number with its country code, such as +15550001234. Set status to granted or revoked.

  • consented_at records when the person agreed. A grant over a stored opt-out needs a later timestamp. It cannot be in the future.
  • source identifies the form, campaign or import batch. It accepts 1 to 255 characters, so use a short reference to your evidence.
  • coverage accepts non_transactional or all. The default, non_transactional, leaves receipts and verification codes outside that preference's scope.
  • sender_scope limits the statement to one sender. Omit it for channel-wide coverage within the workspace.

Bird compares statements for the same channel, handle, sender scope and topic. A topic groups messages under one subscription. The response's topic_id identifies that group. A null value means every topic.

An older statement returns applied: false, with the surviving statement in preference. Check that result so an old import does not appear to have restored permission.

A person's own opt-out has stronger protection than an API assertion. You cannot override or delete it through this API, even with a later timestamp. The preference endpoint documents the write behavior.

A START reply ends the sender's suppression. It does not replace your initial consent collection.

Bird's start operation ends that suppression. It then sends the configured confirmation. A START from someone never suppressed can receive a confirmation without establishing what they originally agreed to.

The confirm operation recognizes double opt-in replies. It sends no response. Your handler must complete that flow. STOP keywords explains the separate keyword and suppression behavior.

What should I check before sending?

Send only when the invitation, consent evidence and implemented flow agree.

  1. Match the permission to the actual message content.
  2. Apply the destination's consent model.
  3. Retain the invitation and consent time, and check Bird's preference-write result.
  4. Complete the confirming exchange if your program requires double opt-in.

In short

  1. Match permission to the content.

    Permission for reminders does not automatically cover promotional messages.

  2. Keep the invitation with the consent record.

    Record what the person saw and when they agreed, so you can establish what their permission covers.

  3. Consent time determines which statement applies.

    An older preference statement cannot replace a newer one. A later timestamp alone cannot override a person's own opt-out.

  4. START ends a suppression.

    Bird's keyword handling does not replace your initial consent collection or your double opt-in confirmation handler.

Put it into practice.

Continue with the documentation, guides and examples for this topic. Resources are in English.

Get an implementation brief

Build on the same network.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor