Configuration File
listmonk uses TOML configuration files for low-level settings. Most settings can also be managed through the Settings dashboard in the admin UI.Generating config.toml
To generate a new sample configuration file:config.toml in the current directory.
Multiple Config Files
You can load multiple TOML files that will be merged in order:Environment Variables
All configuration variables can be provided as environment variables prefixed withLISTMONK_ and periods replaced by __ (double underscore).
To run listmonk purely with environment variables, pass an empty config flag:
--config=""Environment Variable Examples
| Environment Variable | Example Value | Description |
|---|---|---|
LISTMONK_app__address | "0.0.0.0:9000" | Server address and port |
LISTMONK_db__host | "localhost" | Database host |
LISTMONK_db__port | 5432 | Database port |
LISTMONK_db__user | "listmonk" | Database user |
LISTMONK_db__password | "listmonk" | Database password |
LISTMONK_db__database | "listmonk" | Database name |
LISTMONK_db__ssl_mode | "disable" | Database SSL mode |
Application Settings
Server Address
Interface and port where the app runs its webserver.
localhost:9000- Only listens to connections from the current machine0.0.0.0:9000- Listens on all interfaces- Port 80 requires running with elevated permissions
URL Configuration
Configured through the Settings UI:Root URL of the listmonk installation. Used for generating public URLs for unsubscribe links, tracking pixels, etc.
URL to a logo image displayed in the admin interface and public pages.
URL to a favicon displayed in the admin interface.
Database Configuration
listmonk requires PostgreSQL version 12 or higher.PostgreSQL server hostname or IP address.
PostgreSQL server port.
Database user name.
Database password.
Database name. This database must be created in PostgreSQL before running listmonk.
SSL mode for database connection.Options:
disable, require, verify-ca, verify-fullMaximum number of open database connections in the pool.
Maximum number of idle database connections in the pool.
Maximum lifetime of a database connection.
Optional space-separated PostgreSQL DSN parameters.Example:
"application_name=listmonk gssencmode=disable"Database Configuration Example
Performance Settings
These settings are configured through the Settings UI under Settings → Performance.Number of subscribers fetched from the database in a single cycle (~5 seconds) when a campaign is running.
Increasing batch size uses more memory but reduces database round trips. Useful for large lists with millions of subscribers.
Maximum number of concurrent workers that send messages.
Maximum number of messages to send per second per worker.
Maximum number of send errors before a campaign is paused.
Enable sliding window rate limiting instead of per-second rate limiting.
Duration of the sliding window for rate limiting.
Maximum number of messages to send within the sliding window duration.
Slow Query Caching
Enable caching of slow queries for better dashboard performance.
Cron interval for refreshing cached queries (default: 3 AM daily).
Notification Settings
Default “From” email address for campaigns and system notifications.
Array of email addresses to receive system notifications (import completion, errors, etc.).Example:
["[email protected]", "[email protected]"]Public Features
Enable the public subscription management page where subscribers can manage their subscriptions.
Enable the public campaign archive page.
Include full campaign content in the public archive RSS feed.
Internationalization
Default language for the admin interface and public pages.Supported languages are determined by available translation files in the i18n directory.
Additional Settings
Automatically send opt-in confirmation emails to new subscribers.
Check for new listmonk versions on startup.
Reloading Configuration
How to reload configuration without restart
How to reload configuration without restart
Most settings can be changed through the Settings UI and take effect immediately. Changes to the TOML configuration file or environment variables require restarting listmonk.When you update settings through the admin UI, listmonk sends a SIGHUP signal to reload the configuration.
Database settings and the server address require a full restart and cannot be hot-reloaded.