One entry point for sending application emails across all modules — every mail logged with status, recipient, and source record. Per-tenant SMTP included.
One command sets everything up: it copies the YAML configs for the communications log, registers the Communication app, and runs the module migrations — existing mail_logs data is migrated automatically.
Requires noerd/noerd and noerd/customer.
$ composer require noerd/communication
$ php artisan noerd:install-communication
✓ YAML configs copied
✓ Communication app registered
✓ Migrations run
Send any Mailable through one service call and get a complete, searchable log of what left your application.
One service call sends any Mailable — no scattered Mail::to() calls across your modules.
Every email is persisted with subject, from, to, status, and sent time in a YAML-configured list.
Queued, sent, or failed — failures are logged and re-thrown, so existing job retry logic stays intact.
Pass a customer as recipient and the mail is sent to their address and linked to their record.
Each mail can reference the invoice, order, or other record that triggered it — polymorphically.
Tenants send through their own SMTP settings, resolved at send time with a safe fallback.
Cc, bcc, custom headers, and any extra context are persisted as JSON alongside the mail.
A cron-ready artisan command prunes log entries older than a configurable retention period.