Topic types
All available webhook event topics in Featurebase.
Featurebase webhooks support the following event topics. Subscribe to the topics you need when registering your webhook.
Available topics
Section titled “Available topics”Feedback & changelog topics
Section titled “Feedback & changelog topics”| Topic | Description |
|---|---|
post.created | A new post was created |
post.updated | An existing post was updated |
post.deleted | A post was successfully deleted |
post.voted | A post received a vote |
changelog.published | A new changelog entry was published |
comment.created | A new comment was created |
comment.updated | An existing comment was updated |
comment.deleted | A comment was successfully deleted |
Conversation topics
Section titled “Conversation topics”| Topic | Description |
|---|---|
conversation.user.created | A user started a new conversation |
conversation.user.replied | A user (contact) replied to a conversation |
conversation.admin.replied | An admin replied to a conversation |
conversation.admin.noted | An admin added an internal note to a conversation |
conversation.admin.closed | An admin closed a conversation |
conversation.admin.opened | An admin reopened a conversation |
conversation.admin.snoozed | An admin snoozed a conversation |
conversation.admin.unsnoozed | A conversation was unsnoozed (manually or automatically) |
conversation.admin.assigned | A conversation was assigned to an admin or team |
conversation.priority.updated | A conversation’s priority was changed |
conversation.handover_requested | An AI agent requested handover to a human agent |
conversation.deleted | A conversation was deleted |
conversation.contact.attached | A contact was added as a participant to a conversation |
conversation.contact.detached | A contact was removed from a conversation |
conversation.read | A conversation was marked as read |
conversation_part.redacted | A conversation part (message) was redacted |
Post events
Section titled “Post events”post.created
Section titled “post.created”Triggered when a user or admin creates a new post (feedback, feature request, bug report, etc.).
Payload includes:
object: 'post'- Type identifier- Full post details (
title,content,status,boardId) authorobject with user details- Post metadata (
slug,createdAt,upvotes)
post.updated
Section titled “post.updated”Triggered when any field on a post is modified, including:
- Title or content changes
- Status changes (e.g., “In Review” → “Completed”)
- Board changes
- Tag modifications
The changes array in the payload shows exactly what was modified. Field names use Nova conventions (e.g., boardId, status).
post.deleted
Section titled “post.deleted”Triggered when a post is permanently deleted from the system.
Payload includes:
- Full post details at the time of deletion
authorinformation
post.voted
Section titled “post.voted”Triggered when a user upvotes or removes their upvote from a post.
Payload includes:
object: 'post_vote'- Type identifieraction: Either"add"or"remove"postId: The post ID that was voted onvoter: The user who voted (either{ object: 'admin', ... }or{ object: 'contact', ... })
Changelog events
Section titled “Changelog events”changelog.published
Section titled “changelog.published”Triggered when a changelog entry is published (made live).
Payload includes:
object: 'changelog'- Type identifier- Full changelog details (
title,content,featuredImage) - Locale information
firstPublishInLocale: Whether this is the first publish in this localecategoriesarray with notification settings
Comment events
Section titled “Comment events”comment.created
Section titled “comment.created”Triggered when a new comment is posted on any post.
Payload includes:
object: 'comment'- Type identifier- Comment content and metadata
authorobject with user informationpostId: Parent post referenceparentCommentId: For replies, the parent comment ID (flat structure)isPrivate: Privacy setting
comment.updated
Section titled “comment.updated”Triggered when a comment’s content is modified.
Payload includes:
- Updated comment content
- The
changesarray showing what was modified
comment.deleted
Section titled “comment.deleted”Triggered when a comment is permanently deleted.
Payload includes:
- Full comment details at the time of deletion
Conversation events
Section titled “Conversation events”Conversation webhooks include conversationId and conversationUrl fields in the top-level envelope alongside the standard fields. These topics are split into two categories based on what data.item contains.
Conversation-level topics
Section titled “Conversation-level topics”These topics send a full Conversation object as data.item, excluding the conversationParts array (individual messages are not included — use the Conversations API to fetch them if needed). Topics that represent a state change also include a data.changes array showing what fields were modified.
The data.changes array contains objects with field, oldValue, and newValue properties. Fields like updatedAt, lastActivityAt, and waitingSince are excluded from the diff.
conversation.user.created
Section titled “conversation.user.created”Triggered when a user (contact or lead) starts a new conversation through the messenger or email.
data.item: Conversation object
data.changes: Not included
conversation.admin.closed
Section titled “conversation.admin.closed”Triggered when an admin closes a conversation.
data.item: Conversation object (with state: "closed")
data.changes: Included (e.g., state changed from "open" to "closed")
conversation.admin.opened
Section titled “conversation.admin.opened”Triggered when an admin reopens a previously closed or snoozed conversation.
data.item: Conversation object (with state: "open")
data.changes: Included (e.g., state changed to "open")
conversation.admin.snoozed
Section titled “conversation.admin.snoozed”Triggered when an admin snoozes a conversation until a specific time.
data.item: Conversation object (with state: "snoozed" and snoozedUntil timestamp)
data.changes: Included (e.g., state changed to "snoozed")
conversation.admin.unsnoozed
Section titled “conversation.admin.unsnoozed”Triggered when a snoozed conversation is unsnoozed, either manually by an admin or automatically when the snooze timer expires.
data.item: Conversation object (with state: "open")
data.changes: Included (e.g., state changed from "snoozed" to "open")
conversation.admin.assigned
Section titled “conversation.admin.assigned”Triggered when a conversation is assigned to an admin or team, or when the assignment changes.
data.item: Conversation object
data.changes: Included (e.g., adminAssigneeId or teamAssigneeId changed)
conversation.priority.updated
Section titled “conversation.priority.updated”Triggered when a conversation’s priority flag is changed.
data.item: Conversation object
data.changes: Included (e.g., priority changed from false to true)
conversation.handover_requested
Section titled “conversation.handover_requested”Triggered when the AI agent determines it cannot handle the conversation and requests handover to a human agent.
data.item: Conversation object (with botConversationState: "handed_off_to_human")
data.changes: Included (e.g., botConversationState changed)
conversation.deleted
Section titled “conversation.deleted”Triggered when a conversation is permanently deleted.
data.item: Conversation object at the time of deletion
data.changes: Not included
conversation.contact.attached
Section titled “conversation.contact.attached”Triggered when a contact is added as a participant to an existing conversation.
data.item: Conversation object
data.changes: Included (e.g., participants changed)
conversation.contact.detached
Section titled “conversation.contact.detached”Triggered when a contact is removed from a conversation’s participants.
data.item: Conversation object
data.changes: Included (e.g., participants changed)
conversation.read
Section titled “conversation.read”Triggered when read receipts are updated on a conversation.
data.item: Conversation object (with updated readReceipts)
data.changes: Included (e.g., readReceipts changed)
Message-level topics
Section titled “Message-level topics”These topics send a single ConversationPart object as data.item. The specific variant depends on the partType discriminator. These topics never include data.changes.
conversation.user.replied
Section titled “conversation.user.replied”Triggered when a contact replies to an existing conversation.
data.item: ConversationPart — either a UserMessagePart (partType: "user_msg") or an EmailMessagePart (partType: "email_msg" from a contact)
conversation.admin.replied
Section titled “conversation.admin.replied”Triggered when an admin or bot sends a reply visible to the user in a conversation.
data.item: ConversationPart — an AdminMessagePart (partType: "admin_msg"), BotMessagePart (partType: "bot_msg"), or EmailMessagePart (partType: "email_msg" from an admin)
conversation.admin.noted
Section titled “conversation.admin.noted”Triggered when an admin adds an internal note to a conversation. Internal notes are only visible to other admins.
data.item: ConversationPart — an AdminNotePart (partType: "admin_note")
conversation_part.redacted
Section titled “conversation_part.redacted”Triggered when a conversation part (message) is redacted by an admin.
data.item: ConversationPart — the redacted part (any human message part variant with redacted: true)
Nova field naming conventions
Section titled “Nova field naming conventions”Nova webhooks use the standardized API field naming:
| Resource | Key Fields |
|---|---|
| Post | boardId, status, author, tags, isPinned, createdAt, updatedAt |
| Comment | postId, parentCommentId, author, isPinned |
| Vote | postId, voter (with object: 'admin' or object: 'contact') |
| Changelog | categories (not changelogCategories) |
| Conversation | state, priority, adminAssigneeId, teamAssigneeId, participants, source, readReceipts, botConversationState |
Next steps
Section titled “Next steps”- Handler examples - Code examples for processing webhooks