Command-line tool

Send templated messages to a list, safely.

Write one message with {{placeholders}}, point messengerr at a CSV, and it validates the contacts, shows you exactly what will go out, sends through your provider, and keeps a record of every result.

$gem install messengerr

What you get

✓

Preview before anything is sent

See the first rendered messages and the total count, then confirm. --dry-run stops there and sends nothing.

☰

A record of every result

Each outcome is written to a ledger as it happens, so a crash or Ctrl-C never loses track of who was messaged.

↻

Resume without duplicates

Pick up an interrupted run with --resume. Failures that might already have been delivered are flagged before you retry.

⚙

Pluggable providers

Postmark for email and ClickSend for SMS today. A small contract makes new integrations straightforward to add.

How a send works

  1. Configure an integrationStore your provider's credentials once, verified live and encrypted at rest.
  2. Write the messageUse {{column}} placeholders in the body and, for email, the subject.
  3. Map your CSVChoose the column for each placeholder and the column that holds the address or number.
  4. ReviewBad contacts are listed by row. You drop them or abort to fix the file. Then you see a preview.
  5. SendMessages go out in batches. Failures are listed with reasons, and you decide whether to retry.

See it

messengerr send --dry-run
# a CSV with one bad address
1 contact(s) have defects:
  row 4: "not-an-email" — invalid email address
Drop these contacts and continue? (n = abort to fix) [y/n] y

--- Preview (2 messages) ---
To: ann@example.com
Subject: Invoice for Ann
Body: Hi Ann, your Pro invoice is ready.
...
Dry run — nothing sent. Ledger skipped.

New here? Follow Getting started. Something broken? See Troubleshooting. Know what to expect from the tool, including what it does not do yet, in Limitations.


Back to top

Maintained by Daiwick. Released under the MIT License.