Prerequisites
Before continuing, you should have already completed the following for this connector:Configure the Connector
Connector Profile
Connector Profile
Link an Account
Link Account
Link Account
Subscribe via the StackOne dashboard
This connector uses Programmatic Webhooks. When you connect an Asana account, StackOne automatically creates the webhook subscriptions (via POST /webhooks) pointing at your StackOne callback URL. Because Asana does not propagate task, story, or section events to workspace-level webhooks, the connector registers a hybrid set: one workspace-scoped subscription for project creation, plus one project-scoped subscription for each Project ID you configure (for task, story, and section events). Each subscription carries a fixed filter set for its scope; StackOne then emits downstream only the events you have enabled on the connection.
Check scopes
Ensure the connected application has webhooks:read, webhooks:write, and webhooks:delete OAuth scopes enabled. Without these, subscription creation will fail.
Select event subscriptions in the dashboard
In the StackOne dashboard, open the Asana connector profile and enable the webhook events you want delivered downstream. See the Available Webhook Events section below for the full list.
Registration on subscribe
On connect, StackOne creates the subscriptions on your behalf. The workspace subscription is registered against your configured Workspace ID (fixed filter: project added). A separate project subscription is registered against each configured Project ID (fixed filters: task added/changed/removed/deleted, story added/removed, section added/changed).
- StackOne registers webhooks with a fixed filter set per scope; only the events you enable on the connection are emitted downstream.
- Task, story, and section events require at least one Project ID to be configured — they are not delivered by the workspace-level webhook.
- Asana sends an in-flight X-Hook-Secret handshake to StackOne’s callback URL during creation — this is handled automatically.
- Asana delivers events as a JSON body with an
eventsarray. Multiple changes can be batched in a single delivery.
Heartbeat verification
Asana sends an empty-events heartbeat POST to the webhook URL every 8 hours. StackOne responds with 200 OK automatically to prevent Asana from disabling the subscription.
Unsubscribe
Changing your event selection re-registers the StackOne-managed subscription. Disconnecting the account deletes it, stopping deliveries.
Available Webhook Events
The following Asana events can be enabled. All events are filtered by resource_type and action via Asana’s webhook filters mechanism.
Task events
Events fired when tasks are created, modified, or removed.
- Task Added (
task.added) — Fired when a task is added to a project or workspace - Task Changed (
task.changed) — Fired when a task’s properties are modified - Task Removed (
task.removed) — Fired when a task is removed from a project - Task Deleted (
task.deleted) — Fired when a task is permanently deleted
Project events
Fired at the workspace level when a project is created. Note: Asana delivers only project creation to workspace-level webhooks — project modifications and deletions are not available via webhooks.
- Project Added (
project.added) — Fired when a project is added to a team or workspace
Story events
Events fired when comments or activity stories are added to or removed from tasks.
- Story Added (
story.added) — Fired when a comment or activity story is added to a task - Story Removed (
story.removed) — Fired when a story is removed from a task
Section events
Events fired when sections within a project are added or modified.
- Section Added (
section.added) — Fired when a section is added to a project - Section Changed (
section.changed) — Fired when a section’s name or properties are modified
Delivery format
Details of how Asana delivers events to StackOne.
JSON payloads
Asana delivers each webhook as an HTTP POST with a JSON body containing an events array. Each array element includes action (added, changed, removed, deleted), resource (with gid and resource_type), parent, created_at, and user. Multiple changes may be batched in one delivery.
Signature verification
Asana includes an X-Hook-Signature header — a SHA256 HMAC signature computed over the request body using the X-Hook-Secret established during the creation handshake.