Dittofeed is an open-source, self-hostable customer engagement platform designed for developers and technical teams seeking full control over their messaging infrastructure. It replaces proprietary SaaS solutions like OneSignal and Customer.io by offering a dev-friendly alternative that supports email, SMS, WhatsApp, Slack, and mobile push notifications—all from a single interface. Built with TypeScript and Node.js, Dittofeed enables teams to automate user journeys based on events, create dynamic segments, and design templates using HTML/MJML or a low-code editor. Its self-hosted architecture ensures sensitive user data stays within your VPC, avoiding vendor lock-in and volume-based pricing. With Git-based version control for campaigns, testing SDKs, and embedded components, Dittofeed prioritizes developer workflows over drag-and-drop simplicity.
What You Get
- Omni-channel messaging - Send transactional and marketing messages across email, SMS, WhatsApp, Slack, and mobile push notifications from a unified platform.
- Customer segmentation - Create dynamic user segments using multiple operators (e.g., AND/OR conditions on traits, behaviors, or metadata) to target precise audience groups.
- Journey builder - Design automated user journeys triggered by events (e.g., sign-up, purchase) with visual drag-and-drop workflow editor.
- Template editor - Build email templates using HTML, MJML, or a low-code visual editor with real-time preview and version control integration.
- Self-hosted deployment - Deploy using Docker Compose or Render to maintain data sovereignty, avoid SaaS pricing tiers, and run inside your VPC.
- Embedded components - Embed Journey Builder, Segment Builder, or Template Editor into your own application via iframe or headless React components.
- Git-based campaign versioning - Store and manage messaging templates, segments, and journeys as code in Git for audit trails, CI/CD integration, and team collaboration.
- Testing SDK - Write automated tests for messaging campaigns in CI/CD pipelines to prevent bugs before deployment.
- ESP integrations - Connect with SendGrid, Amazon SES, and other email service providers for reliable delivery without managing infrastructure.
- Analytics dashboard - Track open rates, click-throughs, and engagement metrics for all campaigns in a centralized interface.
Common Use Cases
- Building a SaaS onboarding flow with multi-channel nudges - Automate welcome sequences that send email, SMS, and in-app push notifications based on user behavior (e.g., not completing profile setup after 24 hours).
- Creating a mobile-first e-commerce retention system - Trigger WhatsApp and push notifications for cart abandonment or low-stock alerts across 10k+ SKUs using dynamic segmentation.
- Problem: Vendor lock-in with high SaaS costs → Solution: Self-host Dittofeed - A startup using Customer.io faces skyrocketing prices at 50k users; migrates to Dittofeed on their own AWS EKS cluster to cut costs by 70%.
- DevOps teams managing microservices with messaging pipelines - Use Dittofeed’s testing SDK and Git workflows to version-control campaign logic, test in staging, and deploy via CI/CD—ensuring no broken emails reach production.
Under The Hood
Dittofeed is a modular customer engagement platform built with TypeScript, emphasizing extensibility and developer experience through a well-structured monorepo. It combines low-code configuration with powerful backend orchestration, supporting complex journey workflows and real-time analytics.
Architecture
The system adopts a modular monolithic architecture with clear separation between backend, frontend, and CLI components. It implements layered design principles to support scalable API services, admin tools, and dashboard functionality.
- Uses dependency injection and configuration-driven setups for flexible service composition
- Organizes code into distinct modules with well-defined boundaries and responsibilities
- Integrates event-based processing through Kafka and Temporal for workflow orchestration
- Supports multiple deployment environments via Docker and Kubernetes Helm charts
Tech Stack
The project leverages TypeScript as its core language, with a modern JavaScript ecosystem for full-stack development. It integrates a wide array of tools and frameworks to support UI rendering, backend logic, and system orchestration.
- Built with TypeScript, React, and Next.js for a responsive and scalable frontend and API layer
- Relies on isomorphic-lib and backend-lib for shared logic across client and server contexts
- Uses Temporal.io for workflow management and Drizzle ORM for database interactions
- Employs Yarn, Docker, and Helm charts for development, packaging, and deployment
Code Quality
The codebase demonstrates a mature approach to testing and error handling, with consistent TypeScript practices and structured module organization. While it maintains good linting and CI/CD support, some technical debt remains in internal utility usage.
- Comprehensive test suite covers authentication and data management flows effectively
- Error handling uses a mix of try/catch and result-based patterns for robustness
- Consistent TypeScript conventions and modular structure improve maintainability
- Extensive use of unwrapping and internal utilities introduces some technical debt
What Makes It Unique
Dittofeed stands out through its combination of modular architecture and extensibility, offering practical solutions for real-world customer engagement workflows.
- Modular monorepo design enables flexible deployment and scaling across various environments
- Native support for complex journey orchestration using Temporal workflows and Clickhouse analytics
- Extensive use of isomorphic libraries allows consistent logic sharing between server and client
- Example integrations with Supabase and Git-based workflows showcase practical adoption patterns