Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3c1183a
Add Brevo newsletter sync for mailbox provisioning
michaelmwu Jun 9, 2026
6780a01
Resolve Brevo members list by name
michaelmwu Jun 9, 2026
e6dce19
Add recurring member newsletter sync
michaelmwu Jun 10, 2026
224a385
Address newsletter sync review feedback
michaelmwu Jun 10, 2026
8e1ce53
Skip Brevo list-level unsubscribes
michaelmwu Jun 10, 2026
8c434d4
Harden newsletter contact lookups
michaelmwu Jun 10, 2026
cfacfe4
Report suppressed newsletter skips
michaelmwu Jun 10, 2026
7345a8f
Address newsletter sync review hardening
michaelmwu Jun 10, 2026
32c9e5f
Merge main and dashboard-configure newsletter sync
michaelmwu Jun 10, 2026
54304cf
Address newsletter sync review feedback
michaelmwu Jun 11, 2026
75fac4d
Use CRM gating for newsletter resync exclusions
michaelmwu Jun 11, 2026
32155a7
Harden newsletter sync review surfaces
michaelmwu Jun 11, 2026
482d537
Merge main into newsletter sync branch
michaelmwu Jun 11, 2026
0f33bbf
Redact emails in provider error excerpts
michaelmwu Jun 11, 2026
a4252e5
Merge main into newsletter sync branch
michaelmwu Jun 13, 2026
aeb4ac0
Harden newsletter sync PII masking
michaelmwu Jun 14, 2026
19a831c
Merge main into newsletter sync branch
michaelmwu Jun 15, 2026
9786246
Tighten newsletter provider contact handling
michaelmwu Jun 15, 2026
209846b
Add newsletter sync dry run preview
michaelmwu Jun 25, 2026
416f4f4
Speed up newsletter dry run preview
michaelmwu Jun 25, 2026
24fe493
Sanitize newsletter dry run responses
michaelmwu Jun 25, 2026
fcc62ad
Redact newsletter exception warnings
michaelmwu Jun 25, 2026
3c35dd6
Add newsletter suppression registry
michaelmwu Jun 26, 2026
aa583fa
Add newsletter dashboard status tab
michaelmwu Jun 26, 2026
c12f5f0
Harden newsletter suppression sync
michaelmwu Jun 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,25 @@ EMAIL_RESUME_ALLOWED_EXTENSIONS=pdf,doc,docx
EMAIL_RESUME_MAX_FILE_SIZE_MB=10
EMAIL_REQUIRE_SENDER_AUTH_HEADERS=true

# Migadu mailbox automation (required for /create-mailbox command)
MIGADU_API_USER=your_migadu_api_user
MIGADU_API_KEY=your_migadu_api_key
MIGADU_MAILBOX_DOMAIN=508.dev
# Migadu mailbox automation settings are dashboard-managed in normal deployments.
# Set non-empty env values only when you intentionally want env to lock dashboard edits.
# MIGADU_API_USER=your_migadu_api_user
# MIGADU_API_KEY=your_migadu_api_key
# MIGADU_MAILBOX_DOMAIN=508.dev

# Newsletter sync settings are dashboard-managed in normal deployments.
# Set non-empty env values only when you intentionally want env to lock dashboard edits.
# BREVO_API_KEY=
# BREVO_API_BASE_URL=https://api.brevo.com/v3
# BREVO_API_TIMEOUT_SECONDS=20.0
# BREVO_508_MEMBERS_NEWSLETTER_LIST_ID=4
# BREVO_508_MEMBERS_NEWSLETTER_LIST_NAME="508 members"
# KEILA_API_KEY=
# KEILA_API_BASE_URL=https://app.keila.io
# KEILA_API_TIMEOUT_SECONDS=20.0
# NEWSLETTER_SYNC_ENABLED=true
# NEWSLETTER_SYNC_INTERVAL_SECONDS=604800
# NEWSLETTER_SYNC_EXCLUDED_MAILBOXES=system,service-account

# EspoCRM (required for worker integration)
ESPO_API_KEY=your_key_here
Expand Down
14 changes: 14 additions & 0 deletions ENVIRONMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,20 @@ current precedence rules.

- `Required for /create-mailbox and /create-user-accounts`: `MIGADU_API_USER`, `MIGADU_API_KEY`
- `Optional`: `MIGADU_MAILBOX_DOMAIN` (default: `508.dev`)
- Newsletter sync settings are normally set from the admin dashboard configuration page. A non-empty env or `.env` value locks the matching dashboard field.
- `Optional for Brevo newsletter sync`: `BREVO_API_KEY`
- `Optional`: `BREVO_API_BASE_URL` (default: `https://api.brevo.com/v3`)
- `Optional`: `BREVO_API_TIMEOUT_SECONDS` (default: `20.0`)
- `Optional for Brevo newsletter sync`: `BREVO_508_MEMBERS_NEWSLETTER_LIST_ID` (explicit Brevo list ID override; use `4` for the 508 members list when setting it directly)
- `Optional`: `BREVO_508_MEMBERS_NEWSLETTER_LIST_NAME` (default: `508 members`; used to look up the list ID when the explicit ID is unset)
- `Optional for Keila contact sync`: `KEILA_API_KEY`
- `Optional`: `KEILA_API_BASE_URL` (default: `https://app.keila.io`)
- `Optional`: `KEILA_API_TIMEOUT_SECONDS` (default: `20.0`)
Comment thread
Copilot marked this conversation as resolved.
- `Optional`: `NEWSLETTER_SYNC_ENABLED` (default: `true`)
- `Optional`: `NEWSLETTER_SYNC_INTERVAL_SECONDS` (default: `604800`, one week)
- `Optional`: `NEWSLETTER_SYNC_EXCLUDED_MAILBOXES` (comma-separated mailbox local-parts or full addresses to skip during Migadu resync)
- Note: mailbox and backup email subscription to configured newsletter tools is best effort. Failures are reported as warnings and do not block mailbox or account creation.
- Note: the periodic sync uses Migadu mailboxes and password recovery emails as the source of truth for `@508.dev`. When CRM is configured, it only syncs mailboxes that match a CRM contact; it also skips configured excluded mailboxes and does not re-add provider-suppressed contacts.

## Authentik SSO Provisioning

Expand Down
Loading