Connect messaging channels
Origamy sends messages through channels — Email, SMS, WhatsApp, Push, Slack, In-app, and Webhook. Each channel is powered by a provider you connect once per workspace: either with a single click (OAuth, where the provider supports it) or by pasting credentials from the provider’s console.
A few things are true for every provider on this page:
- Credentials are encrypted at rest and pushed to your data plane within seconds of saving — no redeploy, no waiting.
- Right after you connect, Origamy probes the provider with your real credentials and tells you immediately if something is wrong, instead of letting the first production send fail.
- You can connect several providers per channel and change the default at any time under Channels.
To connect anything below, go to Channels in the dashboard, pick the channel, and choose Connect provider.
The fastest connection in the product — no Slack app to create, no token to copy.
-
In Channels → Slack → Connect provider, choose Slack.
-
Click Add to Slack. A Slack window opens asking you to pick your Slack workspace and approve the Origamy bot.
-
Approve. The window closes, the dashboard shows Slack workspace authorized, and you’re done. Optionally set a Default channel (like
#alerts) for messages that don’t specify one.
The bot can post to any public channel right away. For private channels, invite it first
with /invite @Origamy.
If you prefer your own Slack app (or your Origamy control plane doesn’t have Slack OAuth configured), create one at api.slack.com/apps:
- Create New App → From scratch, pick your workspace.
- Under OAuth & Permissions, add the bot scopes
chat:write,chat:write.public, andchannels:read, then Install to Workspace. - Copy the Bot User OAuth Token (starts with
xoxb-) into the Origamy form.
Without chat:write.public, you must /invite the bot into every channel it posts to.
Connect any one of these — Origamy renders the message; your provider delivers it.
| Provider | You’ll need | Where to find it |
|---|---|---|
| SendGrid | API key, default from address | Settings → API Keys (needs Mail Send permission). The from address must be a verified sender or authenticated domain. |
| Cloudflare Email | Account ID, API token, default from address | Cloudflare dashboard → Account Home (ID) and My Profile → API Tokens. |
| Postmark | Server token, message stream | Servers → API Tokens; stream defaults to outbound. |
| Mailgun | API key, sending domain, region (us/eu) |
Settings → API Keys. Region must match where your domain is hosted. |
SMS — Twilio
Section titled “SMS — Twilio”You’ll need your Account SID and Auth Token (both on the Twilio Console home page) and a
default sender: either an SMS-capable Twilio number in E.164 format (+15551234567) or a
Messaging Service SID (MG…) if you use one.
Two ways to send WhatsApp messages:
Same Account SID and Auth Token as SMS, plus your WhatsApp-enabled number in Twilio’s
whatsapp:+15551234567 format. Quickest if you already use Twilio; Twilio’s WhatsApp sandbox also
works for testing.
If your dashboard shows Connect WhatsApp with Facebook, use it — Meta’s guided signup creates or links your WhatsApp Business account, connects your number, and sets up delivery reports in one popup, with no tokens to copy. The manual path below is the fallback.
To connect manually, from your Meta developer app with WhatsApp added:
- Phone number ID and WhatsApp Business Account ID — WhatsApp → API Setup.
- Access token — use a permanent System User token (Business Settings → System Users), not the 24-hour temporary token from API Setup.
To also receive replies (delivery reports and inbound messages), fill the optional Verify token (any secret string you choose) and App secret (App Settings → Basic), then register the callback URL shown in the provider form in Meta’s WhatsApp → Configuration → Webhooks.
Connect one provider per kind of device — they work side by side, and each send goes to every device the person registered. See Push notifications for registering devices and customizing notifications.
| Provider | Delivers to | You’ll need |
|---|---|---|
| Firebase (FCM) | Android apps, and iOS apps that use Firebase | Firebase project ID + a service-account JSON key (Project Settings → Service accounts → Generate new private key). |
| Apple (APNs) | iOS apps | An APNs Auth Key (.p8), its Key ID, your Team ID, the app bundle ID, and the environment (sandbox/production). |
| Web Push | Chrome, Firefox, Safari, Edge | A contact email. Leave the keys blank and Origamy generates a VAPID key pair; your site subscribes with its public key. |
| OneSignal | Whatever your OneSignal app reaches | App ID + REST API key (Settings → Keys & IDs). People are addressed by OneSignal external_id. |
Webhook
Section titled “Webhook”Point a channel at any HTTPS endpoint you run: set the URL, the method, and an optional signing secret Origamy uses to sign each delivery so your endpoint can verify it came from us.
Where each person’s address comes from
Section titled “Where each person’s address comes from”Every send reads the recipient’s address from their profile:
| Channel | Read from |
|---|---|
The email trait. It must contain an @. |
|
| SMS, WhatsApp | The phone number traits set under Settings → Phone numbers (below). |
| Slack (to a person) | The slack_user_id trait. |
If a profile has no address for the channel, that person is skipped and the send log records
no <channel> address on profile. If the profile holds an address that can’t be used, the send
log records invalid <channel> address on profile. Nothing reaches the provider in either case. Audience
counts and dry runs skip the same people, so the count you see before sending matches what goes
out.
Phone numbers
Section titled “Phone numbers”Settings → Phone numbers controls how texts and WhatsApp messages find each person’s number:
- Phone number traits. Only the traits listed here are read, in order, and the first one
holding a valid number is used. The default is
phone. A trait likework_phoneis never texted unless you add it. The panel suggests traits in your data that look like phone numbers. - Country traits. A number written without its country code (
0803 123 4567) is read in the person’s own country. Origamy takes the country from the first of these traits that holds one, written as an ISO code (NGorNGA), a calling code (234), a locale (en-NG) or a country name in English (Nigeria). The defaults arecountry,country_codeandaddress.country. - Fallback country. Used only for a number with no country code when the person’s own country is unknown. It is None by default. If you serve several countries, leave it on None. Those numbers are then reported as invalid instead of being read in the wrong country.
New data arriving in these traits is stored in international (E.164) format, such as
+2348031234567, however it was typed. A number that can’t be read is kept exactly as it came, and
sends skip it. To convert numbers you already have, use Numbers already stored → Check stored
numbers. It counts what would change. Fix then rewrites those profiles. It never touches
numbers it can’t read.
Opt-outs match either way: a STOP reply opts out the person whether their profile holds the
number in E.164 or as it was typed.
After connecting
Section titled “After connecting”- The channel shows Connected with the provider name; sends from broadcasts, journeys, and the API route through it immediately.
- Each channel has one default provider; connect more and switch defaults under Channels without touching your messages.
- Rotate credentials any time by editing the provider — the update reaches the data plane in seconds.
