Denly

Connect ClickUp to coding agents

Want a coding agent to work your ClickUp tasks? Denly does that: tag a task and an agent plans, builds, and opens a pull request, posting comments, status changes, and time entries back to ClickUp.

ClickUp

Import ClickUp tasks and comments, synchronize statuses and time entries, and route by ClickUp assignee.

1. Copy your ClickUp token

In ClickUp open Settings → Integrations & ClickApps → ClickUp API, and on the API tokens tab press Copy. Your personal token already exists – it starts pk_ – so there is nothing to create.

Use Regenerate only if you actually need a new token: it invalidates the current one and breaks every other integration already using it.

The token acts as you, so confirm that account can read the target list and post comments – Denly fetches each task with it. Read ClickUp authentication.

2. Create the Denly connection

Open Workspace → Integrations → Connect → ClickUp.

  • Project scope: the Denly project imported tasks land in.
  • External workspace or repository: your numeric Workspace (team) ID – the first number in any ClickUp URL, e.g. 90182959236. The same value is used to post time entries.
  • Personal API token: the token from step 1.
  • Limit to a ClickUp list ID: optional, and worth setting for a first test – see step 3.
  • Trigger tag: denly; keep Trigger on create disabled for the first test.
  • Initial Denly stage: Plan first. Enable Post worklogs to have Denly record time entries.

The tag is a ClickUp tag, not a custom field, and tags are per space – so the space you test in needs a denly tag. You can create it inline from the task's Tags menu.

Routing is optional. Leave Default Denly assignee blank for unassigned tasks, or choose one workspace member to own everything from this connection.

For per-person routing use Route by external assignee: each row pairs one person in the provider (left) with a workspace member (right), and + adds another row. Routing follows the item's assignee in the provider, not whoever created it, and a matching row beats the default above.

The left-hand value must be the identifier the provider actually sends, which the field's placeholder names for you. Matching ignores surrounding spaces and letter case, but nothing else: a near-miss routes nothing and looks the same as a broken integration.

3. The webhook registers itself

Nothing to do. ClickUp has no webhook screen – its webhooks exist only through its API – so Denly creates one for you when you save the connection, using the token from step 2. It subscribes to taskCreated, taskUpdated, taskTagUpdated, taskAssigneeUpdated and taskCommentPosted, stores the secret ClickUp mints, and names the webhook it created when it saves.

Scope it while testing: fill Limit to a ClickUp list ID in step 2 and the webhook is created against that list alone. Unscoped, it delivers every task event in the workspace, and ClickUp’s event is too thin to filter on, so each one costs a task fetch before Denly can drop it. The setting is read when the webhook is created, so it only appears while you are creating the connection – to change it later, recreate the connection.

If registration fails – usually a token without webhook scope – the connection is still created and the dialog says why, then shows the URL and secret to register by hand. You can then create the hook yourself and paste ClickUp’s secret into ClickUp webhook signing secret under Edit. Read ClickUp webhooks.

ClickUp sends a thin event carrying little more than a task ID; Denly then fetches the full task with the API token, which is why the token needs read access to the target list.

4. Test and troubleshoot

Create a ClickUp task, add the denly tag, and open Workspace → Integrations → Recent events.

  • Processed – it became a Denly task.
  • Skipped – expected, and usually not a fault. Trigger did not match after enrichment means the fetched task had no denly tag. Already linked means another event for the same task got there first.
  • Failed – the diagnostic column carries the provider's own error.

Creating an already-tagged task fires two events: taskCreated builds the task and taskTagUpdated then lands on it and is skipped as already linked. Two rows for one task is correct.

Nothing at all, and the card still on Awaiting first event, means deliveries are being rejected before the queue – the signing secret does not match. Recreate the connection so a fresh webhook is registered.

A comment containing #denly on a linked task becomes revision work.

See also

All integrations and providers → · Connect monday.com to coding agents · Connect Basecamp to coding agents · Full documentation