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

# Send Emails with Lovable

> Add email sending to your Lovable app using Brew's API for automations and transactional emails

## Overview

[Lovable](https://lovable.dev) is an AI-powered platform that lets you build full-stack web apps from natural language prompts. You can integrate Brew into any Lovable project to send on-brand emails triggered by user actions in your app.

Brew works with Lovable through its REST API. Since the API requires an API key, Lovable uses Supabase Edge Functions to keep your credentials secure.

## What Brew Handles for You

Building email into an app usually means writing HTML templates, handling unsubscribes, managing bounces, and worrying about deliverability. Brew takes care of all of that so you can focus on your app.

* **On-brand design without HTML** - Describe your email in plain language. Brew generates production-ready, responsive emails that match your brand's colors, fonts, logo, and tone of voice. No HTML coding or email design skills needed.
* **Compliance built in** - Marketing emails (automations and campaigns) automatically include a physical address and unsubscribe link in the footer. Brew's preflight audit blocks any send that's missing required compliance elements, keeping you aligned with CAN-SPAM and GDPR.
* **Unsubscribe management** - Brew handles the entire unsubscribe flow: a branded unsubscribe page, contact status updates, and automatic suppression from future marketing sends. You don't need to build any of this yourself.
* **Bounce and complaint handling** - Hard bounces and spam complaints are automatically suppressed, protecting your sender reputation without any code on your end.
* **Contact auto-creation** - When you trigger an automation or send a transactional email, Brew automatically creates or updates the contact record. No separate contact creation step needed in your app.
* **Works across every email client** - Gmail, Outlook, Apple Mail, Yahoo, mobile - email HTML is notoriously tricky. Every email Brew generates is responsive and tested across clients.
* **Analytics without instrumentation** - Opens, clicks, bounces, and deliverability are tracked automatically in Brew's dashboard. No event tracking code required in your Lovable app.

## Three Ways to Send Emails with Brew

Brew has three types of emails. Here's how each one works in the context of a Lovable app:

| Type              | What it does                                                                                                                    | How it's triggered                                                                                   |
| :---------------- | :------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------- |
| **Automations**   | Multi-step email sequences with delays, branching, and conditions. Think welcome series, onboarding drips, or order follow-ups. | Triggered from your Lovable app via API when an event happens (user signs up, places an order, etc.) |
| **Transactional** | Single, immediate emails for things like password resets, receipts, or account notifications.                                   | Triggered from your Lovable app via API when a user action requires an instant email.                |
| **Campaigns**     | One-time sends to a segment of your audience. Think newsletters, product announcements, or promotions.                          | Created and sent (or scheduled) inside Brew's dashboard. Not triggered from your app.                |

**Automations and transactional emails** can both be triggered directly from your Lovable app using the setup below. **Campaigns** are designed and sent from Brew's UI, so there's nothing to configure in Lovable for those.

## Prerequisites

<CardGroup cols="2">
  <Card title="Brew Account" icon="mug-hot">
    Sign up at [brew.new](https://brew.new) and set up your brand.
  </Card>

  <Card title="Verified Domain" icon="globe">
    [Verify your sending domain](/get-started/verify-your-sending-domain) to send emails from your own address.
  </Card>

  <Card title="API Key" icon="key">
    Create a new API key at
    [brew.new/settings/api](https://brew.new/settings/api). Each key
    is bound to one brand, so make sure the brand active in the
    dashboard is the one you want Lovable to use.
  </Card>

  <Card title="Lovable with Supabase" icon="database">
    Connect Supabase to your Lovable project to use Edge Functions.
  </Card>
</CardGroup>

## Connect Brew to Lovable

These steps apply to both automations and transactional emails.

<Steps>
  <Step title="Connect Supabase to your Lovable project">
    Lovable uses Supabase Edge Functions to securely handle API keys. If you haven't connected Supabase yet, click the Supabase icon in your Lovable project and follow the authorization steps.
  </Step>

  <Step title="Add your Brew API key as a secret">
    In your Lovable project, go to **Supabase → Secrets**:

    * Add a new secret with the name `BREW_API_KEY`
    * Paste your Brew API key as the value

    Get your API key from [brew.new/settings/api](https://brew.new/settings/api).
  </Step>
</Steps>

***

## Automations

Automations are multi-step email flows you design in Brew and trigger from your Lovable app when something happens, like a user signing up, placing an order, or abandoning a cart. Brew handles the entire sequence: delays, branching, follow-ups.

### Set Up in Brew

<Steps>
  <Step title="Create your automation">
    In Brew, go to the Create page, select **Automation**, and describe the flow you want. For example: *"Create a 3-email welcome series for new users. First email welcomes them, second shares a quick-start guide, third nudges them to book a demo."*
  </Step>

  <Step title="Set an event ID and define your payload">
    Give your automation a descriptive event ID like `user_signup` or `order_placed`. Define the payload schema (the data your app will send), for example: `email`, `firstName`, `plan`.
  </Step>

  <Step title="Publish">
    Publish your automation to make it available via API.
  </Step>
</Steps>

<Info>
  Learn more about building automations in the [Automations guide](/create-emails/automations).
</Info>

### Prompt Lovable

Copy and paste this prompt into Lovable's chat:

```
Integrate Brew automation API for triggering email sequences.

API Details:
- Base URL: https://brew.new/api
- Auth: Bearer token using the BREW_API_KEY secret
- Endpoint: POST /v1/automations/triggers/{triggerEventId}/fire
  (the trigger id travels in the URL path, not the body)
- Content-Type: application/json
- Optional header: Idempotency-Key (recommended, same key returns the original automationRunIds[] on retries)

Request body format (fire):
{
  "payload": {
    "email": "user@example.com",
    "firstName": "Jane",
    "plan": "premium"
  }
}

Response format (HTTP 202):
{
  "success": true,
  "status": "triggered",
  "triggerEventId": "tri_user_signup",
  "receivedAt": "2026-04-08T12:34:56.789Z",
  "details": {
    "triggerInstanceId": "tin_01HZ",
    "automationRunIds": ["run_abc"],
    "publishedAutomations": [
      { "automationId": "auto_welcome", "title": "Welcome flow" }
    ],
    "counts": { "automations": 1, "transactionalEmails": 0 }
  }
}

Create a Supabase Edge Function called "trigger-automation" that:
1. Reads BREW_API_KEY from environment secrets
2. Accepts triggerEventId and payload in the request body
3. Calls POST https://brew.new/api/v1/automations/triggers/${triggerEventId}/fire with:
     - Authorization: Bearer <BREW_API_KEY>
     - Idempotency-Key: <a stable per-event hash, e.g. `signup-${userId}-${eventTimestamp}`>
4. Returns response.details.automationRunIds[] (and any warnings) to the client

The "email" field is always required in the payload. triggerEventId is the
stable id returned by POST /v1/automations/triggers (or surfaced in
GET /v1/automations/triggers for integration-provisioned triggers).

Docs: https://docs.brew.new/create-emails/automations
SDK: https://docs.brew.new/sdks/typescript/agentic-cookbook (use brew.automations.triggers.fire())
```

Lovable will generate a Supabase Edge Function and wire it into your app automatically.

### When to Use Automations

* **User signup** - Trigger `user_signup` to start a welcome series
* **Onboarding** - Trigger `onboarding_started` to send a multi-step getting started sequence
* **Trial ending** - Trigger `trial_ending` to send a reminder sequence nudging users to upgrade
* **Re-engagement** - Trigger `user_inactive` to win back users who haven't logged in recently

***

## Transactional Emails

Transactional emails are single, immediate emails sent when a user action requires an instant response, like a password reset link or an order receipt.

### Set Up in Brew

<Steps>
  <Step title="Create your transactional email">
    In Brew, go to the Create page, select the **Transactional** tab, and describe the email you need. For example: *"Create a password reset email with a reset link and expiry time."*
  </Step>

  <Step title="Add variables">
    Use triple curly braces for dynamic content: `{{{firstName}}}`, `{{{resetUrl}}}`. Brew's AI will often insert these automatically based on your prompt.
  </Step>

  <Step title="Save the email and note the emailId">
    Save the email in Brew so you can use its `emailId` in the public API send flow.
  </Step>
</Steps>

<Info>
  Learn more about creating transactional emails in the [Transactional Emails guide](/create-emails/automations).
</Info>

### Prompt Lovable

Copy and paste this prompt into Lovable's chat:

```
Integrate Brew Public API v1 for generating and sending emails.

API Details:
- Base URL: https://brew.new/api
- Auth: Bearer token using the BREW_API_KEY secret
- Use GET /v1/domains to fetch a verified domainId
- Use POST /v1/emails to create a saved email
- Use POST /v1/sends to start the send
- Content-Type: application/json

Email generation request body:
{
  "prompt": "Create a password reset email with a reset link"
}

Send request body (inline recipients: use "to"; pass a saved
"audienceId" instead to blast a whole audience):
{
  "emailId": "YOUR_EMAIL_ID",
  "domainId": "YOUR_DOMAIN_ID",
  "subject": "Reset your password",
  "to": ["recipient@example.com"]
}

Create a Supabase Edge Function called "send-email" that:
1. Reads BREW_API_KEY from environment secrets
2. Accepts prompt, recipient email, and subject in the request body
3. Calls Brew domains, then Brew email generation, then Brew send
4. Returns the send status, sendId, and runId to the client
   (poll GET /v1/analytics/sends?sendId=… for delivery status)

Use the current Public API v1 routes and response shapes from the Brew docs.

Docs: https://docs.brew.new/create-emails/automations
```

Lovable will generate a Supabase Edge Function and wire it into your app automatically.

You can also override the subject line and reply-to address per request by adding `subject` and `replyTo` to the send body. If you need a delayed send, also include `scheduledAt`.

### When to Use Transactional Emails

* **Password resets** - Send a reset link immediately when requested
* **Order receipts** - Confirm a purchase the moment it's completed
* **Payment failed** - Notify the user instantly so they can update their payment method
* **Account notifications** - Plan upgrades, billing alerts, security events

***

## Test Your Integration

Once Lovable finishes generating the code, trigger the email flow in your app (for example, submitting a signup form or requesting a password reset). Check your email analytics in Brew to confirm the email was delivered.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Emails are not being sent" icon="triangle-exclamation">
    Make sure your `BREW_API_KEY` is correctly added in Supabase Secrets. Also verify that your sending domain is [verified in Brew](/get-started/verify-your-sending-domain) by checking **Settings → Domains** in your dashboard.
  </Accordion>

  <Accordion title="Getting a 401 Unauthorized error" icon="lock">
    Double-check that the Edge Function is reading the secret correctly. The Authorization header should be `Bearer YOUR_API_KEY` with no extra spaces or quotes.
  </Accordion>

  <Accordion title="Missing required variables or payload fields" icon="code">
    For transactional emails, make sure the `variables` object includes all variables used in your template. For automations, make sure the `payload` includes `email` and all required fields defined in your schema. Field names are case-sensitive.
  </Accordion>

  <Accordion title="Automation not triggering" icon="bolt">
    Verify that at least one bound automation is **Published** in Brew (Draft automations are inert). Check that the event ID in your API call matches the trigger configured in Brew. If `brew.automations.triggers.fire(...)` returns `NO_PUBLISHED_AUTOMATION`, that's the signal. Publish at least one bound automation and retry.
  </Accordion>

  <Accordion title="Emails landing in spam" icon="shield-exclamation">
    Make sure you have completed [domain verification](/get-started/verify-your-sending-domain) including DKIM and SPF records. We recommend using a subdomain like `updates.yourdomain.com` for sending.
  </Accordion>

  <Accordion title="Lovable shows build errors" icon="bug">
    Lovable may sometimes show false positive build errors. Test your app live by triggering the actual email flow. If the Edge Function deploys successfully in Supabase, the integration is likely working.
  </Accordion>
</AccordionGroup>

## Need help?

Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:

<Tabs>
  <Tab title="Self-Service Tools">
    <CardGroup cols="2">
      <Card title="Search Documentation" icon="magnifying-glass" color="#c44925">
        Type in the "Ask any question" search bar at the top left to instantly find relevant documentation pages.
      </Card>

      <Card title="ChatGPT/Claude Integration" icon="robot" color="#c44925">
        Click "Open in ChatGPT" at the top right of any page to analyze documentation with ChatGPT or Claude for deeper insights.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Talk to Our Team">
    <CardGroup cols="2">
      <Card title="Schedule a Call" icon="calendar" color="#c44925" href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ1iYoRUG1J792XQpbuQLjSRRDupr7MwraFK-HQRCtTYdBmrQi8nZu2qXfzKQigb8gbKJK3KN3-R">
        Book time with our founders for personalized guidance on strategy, best practices, or complex implementation questions.
      </Card>

      <Card title="Call Us Directly" icon="phone" color="#c44925">
        Need immediate assistance? Reach us at **+1-(332)-203-2145** for urgent issues or time-sensitive questions.
      </Card>

      <Card title="Slack Channel" icon="slack" color="#c44925">
        Our preferred support channel. You'll receive an invite after signup for direct founder support and fast responses.
      </Card>

      <Card title="Email Support" icon="envelope" color="#c44925" href="mailto:support@brew.new">
        Contact us at **[support@brew.new](mailto:support@brew.new)** for detailed inquiries or if you prefer not to use Slack.
      </Card>
    </CardGroup>
  </Tab>
</Tabs>
