AutomationFlowsCRM & Sales › Weekly Hubspot Lead Report to Slack

Weekly Hubspot Lead Report to Slack

ByMiha @miha on n8n.io

This n8n template posts a quick weekly snapshot to Slack so your team sees last week’s funnel movement at a glance. It counts how many contacts entered the Lead stage in the past week—and optionally reports closed-won deals from the same period.

Cron / scheduled trigger★★★★☆ complexity11 nodesHubSpotSlack
CRM & Sales Trigger: Cron / scheduled Nodes: 11 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #8970 — we link there as the canonical source.

This workflow follows the HubSpot → Slack recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "99d822b5-2f86-4dee-94f2-8e0948a8d93e",
      "name": "Get all contacts",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        656,
        192
      ],
      "parameters": {
        "operation": "getAll",
        "returnAll": true,
        "authentication": "oAuth2",
        "additionalFields": {
          "propertiesCollection": {
            "propertiesValues": {
              "properties": [
                "hs_v2_date_entered_lead"
              ],
              "propertyMode": "valueOnly"
            }
          }
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "bad7066e-ec34-495d-a83a-ab88afef0b98",
      "name": "Filter leads added last week",
      "type": "n8n-nodes-base.filter",
      "position": [
        880,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fd0fe4fb-9957-4ba0-9fc8-2eaccb02ef5e",
              "operator": {
                "type": "dateTime",
                "operation": "before"
              },
              "leftValue": "={{ $json.properties.hs_v2_date_entered_lead.value.toDateTime('ms') }}",
              "rightValue": "={{ $today }}"
            },
            {
              "id": "31eeb628-0bdf-4fa5-be83-05eb496c7d85",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.properties.hs_v2_date_entered_lead.value.toDateTime('ms') }}",
              "rightValue": "={{ $today.minus(7, 'days') }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ec02e91b-4f2e-4112-8a4f-0c6e3f8d43f4",
      "name": "Count leads",
      "type": "n8n-nodes-base.summarize",
      "position": [
        1104,
        192
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "vid"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b3763fb5-90aa-44f4-80e0-cdb4e068bf13",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        16
      ],
      "parameters": {
        "color": 5,
        "width": 512,
        "height": 528,
        "content": "## Weekly HubSpot \u201cNew Leads\u201d \u2192 Slack\n\n### How it works\n1. **Schedule** runs weekly.\n2. **HubSpot (contacts):** fetch all contacts.\n3. **Filter:** `hs_v2_date_entered_lead` within last 7 days.\n4. **Count** the leads.\n5. **Slack:** post \u201cLast week we generated X leads.\u201d\n6. *(Optional)* **Deals branch:** filter **Closed Won** last week and sum value.\n\n### Setup\n* [ ] Connect **HubSpot** (contacts & deals if using the optional branch)\n* [ ] Connect **Slack** and pick a channel\n* [ ] Set the weekly day/time on **Schedule Trigger**\n\n### Customize\n* **Lifecycle Stage:** switch to other lifecycle properties or custom fields.\n* **Slack Message:** add emojis, include the optional deals total, or mention owners.\n* **Deals:** sum a monetary field (e.g., `amount`) and include currency in the Slack text."
      },
      "typeVersion": 1
    },
    {
      "id": "f4572a98-acc0-4ca8-b777-e8632ab28729",
      "name": "Send report to a Slack channel",
      "type": "n8n-nodes-base.slack",
      "position": [
        1312,
        192
      ],
      "parameters": {
        "text": "=Last week we generated a total of {{ $json.count_vid }} leads.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "b3f3fe78-6d15-43b7-a633-33d58a30ca16",
      "name": "Schedule the report",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        432,
        192
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 7
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ca6981d1-1741-4adc-a4d7-302375a0692c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        624,
        432
      ],
      "parameters": {
        "color": 7,
        "width": 656,
        "height": 240,
        "content": "You can use this for deals too"
      },
      "typeVersion": 1
    },
    {
      "id": "fee5c81d-5b90-4725-82da-c6130dbb3863",
      "name": "Get all deals",
      "type": "n8n-nodes-base.hubspot",
      "disabled": true,
      "position": [
        656,
        496
      ],
      "parameters": {
        "filters": {
          "properties": [
            "hs_is_closed_won",
            "hs_closed_won_date"
          ]
        },
        "resource": "deal",
        "operation": "getAll",
        "returnAll": true,
        "authentication": "oAuth2"
      },
      "typeVersion": 2.1
    },
    {
      "id": "91303c21-d105-4b2d-afe2-682e13091100",
      "name": "Filter won deals last week",
      "type": "n8n-nodes-base.filter",
      "position": [
        880,
        496
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "31eeb628-0bdf-4fa5-be83-05eb496c7d85",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.properties.hs_closed_won_date.value.toDateTime('ms') }}",
              "rightValue": "={{ $today.minus(7, 'days')}}"
            },
            {
              "id": "2fc45c0d-c105-4ada-ad35-9336507757cf",
              "operator": {
                "type": "dateTime",
                "operation": "before"
              },
              "leftValue": "={{ $json.properties.hs_closed_won_date.value.toDateTime('ms') }}",
              "rightValue": "={{ $today }}"
            },
            {
              "id": "9be6ae28-501d-457b-a80c-aedd051c3a05",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.properties.hs_is_closed_won.value }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6df7a16f-a3ae-4428-b900-2604f142d252",
      "name": "Sum deal value",
      "type": "n8n-nodes-base.summarize",
      "position": [
        1104,
        496
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "vid",
              "aggregation": "sum"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "fb9890a6-e524-44dd-84c5-ae25815df9e6",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        144
      ],
      "parameters": {
        "color": 7,
        "width": 1120,
        "height": 224,
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Count leads": {
      "main": [
        [
          {
            "node": "Send report to a Slack channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all deals": {
      "main": [
        [
          {
            "node": "Filter won deals last week",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all contacts": {
      "main": [
        [
          {
            "node": "Filter leads added last week",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule the report": {
      "main": [
        [
          {
            "node": "Get all contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter won deals last week": {
      "main": [
        [
          {
            "node": "Sum deal value",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter leads added last week": {
      "main": [
        [
          {
            "node": "Count leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n template posts a quick weekly snapshot to Slack so your team sees last week’s funnel movement at a glance. It counts how many contacts entered the Lead stage in the past week—and optionally reports closed-won deals from the same period.

Source: https://n8n.io/workflows/8970/ — original creator credit. Request a take-down →

More CRM & Sales workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

CRM & Sales

When tracking your contacts and leads in Hubspot CRM, every new contact might be a potential customer. To guarantee that you're keeping the overview you'd normally need to look at every new lead that

HubSpot, Slack
CRM & Sales

Automate your lead qualification pipeline — capture Typeform Webhook leads, enrich with APIs, score intelligently, and route to HubSpot, Slack, and Sheets in real-time.

HTTP Request, HubSpot, Slack +1
CRM & Sales

*Smartlead to HubSpot Performance Analytics A streamlined workflow to analyze your Smartlead performance metrics by tracking lifecycle stages in HubSpot and generating automated reports.*

HTTP Request, Postgres, HubSpot +1
CRM & Sales

How it works This Lead Capture & Auto-Qualification workflow transforms raw leads into qualified prospects through intelligent automation. Here's the high-level flow: Lead Intake → Data Validation → E

Clearbit, HTTP Request, HubSpot +1
CRM & Sales

This project automates the process of collecting and managing new leads submitted through a web form. It eliminates the need for manual data entry and ensures that each lead is: Properly recorded and

Google Sheets Trigger, Slack, Gmail +1