Skip to content

Every 10 minutes

Post new HubSpot deals and stage changes in Slack

Your sales channel hears about every new deal and every stage move, with amount and owner.

Runs
Every 10 minutes
Apps
HubSpot, Slack
AI
Not needed
Access
HubSpot crm.objects.deals.read, crm.objects.owners.read; Slack chat:write

Send this to your assistant

Create a ClickRuntime automation: post in #deals whenever a HubSpot deal is created or changes stage, with the amount and owner.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A sales team of six works its deals in HubSpot, but the founder and the delivery lead rarely log in. They learn a big deal closed at the Monday meeting, which is too late to plan the onboarding work.

A message in Slack each time a deal is created or moves stage keeps everyone who does not live in the CRM aware of what is coming.

What you get out of it

  • Delivery can plan ahead

    Seeing a deal move to contract sent tells the delivery team to line up people before the signature arrives.

  • Wins get noticed

    A closed-won message in a shared channel gives the team a moment to recognise the rep, not just a number on a report.

  • Fewer status questions

    Leaders stop asking reps for updates because the channel already shows each move as it happens.

  • Stalled deals are easier to spot

    When a deal stops appearing in the channel, people notice. Quiet deals get a question sooner.

How it works

What happens, step by step

  1. Every few minutes ClickRuntime checks HubSpot for deals that were created or updated since the last check.

  2. It compares each deal's stage with the stage it saw last time, so only real stage changes are reported.

  3. It looks up the deal owner's name.

  4. A message with the deal name, stage, amount and owner is posted in your #deals Slack channel.

Before it runs live

  • Connect HubSpot
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsEvery 10 minutes
Post new HubSpot deals and stage changes in Slacktoday, 9:00Succeeded
Slack · #dealsMoved to Contract sent: Northwind annual plan, $24,000 (owner: Sam)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Google Sheets
  • Combine it with other HubSpot and Slack steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
new_deals_and_stage_changes_in_slack.pyexample
from clickruntime import on_trigger, credentials, state, notify, report_fetched, http

@on_trigger
def run(event):
    h = {"Authorization": f"Bearer {credentials.secret('HUBSPOT_TOKEN')}"}
    stages = state.get("stages") or {}
    deals = http.get("https://api.hubapi.com/crm/v3/objects/deals", headers=h,
                     params={"properties": "dealname,amount,dealstage,hubspot_owner_id", "limit": 100}).json()["results"]
    changed = [d for d in deals if stages.get(d["id"]) != d["properties"]["dealstage"]]
    report_fetched(len(changed))
    if not changed:
        return {"summary": "No changes"}
    for d in changed:
        p = d["properties"]
        owner = http.get(f"https://api.hubapi.com/crm/v3/owners/{p['hubspot_owner_id']}", headers=h).json() if p.get("hubspot_owner_id") else {}
        verb = "New deal" if d["id"] not in stages else "Moved to"
        notify.slack(f"{verb} {p['dealstage']}: *{p['dealname']}* ${p.get('amount') or 0} ({owner.get('firstName', 'unassigned')})", channel="#deals")
        stages[d["id"]] = p["dealstage"]
    state.set("stages", stages)
    return {"posted": len(changed)}

FAQ

Common questions

Can I limit it to one pipeline?
Yes. Name the pipeline you want and deals in other pipelines are ignored.
Will it post when someone edits the amount?
Not by default. It posts on new deals and stage changes only, so routine edits do not fill the channel. Amount changes above a set size can be added.
Can closed-lost deals go to a different channel?
Yes. Each stage can post to its own channel, for example wins in #wins and losses in a private sales channel.
What permissions does it need?
HubSpot crm.objects.deals.read, crm.objects.owners.read; Slack chat:write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Post new HubSpot deals and stage changes in Slack” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.