> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dittofeed.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> 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.

Use [journeys](/resources/journeys) to automatically send templated onboarding messages, cart abandonment reminders, appointment reminders, and more with event-based triggers and branching logic. Use [broadcasts](/resources/broadcasts) for one-off messages like product updates and newsletters. Dittofeed supports both marketing and transactional messages.

Dittofeed also offers self-hosted and cloud-hosted [Embedded Components](/embedded/getting-started) that allow anyone to instantly add messaging features to their SaaS.

## Start sending messages

<CardGroup>
  <Card title="Quick Start" icon="rabbit-running" color="#16a34a" href="quick-start">
    Start sending messages in 10 minutes.
  </Card>

  <Card title="Video Walkthrough" icon="circle-video" color="#16a34a" href="video-walkthrough">
    Watch us set up a Dittofeed workspace.
  </Card>

  <Card title="Integrations" icon="grid-2-plus" color="#16a34a" href="/integrations/sources">
    See what data sources and destinations you can connect to Dittofeed.
  </Card>

  <Card title="API Reference" icon="plug" color="#16a34a" href="/api-reference/endpoints/apps/identify">
    Learn how to use the Dittofeed API.
  </Card>
</CardGroup>

## Get support

<CardGroup>
  <Card title="Join The Community" icon="discord" href="https://discord.gg/HajPkCG4Mm">
    Get fast support from the Dittofeed team and other community members.
  </Card>

  <Card title="Open An Issue" icon="bug" href="https://github.com/dittofeed/dittofeed/issues">
    Report a bug or request a feature.
  </Card>
</CardGroup>

## What makes Dittofeed different?

Unlike Customer.io, ActiveCampaign,OneSignal, and other customer engagement platforms, Dittofeed is built from the ground up with flexibility in mind.

***

**✅ Embeddable**

With Dittofeed's [Embedded Components](/embedded/getting-started), you can embed each tool in the Dittofeed dashboard within your own SaaS. Instantly add feautures like our email template editor or our drag-and-drop journey builder to your product, for use by your customers.

Dittofeed is the only marketing automation and transactional messaging platform to offer a self-hosted embedding option, making it ideal for vertical SaaS in highly regulated industries like Health and Finance, or for any organization wanting to keep their users' PII on-prem.

***

**✅ Open Source**

Free and open-source forever. [Read our license](/guide/license).

Leave us a ⭐[github star](https://github.com/dittofeed/dittofeed)⭐ 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.](/guide/git-workflows)

<Accordion title="Git workflows demo.">
  <Snippet file="git-workflows-demo.mdx" />
</Accordion>

***

**☑️ Testing SDK (coming soon)**

A first-in-class, time-traveling test sdk for customer journeys. Catch regressions before they get deployed. [More Info.](/guide/testing)

<Accordion title="Test Example.">
  ```javascript src/bookmarkButton.test.tsx theme={null}
  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")
          ...
        });
      ]);

  });
  });

  ```
</Accordion>
