Dittofeed is a free, open source marketing & customer engagement project written in TypeScript and released under MIT. It has 2,947 GitHub stars, 387 forks and 51 open issues, and was last pushed 6 months ago. On this registry it ranks #27 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 13 stars over the last 6 tracked days.

What is Dittofeed?

Dittofeed is an open-source, MIT-licensed omni-channel customer engagement platform, written in TypeScript, that sends broadcasts and automated user journeys across email, SMS, mobile push, WhatsApp, Slack, and other channels — built for developers and product teams who want to own their messaging infrastructure instead of renting it.

What it is

Dittofeed is a self-hostable customer engagement and marketing automation platform. It lives in the Node.js and TypeScript ecosystem and combines four dashboard surfaces — Journey Builder, Broadcasts, Segmentation, and Template Editor — into a single application. Users connect customer data through Segment, Reverse ETL, or the Dittofeed API, build segments with multiple operators, design templates in HTML or MJML or in a low-code editor, and then send either one-off broadcasts or event-triggered automated journeys from a graphical interface.

The concrete problem it solves is the split between customer data, segmentation, and message delivery that most teams patch together across several vendors. Dittofeed replaces the closed hosted products in that category — OneSignal, Customer.io, and Segment Engage — with software the operator runs and controls. It also removes hand-rolled send scripts, because template management, audience logic, and message performance tracking sit in the same dashboard. Delivery itself is delegated to established providers: the platform integrates with major ESPs such as Sendgrid and Amazon SES.

Key capabilities

  • Sends across email, mobile push notifications, SMS, WhatsApp, and Slack from one platform.
  • Builds highly customizable user segments with multiple operators, including user grouping for collections such as a club, company, or team.
  • Runs two campaign shapes: one-off broadcasts and automated event-based journeys, both configured through the GUI.
  • Designs messaging templates in HTML or MJML, or in the low-code editor (Emailo) with its expanding command palette.
  • Ingests user data through Segment, Reverse ETL, or the Dittofeed API.
  • Connects to major ESPs such as Sendgrid and Amazon SES for delivery.
  • Tracks and analyzes message performance and campaign progress from the dashboard, and supports embedding Journey Builder, Segment Builder, and Template Builder in third-party apps via iframe or headless React components.

Who uses it and how

  • Product and engineering teams that want segmentation, journeys, and broadcast sending in one self-hosted application rather than across three vendors.
  • Teams already standardized on Segment or a Reverse ETL pipeline, which can feed user data into Dittofeed without new instrumentation work.
  • SaaS products with an existing ESP contract — Sendgrid or Amazon SES — that need a journey and segmentation layer above the sending provider.
  • Applications that need messaging tooling embedded inside their own product, using the iframe or headless React component path.
  • Platform operators needing multi-tenancy and white-labeling, who are directed to the separately licensed closed-source codebase.

Getting started

Self-hosting is documented as a Docker Compose deployment, with an end-to-end walkthrough video and accompanying docs at docs.dittofeed.com/deployment/self-hosted/docker-compose. A one-click Deploy to Render path covers the hosted-infrastructure alternative, and a demo app runs at demo.dittofeed.com/dashboard for evaluating the dashboard before deploying.

How it compares

Dittofeed positions itself as an open-source, developer-friendly alternative to OneSignal, Customer.io, and Segment Engage. The difference is the licence and the cost model: those three are paid hosted services, while Dittofeed's core is MIT-licensed and runs on the operator's own infrastructure, so customer data and message history remain under the operator's control. The trade-off is operational — the hosted products include the hosting, scaling, and support, while the self-hosted path leaves Docker deployment, the Postgres-backed data layer, and ESP configuration with the operator.

When to use it — and when not to

Choose Dittofeed when the team can operate a Docker Compose deployment backed by Postgres and already has, or is willing to obtain, an ESP account such as Sendgrid or Amazon SES for delivery. Do not choose it when the requirement is multi-tenancy, embedding, or white-labeling, because those features live in a licensed closed-source codebase rather than the MIT repository. Further caution: LLM-assisted journey generation and Stripe integration appear on the roadmap with unchecked boxes, identity resolution and the expanded analytics dashboard are still in development, and the repository carries 51 open issues.

project readme (upstream, from github) — read inline

dittofeed logo


Open-source customer engagement

Start Cloud Trial | Docs | Discord | Contributing

Dittofeed is an omni-channel customer engagement platform. Send broadcasts or create automated user journeys to message users along any channel: email, mobile push notifications, SMS, WhatsApp, Slack, and more. We're an open source, dev-friendly alternative to platforms like OneSignal, Customer.io, and Segment Engage.

  • 1️⃣ Connect user data via Segment, Reverse ETL, or the Dittofeed API ⛓️
  • 2️⃣ Create highly customizable user segments with multiple operators 🧍🏽‍♀️🧍🏻‍♂️🧍🏾
  • 3️⃣ Design messaging templates using HTML/MJML, or our low-code editor 👨🏻‍🎨
  • 4️⃣ Send one-off broadcasts or automated event-based journeys with an easy-to-use GUI interface 🛩️
  • 5️⃣ Integrate with major ESPs like Sendgrid and Amazon SES 🏰
  • 6️⃣ Track and analyze message performance from the dashboard 🎯
  • 7️⃣ Embed any combination of our tools in your own app via iframe or headless react component!* 🤩

*Email support to learn more about our licensed closed-source codebase, which includes features like multi-tenancy, embedding, and white-labeling.


Dittofeed Github Banner

Dashboard Views

Journey Builder Customer Journeys
Broadcasts Broadcast Flow
Segmentation User Segmentation
Template Editor Message Templates

Architecture

Visual Diagram Architecture

For the full dashboard experience, play around with the demo app.

Docker Deployment

Check out our walkthrough video for an end-to-end tutorial on deploying with docker compose and automating your first message. Accompanying documentation can be found here.

Quick Deployment

Click Deploy to Render below and follow the prompts to deploy Dittofeed on Render. See the "Self-Host with Render" docs for more info.

Deploy To Render

Roadmap

☑️ = in development | ✅ = in production

Q4 2024: Oct 1 to Dec 31

Feature Purpose Status
Low code template builder Allow members to build email templates in a low-code interface without manual encoding in MJML. - ✅
Embedded components (private beta) Enable embedding of Journey Builder, Segment Builder, Template Builder, etc., into third-party apps. - ✅

Q1 2025: Jan 1 to Mar 31

Feature Purpose Status
Replace Prisma with Drizzle Enhance memory efficiency and stability. - ✅
User grouping Provide a way to represent a collection of users (e.g., club, company, team) for segment membership conditions. - ✅
Deprecate Postgres user property & segment assignments Improve computed properties efficiency. - ✅

Q2 2025: Apr 1 to Jun 30

Feature Purpose Status
Identity resolution Enable joining of users based on traits or behavior. Important for identifying anonymous users post sign-up/sign-in. - ☑️
Embedded components (public release) Implement internal dashboard for embedded low code components. Write great docs. Create demo projects. - ✅
Expand Emailo functionality Add more commands to the low code email editor command palette to improve email editing experience. - ☑️
Expand analytics Create a fully featured analytics dashboard UI to better display message engagement and campaign progress metrics. - ☑️

Q3 2025: Jul 1 to Sept 30

Feature Purpose Status
LLM integration Drive quicker, easier generation of journeys, segments, and templates. - [ ]
Stripe integration Sync customer data between Stripe and Dittofeed. - [ ]
Git-based resources & campaign testing Track changes, audit, and transfer resources between workspaces. Test journeys in CI. - [ ]

Developer-centric

Beyond having industry-standard GUI tools, we focus on developer happiness with first-in-class dev-focused features:

  • Branch-based git workflows that support messaging campaign version control.
  • Write email templates in your favorite editor, checked into git - not in an unversioned web based IDE.
  • Testing SDK to test your messaging campaigns in CI. No more manually QAing them in production.
  • Self-hostable. Protect your sensitive PII inside of your own VPC. Avoid volume-based pricing.
  • Journey monitoring and alerting.

More to come...

Support

If you're interested in trying us out, please get in touch!

Contributing

For instructions on how to run Dittofeed locally and contribute to this project, see Dittofeed's contributing docs.

License

MIT licensed, and free forever.

Frequently asked questions

Is Dittofeed free to use?

Dittofeed is open source under the MIT licence. 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 Dittofeed do?

Open-source customer engagement platform for automation

What is Dittofeed written in?

Dittofeed is primarily written in TypeScript. Its source is publicly available at https://github.com/dittofeed/dittofeed, and it has 2,947 GitHub stars.