Skip to main content

Overview

This quickstart guide will walk you through setting up listmonk and sending your first email campaign in just a few steps. By the end, you’ll have:
  • A running listmonk instance
  • A configured mailing list
  • Subscribers added to your list
  • Your first campaign created and sent
This guide assumes you’re using Docker for installation. For other installation methods, see the Installation Guide.

Prerequisites

Before you begin, ensure you have:
  • Docker and Docker Compose installed
  • An SMTP server or email provider (Gmail, AWS SES, Sendgrid, etc.)
  • Basic command line knowledge

Step-by-Step Guide

1

Install and Launch Listmonk

Download and start listmonk with Docker Compose:
# Download the compose file
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

# Start the services
docker compose up -d
Visit http://localhost:9000 in your browser. You’ll be prompted to create your admin account.
To set credentials during installation, use:
LISTMONK_ADMIN_USER=admin LISTMONK_ADMIN_PASSWORD=yourpassword docker compose up -d
2

Configure SMTP Settings

After logging in, navigate to SettingsSMTP to configure your email provider.
{
  "host": "smtp.gmail.com",
  "port": 587,
  "auth_protocol": "login",
  "username": "[email protected]",
  "password": "your-app-password",
  "hello_hostname": "",
  "max_conns": 10,
  "max_msg_retries": 2,
  "idle_timeout": "15s",
  "wait_timeout": "5s",
  "tls_enabled": true,
  "tls_skip_verify": false
}
Use an App Password instead of your regular Gmail password.
Click Test connection to verify your SMTP settings work correctly.
3

Create Your First Mailing List

Navigate to Lists in the sidebar and click New.Fill in the details:
  • Name: Newsletter Subscribers
  • Type: Public (allows public subscription)
  • Opt-in: Single (subscribers are added immediately) or Double (requires email confirmation)
  • Description: Optional internal description
Click Save to create your list.
Start with a Private list and Single opt-in for testing to avoid sending confirmation emails.
4

Add Subscribers

Go to SubscribersNew to manually add a subscriber.
Fill in the form:
  • Email: [email protected]
  • Name: Your Name
  • Status: Enabled
  • Lists: Select “Newsletter Subscribers”
  • Subscription Status: Confirmed
Click Save.
For your first test, use your own email address so you can verify campaign delivery.
5

Create an Email Template

Navigate to CampaignsTemplatesNew.You can use the default template or create a custom one:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
    <h1>{{ "{{" }} .Campaign.Name {{ "}}" }}</h1>
    <div>
        {{ "{{" }} .Campaign.Body {{ "}}" }}
    </div>
    <hr>
    <p>
        <a href="{{ "{{" }} .UnsubscribeURL {{ "}}" }}">Unsubscribe</a>
    </p>
</body>
</html>
Save the template as your default campaign template.
6

Create and Send Your First Campaign

Navigate to CampaignsNew Campaign.Configure your campaign:
  • Name: Welcome Newsletter (internal name)
  • Subject: Welcome to Our Newsletter!
  • From: [email protected]
  • Lists: Select “Newsletter Subscribers”
  • Template: Choose your template
  • Content: Write your email content using the rich text editor
Example content:
Hi there!

Thank you for subscribing to our newsletter. We're excited to have you join our community.

You'll receive updates about our latest news, tips, and exclusive offers.

Best regards,
The Team
Test Your Campaign:
  1. Click Test and enter your email address
  2. Check that you receive the test email
  3. Verify formatting and links work correctly
Send Your Campaign:
  1. Click Start campaign when you’re ready
  2. The campaign status will change to “Running”
  3. Monitor progress in the campaign dashboard

Verify Delivery

After sending your campaign:
  1. Check the Campaign page for delivery statistics
  2. Look for:
    • Sent: Number of emails sent
    • Views: Number of opens (if tracking enabled)
    • Clicks: Number of link clicks
    • Bounces: Failed deliveries
  3. Check your inbox for the email
  4. Verify all links work, especially the unsubscribe link

What’s Next?

Now that you’ve sent your first campaign, explore more features:

Subscriber Management

Learn advanced subscriber management and segmentation

Campaign Features

Explore scheduling, analytics, and advanced campaign options

Templates

Create beautiful email templates with variables and functions

API Integration

Integrate listmonk with your applications using the API

Troubleshooting

Problem: Test connection fails or emails won’t sendSolutions:
  • Verify your SMTP credentials are correct
  • Check that you’re using the correct host and port
  • For Gmail, ensure you’re using an App Password, not your regular password
  • Check if your provider requires specific security settings (TLS/SSL)
  • Verify your firewall allows outbound connections on the SMTP port
Problem: Campaign doesn’t complete or shows no progressSolutions:
  • Check SMTP settings are configured correctly
  • Look at the logs: docker compose logs -f listmonk
  • Verify you have subscribers in the selected lists
  • Check the campaign’s “Send later” date if scheduled
  • Ensure concurrency and message_rate settings allow sending
Problem: Campaign sent but subscribers didn’t receive emailsSolutions:
  • Check subscriber status is “Enabled”
  • Verify subscription status is “Confirmed”
  • Check spam/junk folders
  • Look for bounces in the Bounces section
  • Verify your SMTP provider’s sending limits aren’t exceeded
  • Check campaign analytics for delivery errors

Best Practices

Start Small

Begin with a small test list of your own email addresses to verify everything works before sending to your full subscriber base.

Monitor Bounces

Regularly check and clean your bounce list to maintain a healthy sender reputation.

Respect Unsubscribes

Always include an unsubscribe link and honor opt-outs immediately.

Test Everything

Use the test campaign feature to verify content, links, and formatting before sending to your entire list.

Need Help?

Documentation

Browse the complete documentation

GitHub Issues

Report bugs or request features

Build docs developers (and LLMs) love