Weekly MailForge email performance digest in Slack
Every Monday at 8am, roll up last week's MailForge campaigns into a Slack summary and log the numbers to Google Sheets for historical tracking.
Build me an agent workflow that runs on a cron trigger every Monday at 8am in my local timezone. Its job is to produce a weekly recap of last week's email marketing performance from MailForge, post it to a Slack channel, and log the underlying numbers to a Google Sheet so we can track trends over time.
Steps the agent should take on each run:
1. Call MailForge List Campaigns to fetch every campaign sent in the last seven days. Ignore anything whose status indicates it is a draft or a test, and ignore campaigns whose name contains "test" or "draft". Only include campaigns that were actually sent to real recipients.
2. For each remaining campaign, call MailForge Get Campaign Stats to pull opens, clicks, bounces, unsubscribes, complaints, and total recipients. Compute open rate and click rate as percentages of delivered recipients (delivered = sent minus bounces), rounded to one decimal place. Never show raw open or click counts as the headline metric, always the percentage.
3. Before writing the recap, read the last four weeks of rows from the Google Sheet (if any exist) so the agent has prior-week context. Use this to describe trends: if this week's average open rate or click rate is meaningfully up or down versus the trailing average, call it out. Also flag any single campaign whose bounce rate or complaint rate is clearly above the recent norm.
4. Write a short narrative summary for Slack. Structure:
- A one-line headline with the week range and the number of campaigns sent.
- Two or three sentences on how the week went overall, including the trend versus prior weeks.
- A ranked list of campaigns by engagement (weight opens and clicks together, clicks more heavily). For each campaign show: name, recipients, open rate %, click rate %, and any bounce or complaint outlier callouts.
- A final line highlighting the single best-performing campaign and, if applicable, one that underperformed.
5. Post the summary to Slack using Send a Message. The target channel should be a configurable input on the workflow so users can pick their marketing channel. Format the per-campaign block as a readable list (bullets or a mrkdwn table-style layout), not a wall of text.
6. Append one row per campaign to a Google Sheet tab using Google Sheets Append Values. The spreadsheet id and tab name should also be configurable inputs. Columns in order: Week Ending (Sunday of the reporting week), Campaign Name, Sent Date, Recipients, Delivered, Open Rate %, Click Rate %, Bounces, Unsubscribes, Complaints. Percentages should be written as numbers like 34.2, not strings with a percent sign, so they stay chart-friendly.
Behavior notes:
- If MailForge returns zero qualifying campaigns for the week, still post a short Slack message saying no campaigns went out, and skip the Google Sheets write.
- If Google Sheets or Slack fails, log the error clearly and keep the run visible in history so I can retry.
- Do not send emails or write anything back into MailForge. This workflow is read-only on MailForge.
Inputs to expose on the workflow: Slack channel, Google Sheet id, Google Sheet tab name, timezone (default America/New_York).
Additional information
What does this prompt do?
- Pulls every MailForge campaign that went out in the last seven days and gathers opens, clicks, bounces, unsubscribes, and complaints.
- Posts a plain-English recap to your marketing Slack channel that ranks campaigns by engagement and calls out any bounce or complaint outliers.
- Appends one row per campaign to a Google Sheet so the numbers accumulate week over week and trend lines are easy to spot.
- Skips test and draft campaigns automatically and shows open and click as percentages, not raw counts.
What do I need to use this?
- A MailForge account with permission to view campaigns and their stats.
- A Slack workspace and a channel where the digest should land.
- A Google account with access to the sheet you want the numbers logged in.
How can I customize it?
- Change the send time or move the recap to a different day of the week.
- Pick a different Slack channel, or send the digest as a direct message instead.
- Point the workflow at a different Google Sheet or tab, or add extra columns like revenue attribution.
- Adjust the filter to include drafts, tests, or campaigns from a longer window.
Frequently asked questions
How do I change which Slack channel gets the digest?
What if I send campaigns less often than once a week?
Can I use a different Google Sheet?
Will test and draft campaigns show up in the digest?
Can it compare this week to prior weeks?
Related templates
Stop copy-pasting campaign stats into Slack every Monday.
Connect MailForge, Slack, and Google Sheets once, and Geni will run this recap for you every week.