Notifuse is an open-source, self-hosted email platform designed for developers, marketers, and agencies seeking full control over their email infrastructure. It replaces commercial tools like Mailchimp, Klaviyo, and Brevo by offering a cost-effective, privacy-first solution for sending both marketing newsletters and transactional emails. Built with Go and React, it eliminates recurring SaaS costs while providing advanced features like A/B testing, real-time analytics, and multi-tenant support.
The platform uses PostgreSQL for data storage, S3-compatible storage for file management, and supports major email providers like Amazon SES, Mailgun, and Postmark. Its modular architecture separates domain logic, services, and HTTP handlers, while the React-based console offers a drag-and-drop email builder with MJML and Liquid templating. Deployment options include Docker, Kubernetes, and one-click cloud installs.
What You Get
- Visual Email Builder - Drag-and-drop editor using MJML components with real-time preview for creating responsive, mobile-optimized email templates.
- Transactional API - RESTful API with Bearer token authentication to send personalized emails programmatically via curl or HTTP clients, supporting Liquid templating like {{ contact.first_name }}.
- A/B Testing - Built-in testing for subject lines, content variations, and send times with performance metrics to identify winning variants.
- S3 File Manager - Integrated file upload and management system with CDN delivery support for images and attachments using S3-compatible storage providers.
- Contact Profiles & Timeline - Detailed contact records with custom fields and a full activity timeline showing email opens, clicks, profile changes, and subscription history.
- Multi-Tenant Workspaces - Isolated environments for teams or clients, each with separate contacts, campaigns, domains, and permissions—ideal for agencies.
Common Use Cases
- Running a paid membership newsletter - A publisher uses Notifuse to send exclusive content to subscribers via scheduled campaigns, tracking opens and clicks to optimize engagement—all while keeping data on their own server.
- Building a SaaS onboarding email sequence - A developer integrates Notifuse’s transactional API to send automated welcome emails, password resets, and feature updates using Liquid templates and custom contact fields.
- Managing email campaigns for multiple client brands - An agency deploys Notifuse in multi-tenant mode to offer branded email services to 20+ clients, each with their own domain, contacts, and analytics dashboard.
- Replacing Mailchimp with a self-hosted solution - A startup migrates from Mailchimp to Notifuse to avoid per-email pricing, reduce costs, and ensure GDPR compliance by hosting all data internally.
Under The Hood
Architecture
- Multi-stage Docker builds isolate React frontend applications from the Go backend, ensuring clean artifact separation and minimal runtime footprint
- Go backend follows clean architecture with well-defined layers: domain, repository, service, and HTTP handlers, using constructor-based dependency injection for loose coupling
- API contracts are defined via OpenAPI 3.0, enabling contract-first development and automated client generation
- Database interactions are encapsulated in dedicated modules with structured migrations and environment-aware connection pooling
- Frontend applications are independently structured with separate build pipelines, enabling autonomous deployment and team scalability
Tech Stack
- Go 1.25 backend with CGO disabled for static binaries, leveraging standard library and internal packages for core logic
- PostgreSQL 17-alpine with comprehensive schema management and health checks
- Multi-stage Docker builds using Node.js 22-alpine for React frontends with production-grade optimizations
- React 18+ with TypeScript, @tiptap, Ant Design, and @tanstack/react-query for rich UI and state management
- Comprehensive testing with Go’s native framework, including race detection, coverage reporting, and integration tests
- Automated CI/CD via Makefile and Docker Compose, supporting multi-platform builds, OpenAPI validation, and hot-reloading with Air
Code Quality
- Extensive test coverage across unit, service, repository, and integration layers with robust mocking using gomock and testify
- Clear separation of concerns with well-encapsulated layers, enhancing maintainability and testability
- Strong type safety and structured error handling with custom error types and context-aware propagation
- Consistent naming, configuration patterns, and secure secret management practices
- Comprehensive database mocking with sqlmock to validate queries and transactions without external dependencies
- Strict linting, defensive programming, and resource cleanup practices across the codebase
What Makes It Unique
- Declarative, registry-based system for rich text editor actions using type-safe ActionDefinition objects, enabling dynamic, plugin-like extension of formatting capabilities
- Unified email provider integration via dynamic SVG/fallback icon rendering, allowing seamless provider expansion without UI changes
- Centralized locale context with dynamic menu generation from a locale map, eliminating hardcoded strings and enabling true internationalization
- Tiptap-based text mark system with encapsulated action specs that bundle availability, state, and execution logic into reusable units
- UI components such as icons and language options are treated as configurable data entities, promoting a data-driven, scalable UI architecture