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

# How embedded Minimo works

> One Minimo workspace for your SaaS, your customers as tenants: what Minimo runs for you, what stays in your product, and the pieces you put together

## Overview

Embedded Minimo is for a SaaS that wants to give **its own customers** email (booking confirmations, reminders, review requests, campaigns) without building an email platform. The example used across these pages is a restaurant management app: the SaaS is the app, each **restaurant** is a customer, each restaurant's **guests** receive the emails.

* **One Minimo workspace for your whole SaaS.** You sign up once. Your restaurants never get a Minimo account and never see the Minimo dashboard.
* **Each customer is a tenant.** A tenant is just a string you choose (your restaurant id, e.g. `restaurant_4812`). You pass it on every call; Minimo keeps each tenant's templates, contacts, consent, sends and statistics apart.
* **Your customers work inside your product.** Minimo hosts ready-made screens (widgets) that you embed with one line of JavaScript, in your look, in English or Italian.
* **Your backend sends events, Minimo does the rest.** Booking created, moved, cancelled: Minimo sends the right email at the right time from the restaurant's own domain, and cancels what is no longer needed.

```mermaid theme={null}
flowchart TB
  be["Your backend<br/>(API key)"]
  fe["Your web app<br/>(restaurant area)"]
  api["Minimo API"]
  widgets["Minimo widgets"]
  engine["Minimo: rules and clock,<br/>consent, protections, sending"]
  guests["Each restaurant's guests"]
  be -- "sessions, events, sends" --> api
  fe -- "iframe + widgets.js" --> widgets
  widgets -. "events" .-> fe
  api --> engine
  widgets --> engine
  engine -- "email from the<br/>restaurant's domain" --> guests
```

## Who does what

| Minimo runs | Your SaaS keeps |
| - | - |
| The screens your restaurants use: automatic messages and the email editor, campaigns, send history, statistics, brand, WhatsApp connection | Where the screens live in your app, who can open them, your navigation and your plans |
| The timing of every automatic email (now, 24 hours before, 2 hours after), retries, deduplication, cancellation when the booking is cancelled | Telling Minimo what happened: one event per booking change |
| Sending, the sender domain, DKIM and bounces, unsubscribe links and pages, consent records | Your booking data and your customer relationship |
| Protections: new restaurants start with a daily limit, their first campaigns are reviewed, a restaurant with complaints is paused alone | Your API key, on your server only |
| Per-restaurant numbers: what was sent, opened, clicked, bounced, for your charts and your invoices | Pricing to your restaurants |

## What a restaurant gets

| Widget | What the restaurant does |
| - | - |
| [Automatic messages](https://docs.minimo.it/guides/embedded-widget-automatic-messages.md) | Sees the emails it sends automatically, previews them, personalizes texts, colors and logo in the Minimo editor, switches each one on or off |
| [Campaigns](https://docs.minimo.it/guides/embedded-widget-campaigns.md) | Writes a promotion from a template you prepared and sends it to its own guests who agreed to receive it |
| [Send history](https://docs.minimo.it/guides/embedded-widget-history.md) | Sees the latest emails sent to its guests and what happened to them |
| [Statistics](https://docs.minimo.it/guides/embedded-widget-statistics.md) | Sees how its emails perform over 7, 30 or 90 days, with a plain sending status |
| [Brand](https://docs.minimo.it/guides/embedded-widget-brand.md) | Sets its logo, color, contacts, social links and legal details once: every email follows |
| [WhatsApp](https://docs.minimo.it/guides/embedded-widget-whatsapp.md) | Connects its own WhatsApp number (enabled per workspace by Minimo) |

Plus two things that need no widget: guests unsubscribe on pages that show the restaurant's name and logo ([consent](https://docs.minimo.it/guides/embedded-consent.md)), and every restaurant can send from its own domain or from a subdomain of yours ([domain connect](https://docs.minimo.it/guides/embedded-domain-connect.md), [senders](https://docs.minimo.it/guides/embedded-senders-and-sending.md)).

## The pieces

> [card] [First widget in 15 minutes](https://docs.minimo.it/guides/embedded-quickstart.md)
>
> Settings, a session from your backend, one iframe in your page.

> [card] [Widget sessions and events](https://docs.minimo.it/guides/embedded-widgets.md)
>
> Session fields, permissions, embedding, events, security.

> [card] [Automatic messages](https://docs.minimo.it/guides/embedded-automations.md)
>
> Rules, booking events, `sendAt`, cancellation.

> [card] [Consent and unsubscribe](https://docs.minimo.it/guides/embedded-consent.md)
>
> Marketing vs service emails, consent per workspace or per restaurant.

> [card] [Protections and sending limits](https://docs.minimo.it/guides/embedded-protections.md)
>
> Daily limits for new restaurants, first campaigns reviewed, automatic pause.

> [card] [Domains and senders](https://docs.minimo.it/guides/embedded-domain-connect.md)
>
> Each restaurant sends from its own domain, or from a subdomain of yours.

> [card] [Go-live checklist and FAQ](https://docs.minimo.it/guides/embedded-go-live.md)
>
> What to set up before the first real restaurant.

## API keys and permissions

Every call from your backend uses one Minimo API key (`Authorization: Bearer mn-…`), kept on your server. The embedded endpoints use these permissions:

| Permission | For |
| - | - |
| `widgets` | Widget settings and sessions, tenant profiles, automatic message rules |
| `events` | Booking events and the sends they schedule |
| `widgets` or `events` | Tenant statistics, reputation, marketing hold, consent subscriptions |
| `transactional` | Sending an email for a tenant now or with `sendAt`, the message list |
| `domains` | Domain connect popup and senders |

> [!NOTE]
>
> The permission list in **Developer → API keys** does not offer `widgets` yet. Ask Minimo for a key with exactly the
> permissions above (recommended). A key created with no permission selected can call every endpoint: if you use one,
> keep it on your server like any secret.

## Language and look

* The widgets, the unsubscribe pages and the domain popup are in **English** and **Italian** (the `locale` you pass).
* The widget pages have a neutral look and a small "Email by Minimo" line at the bottom. Pass `poweredBy: false` and they carry no Minimo name.
* The emails your restaurants send **never** carry a Minimo badge.

## What is coming

**WhatsApp from the restaurant's own number.** Today the [WhatsApp widget](https://docs.minimo.it/guides/embedded-widget-whatsapp.md) connects a restaurant's number and shows its state, and Minimo turns the connect button on per workspace. Sending booking messages and replies from that number is the next step. Until then, automatic messages and campaigns are email.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.