Connecting Sendblue for iMessage, RCS, and SMS
Text your customers from your app as a blue-bubble iMessage, with RCS and SMS as the fallback. Here's how to connect your Sendblue account.
Most apps that text their customers arrive as a green bubble. Sendblue sends the blue one โ a real iMessage, from a number that belongs to you. If the person you're texting isn't on iMessage, Sendblue falls back to RCS or SMS on its own, so one message reaches everyone.
You'll find Sendblue at the top of the integrations list in your app's Integrations panel.
๐ฌ Ask your AI to set this up Paste this into your app's chat, once you've added your keys (Step 2 below):
Add Sendblue texting to my app. Create a server-side endpoint that sends a message through Sendblue using my SENDBLUE_API_KEY_ID and SENDBLUE_API_SECRET_KEY environment variables, and never call Sendblue from browser code. Then send a test message to my own phone number so I can confirm it works. If you can't do part of this, say so honestly instead of guessing.Two things the AI can't do for you: you add the two keys in Settings โ Environment Variables, and you sort out your Sendblue plan. On Sendblue's free plan you can only text phone numbers you've verified โ see below.
What you can do once it's connected
- Send iMessage to your customers โ the blue bubble, with delivery and read receipts
- Reach everyone anyway โ Sendblue automatically falls back to SMS when someone isn't on iMessage, at no extra cost
- Attach media โ images, video, and PDFs
- Use iMessage send styles โ the expressive effects like confetti and fireworks
- Send RCS to Android recipients
Sendblue can also receive replies, but that needs an extra step beyond this guide โ ask the AI for it once sending works.
Before you start
You need a Sendblue account. Create a free one at dashboard.sendblue.com. No credit card is required, and setup assigns you a Sendblue number to send from โ you don't have to buy a phone number first.
Read this part carefully, because it's the thing that surprises people: on Sendblue's free shared-line plan, you can only message people who are verified contacts on your Sendblue account. Sendblue describes the free plan as intended for prototyping and personal projects. Texting a customer who isn't verified will not work โ not because your app is broken, but because the free plan doesn't allow it.
So:
- Testing? The free plan is fine. Verify your own phone number and send to yourself.
- Texting real customers? You need one of Sendblue's paid dedicated plans. Sort that out with Sendblue before you build the feature into your app, not after.
Step 1 โ Get your two Sendblue keys
Sendblue uses two values, not one. In your Sendblue dashboard, find:
SB-API-KEY-IDโ your API keySB-API-SECRET-KEYโ your API secret
Sendblue's documentation doesn't publish an exact menu path for these, so if you can't spot them right away, look for the API or developer section of the dashboard. Both keys are also printed side by side if you use Sendblue's command-line tool.
You should now have two long strings. You need both โ one on its own won't work.
Step 2 โ Add the keys to your app
In Overskill, open your app and go to Settings โ Environment Variables, then click Add Environment Variable twice:
| Name | Value |
|---|---|
SENDBLUE_API_KEY_ID |
your SB-API-KEY-ID |
SENDBLUE_API_SECRET_KEY |
your SB-API-SECRET-KEY |
Spell the names exactly as shown, and mark both as secret. Secret values are encrypted and masked, and they stay on the server โ they're never visible to anyone using your app.
Two things worth knowing:
- Never paste these keys into the chat. The Environment Variables panel is the only place they belong.
- Don't add a
VITE_prefix. That prefix makes a value readable in the browser, and Sendblue refuses requests that come from browser code. Your keys would be exposed and the messages still wouldn't send.
You should now see both variables listed, with their values masked. Saving them redeploys your app automatically.
Step 3 โ Ask the AI to build the sending
With the keys in place, describe what you want in plain language:
When someone books an appointment, text them a confirmation through Sendblue using my SENDBLUE_API_KEY_ID and SENDBLUE_API_SECRET_KEY.
The AI builds the sending logic on the server side, where your keys are safe. A few more examples:
Add a button to the admin page that texts a customer through Sendblue.
When an order ships, send the customer an iMessage with the tracking link.
You'll need your Sendblue number โ the one Sendblue assigned you โ as the number messages are sent from, and each recipient's number in the full international format, like +15551234567.
Verify it works
Don't test on a customer. Test on yourself:
- Make sure your own phone number is a verified contact in Sendblue.
- Ask the AI to send a test message to your own number.
- Check your phone. A message should arrive within a few seconds โ blue if you're on iMessage, green if not.
If the message arrives, you're connected. If nothing arrives, work through the next section.
When it doesn't work
Nothing sends, and the app reports an authorization or credentials problem.
Usually one of the two keys is wrong, swapped, or has a stray space from copying. Open Settings โ Environment Variables, delete both, and re-enter them carefully โ check that the key ID went into SENDBLUE_API_KEY_ID and the secret into SENDBLUE_API_SECRET_KEY, not the other way round.
Messages send to you but not to your customers. This is almost always the free-plan restriction described above: on a free shared line, recipients have to be verified contacts first. Contact Sendblue about a dedicated plan.
Messages stop after a burst. Sendblue limits how fast you can send and how many new people you can reach in a day. If your app tries to text a large list at once, Sendblue starts refusing the extras. Ask the AI to spread the sending out over time rather than firing them all at once.
You changed a key and nothing changed. Saving an environment variable redeploys your app. Give it a moment to finish, then try again.
Still stuck? Anything about your Sendblue plan, your number, or verifying recipients is Sendblue's side โ their support can see your account. Anything about your app not calling Sendblue correctly is ours, so contact us.
What to read next
- Browsing the integrations marketplace โ what else you can connect
- Sending emails from your app โ email, no setup required
- Connecting Mailjet or any other email provider not in the marketplace โ the same pattern for other services