Monthly
Get a monthly strategy brief for your key accounts
Each month you get an email with upsell gaps, competitor risks and a suggested next move for each of your top accounts.
- Runs
- Monthly
- Apps
- Gmail, Salesforce
- AI
- Yes, uses the built-in AI allowance
- Access
- api; gmail.send
Send this to your assistant
Create a ClickRuntime automation: every month, for my top 10 Salesforce accounts, list what they haven't bought, any competitor risk from recent deals, and one suggested next move, and email me the brief.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A head of sales preparing for a quarterly business review wants a page per key account: what they own, what they could buy, and who else is talking to them. Pulling that together from Salesforce takes an afternoon per account, so it only happens for the biggest few.
This automation writes the brief for your top ten accounts every month from the deals, products and competitors recorded in Salesforce, and emails it to you.
What you get out of it
Ready for account reviews
A short brief per account arrives each month, ready to bring into planning meetings.
Upsell ideas from real data
Gaps are based on what each account has actually bought, compared with your product list.
Competitor risk in one place
Competitors recorded on recent deals are pulled together, so a pattern is easy to spot.
A concrete next move
Each account ends with one suggested action, which turns the brief into a plan.
How it works
What happens, step by step
Once a month the automation reads your top accounts from Salesforce with their recent deals and competitors.
AI compares what each account has bought with your product list.
It writes three short points per account on upsell gaps and competitor risks, plus a next move.
The brief is emailed to you from your Gmail account.
Before it runs live
- Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
- 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
- Run it at a different time, more or less often, or only on weekdays
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Gmail and Salesforce steps into one automation
Under the hood
The code that runs this automation
import base64
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai
ME = "me@northwind.example"
PRODUCTS = ["Core Platform", "Analytics", "Integrations", "Premium Support", "Training"]
API = "https://yourcompany.my.salesforce.com/services/data/v61.0"
def send(subject, body):
msg = EmailMessage()
msg["To"], msg["Subject"] = ME, subject
msg.set_content(body)
gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
@on_trigger
def run(event):
headers = {"Authorization": f"Bearer {credentials.connection('salesforce', 'work')}"}
accounts = http.get(f"{API}/query", headers=headers, params={"q": "SELECT Name, Industry, AnnualRevenue, "
"(SELECT Name, StageName, Amount, Competitor__c FROM Opportunities ORDER BY CreatedDate DESC LIMIT 10) "
"FROM Account WHERE Tier__c = 'Tier 1' ORDER BY AnnualRevenue DESC LIMIT 10"}).json()["records"]
facts = [f"{a['Name']} ({a['Industry']}, revenue {a['AnnualRevenue']}): deals " + "; ".join(
f"{o['Name']} {o['StageName']} {o['Amount']} competitor {o['Competitor__c'] or '-'}"
for o in (a.get("Opportunities") or {}).get("records", [])) for a in accounts]
brief = ai.generate(f"Our products: {', '.join(PRODUCTS)}. For each account below, list upsell gaps and competitor risks "
"in 3 short bullets, then one suggested next move.\n\n" + "\n".join(facts), max_output_tokens=2000).text
send(f"Key account brief: {len(accounts)} accounts", brief)
return {"accounts": len(accounts)}FAQ
Common questions
Which accounts are included?
Where do competitors come from?
Can it go to the account owners as well?
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
Get a weekly email of customers at risk of leaving
Each week you get an email listing customers whose health looks poor, with a score, the reason and how it changed since last week.
See how it worksGet a weekly email of your team's Salesforce activity
Every Monday you get an email showing each rep's tasks, meetings, deals moved and revenue won last week, with short coaching notes.
See how it worksGet an email when deals start to stall
Each day you get an email listing newly at-risk deals, with the warning signs for each.
See how it worksKeep exploring
Set up “Get a monthly strategy brief for your key accounts” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.