On a schedule
Post your daily audience numbers to Slack
Each morning Slack shows your audience size and how many people joined and left since yesterday.
- Runs
- On a schedule
- Apps
- Mailchimp
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every morning at 9am, post my Mailchimp audience size, new subscribers and unsubscribes since yesterday to #marketing in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A team that shares its numbers in Slack tends to keep looking at them. A team that has to log into Mailchimp for the audience total usually does not. The size of the list, the very figure that drives every campaign's reach, ends up checked only when someone writes a quarterly deck, and a sudden drop after a bad send goes unnoticed for weeks.
On the schedule you choose, this reads your audience statistics from Mailchimp, compares the current member count with the value saved at the last run, and posts the total and the change since then into a Slack channel. The new total is saved afterwards, ready for the next comparison.
Marketing leads use it to give the whole company a pulse on list growth, and agencies post it into a client channel.
What you get out of it
Everyone sees the same audience number
Putting the total in a shared channel ends the argument about whether the list has 18,400 or 19,100 contacts. Sales, content and leadership all work from one figure that was read from Mailchimp, not recalled.
A drop is caught the day it happens
If a large unsubscribe wave or a cleanup removes 600 contacts, the negative change appears in Slack at the next run. You can look into the campaign that caused it while the details are fresh.
Growth becomes a team habit
Seeing plus 42 next to the date each morning keeps list-building on people's minds. Small wins get noticed, and when growth stalls, somebody asks why in the thread underneath the post.
No dashboards to log into
Not everyone has a Mailchimp seat, and you may not want to give them one. The post gives non-marketers the one number they care about without sharing account access. Marketing can keep the account tight while everyone else stays informed.
History sits in the channel
Scrolling back through the posts gives you a dated record of the audience size. It answers where we were before the launch without anyone having to dig up an old export.
How it works
What happens, step by step
Every day, ClickRuntime reads your Mailchimp audience totals.
It compares them with yesterday's numbers.
A message goes to your #marketing Slack channel with the total subscribers, new sign-ups and unsubscribes since yesterday.
Before it runs live
- Connect Mailchimp
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
- 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 Mailchimp steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, http, credentials, notify, state
LIST_ID = "AUDIENCE_ID"
def mailchimp(method, path, **kw):
key = credentials.secret("MAILCHIMP_API_KEY")
r = http.request(method, f"https://{key.split('-')[-1]}.api.mailchimp.com/3.0{path}", auth=("clickruntime", key), **kw)
r.raise_for_status()
return r.json() if r.content else None
@on_trigger
def run(event):
stats = mailchimp("GET", f"/lists/{LIST_ID}")["stats"]
prev = state.get("prev") or stats
joined = stats["member_count"] + stats["unsubscribe_count"] - prev["member_count"] - prev["unsubscribe_count"]
left = stats["unsubscribe_count"] - prev["unsubscribe_count"]
notify.slack(f"Audience: {stats['member_count']:,} subscribers · +{joined} new · {left} unsubscribed since yesterday",
channel="#marketing")
state.set("prev", {k: stats[k] for k in ("member_count", "unsubscribe_count")})
return {"members": stats["member_count"]}FAQ
Common questions
Does the change compare with yesterday or with the last run?
What happens on the first run, when there is nothing stored?
Can it post to a different Slack channel for each audience?
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 Mailchimp campaign report
Each Monday you see open rate, click rate and unsubscribes for every campaign sent the week before.
See how it worksGet a morning list of new subscribers
Each morning you see who joined your list in the last day, with names and sign-up source.
See how it worksClean out subscribers who stopped opening
Once a month you get the people with no opens in six months, and they are archived only after you approve.
See how it worksKeep exploring
Set up “Post your daily audience numbers to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.