On a schedule
Share won deals in Slack
When a deal moves to Closed Won, the team sees the name, amount and owner.
- Runs
- On a schedule
- Apps
- Zoho CRM
- AI
- Not needed
- Access
- ZohoCRM.modules.deals.READ
Send this to your assistant
Create a ClickRuntime automation: when a Zoho CRM deal moves to Closed Won, post the deal name, amount and owner to #wins in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A closed-won deal is the result of weeks of work from sales, solutions engineers and customer success, but the news usually travels slowly: a line in a CRM report, a mention in a Monday meeting. The rep who got the deal sometimes forgets to tell the team, so onboarding starts late and the wider company misses a chance to celebrate. People who helped on the deal never learn it was won.
On a schedule, Zoho CRM is checked for deals modified since the last run, and those whose Stage is Closed Won and have not been announced before are picked out. A message appears in Slack with the deal name, amount, account and owner. Each deal is announced once, even if it is edited again later.
Good for revenue teams that want wins to be seen and handed off fast.
What you get out of it
Handoff to onboarding starts sooner
Customer success sees the win minutes after the stage changes. The kickoff call gets scheduled while the customer is still excited, and the first weeks of the relationship start well.
Wins are shared with everyone involved
Engineers, marketers and managers who contributed see the result. Recognition costs nothing and builds loyalty to the team, and people who never hear about wins stop caring about the next one.
Reps do not have to announce
Nobody relies on a rep remembering to post. The announcement is a byproduct of updating the CRM, which encourages accurate and timely stage updates, since a late update means a late celebration.
Finance can prepare billing
An alert with amount and account tells finance to expect a contract and an order. Invoicing and set-up begin without a chaser email, and cash arrives sooner as a result.
Momentum is visible
A channel full of recent wins keeps morale up during slow stretches. New hires see what good looks like and which kinds of customers the company is closing. A good-news habit forms.
Revenue visible to everyone
Posting the amount lets the whole company see progress against target during the quarter. People understand why the sales team is busy, and quarter-end surprises are fewer. Hand-offs happen the same morning.
How it works
What happens, step by step
Every 5 minutes ClickRuntime checks Zoho CRM for deals changed since its last check.
It keeps the ones now marked Closed Won and skips any it has already announced.
Each win is posted to your #wins Slack channel with the deal name, amount and owner.
Before it runs live
- Connect Zoho CRM
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 Zoho CRM steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
@on_trigger
def run(event):
since = state.get("since") or datetime.now(timezone.utc).isoformat(timespec="seconds")
r = http.get("https://www.zohoapis.com/crm/v8/Deals",
params={"fields": "Deal_Name,Amount,Stage,Owner,Modified_Time"},
headers={"Authorization": f"Zoho-oauthtoken {credentials.connection('zoho', 'work')}",
"If-Modified-Since": since})
deals = r.json()["data"] if r.status_code == 200 else []
report_fetched(len(deals))
if not deals:
return {"summary": "Nothing new"}
posted = set(state.get("posted") or [])
won = [d for d in deals if d["Stage"] == "Closed Won" and d["id"] not in posted]
for d in won:
notify.slack(f":trophy: {d['Deal_Name']} won · ${d.get('Amount') or 0:,.0f} · {d['Owner']['name']}", channel="#wins")
state.set("posted", list(posted | {d["id"] for d in won})[-1000:])
state.set("since", max(d["Modified_Time"] for d in deals))
return {"won": len(won)}FAQ
Common questions
Will a deal be announced twice if I edit it?
Can I post only deals over a certain amount?
What if a deal is moved to Closed Won by mistake?
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
Flag big sales orders as VIP
Sales orders over $5,000 get a VIP tag and you hear about them in Slack.
See how it worksPost new Zoho CRM leads to Slack
Sales sees each new lead's name, company and source within minutes.
See how it worksDraft a follow-up email for each new lead
Every new lead gets a personalised follow-up draft saved as a note, ready to send.
See how it worksKeep exploring
Set up “Share won deals in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.