> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.brevo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.brevo.com/_mcp/server.

# Send emails from your Base44 app with Brevo

## Overview

Base44 has a built-in `SendEmail` integration and an official **Resend** integration for external, higher-volume sending. It doesn't have a dedicated Brevo entry in its integrations catalog. For any provider without a catalog entry, Base44's documented path is to call the provider's HTTP API directly from a **backend function**, storing the API key as a secret. This guide applies that pattern to Brevo.

## Prerequisites

* A Base44 app on the **Builder plan or above** (backend functions and external API calls require this). On Free or Starter, **Secrets** and backend functions don't appear in the app editor's sidebar at all, so if you can't find them, check your plan first.
* A Brevo account and a verified sender

## Send email from your Base44 app

### Create a Brevo API key

1. In Brevo, click **Settings** (gear icon) in the left sidebar, then open **SMTP & API > API keys & MCP** (direct link: [app.brevo.com/settings/keys/api](https://app.brevo.com/settings/keys/api)).
2. Click **+ Generate API key**, name it (e.g. `Base44 app`), and copy it.

### Store the key as a secret

1. In your Base44 app's editor, click **Dashboard**.
2. Click **Secrets**, then **Add Secret**.
3. Name it `BREVO_API_KEY` and paste your API key as the value. (You can also paste the key directly into the AI chat when it asks for one, and Base44 stores it as a Secret for you.)

### Add a backend function that calls the Brevo API

Ask the Base44 AI chat to create a backend function, for example:

> *Create a backend function that sends an email through the Brevo transactional email API (`https://api.brevo.com/v3/smtp/email`), using the BREVO\_API\_KEY secret in the `api-key` header, when a new order is created.*

The function body calls Brevo directly:

```javascript
const response = await fetch("https://api.brevo.com/v3/smtp/email", {
  method: "POST",
  headers: {
    "api-key": BREVO_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    sender: { name: "Your App", email: "no-reply@yourdomain.com" },
    to: [{ email: recipientEmail }],
    subject: "Welcome!",
    htmlContent: "<p>Thanks for signing up.</p>",
  }),
});
```

### Trigger it with an automation (optional)

To send on a schedule or when data changes, wire the function to a **data event automation** (e.g. on record creation) or a **scheduled automation**, from the **Automations** section of your app dashboard.

### Test it

Trigger the event and confirm the message arrives, then check the send in **Brevo > Transactional > Email logs**. Failed sends also show up in your Base44 app logs.

## Troubleshooting

* **Function can't find the secret**: confirm the secret name matches exactly what the function references, and that it was saved before the function last ran.
* **Emails not delivered**: confirm the sender address is verified in Brevo; unverified senders are rejected.
* **Feature unavailable / can't find Secrets or Code in the sidebar**: backend functions and external API calls require the Builder plan or above — on Free/Starter, these items are missing from the editor's sidebar entirely rather than showing an error.

## Related resources

* [Base44 — Sending emails from your app](https://docs.base44.com/documentation/building-your-app/sending-emails)
* [Base44 — Using integrations (external API calls with backend functions)](https://docs.base44.com/Integrations/Using-integrations)
* [Brevo — Send a transactional email](/docs/send-a-transactional-email)
* [Brevo — API key authentication](/docs/api-key-authentication)