Skip to main content

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:

ActionEndpoint
Create a template draftPOST /api/v1/channels/{id}/whatsapp-templates
List templates + statusGET /api/v1/channels/{id}/whatsapp-templates
Submit for Meta approvalPOST /api/v1/channels/{id}/whatsapp-templates/{templateId}/submit
Refresh approval statusPOST /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.