Email system
Verified 2026-09-10 · Brevo · all transactional flows
One overview of every email a byCaliber contact may receive. Who triggers it. What template it uses. Where the code lives. Read back on 2026-09-10 from bycaliber-site.
Brevo handles every transactional email the site sends (sender byCaliber <contact@bycaliber.work>, helper functions/api/_lib/brevo.js, free plan 300/day, EU region). No newsletter tool and no outreach robot are wired on byCaliber.
Transactional emails (Brevo)
| Trigger | Template file | Endpoint | First-email footer? | Status | |
|---|---|---|---|---|---|
| User requests a sign-in link (FR page) | Magic link · "Connexion à byCaliber" | _lib/brevo.js via auth/magic-link.js | /api/auth/magic-link | None (sign-in mail) | live |
| User requests a sign-in link (EN page) | Magic link · "Sign in to byCaliber" | _lib/brevo.js via auth/magic-link.js | /api/auth/magic-link | None (sign-in mail) | live |
Newsletter broadcasts
No newsletter tool is wired on byCaliber. The newsletter_signup event type is accepted by /api/events but no form on bycaliber.work sends it (read back 2026-09-10).
| Setting | Where | Status |
|---|---|---|
| Newsletter tool | — | none wired |
First-email footer helper
No first-email footer helper on byCaliber: the only mails sent are sign-in links.
Files
- Brevo helper: bycaliber-site/functions/api/_lib/brevo.js
- Sign-in flow: bycaliber-site/functions/api/auth/magic-link.js (+ verify.js, poll-session.js, whoami.js, logout.js)
Functions exposed
| Function | Purpose | Used by |
|---|---|---|
| sendEmail | Brevo transactional send; returns skipped_no_config when BREVO_API_KEY is absent so callers still answer 200. | Magic link |
Unsubscribe
No unsubscribe route on byCaliber: no marketing email is sent.
- Route: none.
- Confirmation page: none.
Edit a copy
- Open the template string inside bycaliber-site/functions/api/auth/magic-link.js (FR and EN blocks).
- Edit the readable strings inside the HTML literal.
- Deploy site: cd ~/Projects/bycaliber-site && npm run deploy:prod (preview first with deploy:preview).
- Smoke: request a sign-in link on prod and inspect the resulting email.
Open items
- to verify Brevo domain authentication (DKIM CNAMEs brevo1/brevo2._domainkey + brevo-code TXT) required by _lib/brevo.js: status not read back on 2026-09-10, check the Brevo dashboard.
- todo No newsletter path: the newsletter_signup event exists, nothing sends it.
- todo No outreach or follow-up robot on byCaliber (byForja has CRON9): decide whether the career-move funnel needs one.