For Gmail users preparing expected messages · free · no login
Review every personalized email before using Gmail.
Turn a small Sheet list and two templates into a plain-text review packet, with a recipient, subject and body for every row. Resolve duplicate addresses and missing fields before drafting.
Imported CSV files, pasted addresses, templates and output stay in this browser. Usage events exclude their text. This page does not connect to Google, create Gmail drafts or send messages.
Review a CSV offline
Download a blank, self-contained review page and open the saved file in your browser. It needs no installation or connection. Add your CSV and templates there; no Google access or sending. Clear inputs before sharing the file or your screen.
Download offline email review page
The download contains code and a fictional example, not the inputs entered here. Offline use is not observed. Review messages manually in Gmail after checking the packet.
Run this review with your coding agent
Already have a Node.js project and Codex? Install the single mail-review skill in that project, then give your agent the three local input files and a new output path. The skill prepares a plain-text review packet; it does not access Gmail or send messages.
npx --yes [email protected] add https://bulldo.gs --skill bulldogs-mail-merge-review --agent codex --copy --yesInstallation downloads code from npm and this site. Review the installed instructions before supplying your own files. Use a UTF-8 TSV recipient table with an exact email header and 1–25 unique addresses, plus separate subject and body template files. CSV must be converted to TSV first.
Ask: “Use bulldogs-mail-merge-review with these recipient, subject and body files. Write the complete packet to this new local path. Keep the data local and do not send messages.” The helper refuses an existing output file. Your agent environment controls access to your files; the skill does not make a hosted agent private.
Download the skill archive to inspect · Published archive digest and install index
1. Add recipients and message templates
Copy tab-separated cells from Sheets or import a local comma-separated CSV file, including a header named email. Use 1–25 rows, one plain email address per row, and unique headers. Templates use case-sensitive {{field}} names. Subjects must be one nonempty line, at most 200 characters after substitution. Multiline template bodies are supported; recipient cells must stay on one line without tabs or control characters. CSV quoted commas are supported; use UTF-8 exports. Maximum 100,000 characters per box and for the complete packet.
Edits to the example remain sample use. Start empty before adding your own work.
Finish in your normal Gmail workflow
After reviewing, create messages manually in Gmail using each recipient, subject and body. This packet is not a Gmail import file. Native Gmail templates or writing each message by hand remain alternatives; no time saving or delivery has been measured. Use only expected, permission-based messages.
Existing Apps Script guide for personalized Gmail messages
Download local mail review source · Read local setup and limits