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.