Skip to main content
The customer messages you first, making the conversation lower risk than one you initiate. Once the conversation is open, you can reply freely.

Why it's the safest option

  • There’s no fundamental limit once the conversation is open
  • You can connect with as many contacts per day as you want, as inbound-first conversations are not ratelimited by Apple
  • Users lose the ability to mark the conversation as spam

Where it falls short

  • It requires the customer to take the first step, so you have to design for it
  • It’s not usable for proactive notifications (reminders, alerts) to someone who hasn’t texted you yet
  • It’s not usable for some types of leads
To make inbound-first frictionless, make the experience for the customer as easy as possible. A simple form that opens the customer’s Messages app with your number and a prefilled message already in the compose box is a good way to do this.

Example: a form that opens Messages

Try it

Clicking submit opens the customer’s Messages app with your number and a prefilled message already in the compose box. All they have to do is hit send.
sms: is the correct URI scheme for both SMS and iMessage. Apple devices resolve it to a blue or green bubble automatically based on whether the recipient number supports iMessage. You don’t need a separate imessage: link.

Example: dynamically picking a number (React)

If you lease multiple numbers to distribute volume, pick one dynamically instead of hardcoding a single number into your frontend. This looks up your leased numbers server-side (never expose your API key in the browser), filters for ones that are active and iMessage-capable, and hands one back to the button.
This uses contiguity.lease.leased()’s filter option to pull only your active, iMessage-capable numbers (backed by the leased numbers API), so you never have to keep a separate hardcoded list of numbers in sync with what you’ve actually leased.
This picks a random number per click, which is fine for a widget where each visitor is a new conversation. If you’re pooling numbers for high-volume outbound sending instead, see sticky sending, where each recipient sticks to one number.

Outbound-first

When you have to message someone first, and how to do it safely.
Still have questions? Join our Discord community or email us at help@contiguity.support.