Prerequisites
The connector should already be set up, with a Connector Profile and a Linked Account. See Getting Started on the Teamwork connector page.Automatic webhook setup
StackOne creates and manages the Teamwork webhooks automatically when the account is connected, and deletes them when the account is disconnected. You don’t need to add any webhooks in Teamwork.
Select events in StackOne
Enable the webhook events you want on the Teamwork connector in StackOne. A Teamwork webhook covers exactly one event, so StackOne creates one site-level webhook for each selected event. Site-level webhooks cover every project on the site.
- StackOne also turns on webhooks for the Teamwork site if they are switched off.
- Changing the selected events replaces the webhooks StackOne created with a new set.
- The webhooks StackOne creates appear in Teamwork’s webhook settings for the site. Don’t edit or delete them there. A deleted webhook stops delivering its event until the account is reconnected in StackOne Hub.
Available webhook events
The following Teamwork events can be enabled. Only events selected in StackOne get a webhook, and Teamwork does not deliver events that have no webhook.
Project events
Events related to projects, project updates and project billing rates.
- Project Archived (
PROJECT.ARCHIVED) — Fired when a project is archived - Project Completed (
PROJECT.COMPLETED) — Fired when a project is marked complete - Project Copied (
PROJECT.COPIED) — Fired when a project is copied - Project Created (
PROJECT.CREATED) — Fired when a project is created - Project Deleted (
PROJECT.DELETED) — Fired when a project is deleted - Project Reopened (
PROJECT.REOPENED) — Fired when a project is reopened - Project Tagged (
PROJECT.TAGGED) — Fired when a project has a tag added - Project Untagged (
PROJECT.UNTAGGED) — Fired when a project has a tag removed - Project Updated (
PROJECT.UPDATED) — Fired when a project is updated - Project Rate Updated (
PROJECTRATE.UPDATED) — Fired when a project’s billable rates are updated - Project Update Created (
PROJECTUPDATE.CREATED) — Fired when a project update is posted on a project - Project Update Deleted (
PROJECTUPDATE.DELETED) — Fired when a project update is deleted - Project Update Updated (
PROJECTUPDATE.UPDATED) — Fired when a project update is updated
Budget, risk and role events
Events related to project budgets, risks and project roles. Risks need the Teamwork Risk Register, which not every plan includes.
- Budget Created (
BUDGET.CREATED) — Fired when a project budget is created - Budget Deleted (
BUDGET.DELETED) — Fired when a project budget is deleted - Budget Updated (
BUDGET.UPDATED) — Fired when a project budget is updated - Risk Created (
RISK.CREATED) — Fired when a risk is created - Risk Deleted (
RISK.DELETED) — Fired when a risk is deleted - Risk Updated (
RISK.CREATED) — Fired when a risk is edited (Teamwork sends edits under RISK.CREATED) - Role Created (
ROLE.CREATED) — Fired when a project role is created - Role Deleted (
ROLE.DELETED) — Fired when a project role is deleted - Role Updated (
ROLE.UPDATED) — Fired when a project role is updated
Intake form events
Events related to intake forms. Intake forms are not included in every Teamwork plan.
- Form Created (
FORM.CREATED) — Fired when an intake form is created - Form Deleted (
FORM.DELETED) — Fired when an intake form is deleted - Form Published (
FORM.PUBLISHED) — Fired when an intake form is published - Form Submitted (
FORM.SUBMITTED) — Fired when an intake form is submitted
Task events
Events related to tasks. Task events also carry the parent project, task list and the users referenced by the task.
- Task Completed (
TASK.COMPLETED) — Fired when a task is marked complete - Task Created (
TASK.CREATED) — Fired when a task is created - Task Deleted (
TASK.DELETED) — Fired when a task is deleted - Task Moved (
TASK.MOVED) — Fired when a task is moved to another task list - Task Reminder (
TASK.REMINDER) — Fired when a reminder set on a task is due - Task Reopened (
TASK.REOPENED) — Fired when a task is reopened - Task Tagged (
TASK.TAGGED) — Fired when a task has a tag added - Task Untagged (
TASK.UNTAGGED) — Fired when a task has a tag removed - Task Updated (
TASK.UPDATED) — Fired when a task is updated
Task list events
Events related to task lists.
- Task List Completed (
TASKLIST.COMPLETED) — Fired when a task list is marked complete - Task List Created (
TASKLIST.CREATED) — Fired when a task list is created - Task List Created From Template (
TASKLIST.CREATEDFROMTEMPLATE) — Fired when a task list is created from a task list template - Task List Deleted (
TASKLIST.DELETED) — Fired when a task list is deleted - Task List Reopened (
TASKLIST.REOPENED) — Fired when a task list is reopened - Task List Updated (
TASKLIST.UPDATED) — Fired when a task list is updated
Milestone events
Events related to milestones. Milestone events also carry the linked task lists and users.
- Milestone Completed (
MILESTONE.COMPLETED) — Fired when a milestone is marked complete - Milestone Created (
MILESTONE.CREATED) — Fired when a milestone is created - Milestone Deleted (
MILESTONE.DELETED) — Fired when a milestone is deleted - Milestone Reminder (
MILESTONE.REMINDER) — Fired when a reminder for a milestone is sent - Milestone Reopened (
MILESTONE.REOPENED) — Fired when a milestone is reopened - Milestone Tagged (
MILESTONE.TAGGED) — Fired when a milestone has a tag added - Milestone Untagged (
MILESTONE.UNTAGGED) — Fired when a milestone has a tag removed - Milestone Updated (
MILESTONE.UPDATED) — Fired when a milestone is updated
Comment and message events
Events related to comments, messages and message replies.
- Comment Created (
COMMENT.CREATED) — Fired when a comment is created - Comment Deleted (
COMMENT.DELETED) — Fired when a comment is deleted - Comment Updated (
COMMENT.UPDATED) — Fired when a comment is updated - Message Created (
MESSAGE.CREATED) — Fired when a message is created - Message Deleted (
MESSAGE.DELETED) — Fired when a message is deleted - Message Tagged (
MESSAGE.TAGGED) — Fired when a message has a tag added - Message Untagged (
MESSAGE.UNTAGGED) — Fired when a message has a tag removed - Message Updated (
MESSAGE.UPDATED) — Fired when a message is updated - Message Reply Created (
MESSAGEREPLY.CREATED) — Fired when a message reply is created - Message Reply Deleted (
MESSAGEREPLY.DELETED) — Fired when a message reply is deleted - Message Reply Updated (
MESSAGEREPLY.UPDATED) — Fired when a message reply is updated
Notebook and link events
Events related to notebooks and links.
- Link Created (
LINK.CREATED) — Fired when a link is created - Link Deleted (
LINK.DELETED) — Fired when a link is deleted - Link Tagged (
LINK.TAGGED) — Fired when a link has a tag added - Link Untagged (
LINK.UNTAGGED) — Fired when a link has a tag removed - Link Updated (
LINK.UPDATED) — Fired when a link is updated - Notebook Created (
NOTEBOOK.CREATED) — Fired when a notebook is created - Notebook Deleted (
NOTEBOOK.DELETED) — Fired when a notebook is deleted - Notebook Tagged (
NOTEBOOK.TAGGED) — Fired when a notebook has a tag added - Notebook Untagged (
NOTEBOOK.UNTAGGED) — Fired when a notebook has a tag removed - Notebook Updated (
NOTEBOOK.UPDATED) — Fired when a notebook is updated
File events
Events related to files.
- File Created (
FILE.CREATED) — Fired when a file is created - File Deleted (
FILE.DELETED) — Fired when a file is deleted - File Downloaded (
FILE.DOWNLOADED) — Fired when a file is downloaded - File Moved (
FILE.MOVED) — Fired when a file is moved to another project or category - File Tagged (
FILE.TAGGED) — Fired when a file has a tag added - File Untagged (
FILE.UNTAGGED) — Fired when a file has a tag removed - File Updated (
FILE.UPDATED) — Fired when a file is updated, including when a new version is uploaded
Company, user and team events
Events related to companies, users and teams. Company and user events come only from site-level webhooks, which StackOne creates.
- Company Created (
COMPANY.CREATED) — Fired when a company is created - Company Deleted (
COMPANY.DELETED) — Fired when a company is deleted - Company Updated (
COMPANY.UPDATED) — Fired when a company is updated - Team Created (
TEAM.CREATED) — Fired when a team is created - Team Deleted (
TEAM.DELETED) — Fired when a team is deleted - Team Updated (
TEAM.UPDATED) — Fired when a team is updated - User Created (
USER.CREATED) — Fired when an user is created - User Deleted (
USER.DELETED) — Fired when an user is deleted - User Updated (
USER.UPDATED) — Fired when an user is updated
Status and calendar events
Events related to user status updates and calendar events. Both come only from site-level webhooks.
- Calendar Event Created (
CALENDAREVENT.CREATED) — Fired when a calendar event is created - Calendar Event Deleted (
CALENDAREVENT.DELETED) — Fired when a calendar event is deleted - Calendar Event Reminder (
CALENDAREVENT.REMINDER) — Fired when a reminder for a calendar event is due - Calendar Event Updated (
CALENDAREVENT.UPDATED) — Fired when a calendar event is updated - Status Created (
STATUS.CREATED) — Fired when a user posts a status update - Status Deleted (
STATUS.DELETED) — Fired when a user’s status update is deleted - Status Updated (
STATUS.UPDATED) — Fired when a user’s status update is edited
Time tracking and billing events
Events related to time entries, timers, expenses and invoices.
- Expense Created (
EXPENSE.CREATED) — Fired when a project expense is created - Expense Deleted (
EXPENSE.DELETED) — Fired when a project expense is deleted - Expense Updated (
EXPENSE.UPDATED) — Fired when a project expense is updated - Invoice Completed (
INVOICE.COMPLETED) — Fired when an invoice is marked complete - Invoice Created (
INVOICE.CREATED) — Fired when an invoice is created - Invoice Deleted (
INVOICE.DELETED) — Fired when an invoice is deleted - Invoice Reopened (
INVOICE.REOPENED) — Fired when an invoice is reopened - Invoice Updated (
INVOICE.UPDATED) — Fired when an invoice is updated - Time Entry Created (
TIME.CREATED) — Fired when a time entry is created - Time Entry Deleted (
TIME.DELETED) — Fired when a time entry is deleted - Time Entry Tagged (
TIME.TAGGED) — Fired when a time entry has a tag added - Time Entry Untagged (
TIME.UNTAGGED) — Fired when a time entry has a tag removed - Time Entry Updated (
TIME.UPDATED) — Fired when a time entry is updated - Timer Created (
TIMER.CREATED) — Fired when a timer is started
Portfolio and workflow events
Events related to portfolio boards, cards and columns, workflows and workflow stages. Portfolio boards and workflows are not included in every Teamwork plan.
- Portfolio Board Created (
PORTFOLIOBOARD.CREATED) — Fired when a portfolio board is created - Portfolio Board Deleted (
PORTFOLIOBOARD.DELETED) — Fired when a portfolio board is deleted - Portfolio Board Updated (
PORTFOLIOBOARD.UPDATED) — Fired when a portfolio board is updated - Portfolio Card Created (
PORTFOLIOCARD.CREATED) — Fired when a project is added to a portfolio board as a card - Portfolio Card Deleted (
PORTFOLIOCARD.DELETED) — Fired when a project card is removed from a portfolio board - Portfolio Card Moved (
PORTFOLIOCARD.MOVED) — Fired when a project card is moved to another column on a portfolio board - Portfolio Card Reopened (
PORTFOLIOCARD.REOPENED) — Fired when a completed project card on a portfolio board is reopened - Portfolio Card Updated (
PORTFOLIOCARD.UPDATED) — Fired when a project card on a portfolio board is updated - Portfolio Column Created (
PORTFOLIOCOLUMN.CREATED) — Fired when a portfolio column is created - Portfolio Column Deleted (
PORTFOLIOCOLUMN.DELETED) — Fired when a portfolio column is deleted - Portfolio Column Updated (
PORTFOLIOCOLUMN.UPDATED) — Fired when a portfolio column is updated - Stage Created (
STAGE.CREATED) — Fired when a workflow stage is created - Stage Deleted (
STAGE.DELETED) — Fired when a workflow stage is deleted - Stage Updated (
STAGE.UPDATED) — Fired when a workflow stage is updated - Workflow Created (
WORKFLOW.CREATED) — Fired when a workflow is created - Workflow Deleted (
WORKFLOW.DELETED) — Fired when a workflow is deleted - Workflow Updated (
WORKFLOW.UPDATED) — Fired when a workflow is updated
Delivery format
Details of how Teamwork delivers events to StackOne.
One event per request
Each request carries one event as a version 2 JSON body. Teamwork names the event only in the X-Projects-Event header, not in the body, and StackOne routes each request to the matching event from that header.
Event payload
The event data is the Teamwork webhook body, and the event ID is the ID of the record that changed.
- Most events carry
eventCreator(the user who made the change) and the full record, for exampletaskormilestone. - Most delete events carry only the deleted record’s
id, itsprojectIdandeventCreator. Site-level deletes (companies, users, teams, statuses, calendar events, workflows and portfolio items) have noprojectId. - Budget and project update deletes carry the full deleted record, including when it was deleted.
- Deleting a file sends one File Deleted event for each version of the file, and its event ID is the file version ID.
- A project rate has no ID of its own, so Project Rate Updated uses the ID of the project the rate belongs to.
- File Downloaded events carry only the
fileobject. - For user status events the event ID is the ID of the status message, which is the ID the Teamwork API uses for a status.
Retries and changes that send no events
Teamwork retries a delivery that is not acknowledged within 5 seconds once an hour, up to 3 times, and deactivates a webhook after 3 or more discarded events. StackOne acknowledges every delivery straight away.
- Changes made through the Teamwork API with
fireWebhook=falsedon’t send any events.