Skip to content
Whats91

Let an external board take over a WhatsApp conversation without duplicate Whats91 automation replies.

Custom Board Control

Summary

Let an external board take over a WhatsApp conversation without duplicate Whats91 automation replies.

Prerequisites

  • A Whats91 account
  • A generated public API token

Custom board control lets an external board coordinate with Whats91 internal automation. It never blocks webhook delivery to your board. It only suppresses Whats91 internal responders — Flow Builder, chatbots, AI Agent, and MetaBot — for matching messages or owned conversations.

Endpoints

MethodPathPurpose
GET/api/v3/custom-boards/keyword-exclusionsList sender-scoped keyword exclusions.
POST/api/v3/custom-boards/keyword-exclusionsCreate a keyword exclusion.
PATCH/api/v3/custom-boards/keyword-exclusions/{uid}Update a keyword exclusion.
DELETE/api/v3/custom-boards/keyword-exclusions/{uid}Delete a keyword exclusion.
POST/api/v3/custom-boards/sessions/acquireAcquire a conversation session for one board.
POST/api/v3/custom-boards/sessions/{sessionUid}/renewRenew an active session lease.
POST/api/v3/custom-boards/sessions/{sessionUid}/releaseRelease an active session lease.
GET/api/v3/custom-boards/sessions/activeCheck whether a conversation has an active session.

Runtime Behaviour

  1. Whats91 stores the inbound message and conversation.
  2. Campaign opt-out and resubscribe handling runs first.
  3. Custom-board control is checked.
  4. If a custom-board session is active for the conversation, Whats91 skips Flow Builder, chatbots, AI Agent, and MetaBot.
  5. If a keyword exclusion matches the message, Whats91 skips the same internal responders.
  6. Vendor webhooks, BusyNotify forwarding, and Pub/Sub forwarding still receive the inbound message.
Runtime skip reasonCause
custom_board_session_activeAn active session lease owns the conversation.
custom_board_keyword_excludedA keyword exclusion matched the inbound message.
custom_board_control_lookup_failedThe lookup failed and Whats91 failed open rather than causing a silent outage.
  1. Create keyword exclusions for the takeover keywords your board owns.
  2. Receive the inbound webhook for a matching message.
  3. Immediately call sessions/acquire for the same contactPhone so follow-up messages stay owned by your board.
  4. Renew the lease while the board conversation is active.
  5. Release the lease when the board flow completes so Whats91 automation can respond again.

Note

Sender selection accepts senderId or phoneNumberId. Global tokens can manage any sender owned by the customer; number-scoped tokens are restricted to their bound sender and otherwise return SENDER_NOT_ALLOWED.

Errors

HTTPerror_codeMeaning
400VALIDATION_FAILEDA required field is missing or invalid.
400SENDER_REQUIREDNeither senderId, phoneNumberId, nor a number-scoped token resolved the sender.
401MISSING_AUTH_TOKENNo public API token was supplied.
401INVALID_AUTH_TOKENToken is invalid, expired, revoked, or not tied to an active customer.
403SENDER_NOT_ALLOWEDA number-scoped token requested another sender.
403INVALID_OWNER_TOKENThe renew or release owner token does not match the active session.
404SESSION_NOT_FOUNDThe session UID does not belong to the authenticated customer.
404KEYWORD_EXCLUSION_NOT_FOUNDThe exclusion UID does not belong to the authenticated customer and sender.
409SESSION_ALREADY_ACQUIREDAnother custom board currently owns the conversation session.
409SESSION_NOT_ACTIVEThe session exists but has expired or was released.
415UNSUPPORTED_CONTENT_TYPEA JSON body endpoint was called without Content-Type: application/json.

Related Documentation