Notifuse is a free, open source marketing & customer engagement project written in Go and released under a custom open-source licence. It has 2,204 GitHub stars, 228 forks and 6 open issues, and was last pushed 6 hours ago. On this registry it ranks #31 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 14 stars over the last 6 tracked days.

What is Notifuse?

What it is

Notifuse is an open-source, self-hosted email platform for newsletters, email marketing, transactional email, and marketing automation. It is built with Go and React, and it sits in the self-hosted email marketing ecosystem as an alternative to hosted services such as Mailchimp, Brevo, Mailjet, Listmonk, Mailerlite, Klaviyo, and Loop.so.

The project solves the cost and control problem of sending bulk and transactional email from your own infrastructure. It provides campaign creation, subscriber management, visual email building, automation flows, provider connections, and analytics without a paid subscription, while offering Notifuse Cloud for managed deployment.

Key capabilities

  • Visual email builder uses drag-and-drop MJML components with real-time preview, and Liquid templating supports fields such as {{ contact.first_name }}.
  • Campaign management lets users create, schedule, and send targeted broadcasts, with A/B testing for subject lines, content, and send times.
  • Automation uses a visual flow builder with nodes including delay, email, branch, filter, add_to_list, remove_from_list, ab_test, webhook, and list_status_branch, plus enrollment controls such as once or every_time with optional exit_on_reply.
  • Developer workflows include a transactional REST API, webhook integration, and multi-provider sending through Amazon SES, Mailgun, Postmark, Mailjet, SparkPost, SendGrid, and SMTP.
  • Analytics track opens, clicks, delivery rates, conversions, and campaign performance, while Staminads web analytics provide cookieless engaged-time sessions, channel attribution, goals, and custom dimensions on PostgreSQL.

Who uses it and how

  • Email marketers use it to build newsletters, manage subscriber lists, segment contacts, schedule campaigns, and compare variants with A/B testing.
  • Product and engineering teams use the transactional REST API and webhooks to send automated email from application events and receive delivery or engagement notifications.
  • Automation builders create multi-step journeys with delays, branches, filters, list membership changes, in-flow A/B tests, and webhook calls.
  • Self-hosted operators use it as a Mailchimp, Brevo, Mailjet, Listmonk, Mailerlite, Klaviyo, or Loop.so replacement when they want to run email infrastructure on their own servers.

Getting started

The README points to an interactive setup wizard for self-hosted deployment and a hosted Notifuse Cloud option from $16/month. It also links to a live demo.

When to use it — and when not to

Use Notifuse when you need a self-hosted platform that combines newsletters, transactional email, automations, and web analytics, especially if you want to replace Mailchimp, Brevo, Mailjet, Listmonk, Mailerlite, Klaviyo, or Loop.so. Self-hosting requires operating the application, connecting a sending provider such as Amazon SES, Mailgun, Postmark, Mailjet, SparkPost, SendGrid, or SMTP, and running PostgreSQL for Staminads analytics. The metadata lists NOASSERTION for license, zero contributors, and a zero-year repository age, so teams with strict legal or maintenance requirements should verify those details before adoption.

project readme (upstream, from github) — read inline

Notifuse

Go Report Card Go codecov

☁️ Notifuse Cloud — from $16/month · 🎯 Try the Live Demo

Skip the setup and get started instantly with Notifuse Cloud — fully managed hosting starting at just $16/month.

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.

Email Editor

🚀 Key Features

📧 Email Marketing

  • 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

🔀 Automations

  • Visual Flow Builder: Build multi-step journeys on a canvas — each automation is a graph of nodes with a single trigger as its root
  • Node Types: delay, email, branch, filter, add_to_list, remove_from_list, ab_test, webhook, and list_status_branch
  • Timed Delays: Wait minutes, hours or days between steps
  • Branching & Filters: Split a journey on contact conditions, or on a contact's status in a given list
  • A/B Testing In-Flow: Weighted variants inside an automation, not just on broadcasts
  • Webhook Steps: Call an external URL mid-journey, with retry budget
  • Enrollment Control: Enroll a contact once or every_time the trigger fires, with optional exit_on_reply
  • Per-Contact State: Every enrollment tracks its own status (active, completed, exited, failed) and current node, with a per-node history (entered, processing, completed, failed, skipped)
  • Draft / Live / Paused: Edit safely, then publish — paused automations hold their enrollments

🔧 Developer-Friendly

  • 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, SendGrid, and SMTP

📊 Analytics & Insights

  • 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

🌐 Web Analytics (Staminads)

Privacy-first, cookieless web analytics built in — the Staminads feature set merged into Notifuse, running entirely on PostgreSQL (no ClickHouse, no extra services):

  • Engaged-time sessions: sessions measure real visible/focused time (TimeScore), not wall-clock guesses; bounce rate is engagement-based
  • Channel attribution: 40 default rules classify traffic (paid click-ids like gclid/fbclid, organic search, social, email) — fully editable per workspace, with one-click backfill of historical data when rules change
  • Goals & custom dimensions: conversion tracking with values and properties, plus 10 custom dimension slots (custom_1..custom_10)
  • Cookieless & GDPR-friendly: no cookies, no visitor fingerprinting, IPs used only for optional geo lookup and never stored
  • Lightweight SDK: ~21 KB gzipped script served by your own Notifuse instance (/na.js); the user agent is parsed in the browser, so the raw string is never sent to the server
  • Setup: enable Web Analytics on a workspace, paste the snippet from its settings page, done. Country, region and city come from the MaxMind GeoLite2 City database shipped in the image at /app/geoip/GeoLite2-City.mmdb — to keep it fresher, drop your own copy into the mounted data/ directory as GeoLite2-City.mmdb (it takes precedence) or set GEOIP_DB_PATH (see geoipupdate). This product includes GeoLite2 data created by MaxMind, available from maxmind.com
  • Data retention: every session is kept for as long as you keep it. Monthly partitions (web_sessions_y2026m08 and its web_pages_* / web_goals_* siblings) are created automatically, and expiring old data is a deliberate DROP TABLE on the partitions you no longer want — instant, and the disk comes back immediately
  • Scale path: data lives in monthly-partitioned tables per workspace; heavy-traffic installs can run AlloyDB Omni via compose.alloydb.yaml and get columnar-engine acceleration for dashboard queries with zero schema changes
  • Requirements: PostgreSQL 17 or newer (the shipped compose file stays on 17 — upgrading a major version needs pg_upgrade, and PostgreSQL 18 also changed its data directory layout)

🎨 Advanced Features

  • 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

🏗️ Architecture

Notifuse follows clean architecture principles with clear separation of concerns:

Backend (Go)

  • 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/)

Frontend (React)

  • Console: Admin interface built with React, Ant Design, and TypeScript (console/)
  • Notification Center: Embeddable widget for customer notifications (notification_center/)

Database

  • PostgreSQL: Primary data storage with Squirrel query builder

📁 Project Structure

├── 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

📚 Documentation

🤝 Contributing

We don't accept pull requests. Notifuse is developed in-house, and unsolicited pull requests will be closed without review — please don't spend your time on one.

Issues, on the other hand, are very welcome and are the best way to help:

  • Report a bug — steps to reproduce, your version, and what you expected instead
  • Request a feature — describe the problem you're trying to solve rather than a specific implementation

The licence lets you read, fork and modify Notifuse, and run it in production — including for other people. What it does not let you do is use a licensed feature without a key, or strip out the check. See LICENSING.md.

We do not currently accept pull requests. If we ever invite one, it will be under the CLA.

📄 License

Notifuse v40.0 and later are released under the Business Source License 1.1, which becomes AGPL-3.0-or-later four years after each version is published. v39.x and every earlier release remain AGPL-3.0, permanently — this change is not retroactive and cannot be. The web_analytics_sdk/ directory is AGPL-3.0-or-later in every version.

Five capabilities need a licence key; everything else does not, and the send path co

readme truncated — read the full docs on github

Frequently asked questions

Is Notifuse free to use?

Notifuse is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Notifuse do?

Self-hosted email platform with visual editor & analytics

What is Notifuse written in?

Notifuse is primarily written in Go. Its source is publicly available at https://github.com/notifuse/notifuse, and it has 2,204 GitHub stars.