OpenMultiple webhook URLs + platform alert events
--- Today Spur sends every webhook event to a single callback URL, and we only expose two event types: Message Received and Message Status Update. Customers have to route everything through one endpoint, and they get no alert when Meta does things to their WABA (display name rejected, account flagged, template paused, CTWA lead submitted). Ask, two parts. 1. Multiple webhooks, each scoped to specific events. - Settings, Webhooks, New webhook, enter URL, tick the events you want, save. - A customer can register N webhooks, each listening to its own subset of events. - Public API to register, list, edit, delete webhooks programmatically. 2. Expose new event types beyond incoming + delivery status. Meta already fires these to our WABA, we just need to forward them. a) Phone number name update (Meta field: phone_number_name_update) Fires when display name is approved or rejected. Customers want to know immediately if their brand name gets rejected. json { "entry": [{ "id": "[REDACTED]", "time": 1778602217, "changes": [{ "value": { "display_phone_number": "[REDACTED]", "decision": "REJECTED", "requested_verified_name": "[REDACTED]", "rejection_reason": "BIZ_COMMERCE_VIOLATION_OTHER" }, "field": "phone_number_name_update" }] }], "object": "whatsapp_business_account" } b) Account update / violations (Meta field: account_update) Fires on spam violations, quality rating drops, account restrictions. Critical for customers to monitor. json { "entry": [{ "id": "[REDACTED]", "time": 1778216044, "changes": [{ "value": { "event": "ACCOUNT_VIOLATION", "violation_info": { "violation_type": "SPAM" } }, "field": "account_update" }] }], "object": "whatsapp_business_account" } c) CTWA automatic events (Meta field: automatic_events) Fires on CTWA ad lead events with ctwa_clid for downstream attribution. Customers running CTWA ads can pipe this into their CRM or CAPI optimizer. json { "object": "whatsapp_business_account", "entry": [{ "id": "[REDACTED]", "changes": [{ "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "[REDACTED]", "phone_number_id": "[REDACTED]" }, "automatic_events": [{ "id": "[REDACTED]", "event_name": "LeadSubmitted", "timestamp": 1777473615, "ctwa_clid": "[REDACTED]" }] }, "field": "automatic_events" }] }] } d) Template status update (Meta field: message_template_status_update) Fires when a template moves between APPROVED, PAUSED, REJECTED, PENDING. Customers want to know the moment a high-volume template gets paused so they can swap to a backup before broadcasts break.
Rohan Rajpal·6 days ago