Send announcements to your Mailgun lists without touching code

By General Input

Browse every mailing list, clean new subscribers before they land, and send with a test first and the recipient count right in front of you.

Integrations

  • Mailgun
  • Google Sheets

Type

App

Categories

  • Marketing
  • Operations

I want an app my team opens to manage our Mailgun mailing lists and send announcements and updates to them, without touching code and without trusting a raw CSV import. It should cover four surfaces: a list overview, a member browser, an import panel backed by address validation, and a compose and send screen with a post-send monitor.

The landing view lists every mailing list on the account using Mailgun List Mailing Lists, showing each list's name, address, description, access level and member count. Clicking a list opens it. A Create Mailing List button on this view creates a new list from a name, address, description and access level using Create Mailing List. Use Get Mailing List to refresh a single list's header after members change so the member count on screen stays honest.

Opening a list shows a member browser backed by List Mailing List Members by Page, paginated rather than loading everything at once, with a search box that filters by address or name. Members can be managed inline: add a single person with Add Mailing List Member, edit a member's name, subscribed state or custom variables with Update Mailing List Member, and remove someone with Delete Mailing List Member behind a confirmation. Show the subscribed and unsubscribed state clearly, because an unsubscribed member still sits in the list.

An import panel pulls candidate subscribers out of a Google Sheets tab. The user gives a spreadsheet, a tab and a range, and the app reads it with Google Sheets Get Values, treats the first row as headers and lets the user map an email column plus an optional name column. Each address then runs through Mailgun Validate Single Address, and the results land in a preview table split into three buckets: deliverable, risky and undeliverable, using the validation result and risk fields, with the specific reason shown per row such as an unknown mailbox, a disposable domain or a role address. Every row has a checkbox with bucket level select all. Deliverable rows are ticked by default and undeliverable rows are not.

Only the approved rows get pushed into the list, using Add Multiple Mailing List Members (JSON) in batches of up to 1000 members. After the push, write the validation verdict and the date it was checked back to the source spreadsheet with Google Sheets Update Values, into a validation column alongside each source row, so the sheet stays clean and nobody re-imports the same bad addresses next month. Finish the import with a summary of how many were added, skipped and rejected.

A compose screen lets the user pick a list and write a subject and body, with both a plain text and an HTML body and a configurable from name and address. The user must send a test to themselves first using Mailgun Send Message, and only after that test has gone out does the real send to the list address unlock, also using Send Message. If the subject or body changes materially after the test, require a fresh test before the send unlocks again. The confirm step always names the list and shows the current recipient count for it, and needs an explicit confirmation, because sending to the wrong list is the one mistake that cannot be undone. Persist each draft's subject, body, selected list, test send timestamp and the returned message id so a send can be reopened later.

After the real send, a post-send panel polls Mailgun List Events for the sending domain, scoped to that send's message id and the window since it went out, and tallies delivered, opened, failed and bounced or complained counts so the user can watch them climb without leaving the app. Refresh it on a short interval with a manual refresh button too, and show the individual events in a table underneath. Keep past sends browsable so someone can reopen last week's announcement and see how it performed.

Add a Draft this announcement button in the composer that kicks off a background agent. The agent takes a short brief typed by the user plus the selected list, pulls that list's recent send history with List Events to see what subjects went out recently and how they were received, then drafts several subject line options and body copy in our voice and writes them back into the composer as an editable draft. The agent must never send: its job ends at filling the composer, and the human still runs the test send and clicks send.

Two things to bake in. Mailgun is keyed by sending domain, so let the user pick or configure which sending domain is used for Send Message and List Events. And Mailgun templates are out of scope here, so compose is a free-form subject and body written in the app rather than a stored template picker.

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 engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads