HighLevel to Notion, sales dashboards that stay current
Your sales numbers are probably “somewhere.” In HighLevel. In someone’s spreadsheet. In Slack screenshots. And when the team asks what’s real, you end up playing referee instead of leading.
This is the kind of mess that drains Sales Managers first, but RevOps and founders feel it too. With HighLevel Notion automation, you get a dashboard that updates on demand and Slack updates that keep reps aligned without constant check-ins.
Below, you’ll see exactly how the workflow pulls deals from HighLevel, builds rep dashboards in Notion, and posts AI-written motivation in Slack so your team stays focused on closing.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: HighLevel to Notion, sales dashboards that stay current
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 HighLev.."]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: " Validate Deal Fetch Success", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: " Log Fetch or Validation Err..", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Clean & Structure Deal Data"]
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/code.svg' width='40' height='40' /></div><br/> Summarize Sales by Represen.."]
n6["<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/notion.dark.svg' width='40' height='40' /></div><br/>Generate Notion Performance .."]
n7["<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/code.svg' width='40' height='40' /></div><br/> Transform Data for AI Input"]
n8@{ icon: "mdi:brain", form: "rounded", label: "GPT-4o Model Configuration", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: " AI-Generated Motivational S..", pos: "b", h: 48 }
n10["<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 Sales Team in Slack"]
n8 -.-> n9
n4 --> n5
n7 --> n9
n2 --> n4
n2 --> n3
n5 --> n6
n5 --> n7
n1 --> n2
n0 --> n1
n9 --> n10
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 n9 ai
class n8 aiModel
class n2 decision
class n3,n6 database
class n4,n5,n7 code
classDef customIcon fill:none,stroke:none
class n1,n4,n5,n6,n7,n10 customIcon
The Problem: Sales Dashboards Go Stale (Fast)
Sales dashboards break in boring ways. Someone forgets to refresh a report. A rep’s deals are tagged inconsistently. A manager pulls numbers from HighLevel, then “cleans them up” in a spreadsheet, then posts a summary in Slack that nobody trusts. The next day, the same thing happens again. It’s not just time lost. It’s the mental overhead of defending the data, coaching off outdated numbers, and dealing with quiet resentment when compensation or performance rankings feel fuzzy.
The friction compounds. Here’s where it usually breaks down in real teams.
- Manual leaderboard updates steal about 1–2 hours a week from the person who can least afford it.
- Numbers get disputed because nobody can trace “where the total came from” without digging through deals.
- Reps stop checking dashboards when they’re wrong even once, so adoption quietly dies.
- Coaching becomes reactive because you notice trends too late, after the week is already gone.
The Solution: HighLevel → Notion Dashboards + Slack Motivation
This workflow pulls every opportunity from HighLevel, normalizes the messy fields into a clean structure, and then summarizes performance per rep so you can trust the totals. Once the metrics are calculated (deals handled, total value, deals won, average deal size), it creates or updates a Notion performance page for each rep. After that, it turns those stats into AI-friendly context and asks GPT‑4o (via Azure OpenAI) to write a personalized motivational message. Finally, the workflow posts the update in Slack, which means the team sees the same story at the same time, with the same numbers.
The workflow starts with a manual refresh (useful for testing or a daily “run it now” habit). Then HighLevel data gets validated and cleaned. Notion becomes the living dashboard, while Slack becomes the daily pulse check.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 8 reps and you post a daily scoreboard. Manually, you might spend about 10 minutes per rep pulling HighLevel totals, cleaning them, and formatting a message for Slack, which is roughly 80 minutes a day (and that’s on a “good data” day). With this workflow, you click run once, wait a few minutes for HighLevel + Notion updates and the AI copy, and the Slack messages go out automatically. You get about an hour back each day, and the team stops arguing about whose spreadsheet is correct.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- HighLevel for pulling opportunities and rep ownership.
- Notion to store dashboards your team actually checks.
- Slack to post daily performance and motivation updates.
- Google Sheets for an error log you can review.
- Azure OpenAI API credentials (get them from the Azure OpenAI resource in your Azure portal).
Skill level: Intermediate. You’ll connect accounts, set credentials, and lightly adjust fields to match your HighLevel pipeline naming.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Manual refresh from n8n. You run the workflow when you want fresh numbers (daily, before a standup, or right before coaching sessions). It’s also handy for testing changes safely.
Deal retrieval and validation. n8n pulls all opportunities from HighLevel and checks that the response contains valid deal IDs. If something is missing, it routes the failure details into a Google Sheets error log.
Cleaning and rep-level rollups. The workflow normalizes each deal into a consistent schema (rep, client, value, stage/status), then aggregates totals by rep, including wins and average deal size.
Notion dashboards plus Slack messages. It creates or updates a Notion performance page for each rep, then sends the summarized stats to GPT‑4o (Azure OpenAI) to generate a motivational message that gets posted in Slack.
You can easily modify the Notion page format to match your current sales dashboard template based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Start the workflow manually during setup to validate each downstream connection and transformation.
- Add the Manual Launch Trigger node as the entry point.
- Connect Manual Launch Trigger to Retrieve CRM Opportunities.
Step 2: Connect HighLevel and Validate Deal Retrieval
Pull all opportunities from HighLevel and route based on whether records are returned.
- Open Retrieve CRM Opportunities and set Resource to
opportunityand Operation togetAll. - Credential Required: Connect your
highLevelOAuth2Apicredentials in Retrieve CRM Opportunities. - In Verify Deal Retrieval, set the condition Left Value to
{{ $json.id }}with the operatornotEmptyto detect valid deal records. - Confirm the TRUE output from Verify Deal Retrieval goes to Normalize Deal Records, and the FALSE output goes to Record Fetch Issues.
Step 3: Log Fetch Issues to Google Sheets
When deal retrieval fails, log the issue to a Google Sheet for troubleshooting.
- Open Record Fetch Issues and keep Operation set to
append. - Set Document ID to the target spreadsheet (currently
[YOUR_ID]). - Set Sheet Name to the error log sheet (currently
[YOUR_ID]). - Credential Required: Connect your
googleSheetsOAuth2Apicredentials in Record Fetch Issues.
Step 4: Normalize and Aggregate Deal Metrics
Transform raw opportunities into a consistent schema, then summarize performance by rep.
- In Normalize Deal Records, keep the JavaScript transformation that maps deal fields to
deal_id,rep_id,status,value, and related metadata. - In Aggregate Rep Metrics, keep the JavaScript aggregation that calculates
total_deals,total_value,won_deals, andavg_valueper rep. - Ensure Normalize Deal Records connects to Aggregate Rep Metrics as shown in the workflow.
Step 5: Split Output to Notion and AI Formatting (Parallel)
The workflow branches after aggregation to create Notion pages and prepare data for AI messaging.
- Aggregate Rep Metrics outputs to both Build Notion Performance Page and Format Stats for AI in parallel.
- In Build Notion Performance Page, set Title to
{{ $json["rep_id"] }} - Sales Rep Performance Tracker. - Confirm the Notion block content uses expressions such as
{{$json["total_deals"]}}and{{$json["avg_value"]}}for dynamic stats. - Credential Required: Connect your
notionApicredentials in Build Notion Performance Page. - In Format Stats for AI, keep the transformation that returns a flat structure per rep for AI consumption.
Step 6: Set Up Azure GPT and Generate Slack Copy
Use the Azure GPT model to create motivational messages based on performance data.
- Open Azure GPT Model Setup and set Model to
gpt-4o. - Credential Required: Connect your
azureOpenAiApicredentials in Azure GPT Model Setup. - In Create Motivational Slack Copy, keep the Text prompt set to
Generate a motivational Slack message for the following sales reps based on their performance data: {{JSON.stringify($json)}} .... - Ensure Azure GPT Model Setup is connected as the language model for Create Motivational Slack Copy; add credentials to Azure GPT Model Setup, not the agent node.
Step 7: Configure Slack Delivery
Send the generated motivational copy directly to a Slack user.
- In Send Slack Updates, set Text to
{{ $json.output }}. - Select a User recipient (currently
[YOUR_ID]). - Credential Required: Connect your
slackApicredentials in Send Slack Updates.
Step 8: Test & Activate Your Workflow
Run a manual test to confirm data retrieval, Notion pages, and Slack messages all work end-to-end.
- Click Execute Workflow and trigger Manual Launch Trigger.
- Verify that Retrieve CRM Opportunities returns records and that Verify Deal Retrieval routes to Normalize Deal Records.
- Confirm Notion pages are created by Build Notion Performance Page and that Send Slack Updates posts the AI-generated message.
- When everything looks correct, switch the workflow Active to enable production use.
Common Gotchas
- HighLevel credentials can expire or lack the right scopes for opportunities. If things break, check your HighLevel API key and permissions in your HighLevel settings first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Notion page creation can “work” but still feel wrong if your database properties don’t match the workflow fields. Confirm the Notion integration has access to the right workspace and that required properties (rep name, totals, win counts) exist.
Frequently Asked Questions
About an hour if your credentials are ready and your Notion database is already created.
No. You will mostly connect accounts and map a few fields. Light edits are optional if you want custom metrics or formatting.
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 Azure OpenAI usage costs, which depend on how long your Slack messages are and how many reps you message.
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, but you’ll change the schedule and the grouping logic. Most teams swap the manual trigger for a scheduled trigger, then adjust the “Aggregate Rep Metrics” logic to filter deals by a weekly date window. You can also tweak “Build Notion Performance Page” to write into a weekly database entry instead of updating a single “current” page.
Usually it’s expired or incorrect HighLevel API credentials, so regenerate the key and update the connection in n8n. It can also happen when the account doesn’t have access to the pipeline you’re querying, which makes the response look “empty” and fails the validation. If you’re pulling a lot of opportunities at once, you might also be hitting rate limits, so rerun at a quieter time or add a small delay between pages.
Thousands, as long as your HighLevel API and Notion workspace can handle the volume and your n8n instance has enough memory.
Often, yes, because this workflow isn’t just moving fields from A to B. You’re cleaning data, aggregating rep metrics, branching on validation, logging errors to Sheets, and generating AI messages from structured stats. That’s the kind of multi-step logic that can get expensive or awkward in simpler tools. Zapier or Make can still be fine for a quick “deal won → post to Slack” automation, honestly. If you want help choosing, Talk to an automation expert and you’ll get a clear recommendation.
Once this is running, your dashboards stop decaying in the background. You’ll have cleaner coaching conversations, fewer debates about totals, and a sales team that actually pays attention to the scoreboard.
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.