Notify Africa

Concepts and Identifiers

Understand WABA ownership, identifiers, states, and call ordering.

Tenant Scope

The API key identifies one Notify Africa customer account. Every template and message operation is scoped to that owner. Webhook management, including queuing a test delivery, is a Portal-session (JWT) operation, not an API-key operation, but stays scoped to the same account.

The Developer API resolves the connected WhatsApp assets. Send requests do not accept caller-selected business, WABA, or phone-number IDs.

Identifiers

IdentifierOwnerWhere it appearsUse
API keyNotify AfricaBearer headerAuthentication and tenant scope
Business IDMetaPortal/account metadataMeta business identity
WABA IDMetaTemplate metadata and template eventsWhatsApp Business Account identity
Phone-number IDMetaPortal/account metadataSelected sending number
templateIdNotify Africa UUIDTemplate responses and pathsRetrieve, update, validate, preview, sync, delete
External template IDMetawhatsappConfig.externalTemplateIdProvider diagnostics
External template nameMetaTemplate create response and send bodytemplate_name for template sends
messageIdNotify AfricaSend results and message eventsInternal correlation
wamidMetaSend results when available and message eventsProvider correlation
webhookIdNotify Africa UUIDPortal and webhook-test pathSelect an owned callback endpoint
eventIdNotify Africa UUIDEvery callbackReceiver deduplication
aggregateIdNotify Africa/provider-derivedEvery callbackResource referenced by the event
dedupeKeyNotify AfricaEvery callbackEvent-production correlation

Do not use a Meta identifier where a Notify Africa UUID is required.

Template States

StateMeaning
pendingMeta review is pending, provider status is absent, or provider status is not in the public status vocabulary
approvedTemplate can be used for template sends
rejectedMeta rejected the template; inspect status diagnostics

Raw provider state remains available in whatsappConfig.providerStatus. Rejection, disable, or lock diagnostics can appear in whatsappConfig.statusInfo.

Synchronization States

StateMeaning
nullNo synchronization attempt is recorded
staleLocal projection requires refresh
syncedLatest provider projection was stored
failedLast refresh failed; inspect lastSyncError

Template approval state and synchronization state are separate.

Message States

StateMeaning
queued or processingAccepted for asynchronous processing
sendingProvider submission is in progress
acceptedProvider accepted the request
sentProvider reports sent
deliveredRecipient device received the message
readRecipient read the message
failedProcessing or provider delivery failed
receivedInbound customer message
unknownProvider state is not mapped

The initial HTTP response does not guarantee a terminal state.

Webhook Delivery States

Delivery inspection is available in the Portal.

StateMeaning
pendingWaiting for the first attempt
deliveringClaimed by a dispatcher
deliveredEndpoint returned HTTP 2xx
retryingRetryable failure with another attempt scheduled
failedAttempts or the 24-hour retry window were exhausted
discardedPermanent failure; no additional attempt will run

Correct Call Order

Template message

Portal connection ready.
Create template.
Poll status or receive template.status.updated.
Confirm approved.
Send template message.
Receive message.status.updated.

Freeform text

Customer sends inbound message.
Receive message.received.
Conversation window is open.
Send text within 24 hours.
Receive message.status.updated.

Webhooks

Configure endpoint in Portal.
Store signing secret.
Subscribe to events.
Queue API test.
Verify signature.
Return 2xx after durable acceptance.
Deduplicate by eventId.

On this page