On a schedule
Get a weekly Mailchimp campaign report
Each Monday you see open rate, click rate and unsubscribes for every campaign sent the week before.
- Runs
- On a schedule
- Apps
- Mailchimp
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Monday at 8am, email me a table of all Mailchimp campaigns sent last week with open rate, click rate and unsubscribes.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Opens, clicks and unsubscribes live in Mailchimp's reports, one campaign at a time. If you send three newsletters and a promotion each week, building the picture means opening four pages, copying figures into a spreadsheet and doing the math on average rates. That takes half an hour on a good Monday and gets skipped on a bad one. Reporting becomes a chore.
Every Monday, ClickRuntime lists the campaigns sent over the previous seven days, fetches each report, lays the results out as a table with opens, clicks and unsubscribes per campaign, and emails it to you. Anything that was only scheduled but not sent stays out.
It suits marketing managers who send a weekly rhythm of campaigns, and agencies who forward the table to a client. It also helps teams that review last week's sends in a Monday meeting.
What you get out of it
One table instead of four tabs
All of last week's campaigns appear side by side, so the best and worst are obvious at a glance. You decide what to do next in minutes instead of after a spreadsheet session.
Same format every week
Because the layout never changes, you can compare this Monday's email with last Monday's by eye. Drift in click rate becomes visible long before it shows up in revenue. That consistency makes trends easy to spot.
Unsubscribes tied to the send that caused them
Seeing the unsubscribe count next to each campaign tells you which email upset readers. A promotion that doubled opt-outs is a lesson you can apply before the next one goes out.
Ready to forward
Clients and managers want numbers without a login. The table is already formatted in an email, so passing it along takes one click and no screenshots. Nothing needs to be reformatted before it is shared with stakeholders at all.
The report exists even in a busy week
Reporting is the task that slips when there is a launch. A scheduled email means the week's data is gathered regardless, and you only need to read it. Consistent reporting keeps your team's decisions grounded in what actually happened.
How it works
What happens, step by step
Once a week, ClickRuntime finds every Mailchimp campaign sent in the last seven days.
It fetches each campaign's report: open rate, click rate and unsubscribes.
You get an email with a table comparing the campaigns side by side.
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 datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, http, credentials, notify
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):
since = (datetime.now(timezone.utc) - timedelta(days=7)).isoformat()
campaigns = mailchimp("GET", "/campaigns", params={"status": "sent", "since_send_time": since, "count": 100})["campaigns"]
rows = ["Campaign | Opens | Clicks | Unsubs"]
for c in campaigns:
r = mailchimp("GET", f"/reports/{c['id']}")
rows.append(f"{c['settings']['subject_line']} | {r['opens']['open_rate']:.1%} | {r['clicks']['click_rate']:.1%} | {r['unsubscribed']}")
notify.email_me(f"Mailchimp last week: {len(campaigns)} campaigns", "\n".join(rows))
return {"campaigns": len(campaigns)}FAQ
Common questions
Which campaigns count as last week's?
Does the table include revenue or only email engagement?
Can I send it to my whole team instead of just me?
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 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 worksPost your daily audience numbers to Slack
Each morning Slack shows your audience size and how many people joined and left since yesterday.
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 “Get a weekly Mailchimp campaign report” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.