Every 5 minutes
Post new HubSpot contacts to Slack
Your team sees each new contact's name, email and source in Slack within minutes.
- Runs
- Every 5 minutes
- Apps
- HubSpot
- AI
- Not needed
- Access
- crm.objects.contacts.read
Send this to your assistant
Create a ClickRuntime automation: every 5 minutes, post new HubSpot contacts to #sales in Slack with their name, email and original source.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
When a new contact lands in HubSpot, there is a short window in which a personal reply makes the difference. A founder who fills in the demo form at lunchtime expects to hear back that afternoon, and a partner who signs up for the newsletter after a conference is warmest in the first hour. HubSpot's own notifications are tied to individual users and email, so the shared team channel never hears about new contacts, and people keep asking in Slack whether anything came in.
Every 5 minutes, contacts with a creation date newer than the last run are searched, and each is posted to Slack with name, company, source and a link. The time of the latest contact is saved so none is announced twice.
It suits small sales and marketing teams who live in Slack and want new leads seen right away.
What you get out of it
Quick replies win leads
A response within minutes is far more likely to start a conversation than one the next morning. A shared channel makes quick replies the norm. Speed signals interest, and interest tends to fade quickly in the first hours.
Everyone sees what marketing produces
Campaign results become visible as contacts arrive, so the team feels the effect of a webinar or a launch while it is happening. That immediate feedback also makes marketing work feel more connected to what sales sees.
Fewer missed leads on busy days
Notifications to one inbox get buried. A channel post is visible to several people, so a lead is unlikely to wait while the owner is away. A channel gives a safety net, because whoever is online can reply.
Source information travels with the post
Seeing where each contact came from helps the right person pick it up and reply with relevant context. Knowing the campaign or form behind a lead gets the conversation started with the right context.
Gives marketing a live pulse
Watching sign-ups arrive during a campaign helps teams judge quickly whether a message or channel is working. Quick feedback supports quick changes, such as swapping a headline or pausing an ad that attracts the wrong audience.
How it works
What happens, step by step
Every five minutes, ClickRuntime checks HubSpot for contacts created since the last check.
Each new contact is posted to your Slack channel with their name, email and where they came from, such as organic search.
It remembers the time of the last check, so each contact is announced only once.
Before it runs live
- Connect HubSpot
What you get
Build your own
Need it to work differently?
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 Slack
- Combine it with other HubSpot steps into one automation
Under the hood
The code that runs this automation
import time
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
@on_trigger
def run(event):
since = state.get("since") or int((time.time() - 300) * 1000)
contacts = http.post("https://api.hubapi.com/crm/v3/objects/contacts/search",
headers={"Authorization": f"Bearer {credentials.connection('hubspot', 'work')}"},
json={"limit": 50, "properties": ["firstname", "lastname", "email", "hs_analytics_source", "createdate"],
"sorts": [{"propertyName": "createdate", "direction": "ASCENDING"}],
"filterGroups": [{"filters": [{"propertyName": "createdate", "operator": "GT", "value": since}]}]}).json()["results"]
report_fetched(len(contacts))
if not contacts:
return {"posted": 0}
for c in contacts:
p = c["properties"]
notify.slack(f"New contact: {p.get('firstname', '')} {p.get('lastname', '')}, {p.get('email')} "
f"(source: {p.get('hs_analytics_source') or 'unknown'})", channel="#sales")
state.set("since", int(time.time() * 1000))
return {"posted": len(contacts)}FAQ
Common questions
Does it post contacts created by imports?
Can I post only contacts from a certain source or lifecycle stage?
How quickly will a contact appear in Slack?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Assign new HubSpot deals to the right rep
Deals without an owner are given to a rep based on the company's country and size, within minutes.
See how it worksPost HubSpot form submissions to Slack
Each new form submission shows up in Slack with the answers, within a few minutes.
See how it worksGet a Slack message when a deal changes stage
When a deal moves stage, the deal name, new stage and amount are posted to Slack.
See how it worksKeep exploring
Set up “Post new HubSpot contacts to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.