SMS & WhatsApp Setup
Both channels are bring-your-own-provider: SMS sends through your Twilio-compatible account and numbers, WhatsApp through your Meta Cloud API credentials. Hober handles composition, targeting, consent enforcement, and delivery tracking; the provider relationship — and its per-message costs — stay yours.
SMS
1. Create the channel
In the dashboard, run the new-channel wizard and choose SMS, or via the API:
POST /api/v1/channels
Authorization: Bearer <token>
Content-Type: application/json
{ "type": "sms", "name": "Transactional SMS" }
2. Upload provider credentials
The wizard collects them in the credentials step; via the API:
POST /api/v1/channels/{id}/credentials/sms
Content-Type: application/json
{
"api_key": "ACxxxxxxxx",
"api_secret": "your-auth-token",
"sender_id": "+15550001111"
}
All three fields are required. The field names are provider-agnostic — for
Twilio, api_key is the Account SID and api_secret the auth token.
sender_id is your sending number or alphanumeric sender. Credentials are
envelope-encrypted and write-only: no API returns them after upload, so keep
your own record of which account is live. The channel activates on upload;
bad credentials surface at send time.
3. Opt-outs are automatic
Inbound STOP replies are recorded as opt-outs and enforced at dispatch on every subsequent send — no configuration needed. Consent, quiet hours, and frequency caps apply to SMS like every other channel.
WhatsApp
1. Prerequisites at Meta
You need a WhatsApp Business Account (WABA) with the Cloud API set up: an access token, your Phone Number ID, and the WABA ID.
2. Create the channel and upload credentials
Choose WhatsApp in the wizard, or via the API:
POST /api/v1/channels/{id}/credentials/whatsapp
Content-Type: application/json
{
"access_token": "EAAG…",
"phone_number_id": "123456789012345",
"waba_id": "987654321098765"
}
Meta access tokens expire — re-upload before expiry (uploads replace the stored credential, same write-only model as every provider).
3. Templates — enforced before send, not after failure
WhatsApp business-initiated messages must use Meta-approved templates. Hober syncs your template catalog and enforces approval at send creation, so a campaign never fails mid-flight on an unapproved template:
| Action | Endpoint |
|---|---|
| Create a template draft | POST /api/v1/channels/{id}/whatsapp-templates |
| List templates + status | GET /api/v1/channels/{id}/whatsapp-templates |
| Submit for Meta approval | POST /api/v1/channels/{id}/whatsapp-templates/{templateId}/submit |
| Refresh approval status | POST /api/v1/channels/{id}/whatsapp-templates/{templateId}/refresh |
4. Opt-outs
Inbound opt-out messages arrive via your WhatsApp webhook and are recorded automatically; dispatch enforces them on every send.
Plan availability
Both channel types are available on every plan — you bring the provider
account, so there is no platform gate. A workspace whose plan carries an
explicit channel-type restriction sees 403 channel_type_not_permitted with
the allowed list; see Errors.