File a website's chats under the topic its integration chose

FeatureMediaService
Shipped
September 6, 2026 at 12:21 AM UTC
Author
Kamo
Commit
637a335

createSupportSession took the topic from whatever title the visitor's browser sent — the widget hardcodes "General Inquiry" — and when no topic matched that name it silently used the org's first active topic by sort order. So which team a website's chats reached was decided by a string in public JavaScript and a sort order, and no setting anywhere could change it. resolveTopic() now reads the integration's configured topic first. The old two tiers stay underneath it, because every integration predating the setting has none configured and a chat filed under a guessed queue still beats a visitor who can't reach anyone. A configured topic that no longer resolves — deleted, or moved to another org — logs and falls through rather than refusing the chat: the visitor isn't the right person to absorb a misconfiguration they can't see. The integration lookup moves above the topic resolution, since it's now an input to it rather than just attribution captured afterwards. Writes go through resolveOwnedSupportTopicId, mirroring the sales-agent resolver beside it — the org check belongs at the write, not at some later read that happens to be scoped. Not added to the bootstrap cache-bust list on purpose: this is resolved server-side and never reaches the widget's bootstrap payload.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing