HighLevel to ClickUp, follow-ups that never slip
Your pipeline changes, your team moves on, and then a week later someone asks, “Did we ever follow up on that?” The messy part isn’t the selling. It’s tracking what changed, when it changed, and who owns the next step.
Sales managers feel this during deal review. Ops leads get pulled into the cleanup. And if you run an agency, you’ve probably seen clients lose deals to slow response. This HighLevel ClickUp follow-ups automation turns deal activity into assigned tasks so nothing gets “noticed later.”
You’ll see how the workflow pulls opportunities from HighLevel, splits recent vs. stale updates, creates ClickUp follow-ups for the right deals, and pings Slack when something’s aging out.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: HighLevel to ClickUp, follow-ups that never slip
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/highLevel.svg' width='40' height='40' /></div><br/>Fetch All Deals from CRM1"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Recent Deal Updates1", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/highLevel.svg' width='40' height='40' /></div><br/>Get Contact Details1"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/clickup.svg' width='40' height='40' /></div><br/>Create ClickUp Task1"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Old Deal Update1"]
n3 --> n4
n1 --> n2
n2 --> n3
n2 --> n5
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2 decision
classDef customIcon fill:none,stroke:none
class n1,n3,n4,n5 customIcon
Why This Matters: Deal follow-ups fall through the cracks
HighLevel shows you what’s happening in the CRM, but it doesn’t automatically translate “this deal changed” into “someone must do something next.” So the responsibility floats. A rep assumes an admin will log a task. Ops assumes the rep saw the update. Meanwhile the buyer cools off. The real cost is the constant context switching: checking stages, sorting by last activity, opening a contact record, then creating tasks by hand. Do it for 20 deals and you’ve lost a chunk of your day, plus you’ll still miss one.
It adds up fast. Here’s where it breaks down in real teams:
- Someone has to manually scan HighLevel for “what changed since yesterday,” and that habit breaks the moment things get busy.
- Tasks get created without enough context, which means extra back-and-forth before anyone can actually follow up.
- Older opportunities quietly rot because “stale” is a feeling, not a hard rule with a notification.
- Managers end up running pipeline hygiene as a meeting agenda item instead of a background system.
What You’ll Build: HighLevel updates that auto-create ClickUp tasks
This workflow watches deal stage activity inside HighLevel and turns it into clear next actions in ClickUp. You run it, it pulls all opportunities, then checks each one’s most recent update date against your “recent” threshold. Deals that qualify as recent get enriched with contact details (so the task isn’t just a vague title) and then a new ClickUp task is created with the right context for follow-up. Deals that don’t qualify aren’t ignored either; they trigger a Slack alert so someone can decide if it needs attention or cleanup. The end result is simple: ClickUp becomes the place where ownership lives, while HighLevel remains the source of truth for the deal.
The workflow starts with HighLevel opportunity retrieval. Then an If check routes each deal based on how fresh the update is. Recent updates become ClickUp tasks after a quick contact lookup, and older updates get flagged in Slack so stale opportunities don’t hide in plain sight.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say your team handles 30 active deals and you do a daily “what changed?” check. Manually, it’s easy to spend about 2 minutes per deal opening records, confirming last updates, and creating tasks, which is roughly an hour a day. With this workflow, you run one execution, then ClickUp tasks are created for recent updates while Slack flags older ones for review. Realistically, you’re down to maybe 10 minutes of triage, not a full hour of hunting.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- HighLevel (GoHighLevel) for opportunities and contact data access
- ClickUp to create and assign follow-up tasks
- Slack API credentials (get it from your Slack app settings)
Skill level: Beginner. You’ll connect accounts, pick a ClickUp list, and set a simple “recent updates” date rule.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A manual run kicks things off. In the provided template, you trigger the workflow manually, which is useful for testing and for running a daily/weekly check. Later, you can switch the trigger to a schedule if you want it fully hands-off.
HighLevel opportunities are pulled in one shot. The workflow fetches all deals (opportunities) along with key identifiers like stage and related contact info so n8n can evaluate them consistently.
Recent vs. older updates are separated. An If condition checks the deal’s last update date against your defined threshold (for example, “on or after Sept 30”). Recent ones move forward to enrichment; older ones take the alert route.
ClickUp gets actionable follow-up tasks, and Slack gets the exceptions. For recent updates, the workflow fetches the contact profile from HighLevel, then creates a ClickUp task with deal and contact context. If the update is older than your threshold, it sends a Slack message to the person who should know.
You can easily modify the date threshold to match your sales cycle, or change the ClickUp destination list based on stage. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Set up the manual trigger so you can run the workflow on demand while testing.
- Add the Manual Run Trigger node as the workflow entry point.
- Leave all settings at their defaults (no parameters are required for this node).
- Connect Manual Run Trigger to Retrieve All CRM Deals.
Step 2: Connect HighLevel and Pull CRM Deals
Retrieve all deals from HighLevel so the workflow can evaluate recent changes.
- Select the Retrieve All CRM Deals node.
- Credential Required: Connect your highLevelOAuth2Api credentials.
- Set Resource to
opportunity. - Set Operation to
getAll. - Enable Return All by setting it to
true.
Step 3: Set Up the Deal Recency Filter
Filter deals based on the last status change timestamp to determine whether to create tasks or send alerts.
- Open the Check Recent Deal Changes node.
- Configure the condition Operator as
afterOrEquals. - Set Left Value to
={{ $json.lastStatusChangeAt }}. - Set Right Value to
2025-09-30T00:00:00. - Ensure the true output continues to Fetch Contact Profile and the false output goes to Alert for Older Deal.
Step 4: Fetch Contact Details and Create the ClickUp Task
Enrich recent deals with contact details and create a task for follow-up in ClickUp.
- Open the Fetch Contact Profile node.
- Credential Required: Connect your highLevelOAuth2Api credentials.
- Set Contact ID to
={{ $json.contactId }}. - Set Operation to
get. - Open the Generate ClickUp Task node.
- Credential Required: Connect your clickUpApi credentials.
- Set List to
[YOUR_ID], Team to[YOUR_ID], and Space to[YOUR_ID]. - Enable Folderless by setting it to
true. - Set Name to
=Contact: {{ $json.fullNameLowerCase }} Location id:{{ $json.locationId }} Changed Status recently.
Step 5: Configure the Slack Alert for Older Deals
Send a Slack message when the deal status change is older than the cutoff date.
- Select the Alert for Older Deal node.
- Credential Required: Connect your slackApi credentials.
- Set Select to
user. - Choose the target user in User (value
[YOUR_ID]). - Set Text to
=Hi, your lead ID: {{ $json.id }} was updated before the cutoff date.
Step 6: Test and Activate Your Workflow
Verify both branches of the workflow and then enable it for production use.
- Click Execute Workflow to trigger the Manual Run Trigger.
- Confirm that recent deals pass through Check Recent Deal Changes to Fetch Contact Profile and create tasks in Generate ClickUp Task.
- Confirm that older deals route to Alert for Older Deal and post a Slack message.
- When everything looks correct, toggle the workflow to Active to run in production.
Troubleshooting Tips
- HighLevel credentials can expire or need specific permissions. If things break, check your HighLevel API key and allowed scopes in your HighLevel integration settings first.
- ClickUp task creation can fail if the List ID changes or the token lacks access to that Workspace. Confirm the target List still exists and that the ClickUp connection in n8n can see it.
- Slack notifications won’t land where you expect if the channel/user ID is wrong or the bot isn’t invited. Verify the Slack node recipient, and make sure the app is added to the destination channel.
Quick Answers
About 30 minutes if your HighLevel, ClickUp, and Slack accounts are ready.
No. You’ll connect your accounts and choose where ClickUp tasks should be created. The “logic” is mostly picking the right date threshold and mapping a few fields.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in any HighLevel, ClickUp, and Slack plan limits you already have.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you probably should. You can change the “Check Recent Deal Changes” condition to use a different date window, or route by stage instead of by date. You can also adjust what’s written into ClickUp by editing the fields in the “Generate ClickUp Task” step, for example adding deal value, owner, or a link back to the HighLevel record.
Usually it’s an expired or replaced API key in HighLevel. Update the HighLevel credentials in n8n and re-run a single test execution. If it still fails, it’s often missing permissions for reading opportunities or contacts, or the request is pointed at the wrong location/account inside HighLevel.
It can handle hundreds of deals per run in most small teams.
Often, yes, because the “fetch many deals, filter them, branch logic, then enrich contacts” pattern gets expensive and awkward in simpler tools. n8n handles looping and conditional paths cleanly, and you can self-host for unlimited runs if you’re processing a lot of opportunities. Zapier or Make can still work if you’re only creating a task from a single event trigger and you don’t need the “recent vs. stale” routing. The right choice depends on how you run pipeline hygiene in real life, not on tool popularity. Talk to an automation expert if you want a quick recommendation for your setup.
Once this is running, follow-ups stop being a “remember to” and start being a system. Your pipeline stays honest, and your team stays focused.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.