The task is always the same: there is a sheet of addresses and there is the text of a message, and every person should get their own copy with their own name in it. Here is how that works in MailSharks. It takes about five minutes and no code.
There is exactly one requirement: the first row holds the column headers. Everything else is taken as it is.
| name | city | |
|---|---|---|
| anna@example.com | Anna | Berlin |
| b.moore@example.com | Ben | Leeds |
What happens while the sheet is read:
Name and name behave
identically in a template.Open the app and grant access to Gmail and Google Sheets — on Google's own page. The service never sees your password and cannot; access is revoked in one click in your Google account settings. What exactly is requested, and why, is on the about page.
Paste the Google Sheets link and pick the columns holding the addresses and the names. The service reads the sheet, shows how many recipients it found and remembers the choice — the next campaign on the same sheet does not ask again.
The message is written in the built-in composer (or taken from a Gmail draft). A placeholder is a column name in double curly braces:
Hello {{name}}! We are opening in {{city}} next month.
Placeholders work in the subject line too. Worth knowing:
Send one message to your own address and look at it in your mail app, not in the preview. Check that the name was substituted, that the subject reads well, that the links work, that the unsubscribe link is visible and that nothing falls apart on a phone.
Before it starts you see the subject, the recipient count and the daily cap. After that sending runs on its own: message by message, with a pause of 5–10 seconds. On reaching the daily cap (100 messages by default) the campaign pauses and continues the next day, so it never runs into the Gmail limit.
| What you see | What it means |
|---|---|
| 0 recipients | The addresses are in a different column, or the first row is not a header row. |
| The sheet will not open | It belongs to a different Google account than the one you connected. |
| The name is missing | The cell is empty, or the template uses a different column name. |
| Fewer messages than rows | Duplicates and invalid addresses were dropped and unsubscribed people were skipped. |
Next: how to stay out of spam, Gmail limits, and the same thing over the HTTP API if campaigns need to start from your own software.
Connect Google, add a sheet with addresses, write the message.
Try it now Free, no card needed. Google access can be revoked in one click.