Know if your MailForge email sends are earning their keep

See how much of your monthly email allowance each campaign and contact list burned, which ones paid it back, and snapshot the period to a spreadsheet.

App
MailForgeGoogle SheetsSlack BotMarketingOperationsAI Reports
PromptCreate

Build me an app that tells me whether my MailForge sends are earning their keep. It is a reading and reporting surface over my email marketing: how much of my monthly send allowance I have spent, what each campaign and each contact list got in return for the sends it consumed, and where the waste is.

At the top of the screen, put a send allowance meter built from MailForge's Get Usage operation, which returns real time email and AI usage against plan quotas plus a twelve month send history. Show emails used this month, the plan quota, and remaining headroom as an absolute number of sends, not only a percentage. This matters: MailForge refuses a campaign send outright once the monthly allowance is exhausted, so the number I actually need is how many sends I have left before that happens. Render the twelve month send history as a trend chart next to the meter so I can see whether this month is unusually heavy or light. If usage is close to the quota, make the meter visually signal that.

Below the meter, give me a date range picker that defaults to the current calendar month, with quick presets for last 30 days, last 90 days and previous month. Under it, a table of every campaign whose send date falls in that range. Build it from MailForge's List Campaigns operation, then fetch Get Campaign Stats for each campaign in the range to get opens, clicks, bounces, unsubscribes and complaints. Note that List Campaigns filters by status rather than by date, so page through the campaign list and filter to the chosen range yourself. That list endpoint pages with page and per_page, capped at 100 per page, so keep paging until you have them all. Fetch the per campaign stats concurrently with a sensible concurrency cap, and cache the assembled result per date range so re-sorting the table does not refetch everything.

Columns in the campaign table: campaign name, send date, sends spent, delivered, opens, clicks, bounces, unsubscribes, complaints, open rate, click rate, and an allowance efficiency figure such as sends spent per engaged recipient. Compute open rate and click rate against delivered rather than sent wherever bounces are material, so a campaign that bounced heavily is not unfairly judged on engagement when the real problem is list quality. Make every column sortable, and default the sort so the campaigns that burned the most allowance for the least engagement float to the top. Flag the clear underperformers visually rather than only through sort order.

Underneath the campaign table, roll the same numbers up by contact list. Use MailForge's List Contact Lists operation, which returns every list with its subscriber count, and attribute each campaign's sends and engagement to the list it targeted, which you can read off the campaign record from Get Campaign or the campaign list payload. Show, per list: subscriber count, total sends spent in the range, delivered, opens, clicks, bounces, unsubscribes, complaints, the same delivered based rates, and sends spent per engaged subscriber. This is the view that shows me which audiences are quota sinks rather than making me judge campaign by campaign. If a campaign has no list attached or targets more than one, bucket it under an Unattributed row rather than silently dropping it, and say so in the interface.

Let me click any campaign row to drill into a single campaign detail view, built from Get Campaign plus Get Campaign Stats, showing the full detail for that one campaign and how it compares to the range average on sends, open rate, click rate and complaint rate.

Give me a Snapshot this period button that appends the current period's headline numbers as a row to a Google Sheet using Append Values, so I can compare month over month. The row should carry the date range, emails used, quota, sends remaining, campaign count, total sends spent, total delivered, aggregate open and click rates, total bounces, unsubscribes and complaints, the worst performing campaign by allowance efficiency, and the worst performing list. Let me pick the spreadsheet and tab, and remember that choice for next time.

Give me a separate Post to Slack button that sends the headline numbers for the current range to a Slack channel I choose, using the Slack Bot Send a Message operation. Format it as a short readable summary with the allowance position, the top few campaigns by engagement, and the clearest waste, not a raw dump of the table.

Add an Explain this period button that kicks off a background agent. The agent reads the campaign stats across the selected range and the twelve month send history from Get Usage, works out which campaigns and which lists drove the allowance burn, which ones underperformed against the rest of the period, and whether this period's volume is out of line with the trend. It then writes a plain English payback brief: what the allowance bought, which campaigns and audiences paid it back, which did not, and what to change next period. Show the brief in the app underneath the rollup, keep the most recent brief visible when I reopen the app, and also write it onto the matching snapshot row in the Google Sheet using Update Values so the spreadsheet history carries the reasoning alongside the numbers. Show a clear running state on the button while the agent works, since it takes time.

One hard constraint: MailForge exposes no create campaign operation, so this app must not author, send, or schedule campaigns, and must not offer any button that implies it can. Its only writes anywhere are the Google Sheets snapshot row and the Slack message. Everything else is read only.

What does this prompt do?

  • Puts a live allowance meter at the top of the screen: emails sent this month, how many sends you have left before your plan stops you, and your last twelve months of volume as a trend.
  • Lists every campaign in a date range you pick with sends spent, opens, clicks, bounces, unsubscribes and complaints, sortable so the campaigns that burned the most allowance for the least engagement float to the top.
  • Rolls the same numbers up by contact list, alongside each list's subscriber count, so you can spot whole audiences that are quota sinks instead of judging one campaign at a time.
  • Saves a snapshot of the current period to Google Sheets for month over month comparison, posts the headline numbers to Slack when you want to share them, and has an Explain this period button that writes a plain English payback brief.

What do I need to use this?

  • A MailForge account, an API key created in your dashboard settings, and the web address of your MailForge instance.
  • Campaigns that have already gone out, so there are real send and engagement numbers to read.
  • A Google account, if you want to save period snapshots to a spreadsheet.
  • A Slack workspace, if you want to post the headline numbers to a channel.

How can I customize it?

  • Change the date range the table opens on, for example the last 30 days or your current billing month.
  • Choose which Slack channel receives the headline numbers and which spreadsheet collects your snapshots.
  • Set the thresholds that mark a campaign or list as underperforming, such as the open or click rate below which it gets flagged.
  • Add or remove columns in the campaign table, or change which one it sorts by when the app first opens.

FAQs

Does this app send emails or create campaigns?
No. It is a reporting screen only. It reads your usage, campaigns, stats and contact lists and shows them back to you. The only things it ever writes are the snapshot row in your spreadsheet and the message you choose to post to Slack.
Why does it show sends remaining as a number instead of just a percentage?
Because MailForge refuses a campaign send outright once your monthly allowance is used up. Knowing you have 4,200 sends left is actionable in a way that knowing you are at 79 percent is not, especially when you are deciding whether one more campaign will fit.
Can I compare this month against last month?
Yes. The snapshot button writes the current period's numbers as a new row in a Google Sheet, so each period you snapshot builds up a history you can compare side by side. The twelve month trend at the top also shows your volume over the past year.
Are open and click rates based on emails sent or emails delivered?
Delivered, wherever bounces are significant. A campaign that bounced heavily would otherwise look worse at engaging people than it really was, and you would draw the wrong conclusion about the content when the real problem is list quality.
Do I need both Google Sheets and Slack to use this?
No. Both are optional. The dashboard, the campaign table, the per list rollup and the Explain this period brief all work with MailForge on its own. Connect Sheets when you want a month over month record, and Slack when you want to share the numbers with your team.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App

Stop guessing where your email allowance went.

Open one screen to see which campaigns and audiences burned your monthly sends, and which ones actually paid you back.