Issue
When both global (account-level) and service-scoped webhooks are configured in Twilio Conversations, user-related webhook events such as onUserAdded, onUserUpdate, and onUserUpdated fail to deliver to the global webhook endpoint.
Product
Twilio Conversations Classic
Resolution
This behavior is due to the hierarchical configuration design of Twilio Conversations webhooks:
-
Hierarchy Precedence: When a service-scoped webhook configuration is defined on a Conversations Service (
ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX), it completely overrides the global (account-level) webhook configuration for interactions routed through that service. -
Unsupported Service-Level Events: Service-scoped webhooks do not support user lifecycle events (
onUserAdded,onUserUpdate,onUserUpdated); these events exist exclusively at the global webhook scope. Because the service-level configuration supersedes the global configuration, user-related webhook events are suppressed and will not fire to either endpoint.
Supported Implementations & Workarounds
- Rely Exclusively on Global Webhooks: If user-related events are required alongside conversation and participant events, do not configure service-scoped webhooks. Direct all event types through the global (account-level) webhook URL and handle event routing via backend endpoint logic.
- Isolate Services Using Subaccounts: If an application architecture strictly requires service-scoped webhooks for messaging but also depends on user lifecycle webhooks, isolate the Conversations Service within a dedicated Twilio Subaccount. Configure the webhook URL at the Subaccount’s global level, which allows both user-level and conversation-level events to fire without being overridden by a service configuration.