Hi Novu team, We've identified an issue where the v1 event trigger endpoint (POST /v1/events/trigger) resolves 0 topic subscribers when the context parameter is included in the request body, even though the same request works perfectly without context. Setup Workflow: chat-escalation (in-app + email steps) Topic: org_37AtMfOY4xJUoncMaplXlnDIvCK with 4 subscribers added via POST /v1/topics/{topicKey}/subscribers Context (v2): tenant context exists for org_37AtMfOY4xJUoncMaplXlnDIvCK v1 Tenant: also exists for org_37AtMfOY4xJUoncMaplXlnDIvCK We confirmed the subscriber is linked to the topic via v1: GET /v1/topics/org_37AtMfOY4xJUoncMaplXlnDIvCK/subscribers/user_37AtLjEwHuEysEaQfPaNF3HaeCu GET /v1/topics/org_37AtMfOY4xJUoncMaplXlnDIvCK/subscribers/user_37AtLjEwHuEysEaQfPaNF3HaeCu { "data": { "externalSubscriberId": "user_37AtLjEwHuEysEaQfPaNF3HaeCu", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" } } { "data": { "externalSubscriberId": "user_37AtLjEwHuEysEaQfPaNF3HaeCu", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" }} The Problem Request WITHOUT context — works (4 notifications created): curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" }, "payload": { "title": "Test", "message": "Test message", "threadId": "test-no-context" } }' curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" }, "payload": { "title": "Test", "message": "Test message", "threadId": "test-no-context" } }' Response: {"data": {"acknowledged": true, "status": "processed", "transactionId": "txn_..."}} Activity raw data: { "totalSubscribers": 4, "topicSubscribers": 4, "topicsUsed": 1 } { "totalSubscribers": 4, "topicSubscribers": 4, "topicsUsed": 1} Same request WITH context — broken (0 notifications): curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" }, "payload": { "title": "Test", "message": "Test message", "threadId": "test-with-context" }, "context": { "tenant": { "id": "org_37AtMfOY4xJUoncMaplXlnDIvCK" } } }' curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_37AtMfOY4xJUoncMaplXlnDIvCK" }, "payload": { "title": "Test", "message": "Test message", "threadId": "test-with-context" }, "context": { "tenant": { "id": "org_37AtMfOY4xJUoncMaplXlnDIvCK" } } }' Response: {"data": {"acknowledged": true, "status": "processed", "transactionId": "txn_..."}} Activity raw data: { "totalSubscribers": 0, "topicSubscribers": 0, "topicsUsed": 1 } { "totalSubscribers": 0, "topicSubscribers": 0, "topicsUsed": 1} The response says "processed" but zero subscribers are resolved and zero notifications are created. Direct subscriber trigger WITH context — works fine: curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": "user_37AtLjEwHuEysEaQfPaNF3HaeCu", "payload": { "title": "Test", "message": "Test message", "threadId": "test-direct-with-context" }, "context": { "tenant": { "id": "org_37AtMfOY4xJUoncMaplXlnDIvCK" } } }' curl -X POST https://api.novu.co/v1/events/trigger \ -H 'Authorization: ApiKey ***' \ -H 'Content-Type: application/json' \ -d '{ "name": "chat-escalation", "to": "user_37AtLjEwHuEysEaQfPaNF3HaeCu", "payload": { "title": "Test", "message": "Test message", "threadId": "test-direct-with-context" }, "context": { "tenant": { "id": "org_37AtMfOY4xJUoncMaplXlnDIvCK" } } }' This correctly creates 1 notification. So context only breaks topic subscriber resolution, not direct subscriber triggers. Summary Table to type context provided tenant provided Result Topic (object) No No 4 notifications Topic (object) Yes No 0 notifications (BUG) Topic (array) No No 0 notifications Topic (array) Yes No 0 notifications Direct subscriber Yes No 1 notification Topic (object) No Yes (string) 4 notifications Why We Need context We use the React component with tenant-based filtering: Users can belong to multiple organizations. The context.tenant on both the trigger and Inbox sides ensures users only see notifications relevant to the organization they're currently viewing. Without tenant isolation, all notifications from all orgs appear in every org's inbox. Our Workaround We now create v1 tenants (POST /v1/tenants) alongside v2 contexts, and use the top-level tenant string field instead of context: { "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_..." }, "payload": { ... }, "tenant": "org_..." } { "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_..." }, "payload": { ... }, "tenant": "org_..."} This works, but it means we need to maintain both v1 tenants and v2 contexts for the same entity, which feels redundant. Expected Behavior Providing context in a topic-targeted trigger should not affect topic subscriber resolution. The following request should resolve all topic subscribers and create notifications, just as it does without context: { "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_..." }, "payload": { ... }, "context": { "tenant": { "id": "org_..." } } } { "name": "chat-escalation", "to": { "type": "Topic", "topicKey": "org_..." }, "payload": { ... }, "context": { "tenant": { "id": "org_..." } }} We'd also appreciate clarification on whether the tenant (v1) field and context (v2) field are intended to be interchangeable for Inbox filtering, or if there's a recommended migration path from v1 tenants to v2 contexts. Thanks!