Welcome to the Dittofeed documentation and help center.
Dittofeed is an open-source, omni-channel customer engagement platform for automating messages to customers via email, SMS, webhooks, and native mobile push notifications. Automatically send templated onboarding messages, cart abandonment reminders, product updates and more with event-based triggers and branching logic. Dittofeed can be used to send both marketing and transactional messages.
Unlike Customer.io, OneSignal, and other customer engagement platforms, Dittofeed is built from the ground up with growth engineers in mind.✅ Open SourceFree and open-source forever. Read our license.Leave us a ⭐github star⭐ if you like what we’re doing. We couldn’t do it without your support!☑️ Git based workflows (coming soon)Check your messaging resources into git, make changes in a branch through the UI, and then submit a PR to github. Take advantage of the full power of git. More Info.
Git workflows demo.
☑️ Testing SDK (coming soon)A first-in-class, time-traveling test sdk for customer journeys. Catch regressions before they get deployed. More Info.
Test Example.
src/bookmarkButton.test.tsx
Copy
Ask AI
describe("When the bookmark button is clicked", () => { let df: DittofeedTestEnv;beforeEach(async () => {df = await Dittofeed.setupTestEnv();...})it("Emails the clicking user", async () => {render(<BookmarkButton/>)fireEvent.click(screen.getByText(/bookmark/i)) // Using simulated time. await df.sleep("1 week"); const messages = await df.fetchMessages(); expect(messages).toEqual([ expect.objectContaining({ to: "test@email.com", type: "Email", body: expect.stringContaining("https://app.com/user-1/bookmarks") ... }); ]);});});