fix(docs/campaigns): support@targointernet.com is the validated sender, not support@targo.ca

Previous commit (380f3bc) incorrectly claimed Mailjet verified targo.ca
at the domain level. It doesn't — Mailjet validates senders ONE BY ONE,
even when SPF/DKIM/DMARC are correctly published at the domain. The
mistake: SMTP returned `250 OK` on a send-test from support@targo.ca,
but the message was silently dropped on Mailjet's side because that
specific mailbox hadn't been approved.

Validated senders on this Mailjet account:
  ✓ noreply@targo.ca           — hub transactional (invoices etc.)
  ✓ support@targointernet.com  — gift campaigns

`support@targo.ca` is NOT validated, despite being on a domain whose
sibling (`noreply@targo.ca`) is.

Updated:
  - README default --from value
  - The "sender" section now explains per-sender validation (not
    domain-level) and the SMTP-250-but-not-delivered gotcha
  - Listed both validated senders explicitly with usage intent

The script itself (send_gift_campaign.js) was already
sender-agnostic — only README guidance changed. New senders are added
in Mailjet console → Sender Domain Verification → Add sender, with
the verification link mailed to the new address.
This commit is contained in:
louispaulb 2026-05-21 16:42:18 -04:00
parent 380f3bc0e7
commit 9b06e2df30

View File

@ -86,24 +86,39 @@ The `--sandbox` flag does TWO things:
### `--from` sender
The Mailjet account has `targo.ca` verified at the domain level (SPF +
DKIM + DMARC), so any `*@targo.ca` sender works out of the box. The
default we use for gift campaigns is:
Mailjet validates senders **individually**, not at the domain level —
each mailbox (`noreply@`, `support@`, etc.) must be approved separately
in the Mailjet console even when SPF/DKIM/DMARC are published at the
domain level. The two known-validated senders on this account are:
| Sender | Used by | Status |
|---|---|---|
| `noreply@targo.ca` | hub transactional (invoices, magic links) | ✓ validated |
| `support@targointernet.com` | gift campaigns | ✓ validated |
The default for gift campaigns:
```
--from "Gigafibre Support <support@targo.ca>"
--from "Gigafibre Support <support@targointernet.com>"
```
Reasoning: it's a human-monitored mailbox (unlike `noreply@`), so if a
recipient hits reply with a question about their gift, someone sees it
and can help. The hub's transactional emails (invoices, magic links)
still go from `noreply@targo.ca` — campaigns are different in that
they invite a reply.
Reasoning for `support@` over `noreply@`: campaigns INVITE a reply
(questions about the gift, "I didn't get mine", "the link doesn't
work"). `noreply@` is for transactional system mail where there's
nothing useful for a human to reply to. Different intent → different
sender.
If you ever need a `@gigafibre.ca` sender, that's a 30-min DNS + Mailjet
setup (add the domain in Mailjet → publish SPF/DKIM CNAMEs in
Cloudflare) — not done yet because all customer-facing email currently
flows through `targo.ca`.
**Common gotcha**: SMTP returns `250 OK` even when Mailjet later refuses
to deliver because the sender isn't validated. So the script will say
"sent" but the recipient never sees the message. Always verify a single
test arrives in inbox before doing a bulk send with a new sender. We
hit this with `support@targo.ca` (caught after the fact, fixed by
switching to `support@targointernet.com`).
If you need a new sender (e.g. `recompenses@gigafibre.ca`), add it in
the Mailjet console → Sender Domain Verification → Add a sender, then
click the verification link mailed to that address. Per-sender approval
takes minutes once you control the inbox.
## Stage 2 — send the personalized French emails
@ -117,7 +132,7 @@ node send_gift_campaign.js \
--subject "🎁 Un cadeau pour vous, de la part de Gigafibre" \
--amount "50 $" \
--expiry "31 décembre 2026" \
--from "Gigafibre Support <support@targo.ca>" \
--from "Gigafibre Support <support@targointernet.com>" \
--dry-run
```
@ -139,7 +154,7 @@ node send_gift_campaign.js \
--subject "🎁 Un cadeau pour vous, de la part de Gigafibre" \
--amount "50 $" \
--expiry "31 décembre 2026" \
--from "Gigafibre Support <support@targo.ca>" \
--from "Gigafibre Support <support@targointernet.com>" \
--smtp-host in-v3.mailjet.com --smtp-port 587 \
--smtp-user "$SMTP_USER" --smtp-pass "$SMTP_PASS" \
--throttle-ms 600