The open-source alternative to Mailchimp, Brevo, Mailjet, Listmonk, Mailerlite, and Klaviyo, Loop.so, etc.
Notifuse is a modern, self-hosted emailing platform that allows you to send newsletters and transactional emails at a fraction of the cost. Built with Go and React, it provides enterprise-grade features with the flexibility of open-source software.
- Visual Email Builder: Drag-and-drop editor with MJML components and real-time preview
- Campaign Management: Create, schedule, and send targeted email campaigns
- A/B Testing: Optimize campaigns with built-in testing for subject lines, content, and send times
- List Management: Advanced subscriber segmentation and list organization
- Contact Profiles: Rich contact management with custom fields and detailed profiles
- Easy Setup: Interactive setup wizard for quick deployment and configuration
- Transactional API: Powerful REST API for automated email delivery
- Webhook Integration: Real-time event notifications and integrations
- Liquid Templating: Dynamic content with variables like
{{ contact.first_name }} - Multi-Provider Support: Connect with Amazon SES, Mailgun, Postmark, Mailjet, SparkPost, and SMTP
- Open & Click Tracking: Detailed engagement metrics and campaign performance
- Real-time Analytics: Monitor delivery rates, opens, clicks, and conversions
- Campaign Reports: Comprehensive reporting and analytics dashboard
- S3 File Manager: Integrated file management with CDN delivery
- Notification Center: Centralized notification system for your applications
- Responsive Templates: Mobile-optimized email templates
- Custom Fields: Flexible contact data management
- Workspace Management: Multi-tenant support for teams and agencies
Notifuse follows clean architecture principles with clear separation of concerns:
- Domain Layer: Core business logic and entities (
internal/domain/) - Service Layer: Business logic implementation (
internal/service/) - Repository Layer: Data access and storage (
internal/repository/) - HTTP Layer: API handlers and middleware (
internal/http/)
- Console: Admin interface built with React, Ant Design, and TypeScript (
console/) - Notification Center: Embeddable widget for customer notifications (
notification_center/)
- PostgreSQL: Primary data storage with Squirrel query builder
βββ cmd/ # Application entry points
βββ internal/ # Private application code
β βββ domain/ # Business entities and logic
β βββ service/ # Business logic implementation
β βββ repository/ # Data access layer
β βββ http/ # HTTP handlers and middleware
β βββ database/ # Database configuration
βββ console/ # React-based admin interface
βββ notification_center/ # Embeddable notification widget
βββ pkg/ # Public packages
βββ config/ # Configuration files
-
Clone the repository:
git clone https://github.com/Notifuse/notifuse.git cd notifuse -
Configure required environment variables:
cp env.example .env # Edit .env with database credentials and SECRET_KEYMinimum required variables:
DB_HOST,DB_PORT,DB_USER,DB_PASSWORD,SECRET_KEY -
Start the services:
docker-compose up -d
-
Access the application and complete setup:
- Open http://localhost:8080
- Follow the interactive Setup Wizard to configure:
- Root administrator email
- API endpoint
- SMTP settings
- PASETO keys (automatically generated)
- Save the generated keys securely!
Alternative: You can skip the setup wizard by pre-configuring all environment variables in your .env file. Generate PASETO keys at paseto.notifuse.com or use make keygen.
docker-compose.yml is designed for testing and development only. For production deployments:
- Use a separate PostgreSQL database (managed service recommended)
- Configure external storage for file uploads
- Set up proper SSL/TLS termination
- Use a reverse proxy (nginx, Traefik, etc.)
The docker-compose includes a PostgreSQL container for quick testing. Simply run docker-compose up -d to get started, then complete the setup wizard in your browser.
Required Environment Variables:
DB_HOST,DB_PORT,DB_USER,DB_PASSWORD- External PostgreSQL databaseSECRET_KEY- Secret key for encrypting sensitive data (orPASETO_PRIVATE_KEYas fallback)DB_SSLMODE=require- For secure database connections
Optional (can be configured via Setup Wizard or environment variables):
ROOT_EMAIL- Root administrator emailAPI_ENDPOINT- Public API endpoint URLPASETO_PRIVATE_KEY,PASETO_PUBLIC_KEY- Authentication keys (auto-generated in wizard)SMTP_HOST,SMTP_PORT,SMTP_USERNAME,SMTP_PASSWORD- Email provider settingsSMTP_FROM_EMAIL,SMTP_FROM_NAME- From address and name
Note: Environment variables always take precedence over database settings configured via the setup wizard.
For detailed installation instructions, configuration options, and setup guides, visit docs.notifuse.com.
- Complete Documentation - Comprehensive guides and tutorials
We welcome contributions!
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
Notifuse is released under the GNU Affero General Public License v3.0.
- Documentation: docs.notifuse.com
- Email Support: [email protected]
- GitHub Issues: Report bugs or request features
- π° Cost-Effective: Self-hosted solution with no per-email pricing
- π Privacy-First: Your data stays on your infrastructure
- π οΈ Customizable: Open-source with extensive customization options
- π Scalable: Built to handle millions of emails
- π Modern: Built with modern technologies and best practices
- π§ Developer-Friendly: Comprehensive API and webhook support
Ready to get started? Try the live demo or deploy your own instance in minutes.