Configuration
Courier's config file lives at app/Config/Courier.php after you publish it. Every option has a default that works out of the box — you only need to set what you want to change.
Options
$fromName / $fromEmail
The default sender name and address for all outgoing emails. Individual campaigns can override these — these values are the fallback when a campaign doesn't specify its own.
$defaultLayout
The email layout view used when a campaign doesn't have one set. Courier ships with a simple responsive layout at Views/courier/layouts/default.php. Point this at your own view to apply a custom look site-wide.
See Email Templates for how layouts work.
$trackingHost
The base URL used to build tracking pixel URLs, click redirect URLs, and unsubscribe links. Leave empty and Courier will use CI4's base_url() automatically. Set it if you're using a custom tracking domain:
$batchSize
How many emails to send per courier:send-campaign or courier:process-drips command run. If a campaign has 10,000 contacts, the command works through them in chunks of 200 across successive cron runs.
Lower this if you're hitting rate limits; raise it if your email provider supports higher throughput.
$throttleMs
Milliseconds to sleep between individual sends within a batch. 0 means no delay. Set this if your email provider has a per-second sending limit:
$markdownPath
The base directory Courier uses when resolving markdown email files. Leave empty and it defaults to APPPATH (your app's app/ folder). Set an absolute path to load markdown files from a different location:
With this set, a campaign view of welcome.md resolves to app/Emails/welcome.md.
See Email Templates for the full markdown workflow.
$testMode
When true, Courier skips the actual mailer and logs what it would send instead. Use this in development or CI to verify your campaign setup without delivering real emails:
You'll see log entries like: