On a schedule
Post new Salesforce leads to Slack
Your team sees each new lead's name, company and source in Slack within minutes.
- Runs
- On a schedule
- Apps
- Salesforce
- AI
- Not needed
- Access
- api (read)
Send this to your assistant
Create a ClickRuntime automation: every 5 minutes, post new Salesforce leads to #leads in Slack with their name, company and lead source.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
In a Salesforce org that gets leads from forms, imports and partner referrals, new records arrive all day without anyone being told. A rep checks the Leads tab when they remember to, and by then a demo request from a company with 500 employees has been sitting for four hours. Competitors who reply within minutes win those conversations. Salesforce email alerts exist, but they go to individual inboxes, and the rest of the team never sees what is coming in.
On its schedule the automation runs a SOQL query for leads whose CreatedDate is later than the last run, posts each one to a Slack channel, then saves the new timestamp so nothing is posted twice. The whole sales team sees new leads in a place they already watch all day. Choose how often it checks. It works well for teams that want a shared channel as a live feed of inbound demand.
What you get out of it
Speed to lead improves
A lead announced in Slack gets a reply in minutes instead of hours. Whoever is online can claim it, which matters when a prospect has also requested quotes from two competitors the same morning.
The whole team sees inbound demand
A shared channel shows everyone how many leads arrive and from where. Reps, managers and marketing watch the same feed, which makes slow days and sudden spikes obvious without opening a dashboard.
No lead lost in an unwatched queue
Leads created by imports or integrations never trigger a rep's own notification. A channel post means they are noticed even when the owner field points to a queue nobody checks.
Timestamp state prevents duplicates
The saved timestamp means each lead is announced once, even if a run is delayed. The channel stays readable, and people keep trusting it rather than muting it after seeing repeats.
A searchable record of arrivals
Slack keeps the history, so you can scroll back to the Tuesday when a webinar sent forty leads at once. That context helps when someone later asks why conversion dipped that week.
How it works
What happens, step by step
Every five minutes, the automation checks Salesforce for leads created since the last check.
Each new lead is posted to your Slack channel with their name, company and lead source.
It remembers the time of the last check, so each lead is posted only once.
Before it runs live
- Connect Salesforce
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 Salesforce steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
API = "https://yourcompany.my.salesforce.com/services/data/v61.0"
@on_trigger
def run(event):
since = state.get("since") or "2026-01-01T00:00:00Z"
leads = http.get(f"{API}/query", headers={"Authorization": f"Bearer {credentials.connection('salesforce', 'work')}"},
params={"q": f"SELECT Id, Name, Company, LeadSource, CreatedDate FROM Lead "
f"WHERE CreatedDate > {since} ORDER BY CreatedDate"}).json()["records"]
report_fetched(len(leads))
if not leads:
return {"posted": 0}
for lead in leads:
notify.slack(f"New lead: {lead['Name']} · {lead['Company']} · source: {lead['LeadSource'] or 'unknown'}", channel="#leads")
state.set("since", leads[-1]["CreatedDate"].replace(".000+0000", "Z"))
return {"posted": len(leads)}FAQ
Common questions
Will leads created by a data import be announced too?
What information appears in the Slack message?
How often does it check for new leads?
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
Tell your team in Slack when you win a deal
Every opportunity that moves to Closed Won is posted to Slack with its name, amount and owner.
See how it worksPost new Salesforce opportunities to Slack
Each new opportunity shows up in Slack with its amount and close date within minutes.
See how it worksFill in new Salesforce accounts from their website
New accounts get industry, employee range and a short description filled in from their homepage.
See how it worksKeep exploring
Set up “Post new Salesforce leads to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.