---
name: bijection-brevo
description: "Evaluate and integrate the Brevo component with Bijection."
---

# Brevo

A Brevo component for Bijection.

- Package: @bijectionhq/brevo
- Category: Messaging
- Status: Preview
- License: Apache-2.0
- Bijection source (repository access required): https://github.com/bijectionhq/brevo/tree/258ecfc86afb596ee50f16d005a40f41d9053708
- Upstream: https://github.com/pierre-H/convex-brevo/tree/754bc2eed9c447a36e740f441cb130ac4d87a0c7
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/brevo

## Get the source

Bijection repository access is required. Request access at https://bijection.com/contact.

```sh
git clone https://github.com/bijectionhq/brevo.git
cd brevo
git checkout 258ecfc86afb596ee50f16d005a40f41d9053708
```

## Before using this component

Read the package README at the recorded revision for setup, dependencies, and API examples. Upstream documentation describes the original package and may differ from the Bijection adaptation. This is a source candidate for evaluation. Catalog inclusion does not establish npm availability or runtime qualification. Check compatibility with your SDK and deployment before adoption. External providers run their own compute.

## Integration workflow

1. Read the source README and package manifest at the recorded revision.
2. Confirm the required SDK, dependency availability, and runtime compatibility.
3. Follow the component's documented setup and configuration. Never invent an npm install command from a catalog package name.
4. Keep credentials in the project's existing secret store.
5. Follow the project's execution rules for verification and report what was actually checked.

## Original upstream skill

The following guidance describes convex-brevo. Its installation commands and APIs refer to the upstream package. Evaluate compatibility with the Bijection source separately.


# Brevo

## Instructions

Use Brevo to send transactional emails and sms through brevo with durable queueing, webhook-driven status tracking, and rate limiting built on convex. This Convex component integrates directly with your backend.

### Installation

```bash
npm install convex-brevo
```

### Capabilities

- Send emails and SMS with durable queueing that survives failures and provides automatic retries
- Track delivery status in real-time using Brevo webhooks with built-in message correlation
- Integrate rate-limited Brevo API calls without managing queue infrastructure or external services
- Query, cancel, and manage email/SMS status through a unified API in your Convex functions

## Examples

### how to send transactional emails from Convex with delivery tracking

The convex-brevo component provides sendEmail() to queue emails through Brevo's API with automatic status tracking via webhooks. You can query delivery status, cancel pending emails, and handle failures without external infrastructure.

### Brevo SMS API integration with Convex backend

Use brevo.sendSms() to send transactional SMS messages with automatic queueing and webhook-based delivery tracking. The component handles rate limiting and provides status queries for SMS delivery confirmation.

### email template integration with Brevo and Convex

Send templated emails by passing templateId and params to brevo.sendEmail(). The component supports Brevo's native template system with parameter substitution while maintaining delivery tracking and queue durability.

### webhook handling for Brevo email delivery status

Mount HTTP endpoints using brevo.handleBrevoEventWebhook() to receive delivery status updates. The component automatically correlates webhook events with sent messages using Brevo message-id values for real-time status tracking.

## When NOT to use

- When a simpler built-in solution exists for your specific use case
- If you are not using Convex as your backend
- When the functionality provided by Brevo is not needed

## Troubleshooting

**How does the convex-brevo component handle email delivery failures?**

The convex-brevo component uses Convex's durable queueing system to automatically retry failed email sends. You can query delivery status, cancel pending emails, or use sendEmailManually for custom retry logic while maintaining status tracking in component tables.

**Can I test emails without sending them using convex-brevo?**

Yes, the convex-brevo component supports sandboxMode which validates email requests without sending real emails. Set sandboxMode: true in the Brevo constructor to use Brevo's X-Sib-Sandbox: drop header for testing.

**What webhook configuration is needed for SMS tracking with convex-brevo?**

The convex-brevo component requires BREVO_SMS_WEBHOOK_BASE_URL environment variable and smsWebhookBaseUrl in the constructor for SMS tracking. This allows the component to attach per-message webhook URLs to correlate delivery events with sent SMS messages.

**How do I send both HTML and plain text emails with convex-brevo?**

The convex-brevo component accepts both htmlContent and textContent in the sendEmail payload. You can provide either or both formats, and the component passes them directly to Brevo's native email API for multi-format delivery.

**What rate limiting does convex-brevo provide for Brevo API calls?**

The convex-brevo component implements rate-limited delivery for both email and SMS through Convex's workpool system. This prevents API quota violations while maintaining reliable delivery through durable queueing and automatic retries.

## Resources

- [npm package](https://www.npmjs.com/package/convex-brevo)
- [GitHub repository](https://github.com/pierre-H/convex-brevo)
- [Live demo](https://github.com/pierre-H/convex-brevo/tree/main/example)
- [Convex Components Directory](https://www.convex.dev/components/convex-brevo)
- [Convex documentation](https://docs.convex.dev)