Skip to content

feat: per-thread webhook filtering by chat GUID#780

Open
f1sherman wants to merge 3 commits intoBlueBubblesApp:developmentfrom
f1sherman:configurable-webhooks-per-thread
Open

feat: per-thread webhook filtering by chat GUID#780
f1sherman wants to merge 3 commits intoBlueBubblesApp:developmentfrom
f1sherman:configurable-webhooks-per-thread

Conversation

@f1sherman
Copy link
Copy Markdown

@f1sherman f1sherman commented Mar 19, 2026

Summary

Allow custom webhooks to be configured for each iMessage conversation.

Context

First of all, this is an excellent project, thank you for building it!

I've been running a few openclaw agents using BlueBubbles with separate iMessage Guids per agent for the communication channel and it has been working flawlessly. However, because all webhook requests go to the same endpoint(s), it makes agent isolation pretty difficult. This change enables users to configure separate webhooks per chat Guid. I would imagine this opens up additional use cases as well.

image image

Test plan

  • Create a webhook without selecting any chats - verify it receives all events (existing behavior unchanged)
  • Create a webhook scoped to a specific 1:1 chat - verify it only receives events from that chat
  • Create a webhook scoped to a group chat - verify filtering works for group events
  • Verify chat-filtered webhooks still receive global events (server-update, new-server)
  • Edit an existing webhook to add/remove chat filter - verify changes persist
  • Verify the chat dropdown shows readable names (display names for groups, addresses for 1:1)
  • Upgrade from a previous version - verify migration adds the column and existing webhooks continue working
  • Create a webhook via REST API with chatGuids parameter - verify round-trip through GET

Add optional chatGuids column to Webhook entity so webhooks can be
scoped to specific iMessage conversations. The dispatch logic extracts
chat GUIDs from event data and filters per-webhook. Webhooks without
a chat filter retain current global behavior. Chat-filtered webhooks
still receive global/system events that have no chat context.

Includes a migration for existing production databases.
Pass the new chatGuids field through ServerRepository CRUD methods,
REST API validator/router, and Electron IPC handlers so webhooks can
be created and updated with a chat filter from both the API and UI.
IPC handlers parse chatGuids from JSON for consistency with the REST
API response format.
Add a multi-select chat dropdown to the webhook dialog so users can
scope webhooks to specific iMessage conversations. The dropdown shows
chat display names (or participant addresses for unnamed chats) and
is populated from the existing get-chats IPC handler. The webhooks
table shows the filter state as "All Chats" or a chat count.
@f1sherman f1sherman force-pushed the configurable-webhooks-per-thread branch from a22d4a8 to ca038d7 Compare March 20, 2026 16:40
@f1sherman f1sherman marked this pull request as ready for review March 29, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant