This connector covers Teamwork.com (Projects). Teamwork Desk, the help desk product, has its own connector. The connector only reads data: it never creates, changes or deletes anything in Teamwork.
Configuring Teamwork as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Teamwork option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
The Teamwork API uses the API token of a Teamwork user. In Teamwork, click your profile picture, then Edit My Details, open the API & Mobile tab and copy your API token.- Site URL: the address you open Teamwork with, for example
https://yourcompany.teamwork.com(sites hosted in Europe usehttps://yourcompany.eu.teamwork.com). If you access Teamwork through a custom domain, use yourteamwork.comaddress. - API Token: the token copied from Teamwork.
- Start Date: the earliest date synced on the first sync and on full syncs. Tasks, task lists, milestones, time entries, messages and notebooks last updated since this date are loaded, and so are the comments and message replies posted since it. The other tables are always loaded whole.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: keep the suggested type. Tasks, Task Lists, Milestones, Time Entries, Messages, Message Replies, Comments and Notebooks are Incremental: each sync reads only what changed since the previous one (starting one day earlier, to be safe) and merges it into the table. The other tables are Full table: each sync reads them whole and replaces the table.
Comments and Message Replies are read by the date they were posted. Each incremental sync also checks the comments and replies edited since the previous sync, so an edit to an older one is updated too. Tasks, Time Entries and Milestones deleted in Teamwork stay in the table, marked as deleted.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). The main tables are read incrementally, so an hourly or daily sync works well. Optionally, you can configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here. Once you are ready, click Next to finalize the setup.5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Permissions and features
Each table needs the user of the API token to be allowed to see its data, and some need a Teamwork feature that is not on every plan or may be turned off (for example Risks, Workflows, Notebooks, Messages or time tracking). When Teamwork refuses a table (no permission) or does not offer it on your site (feature not available), the sync skips only that table, says which tables were skipped and why, and keeps syncing the others. Give the user the permission, enable the feature in Teamwork, or deselect those tables.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.
Tasks join task lists on
tasks.tasklist_id = tasklists.id, and task lists join projects on tasklists.project_id = projects.id. Time entries, milestones, messages, notebooks, comments, risks and project updates carry project_id. People join on people.id with the user columns (created_by, updated_by, user_id, assignee_user_ids…), companies on companies.id = projects.company_id, and tags on tags.id with the tag_ids lists.
Fields by stream
Fields marked String (JSON) hold a nested object or list as JSON text; use your warehouse’s JSON functions to read them. Dates and times are in UTC.Tasks
Tasks
Every task and subtask (
parent_task_id is set on subtasks), including completed tasks, tasks of archived projects and deleted tasks (status = deleted). Tasks have no project column: join tasklist_id with tasklists.id to get project_id.Table: tasks · Primary key: id · Sync: Incremental (updated_at)Task Lists
Task Lists
Task lists of every project, including completed and deleted ones.Table:
tasklists · Primary key: id · Sync: Incremental (updated_at)Milestones
Milestones
Milestones of every project, including completed and deleted ones.Table:
milestones · Primary key: id · Sync: Incremental (updated_at)Time Entries
Time Entries
Time logged by people on projects and tasks (
minutes, billable flag and rates), including entries of archived projects and deleted entries.Table: time_entries · Primary key: id · Sync: Incremental (updated_at)Messages
Messages
Messages posted on projects.Table:
messages · Primary key: id · Sync: Incremental (updated_at)Message Replies
Message Replies
Replies to project messages, read by creation date.Table:
message_replies · Primary key: id · Sync: Incremental (created_at)Comments
Comments
Notebooks
Notebooks
Project notebooks and their contents.Table:
notebooks · Primary key: id · Sync: Incremental (updated_at)Projects
Projects
Every project the user can see, of every type (normal, templates, personal, tentative), including archived ones (
status = inactive).Table: projects · Primary key: id · Sync: Full tablePeople
People
Users of the site: your team, clients, collaborators, placeholder resources and service accounts, including deleted users (
deleted).Table: people · Primary key: id · Sync: Full tableCompanies
Companies
Companies (your own company and client companies).Table:
companies · Primary key: id · Sync: Full tableProject Categories
Project Categories
Categories used to group projects.Table:
project_categories · Primary key: id · Sync: Full tableCustom Fields
Custom Fields
Definitions of the custom fields of projects, tasks and companies.Table:
custom_fields · Primary key: id · Sync: Full tableWorkflows
Workflows
Workflows (boards of stages tasks move through), including archived ones.Table:
workflows · Primary key: id · Sync: Full tableWorkflow Stages
Workflow Stages
Stages of every workflow.Table:
workflow_stages · Primary key: workflow_id, id · Sync: Full tableJob Roles
Job Roles
Job roles assigned to people.Table:
job_roles · Primary key: id · Sync: Full tableSkills
Skills
Skills assigned to people.Table:
skills · Primary key: id · Sync: Full tableRisks
Risks
Project risks (source, probability, impact).Table:
risks · Primary key: id · Sync: Full tableProject Updates
Project Updates
Status updates posted on projects (text and health).Table:
project_updates · Primary key: id · Sync: Full table
object_type/object_idsay on what), read by posting date.Table:comments· Primary key:id· Sync: Incremental (posted_date_time)bodycomment_linkcontent_typedate_deleteddate_last_editeddeleteddeleted_bydeleted_by_user_idfile_countfile_idshtml_bodyidinstallation_idis_privatelast_edited_bylast_edited_by_user_idlockdown_idmetaobject_idobject_typepeople_notified_countposted_byposted_by_user_idposted_date_timeproject_idreactionsreactions_count