awork n8n integrationAutomate awork with n8n.
Everything awork stores can be driven from a workflow. The node exposes 37 operations across 5 resources, from companies to documents. The awork Trigger listens to 35 events and hands them over in seconds. This awork n8n integration fits teams running client projects.
Community node This node is not shipped with n8n: it is a community package (n8n-nodes-awork) you install from Settings › Community nodes on a self-hosted instance. npm
Verified Trustpilot reviews · AI, automation & growth agency
Why build an awork n8n integration?
The awork node lets a workflow read and write the objects your team works in every day: companies, projects, project tasks, documents and users. Paired with the awork Trigger and its 35 events, n8n becomes the layer that reacts to what happens in awork and pushes data back without anyone retyping it.
A signed deal turns into a live project. The workflow calls company.create with the account name, keeps the ID it returns, then calls project.post with that Company ID and a Project Template ID. The kickoff checklist follows through project.posttasklist. Nobody opens awork to set up the shell of the engagement.
Weekly status without the chase. project.getall pulls the portfolio, project.getprojectstatusesofproject reads where each one stands, and the rows land in a spreadsheet through Google Sheets or in a channel through Slack. Run it on a Schedule Trigger every Monday morning.
Project docs mirrored where the rest of the company reads. document.getdocumentsofproject lists what a project holds, document.getcontent returns the HTML body, and the text is copied into Notion for people who never log into awork.
When an endpoint you need is missing from the node, the HTTP Request node calls the awork API directly and reuses the same credential through predefined authentication. That is the escape hatch for anything outside the 37 operations listed below.
Two limits are worth knowing before you start. The node is at version 1 and the community package only installs on a self-hosted instance, since n8n Cloud accepts verified community nodes only. The trigger has no wildcard option either, so every event you care about has to be ticked one by one. Listings behave the same way: leave Return All off and the node stops at Limit, which quietly shortens a report nobody thinks to check. If you are still weighing platforms, the n8n review covers the hosting side in detail, and the n8n training walks through credentials from the start.
How do you connect awork to n8n?
- 01
Install the community package
Open Settings, go to Community nodes and install
n8n-nodes-awork(version0.1.62). The awork node and the awork Trigger appear in the node panel once the instance restarts. This step only works on a self-hosted n8n, installed through Docker or npm, because n8n Cloud accepts verified community nodes only. Nothing is billed by n8n for the package itself. - 02
Create the awork credential
Head to the Credentials menu and create the awork credential once. A credential is the stored set of keys n8n uses to call the API on your behalf, and it is reused across every workflow on the instance, so you never paste keys into a node. Give it a name that says which awork workspace it points at, since teams running a sandbox and a production workspace will end up with both.
- 03
Pick the credential in the node
Drop an awork node on the canvas and select the credential from its dropdown list. Choose a resource, then an operation, and run the node once on a read such as
project.getall. A read costs nothing and proves the connection before any write touches real data. Wire the same credential into the awork Trigger when you want the workflow to start from an event rather than a schedule.
What starts an awork workflow?
awork Trigger is the node that starts a workflow when something happens in awork. It listens to 35 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your awork account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
absence_added.*1absence_added. absence_added
absence_deleted.*1absence_deleted. absence_deleted
absence_updated.*1absence_updated. absence_updated
company_added.*1company_added. company_added
company_deleted.*1company_deleted. company_deleted
company_type_changed.*1company_type_ changed. company_type_ changed
company_updated.*1company_updated. company_updated
project_added.*1project_added. project_added
project_comment_added.*1project_comment_ added. project_comment_ added
project_deleted.*1project_deleted. project_deleted
project_status_changed.*1project_status_ changed. project_status_ changed
project_type_changed.*1project_type_ changed. project_type_ changed
project_updated.*1project_updated. project_updated
projectmember_added.*1projectmember_added. projectmember_added
projectmember_deleted.*1projectmember_deleted. projectmember_deleted
task_added.*1task_added. task_added
task_comment_added.*1task_comment_ added. task_comment_ added
task_deleted.*1task_deleted. task_deleted
task_status_changed.*1task_status_ changed. task_status_ changed
task_type_changed.*1task_type_ changed. task_type_ changed
task_updated.*1task_updated. task_updated
taskassignment_added.*1taskassignment_added. taskassignment_added
taskassignment_deleted.*1taskassignment_deleted. taskassignment_deleted
tasklist_added.*1tasklist_added. tasklist_added
tasklist_deleted.*1tasklist_deleted. tasklist_deleted
tasklist_updated.*1tasklist_updated. tasklist_updated
timetracking_added.*1timetracking_added. timetracking_added
timetracking_deleted.*1timetracking_deleted. timetracking_deleted
timetracking_type_changed.*1timetracking_type_ changed. timetracking_type_ changed
timetracking_updated.*1timetracking_updated. timetracking_updated
user_activation_changed.*1user_activation_ changed. user_activation_ changed
user_added.*1user_added. user_added
user_deleted.*1user_deleted. user_deleted
user_status_changed.*1user_status_ changed. user_status_ changed
user_updated.*1user_updated. user_updated
Configuration notes
01Set up the awork Trigger
The awork Trigger starts a workflow when something happens in awork, and it works over a webhook, meaning awork calls an n8n URL instead of n8n asking over and over. Each event reaches the workflow in seconds. It uses the same credential as the awork node, so there is nothing new to set up once the community package is installed.
Key parameters
- Events: the list of events the trigger listens to, 35 of them in version 1 of the trigger. There is no wildcard option, so tick each event you actually want, one by one. Companies and users have their own events too, from
company_addedandcompany_type_changedtouser_addedanduser_activation_changed.
02Task events
Six events cover the life of a task: task_added, task_updated, task_status_changed, task_type_changed, task_deleted and task_comment_added. Assignment is separate, through taskassignment_added and taskassignment_deleted. Task lists follow the same pattern with tasklist_added, tasklist_updated and tasklist_deleted.
task_status_changed, and the workflow can read the project it belongs to and notify whoever ordered the work. A comment landing on a task fires task_comment_added, which is the hook for pushing client feedback into a review queue before anyone reopens the board. And taskassignment_added is what you tick when each person should get the new work in their own inbox rather than discovering it during the standup. Keep the selection tight: a workflow subscribed to every task event will run on updates it has no reason to care about.03Project events
Projects emit project_added, project_updated, project_status_changed, project_type_changed, project_deleted and project_comment_added. Membership has its own pair, projectmember_added and projectmember_deleted. Companies emit a matching family, company_added, company_updated, company_type_changed and company_deleted.
project_added is the cleanest starting point for an onboarding workflow, since the project already exists when n8n receives it and the following node can create its task lists and its statuses. projectmember_added suits access housekeeping, giving a new contributor whatever else they need on the day they join. project_status_changed is the one management reporting hangs off, because a project slipping shows up the same day instead of at the Thursday review. Comments have their own event, project_comment_added, useful when a client writes at project level rather than on a task. Pick the two or three events your report really needs and leave the rest unticked.04Time tracking events
Four events report on time entries: timetracking_added, timetracking_updated, timetracking_type_changed and timetracking_deleted. Absences have a matching set with absence_added, absence_updated and absence_deleted. User events sit next to them, including user_added, user_updated, user_status_changed, user_activation_changed and user_deleted.
timetracking_added feeds a running total per project as work is logged, instead of a scramble at month end. timetracking_updated and timetracking_deleted matter just as much there, since a total built only on additions drifts away from reality after the first correction. absence_added can warn a project lead that someone booked on a deadline will not be there. And user_activation_changed is the signal for offboarding, catching the moment an account stops being active instead of waiting for someone to mention it. Absence updates deserve the same care when planning depends on them.What can the awork node do?
The awork node exposes 37 operations across 5 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create Company | Get Company by ID | Delete Document | Add Tag | Change Project Status | Change Status | Add Comment | Get All Companies | Get Comments | Get Document Content | Get Documents of Document Space | Get Documents of Project | Get All Project Statuses | Get Project Statuses of Project | Get Task Lists of Project | Get Task Lists of Project | Get Tasks of Project | Get Task Statuses of Project | Get Types of Work | Create Project | Add Task to Task List | Create Project Status | Create Task List | Create Task Status | Create Type of Work | Set Task Assignee | Set Custom Field |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Company | ✓ | ✓ | ✓ | ||||||||||||||||||||||||
| Document | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||||||||
| Project | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||||||||||
| Project Task | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||
| User | ✓ | ✓ |
Operations index
Company
3 operationsCreate a company
company.createWhat you see in n8n
Notes & use cases
Creates a company in awork and returns its ID, which project operations reuse afterwards.
Key parameters
- Company Name: the name of the company, often
{{ $json.companyName }}from the form or CRM node before it. Leave it empty and the node stops. - Company Description: free text, a good home for the context a salesperson wrote down.
- Company Industry: the industry of the company, worth filling when reporting splits clients by sector.
Get companies
company.getallWhat you see in n8n
Notes & use cases
Returns the companies of the workspace, one item per company, ready for a loop or a lookup.
Key parameters
- Return All: on, n8n walks every page of the API and brings back the full client list; off, Limit caps how many companies come out.
- Filter By: narrows the results on criteria, in the syntax awork documents for filtering.
- Order By: sorts on a field and a direction, so the list arrives ready to paste into a report.
Get company by id
company.getWhat you see in n8n
Notes & use cases
Fetches one company from its identifier and returns its details as a single item.
Key parameters
- Company ID: the ID of the company to retrieve, not its name. It usually comes from a previous node as
{{ $json.id }}, or from the Company ID carried by a project.
Document
7 operationsGet all documents
document.getallWhat you see in n8n
Notes & use cases
Lists the documents of the workspace without asking for anything, one item per document.
Get document by id
document.getWhat you see in n8n
Notes & use cases
Retrieves a single document from its identifier, with its properties rather than its body.
Key parameters
- Document ID: the ID of the document, typically
{{ $json.id }}passed down from a listing operation.
Get document content
document.getcontentWhat you see in n8n
Notes & use cases
Pulls the HTML content of a document, which is what you need when the text itself has to travel.
Key parameters
- Document ID: the ID of the document whose body you want. Chain it after a listing operation so the workflow never hardcodes an identifier.
Get documents of a document space
document.getdocumentsofdocumentspaceWhat you see in n8n
Notes & use cases
Scopes the document listing to a single document space instead of the whole workspace.
Key parameters
- Document Space ID: the ID of the document space to read. One space per department or per client keeps the volume manageable.
Get documents of a project
document.getdocumentsofprojectWhat you see in n8n
Notes & use cases
Lists what a given project holds in the way of documents, one item each.
Key parameters
- Project ID: the ID of the project, commonly
{{ $json.projectId }}carried over from a trigger event on that project.
Create a document
document.createWhat you see in n8n
Notes & use cases
Writes a new document into awork, either in a document space or inside a project.
Key parameters
- Document Name: the name of the document, required.
- Document Space ID or Project ID: one of the two must be provided, and that choice decides where the page lives.
- Document Content: the HTML body of the document.
- Emoji: an emoji icon shown next to the document.
- Parent Document ID: another document in the same project or space, to nest this one under it.
Delete a document
document.deleteWhat you see in n8n
Notes & use cases
Removes a document from awork, so keep this one behind a condition rather than on a raw list.
Key parameters
- Document ID: the ID of the document to delete. Read it first with a get operation if the workflow needs to log what disappeared.
Project
12 operationsGet projects
project.getallWhat you see in n8n
Notes & use cases
Brings back the projects of the workspace, one item per project, which is the backbone of most reporting workflows.
Key parameters
- Return All: on, every page of projects comes through; off, Limit decides how many.
- Filter By: keeps only the projects matching your criteria, in the filtering syntax awork documents.
- Order By: sorts on a field and direction, useful to surface the oldest projects first.
Get project by id
project.getWhat you see in n8n
Notes & use cases
Reads one project from its identifier and returns it as a single item.
Key parameters
- Project ID: the identifier of the project, rarely typed by hand. A trigger event on a task carries the project it belongs to, and that value goes straight in here.
Get all project statuses
project.getprojectstatusesWhat you see in n8n
Notes & use cases
Lists the project statuses defined in the workspace, which is how you learn the IDs the write operations expect.
Key parameters
- Return All: on for the complete set of statuses; off and Limit truncates the list.
- Filter By: restricts the statuses returned on criteria.
- Order By: sorts the statuses on a field and direction.
Get project statuses of project by id
project.getprojectstatusesofprojectWhat you see in n8n
Notes & use cases
Narrows the status listing to a single project rather than the whole workspace.
Key parameters
- Project ID: the project whose statuses you want.
- Return All: on to page through them all, off to stop at Limit.
- Filter By: filters the returned statuses on criteria.
- Order By: sorts them on a field and a direction.
Create a project
project.postWhat you see in n8n
Notes & use cases
Creates a project by sending its details, and returns the project the rest of the workflow will hang off.
Key parameters
- Project Name: required, the only field the operation insists on.
- Company ID: attaches the project to a client account.
- Start Date and Due Date: the dates framing the engagement.
- Project Template ID: reuses an existing template instead of rebuilding the structure.
- Project Type ID, Project Status ID, Project Description: typing, starting state and context.
Get task statuses of project by id
project.gettaskstatusesWhat you see in n8n
Notes & use cases
Reads the task statuses configured on a project, since each project can run its own board.
Key parameters
- Project ID: the project whose task statuses you are reading.
- Return All: on for every status, off to cap at Limit.
- Filter By and Order By: filter and sort the statuses on criteria and on a field with a direction.
Get task lists of project by id
project.gettasklistsWhat you see in n8n
Notes & use cases
Returns the task lists a project is organized into, which are the sections a task can belong to.
Key parameters
- Project ID: the project to inspect. Feed it from a trigger event or from a listing operation upstream.
Create a project status
project.postprojectstatusWhat you see in n8n
Notes & use cases
Adds a project status to a project by sending its details, so the board matches how the team actually works.
Key parameters
- Project ID: the project receiving the new status.
- Status Name: required, what the status is called.
- Status Type: required, the category the status belongs to.
Change the project status
project.changeprojectstatusWhat you see in n8n
Notes & use cases
Switches a project to another status, which is the write counterpart of the status listing operations.
Key parameters
- Project ID: the project to move.
- Project Status ID: required, and it is an identifier, not the label shown in the interface. Resolve it first with the project status listing.
Create a task status
project.posttaskstatusWhat you see in n8n
Notes & use cases
Adds a column to the task board of a project by sending the status details.
Key parameters
- Project ID: the project whose board grows.
- Status Name: required, the label of the column.
- Status Type: required, the category it falls under.
- Task Status Icon: required too, the icon shown on the status.
Create a task list
project.posttasklistWhat you see in n8n
Notes & use cases
Creates a task list inside a project, the container tasks are grouped into.
Key parameters
- Project ID: where the list is created.
- Name: required, the name of this entity. Build it from data upstream, for instance a sprint label or a month.
Get comments of project
project.getcommentsWhat you see in n8n
Notes & use cases
Collects the comments left on a project, one item per comment, without any parameter to fill in.
Project Task
13 operationsGet tasks of a project
projecttask.gettasksofprojectWhat you see in n8n
Notes & use cases
Lists the tasks that belong to one project, one item per task. Most task workflows start from this read.
Key parameters
- Project ID: required, the ID of the project, often
{{ $json.projectId }}carried over from an earlier node. - Return All: on, n8n walks every page of tasks; off, Limit caps how many tasks come back.
- Filter By: keeps only the tasks that match a criterion, written in the awork filtering syntax.
- Order By: sorts on a field and a direction, a due date first for instance.
Get task by id
projecttask.getWhat you see in n8n
Notes & use cases
Pulls a single task back from its identifier, with the whole payload the rest of the workflow reads.
Key parameters
- Task ID: required, the ID of the task to retrieve, usually
{{ $json.id }}taken from a task event.
Create a project task
projecttask.postWhat you see in n8n
Notes & use cases
Sends task details to awork and opens a new task inside a project.
Key parameters
- Project ID: required, the project that receives the task.
- Task Name: required, the name of the task.
- Task Description: the longer text, useful when the request comes from a form.
- Type of Work ID and Task Status ID: identifiers, not labels, so read them first with the listing operations.
- Due Date: a dateTime.
- Planned Duration: a number, counted in seconds.
Set a custom field
projecttask.settaskcustomfieldWhat you see in n8n
Notes & use cases
Writes a value into a custom field of a task, for the data that has no standard field in awork.
Key parameters
- Task ID: required, the ID of the task to retrieve.
- Text Value: the text value of the custom field.
- Custom Field Definition ID: the ID of the custom field definition, which says which field gets written.
Add tag
projecttask.addtagWhat you see in n8n
Notes & use cases
Attaches a tag to a task, which is the lightest way to classify work without touching its status.
Key parameters
- Task ID: required, the ID of the task to retrieve.
- Tag Name: the name of the tag, and it travels as text, so agree on a spelling before the workflow starts writing hundreds of them.
Change status
projecttask.changestatusWhat you see in n8n
Notes & use cases
Moves a task to another status, the write counterpart of the task status listings.
Key parameters
- Task ID: required, the ID of the task to retrieve.
- Status ID: the ID of the status, an identifier rather than the column name, so fetch the task statuses of the project first.
Add comment
projecttask.commentsWhat you see in n8n
Notes & use cases
Posts a comment on a task, so the automated part of the process leaves a trace where the team already reads.
Key parameters
- Task ID: required, the ID of the task to retrieve.
- Comment Message: the message of the comment, which can be built from the data of the previous node.
Set a task assignee
projecttask.settaskassigneeWhat you see in n8n
Notes & use cases
Gives a task to a person, which turns an unowned item into someone's work.
Key parameters
- Task ID: required, the ID of the task to retrieve.
- User ID: the ID of the user, resolved beforehand with the user listing operation, since an email address alone will not do.
Get types of work
projecttask.gettypesofworkWhat you see in n8n
Notes & use cases
Reads the types of work configured in the account, with their identifiers.
Key parameters
- Return All: on, every type of work comes back; off, Limit stops the list early.
- Filter By: restricts the types on a criterion in the awork filtering syntax.
- Order By: orders them on a field and a direction.
Get task lists of a project
projecttask.gettasklistsofprojectWhat you see in n8n
Notes & use cases
Reached from the task resource, this read brings back the task lists of a project with the paging controls the plain project listing does not offer.
Key parameters
- Project ID: required, the ID of the project.
- Return All: on for the full set of lists, off to stop at Limit.
- Filter By: narrows the lists on a criterion.
- Order By: sorts them on a field and a direction.
Create a type of work
projecttask.posttypeofworkWhat you see in n8n
Notes & use cases
Adds a type of work to the account, the category tasks are labeled with.
Key parameters
- Name: required, the name of this entity.
- Icon: required too, the icon of this entity.
- Description: the description of this entity, worth filling when several teams share the same setup.
Add a task to a task list
projecttask.postaddtasktotasklistWhat you see in n8n
Notes & use cases
Files an existing task under a task list of a project, without creating anything new.
Key parameters
- Project ID: required, the ID of the project.
- Task ID: required, the ID of the task to retrieve.
- Task List ID: the task list to move the task to, which the task list listing gives you.
Get comments of task
projecttask.getcommentsWhat you see in n8n
Notes & use cases
Collects the comments of a task from its identifier, one item per comment, with the author and the text of each message.
Key parameters
- Task ID: required, the ID of the task to retrieve.
User
2 operationsGet users
user.getallWhat you see in n8n
Notes & use cases
Reads the users of the awork account, which is how a workflow turns a person into an identifier.
Key parameters
- Return All: on, every user comes back page after page; off, Limit stops the list.
- Filter By: keeps the users that match a criterion.
- Order By: sorts them on a field and a direction, by first name for instance.
Get user by id
user.getWhat you see in n8n
Notes & use cases
Reads one user from an identifier and returns the profile stored in awork, name, status and the rest of the record.
Key parameters
- User ID: required, the ID of the user to retrieve, often the value a task assignment event carries.
Need help automating awork with n8n?
A person reads every message.

