Skip to content
Dashboard
Webhooks

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.

TopicDescription
post.createdA new post was created
post.updatedAn existing post was updated
post.deletedA post was successfully deleted
post.votedA post received a vote
changelog.publishedA new changelog entry was published
comment.createdA new comment was created
comment.updatedAn existing comment was updated
comment.deletedA comment was successfully deleted
TopicDescription
conversation.user.createdA user started a new conversation
conversation.user.repliedA user (contact) replied to a conversation
conversation.admin.repliedAn admin replied to a conversation
conversation.admin.notedAn admin added an internal note to a conversation
conversation.admin.closedAn admin closed a conversation
conversation.admin.openedAn admin reopened a conversation
conversation.admin.snoozedAn admin snoozed a conversation
conversation.admin.unsnoozedA conversation was unsnoozed (manually or automatically)
conversation.admin.assignedA conversation was assigned to an admin or team
conversation.priority.updatedA conversation’s priority was changed
conversation.handover_requestedAn AI agent requested handover to a human agent
conversation.deletedA conversation was deleted
conversation.contact.attachedA contact was added as a participant to a conversation
conversation.contact.detachedA contact was removed from a conversation
conversation.readA conversation was marked as read
conversation_part.redactedA conversation part (message) was redacted

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)
  • author object with user details
  • Post metadata (slug, createdAt, upvotes)

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).

Triggered when a post is permanently deleted from the system.

Payload includes:

  • Full post details at the time of deletion
  • author information

Triggered when a user upvotes or removes their upvote from a post.

Payload includes:

  • object: 'post_vote' - Type identifier
  • action: Either "add" or "remove"
  • postId: The post ID that was voted on
  • voter: The user who voted (either { object: 'admin', ... } or { object: 'contact', ... })

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 locale
  • categories array with notification settings

Triggered when a new comment is posted on any post.

Payload includes:

  • object: 'comment' - Type identifier
  • Comment content and metadata
  • author object with user information
  • postId: Parent post reference
  • parentCommentId: For replies, the parent comment ID (flat structure)
  • isPrivate: Privacy setting

Triggered when a comment’s content is modified.

Payload includes:

  • Updated comment content
  • The changes array showing what was modified

Triggered when a comment is permanently deleted.

Payload includes:

  • Full comment details at the time of deletion

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.

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.

Triggered when a user (contact or lead) starts a new conversation through the messenger or email.

data.item: Conversation object
data.changes: Not included

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")

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")

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")

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")

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)

Triggered when a conversation’s priority flag is changed.

data.item: Conversation object
data.changes: Included (e.g., priority changed from false to true)

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)

Triggered when a conversation is permanently deleted.

data.item: Conversation object at the time of deletion
data.changes: Not included

Triggered when a contact is added as a participant to an existing conversation.

data.item: Conversation object
data.changes: Included (e.g., participants changed)

Triggered when a contact is removed from a conversation’s participants.

data.item: Conversation object
data.changes: Included (e.g., participants changed)

Triggered when read receipts are updated on a conversation.

data.item: Conversation object (with updated readReceipts)
data.changes: Included (e.g., readReceipts changed)

These topics send a single ConversationPart object as data.item. The specific variant depends on the partType discriminator. These topics never include data.changes.

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)

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)

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")

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 webhooks use the standardized API field naming:

ResourceKey Fields
PostboardId, status, author, tags, isPinned, createdAt, updatedAt
CommentpostId, parentCommentId, author, isPinned
VotepostId, voter (with object: 'admin' or object: 'contact')
Changelogcategories (not changelogCategories)
Conversationstate, priority, adminAssigneeId, teamAssigneeId, participants, source, readReceipts, botConversationState
  • Handler examples - Code examples for processing webhooks