Skip to content

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 --yes

Installation 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.

At most 100,000 bytes, 500 columns and 10,000 cells including the header. Import replaces the recipient rows below. No upload, Gmail connection or message send. Importing while using the fictional example remains sample use; start empty first for 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

Read the exact task packet