Intermediate~15 min setupProject Management & CommunicationVerified April 2026
ClickUp logo
Slack logo

How to Create ClickUp Tasks from Slack with Pipedream

React to any Slack message with an emoji to instantly create a ClickUp task with the message content as description.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Teams that need to convert Slack discussions into actionable ClickUp tasks without breaking conversation flow

Not ideal for

Teams wanting bulk task creation or complex task relationships - use ClickUp's native bulk import instead

Sync type

real-time

Use case type

notification

Real-World Example

πŸ’‘

A 12-person product team uses this to turn feature requests and bug reports from #general into ClickUp tasks. Before automation, the PM manually copied 8-12 messages daily into tasks, taking 15 minutes. Now team members just react with πŸ“ and tasks appear in ClickUp within 3 seconds with full message context.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently β€” Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Slack admin permissions to install apps or existing Pipedream app installation
ClickUp workspace with API access enabled and task creation permissions
Access to the ClickUp Space and List where tasks will be created
Ability to see reaction events in target Slack channels (not private channels you're not in)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Namename
Space IDspace_id
List IDlist_id
5 optional fieldsβ–Έ show
Task Descriptiondescription
Prioritypriority
Slack Permalinkcustom_fields.slack_url
Channel Namecustom_fields.channel
Message Authorcustom_fields.requester

Step-by-Step Setup

1

Workflows > New

Create new Pipedream workflow

Go to pipedream.com and click Workflows in the left sidebar. Click the green New button in the top right corner. You'll see a blank workflow canvas with a trigger section at the top.

  1. 1Click 'Workflows' in the left navigation
  2. 2Click the green 'New' button
  3. 3Select 'Start with a trigger'
βœ“ What you should see: You should see an empty workflow with 'Select a trigger' at the top of the canvas.
2

Trigger > Apps > Slack > New Reaction Added

Add Slack reaction trigger

Click the trigger area and search for 'Slack'. Select the Slack app, then choose 'New Reaction Added' from the trigger list. This webhook fires instantly when someone reacts to any message in your workspace.

  1. 1Click the trigger section
  2. 2Type 'Slack' in the app search
  3. 3Select 'Slack' from results
  4. 4Choose 'New Reaction Added' trigger
βœ“ What you should see: You should see 'New Reaction Added' selected with Slack's logo in the trigger step.
⚠
Common mistake β€” This trigger fires for ALL emoji reactions workspace-wide. We'll filter for specific emojis in the next step.
Pipedream
+
click +
search apps
ClickUp
CL
ClickUp
Add Slack reaction trigger
ClickUp
CL
module added
3

Trigger > Connect Account

Connect your Slack account

Click 'Connect Account' and authorize Pipedream to access your Slack workspace. You need admin permissions or the workspace owner must install the Pipedream app. Choose the workspace if you're in multiple Slack orgs.

  1. 1Click 'Connect Account' button
  2. 2Select your Slack workspace
  3. 3Click 'Allow' to grant permissions
  4. 4Return to Pipedream
βœ“ What you should see: You should see a green 'Connected' status with your Slack workspace name displayed.
⚠
Common mistake β€” The Slack app needs 'reactions:read' and 'channels:history' scopes. If you see permission errors, ask your Slack admin to reinstall.
Pipedream settings
Connection
Choose a connection…Add
click Add
ClickUp
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
4

Trigger > Generate Test Event

Test the Slack trigger

Click 'Generate Test Event' to see sample reaction data. If no recent reactions exist, go react to any message in your Slack with any emoji, then click 'Generate Test Event' again. You'll see the message content, reaction emoji, and user info.

  1. 1Click 'Generate Test Event' button
  2. 2React to a Slack message with any emoji
  3. 3Click 'Generate Test Event' again
  4. 4Review the sample data
βœ“ What you should see: You should see JSON data showing reaction, message text, channel name, and user information.
Pipedream
β–Ά Deploy & test
executed
βœ“
ClickUp
βœ“
Slack
Slack
πŸ”” notification
received
5

Steps > + > Filter

Add emoji filter step

Click the + button below the trigger to add a filter step. Search for 'Filter' and select the built-in Filter component. Set the condition to only proceed when the reaction emoji equals your chosen emoji (like 'memo' for πŸ“).

  1. 1Click the + button below trigger
  2. 2Type 'Filter' and select it
  3. 3Set condition to 'steps.trigger.event.reaction'
  4. 4Choose 'equals' operator
  5. 5Enter your emoji name like 'memo'
βœ“ What you should see: You should see a filter step that shows 'Continue only if reaction equals memo'.
⚠
Common mistake β€” Use emoji names without colons - 'memo' not ':memo:'. Check Slack's emoji picker to see the exact name.
ClickUp
CL
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Slack
SL
notified
6

Steps > + > ClickUp > Create Task

Add ClickUp connection step

Add another step and search for ClickUp. Select the ClickUp app, then choose 'Create Task' action. This will create a new task in your specified ClickUp space and list.

  1. 1Click + to add another step
  2. 2Search for 'ClickUp'
  3. 3Select ClickUp app
  4. 4Choose 'Create Task' action
βœ“ What you should see: You should see a ClickUp step with 'Create Task' selected and empty configuration fields.
7

ClickUp Step > Connect Account

Connect ClickUp account

Click 'Connect Account' and log into ClickUp. Generate an API key from ClickUp Settings > Apps > API Keys if prompted. Copy the key and paste it into Pipedream's connection form.

  1. 1Click 'Connect Account'
  2. 2Go to ClickUp Settings > Apps
  3. 3Click 'Generate' under API Keys
  4. 4Copy the API key
  5. 5Paste into Pipedream connection
βœ“ What you should see: You should see 'Connected' status with your ClickUp workspace name showing.
⚠
Common mistake β€” API keys expire if unused for 30 days. Save the key somewhere secure for future reconnections.
8

ClickUp Step > Configuration

Configure task creation fields

Select your target Space and List from the dropdowns. Set the task name to reference the Slack user and channel. Map the message text to the task description field. Add the original Slack message URL in a custom field if needed.

  1. 1Select your ClickUp Space
  2. 2Choose the target List
  3. 3Set name to include user and channel
  4. 4Map message text to description
  5. 5Add Slack permalink if desired
βœ“ What you should see: You should see all required fields filled with dynamic data from the Slack trigger step.
⚠
Common mistake β€” ClickUp List permissions must allow API task creation. Check List settings if you get 403 errors.
ClickUp fields
name
status
assignees[0].username
due_date
priority
available as variables:
1.props.name
1.props.status
1.props.assignees[0].username
1.props.due_date
1.props.priority
9

Steps > + > Node.js > Code

Add duplicate prevention

Add a Node.js code step before ClickUp to check for existing tasks with the same Slack permalink. Use ClickUp's search API to avoid creating duplicate tasks when multiple people react to the same message.

  1. 1Add Node.js code step before ClickUp
  2. 2Import ClickUp SDK or use fetch
  3. 3Search for tasks with Slack URL
  4. 4Return early if duplicate found
  5. 5Continue to ClickUp if unique
βœ“ What you should see: You should see a code step that queries ClickUp and either continues or exits early.
⚠
Common mistake β€” Without duplicate prevention, popular messages get multiple tasks. Always include this check for production use.
10

Workflow > Deploy

Test the complete workflow

Click 'Deploy' to activate the workflow. Go to Slack and react to a message with your chosen emoji. Check ClickUp to verify the task was created with correct title, description, and assignee information.

  1. 1Click 'Deploy' in top right
  2. 2Go to your Slack workspace
  3. 3React to a message with your emoji
  4. 4Check ClickUp for the new task
  5. 5Verify all fields populated correctly
βœ“ What you should see: You should see a new ClickUp task with the Slack message content within 5 seconds of adding the reaction.

This Node.js code prevents duplicate tasks when multiple people react to popular messages. Paste it in a code step before the ClickUp action to search for existing tasks with the same Slack URL.

JavaScript β€” Code Stepexport default defineComponent({
β–Έ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const slackUrl = steps.trigger.event.item.message.permalink

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const slackUrl = steps.trigger.event.item.message.permalink
    const listId = '123456789' // Your ClickUp List ID
    
    const searchResponse = await $.send.http({
      method: 'GET',
      url: `https://api.clickup.com/api/v2/list/${listId}/task`,
      headers: {
        'Authorization': steps.clickup.$auth.api_token,
        'Content-Type': 'application/json'
      },
      params: {
        custom_fields: JSON.stringify([{
          field_id: 'slack_url_field_id',
          operator: '=',
          value: slackUrl
        }])
      }
    })
    
    if (searchResponse.body.tasks.length > 0) {
      console.log('Task already exists for this message')
      return $.flow.exit('Duplicate task prevented')
    }
    
    return {
      proceed: true,
      slack_url: slackUrl,
      message_text: steps.trigger.event.item.message.text
    }
  }
})

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use Pipedream for this if your team creates 50+ tasks daily from Slack discussions and needs custom duplicate prevention logic. The instant webhook trigger fires within 2 seconds of emoji reactions, and Node.js code steps let you build sophisticated filtering. Skip Pipedream if you just want basic task creation without custom logic - ClickUp's native Slack app handles simple cases better.

Cost

This costs 1 credit per reaction across your entire Slack workspace. At 200 emoji reactions monthly (realistic for active 15-person teams), you'll hit 200 credits on Pipedream's free tier. The paid plan at $29/month handles 10,000 credits. Zapier charges per task created, making it 3x more expensive at this volume since you pay for filtered-out reactions too.

Tradeoffs

Zapier's Slack trigger has better channel filtering options and catches threaded messages more reliably than Pipedream. Make offers more visual conditional logic for routing different emojis to different lists without code. n8n gives you the same Node.js flexibility for free if self-hosted. Power Automate integrates better with Microsoft teams using Slack. But Pipedream's instant webhook processing and built-in error handling makes it the most reliable for high-activity channels.

You'll hit ClickUp's 100 requests/minute rate limit if your team goes emoji-crazy on popular messages. The Slack app permissions break randomly and need re-authorization every few months. Message text extraction fails on complex formatted messages with code blocks or attachments - you'll need fallback logic to handle plain text conversion.

Ideas for what to build next

  • β†’
    Add priority mapping β€” Use different emojis (πŸ”₯, ⚑, πŸ“) to automatically set ClickUp priority levels and route to appropriate lists.
  • β†’
    Create task assignment rules β€” Automatically assign tasks to specific team members based on source channel or message keywords using ClickUp's assignee field.
  • β†’
    Build reverse notification β€” Send Slack notifications back to the original channel when ClickUp tasks are completed or status changes occur.

Related guides

Was this guide helpful?
← ClickUp + Slack overviewPipedream profile β†’