Skip to content
Automation Squad
HGSSMade to order

Reporting & dashboards

HubSpot pipeline snapshot → Google Sheets trend + Monday Slack summary

Every Monday at 07:00, open pipeline by stage and owner, in Slack and on a trend sheet.

Each Monday morning the workflow reads every open deal in HubSpot, totals them by stage and by owner, and writes the numbers to a Google Sheet that keeps the history. A Slack post follows: this week's totals, the change since last Monday, and last week's won and lost counts. Built for the sales manager who assembles that view by hand before the pipeline meeting. The meeting opens with the numbers already in the channel.

How it works

  1. H

    Trigger

    Every Monday at 07:00 in your timezone (n8n Schedule Trigger); the first node is a HubSpot deal search for everything still open

    HubSpot

  2. H

    Step 1

    Pull every open deal

    HubSpot's Deal Search returns deals where hs_is_closed is false, with amount, dealstage, pipeline, closedate and hubspot_owner_id, and pages until the list is complete.

  3. H

    Step 2

    Search deals closed in the past seven days

    A second search asks for hs_is_closed true and a closedate inside the past week. hs_is_closed_won splits the result into won and lost, each with amount and owner.

  4. H

    Step 3

    Fetch owner names and stage labels

    Two HTTP Request calls, to HubSpot's owners endpoint and its deal pipelines endpoint, turn owner IDs and stage IDs into the names people recognise.

  5. GS

    Step 4

    Read last Monday's row from the History tab

    The most recent History row comes back so the message can show the change in count and amount per stage since the previous week.

  6. if

    Step 5

    Total by stage and owner, work out the week's change

    A Code node sums amount and counts deals for each stage and each owner, then subtracts last week's figures to produce the deltas.

  7. GS

    Step 6

    Append this week's row to the History tab

    One row per Monday: date, count and amount for every stage, and the week's won and lost totals. The Trend tab charts the History tab with no further work.

  8. S

    Step 7

    Post the Monday summary to #sales

    Slack receives a Block Kit message: each stage with count, amount and change since last week, owners ranked by open amount, last week's won and lost, and a link to the sheet.

What changes once it runs

  • Pipeline by stage and by owner is in #sales within minutes of 07:00 every Monday, and nobody exported a report to get it there.
  • One History row a week. The trend chart reaches back to the first Monday the workflow ran.
  • A shrinking stage shows its week-over-week drop beside the figure, on the Monday it shrinks.
  • Last week's won and lost sit in the same message, so the meeting opens with the result rather than a hunt for it.

What you get

  • n8n workflow export (JSON) with the schedule, both HubSpot searches, the two HTTP lookups, the Code node and the Slack message ready to import
  • Google Sheet template with History and Trend tabs and the chart already built
  • Setup guide naming every scope, credential and cell reference, with the Slack Block Kit JSON annotated line by line
  • A recorded walkthrough of the first Monday run
  • Field-mapping sheet showing which HubSpot property feeds which column

Before you start

  • HubSpot with deals in use; the free CRM is enough.
  • A HubSpot private app token with the crm.objects.deals.read, crm.schemas.deals.read and crm.objects.owners.read scopes.
  • A Google account with edit access to the sheet, connected to n8n through Google OAuth (n8n Cloud's sign-in or your own Google Cloud client).
  • One Slack app with the chat:write scope, invited to the channel that receives the summary.
  • n8n Cloud on any plan, or a self-hosted n8n 1.x instance.

Built for

Questions before you buy

Can it run on a different day, or more than once a week?
Yes. The schedule is one node; change the day and time, or add a second schedule for a Thursday check. Each run appends a row, so the History tab copes with whatever cadence you pick.
My pipeline has custom stages and there is more than one pipeline. Does it cope?
Stage names come from HubSpot's pipelines endpoint at run time, so custom stages appear under their own labels. More than one pipeline is fine. Filter to one with a single expression the guide points to, or total across all of them with the pipeline name carried in the row.
What happens if HubSpot times out or the token stops working?
The HubSpot nodes retry three times on a timeout. On an auth failure the workflow stops and n8n records which node failed. Switch on the included error workflow and a short notice goes to the same Slack channel, so nobody waits for numbers that are not coming.
Are there HubSpot API limits I should know about?
HubSpot's Search API pages through results and caps a single query at 10,000. A run over 3,000 open deals makes fewer than 40 search calls, well inside the daily allowance on every HubSpot tier. Above 10,000 open deals the guide splits the search by pipeline.
Which n8n plan do I need, and is there a Make version?
Any n8n Cloud plan or a self-hosted instance; each Monday is one execution. Make is not shipped. Totalling by stage and by owner, then subtracting last week's row, needs a Code node. Rebuilding that with Make's aggregators is a different workflow, not a port, so the package is n8n only.

Nearby on the shelf

Whole catalog