ClickUp Lookup: an n8n community node for option mapping

2024-06-01 · Ben Williamson

The problem I kept re-solving

ClickUp custom fields store dropdown values as opaque option IDs. Workflow conditions and update payloads need those IDs, but humans think in labels. The official n8n ClickUp node creates and updates tasks cleanly. It does not help when you need "find the option ID for label Blocked on field Status Detail" across workspaces where field IDs differ.

I copied the same HTTP introspection block into five workflows across two n8n instances. Each copy broke when someone renamed a dropdown option. Packaging a lookup-focused node beat maintaining brittle duplicates.

What I shipped

n8n-nodes-clickuplookup is a community node scoped to mapping and discovery, not full CRUD:

  • Field → Resolve Option: match dropdown, labels, status, or priority values to option IDs.

  • List-all discovery mode: dump field metadata when you are wiring a new workflow and do not have IDs handy.

  • Task → Find / List: search by name, filter, or custom field without pasting raw HTTP nodes from Postman exports.

CRUD stays on the official node. Lookup stays on this one. The boundary is deliberate.

Why publish it

Internal reuse justified the packaging cost. Once two instances and three teams depended on the same field-resolution logic, a published node with version tags beat Slack-pasted JSON fragments. Community nodes also force credential handling into n8n's credential store instead of workflow exports.

What the node does not do

Scope boundaries stated up front:

  • Not a full ClickUp replacement or admin UI.

  • Not webhook ingestion or bi-directional sync.

  • Not auto-sync for every custom field type (formula, rollup, and attachment fields stay out of scope).

I kept the surface narrow so upgrades stay predictable. Every "just one more operation" request goes through a scope check: is this mapping/discovery, or is it CRUD that belongs on the official node?

When to reach for it

  • Workflow branches on a dropdown label and you need the option ID at runtime.

  • Migrating workflows between workspaces where field IDs changed but labels stayed the same.

  • Building dynamic task filters without hard-coding UUIDs in Function nodes.