Know if your MailForge email sends are earning their keep

By General Input

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.

Integrations

  • MailForge
  • Google Sheets
  • Slack Bot

Type

App

Categories

  • Marketing
  • Operations

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board