Marketing automation for B2C SaaS, from sign-up to failed payment.

Workflows start from your product’s events and Stripe’s, and send the right email, text or Slack message.

When a Stripe payment fails, look up the customer, email them a link to update their card and post the account to #billing.

Payment failedWebhook
Get the customerStripe
Email the customerResend
Post to #billingSlack

A sign-up from your backend adds the person to the CRM and sends the welcome email from your template, their first name filled in.

When someone signs up, add them to the CRM and send the welcome email.

New sign-upWebhook
Add the personCRM
Send the welcomeResend

Tutti checks Stripe’s signature on every webhook.

Choose Stripe as the trigger’s signature scheme and paste your webhook secret. A request without a valid signature is turned away before the workflow runs.

Payment failedWebhook trigger
Web address…/api/workflows/wf_8c1d/webhook
Signature schemeStripe
Webhook secretwhsec_••••••••••4f2a
Last requests
invoice.payment_failedRan the workflow
No signatureTurned away

Keep your users’ data on your own servers.

Tutti is open source under Apache 2.0. Run it beside your product, in your own cloud account.

Your server
$ git clone https://github.com/Darkmatter-AI/tutti
$ cd tutti && pnpm install
$ cp .env.example .env.local
$ pnpm db:push && pnpm dev

Open source under Apache 2.0. Read the setup guide or the code on GitHub

Questions SaaS teams ask about Tutti.

Does Tutti work with Stripe?
Yes. Workflows can look up and create Stripe customers and create invoices, and a webhook trigger can start a workflow on any Stripe event, checking Stripe’s signature first.
How does our product start a workflow?
Your backend sends a POST request to the workflow’s web address. Every step can read the request’s body, such as the user’s email or plan.
Which services can send our emails?
Gmail, Outlook and Resend. Your team writes the emails as templates in Tutti. Each blank gets a fallback, or the step stops and says why rather than send a half-filled email.
Can we text or WhatsApp our users?
Yes, through Twilio: SMS, and WhatsApp messages from templates WhatsApp has approved.
Can we run Tutti ourselves?
Yes. Tutti is open source under Apache 2.0. Run it on your own servers, or sign up and let us run it.