Prerequisites
The connector should already be set up, with a Connector Profile and a Linked Account. See Getting Started on the Inkbox connector page.How webhooks are set up
StackOne creates and manages the Inkbox webhook subscription automatically when the account is connected, and deletes it when the account is disconnected. There is nothing to configure in Inkbox and no URL to paste.
Choose the agent identity
Inkbox webhook subscriptions belong to one agent identity. StackOne subscribes the identity named in the Webhook Agent Handle field of the linked account in StackOne Hub.
- Enter the agent’s handle, for example
sales-agent. Find it in the Inkbox Console or with the List Identities action (agent_handle). - Leave the field empty only when the API key is agent-scoped. StackOne then uses the identity the key is scoped to.
Enable the events you need
Enable the Inkbox events you want in StackOne. StackOne registers one subscription on the identity with exactly those events, and re-creates it when the selection changes.
- Events start arriving once their channel is active on the identity. Subscribing does not enable a channel, add a phone number or connect Slack.
- Inkbox allows up to 60 active subscriptions per identity. The StackOne subscription counts toward that limit.
Available webhook events
The following Inkbox events can be enabled. Only events selected in StackOne are included in the subscription, and Inkbox does not deliver events that are not subscribed.
Email events
Events for an agent identity mailbox: inbound mail and the delivery lifecycle of outbound mail.
- Email Received (
message.received) — Fired when a new inbound email is stored in an agent identity mailbox - Email Sent (
message.sent) — Fired when an outbound email is accepted for delivery (not fired for forwards) - Email Forwarded (
message.forwarded) — Fired when a stored email is forwarded - Email Delivered (
message.delivered) — Fired when delivery of an outbound email to the recipient’s mail server is confirmed - Email Bounced (
message.bounced) — Fired when an outbound email bounces or receives a complaint - Email Failed (
message.failed) — Fired when an outbound email permanently fails after all retry attempts
Text message events
Events for SMS and MMS on the identity phone number.
- Text Received (
text.received) — Fired when an incoming SMS or MMS arrives on the identity phone number - Text Sent (
text.sent) — Fired when an outbound SMS or MMS is accepted for delivery - Text Delivered (
text.delivered) — Fired when an outbound text reaches the recipient’s handset - Text Delivery Failed (
text.delivery_failed) — Fired when an outbound text fails to reach the recipient - Text Delivery Unconfirmed (
text.delivery_unconfirmed) — Fired when delivery of an outbound text cannot be confirmed
iMessage events
Events for iMessage conversations of the identity.
- iMessage Received (
imessage.received) — Fired when an incoming iMessage reaches the identity - iMessage Reaction Received (
imessage.reaction_received) — Fired when an incoming iMessage reaction (tapback) arrives - iMessage Sent (
imessage.sent) — Fired when an outbound iMessage is reported as sent - iMessage Delivered (
imessage.delivered) — Fired when an outbound iMessage reaches the recipient’s device - iMessage Delivery Failed (
imessage.delivery_failed) — Fired when an outbound iMessage fails to deliver
Call events
Events for phone calls of the identity.
- Call Ended (
call.ended) — Fired when a phone call ends (Voice AI calls also report when they never connect)
Agent2Agent events
Events for Agent2Agent tasks sent to or by the identity.
- A2A Task Created (
a2a.task.created) — Fired when another agent creates an Agent2Agent task for this identity - A2A Task Message (
a2a.task.message) — Fired when a caller adds a message to an open Agent2Agent task - A2A Task Canceled (
a2a.task.canceled) — Fired when a caller cancels an open Agent2Agent task - A2A Sent Task Updated (
a2a.sent_task.updated) — Fired when a task sent by this identity receives an update from the target agent
Slack events
Events from the Slack workspaces connected to the identity.
- Slack DM Received (
slack.dm_received) — Fired when a Slack direct message (including replies) arrives - Slack Group DM Received (
slack.group_dm_received) — Fired when a Slack group direct message arrives - Slack Channel Message Received (
slack.channel_message_received) — Fired when a Slack channel message arrives - Slack Mention Received (
slack.mention_received) — Fired when a Slack message explicitly mentions the identity’s bot - Slack Thread Reply Received (
slack.thread_reply_received) — Fired when a reply arrives in a Slack thread - Slack Message Updated (
slack.message_updated) — Fired when a Slack message is edited - Slack Message Deleted (
slack.message_deleted) — Fired when a Slack message is deleted - Slack Reaction Added (
slack.reaction_added) — Fired when a reaction is added to a Slack item - Slack Reaction Removed (
slack.reaction_removed) — Fired when a reaction is removed from a Slack item - Slack Member Joined (
slack.member_joined) — Fired when a member joins a Slack conversation - Slack Member Left (
slack.member_left) — Fired when a member leaves a Slack conversation - Slack Channel Updated (
slack.channel_updated) — Fired when a Slack channel’s name, topic, purpose or archive status changes - Slack File Shared (
slack.file_shared) — Fired when a file is shared in Slack - Slack File Changed (
slack.file_changed) — Fired when a Slack file changes - Slack File Deleted (
slack.file_deleted) — Fired when a Slack file is deleted - Slack Pin Added (
slack.pin_added) — Fired when an item is pinned in a Slack conversation - Slack Pin Removed (
slack.pin_removed) — Fired when an item is unpinned in a Slack conversation - Slack Connection Changed (
slack.connection_changed) — Fired when the Slack workspace connection changes status or needs attention (including rate-limit notices) - Slack Message Sent (
slack.message_sent) — Fired when an outbound Slack message is confirmed posted - Slack Message Send Failed (
slack.message_send_failed) — Fired when an outbound Slack message fails to send - Slack Message Send Unknown (
slack.message_send_unknown) — Fired when the outcome of an outbound Slack send cannot be established - Slack Interaction (
slack.interaction) — Fired when a Slack user triggers an app action, shortcut, command or form - Slack Session Stopped (
slack.session_stopped) — Fired when a Slack user requests that an agent session stop
Delivery format
Details of how Inkbox delivers events to StackOne.
One event per request
Inkbox sends one event per HTTP POST. Every body uses the same envelope, with the event type in event_type, the stable event ID in id, the event time in timestamp and the event details in data. StackOne uses the ID of the record the event is about as the event ID (the message, text, call or task ID), and the envelope id for Slack events.
Retries and signatures
Delivery is at least once and can arrive out of order, with the same id on every retry. Each request is signed with the identity signing key in the X-Inkbox-Signature header (HMAC-SHA256 over the request ID, timestamp and body).
Incoming calls are not included
The phone.incoming_call callback decides whether Inkbox answers a call, so it cannot be delivered through a subscription. Configure it with the identity incoming-call action instead.