Approve every MailForge campaign before a single email goes out
See every unsent draft and scheduled campaign in one place, run the pre-flight checks, and unlock Send only after a named reviewer signs off.
Build me a launch desk for MailForge where nothing goes out until a human has signed off. This app reviews and launches campaigns that already exist in MailForge. It does not author, compose or create campaigns, because MailForge has no create-campaign operation. Marketers build drafts in MailForge, and this is the screen where those drafts get checked, approved and sent.
The main view is a single list of every campaign that has not been sent yet. Use MailForge List Campaigns filtered by status to pull both drafts and scheduled campaigns, and give each one its own row. For each row, call MailForge Get Campaign to show the subject line and a preview of the campaign content, and show the target contact list along with that list's current subscriber count from MailForge List Contact Lists.
Every row gets a pre-flight panel with three checks. First, suppression overlap: cross-reference the campaign's target list against the suppression list by using MailForge List Contacts with its list filter to page through the target list's members and MailForge List Suppressions to get suppressed addresses, then report how many people on the target list are already suppressed and will not receive the email. Second, quota headroom: call MailForge Get Usage to read the remaining monthly email allowance and compare it against the target audience size. Third, template attached: confirm the campaign actually has a template on it, using MailForge List Templates to resolve the attached template.
Roll those checks into a traffic light on each row with three states: ready, needs review, or blocked. Treat the quota check as a hard block, not a warning. MailForge's send endpoint rejects a campaign outright once the organization's monthly email quota is exhausted, so if the remaining allowance is smaller than the target audience the row must be marked blocked, the Send button must be withheld entirely, and the panel must state the shortfall in sends, for example "blocked: 4,200 recipients but only 1,850 sends left this month, short by 2,350". A missing template should also block. Softer problems like a large suppression overlap should land on needs review rather than blocked.
The Send button only appears once a reviewer has approved that row. Store approvals in the app's own database using General Input Database so there is a permanent record: campaign id, campaign name, approver name, approver identity, timestamp, and the audience size at the time of approval. Approval records must survive independently of MailForge, so the team can show months later exactly who signed off on any given send. Show the approver's name and the approval time directly on the row once it is approved.
Require a second approver for any campaign whose audience exceeds a configurable size threshold. Below the threshold one approval unlocks Send. Above it, the row stays locked showing something like "1 of 2 approvals" until a second, different person approves, and both approvers are recorded. Make the threshold a setting the ops lead can change without editing code.
Sending fires MailForge Send Campaign for that campaign, then posts to Slack with Slack Bot Send a Message, including the campaign name, the audience size and the approver name (both names when two approvals were required). Handle the case where MailForge still rejects the send because the quota ran out between the pre-flight check and the click: surface that clearly on the row rather than reporting a successful send.
Add a "Review this campaign" button on every row that kicks off a background agent for that campaign. The agent reads the campaign content with MailForge Get Campaign, looks at how past campaigns to the same target list performed using MailForge List Campaigns plus MailForge Get Campaign Stats for opens, clicks, bounces and unsubscribes, walks the same pre-flight checklist the panel shows, and writes a pass or fail verdict with specific reasons back onto the row. Store the verdict so the app can display it: the verdict itself, the reasons as concrete bullet points rather than vague prose, and when it ran. The verdict is advice for the reviewer to act on, so it must never approve a campaign or unlock Send by itself. Only a human approval does that.
The people using this are an email marketing manager or ops lead who approves sends, plus the marketers who queue drafts and watch their status. Make the desk scannable at a glance so someone can walk in, see which campaigns are ready, which need attention and which are blocked, and act on them in order. Refresh the pre-flight numbers when the page loads so the quota and suppression figures reflect the current state rather than a stale snapshot.
What does this prompt do?
- Lists every MailForge campaign that has not gone out yet, drafts and scheduled ones alike, as one row each with its subject line and a preview of the content.
- Runs a pre-flight check on every row: how many people on the target list are already suppressed, whether the audience fits inside the emails you have left this month, and whether a template is actually attached.
- Gives each campaign a traffic light of ready, needs review or blocked, and hides the Send button until a named reviewer approves the row. Who approved it and when is stored permanently.
- Adds a Review this campaign button that hands the row to a background assistant, which reads the content, checks how past campaigns to that same list performed, and writes back a pass or fail verdict with specific reasons.
- Sends approved campaigns straight from the page and posts the campaign name, audience size and approver name to Slack so the team has a record of every launch.
What do I need to use this?
- A MailForge account with campaigns already built, plus your API key and instance address
- A Slack workspace where the app can post launch announcements to a channel
- The names or emails of the people allowed to approve a send
- An idea of the audience size above which you want a second approver to sign off
How can I customize it?
- Set the audience size that forces a second approver, so only your biggest sends need two people
- Choose which Slack channel gets the launch announcement and how much detail it carries
- Decide what counts as needs review versus blocked, for example how large a suppression overlap you will tolerate before a row is held back
- Adjust how much of the email body shows in the row preview
FAQs
Can I write new campaigns in this app?
What happens if I do not have enough emails left this month?
Who can approve a campaign?
Is there a permanent record of who approved what?
What does the Review button actually do?
Does it catch people who already unsubscribed?
Related templates
Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.
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.
One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.
Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.
Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.
Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.
Never send a campaign nobody checked.
Put a real sign-off step between your drafts and your subscribers, with the pre-flight checks done for you.