Transactional emails are automated, non-promotional messages triggered by user actions such as account creation, order confirmations, and password resets.
If you’re new to the API, see the Quickstart guide before sending your first email.
Send a basic message with a static body or predefined template.
Send a message enriched with contact attributes or with custom variables.
Get your API key or configure OAuth 2.0. See the Authentication guide for details.
Configure your sending domain and sender before sending emails. See how to set up your senders for instructions.
Send a simple email with static HTML or text content. Use this for straightforward transactional messages without dynamic variables or advanced template logic.
Example attributes:
Hello from Brevo!
{ "name" : "Alex from Brevo", "email" : "hello@brevo.com"}
[{ "name" : "John Doe", "email" : "johndoe@example.com"}]
“<html><head></head><body><p>Hello,</p>this is my first transactional email sent from Brevo.</p></body></html>”
Hello, this is my first transactional email sent from Brevo.
345
Use one of the following message body types:
htmlContent: HTML content that defines the message structure and stylingtextContent: Plain text content for simple messages like password resets or order confirmationstemplateId: reference a template created in the Brevo Drag & Drop editor by passing its template ID
The response includes a messageId that you can use to track deliverability events for this message.
Dynamic content lets you personalize message bodies with attributes that vary per request. Embed variables in HTML content, plain text, or templates.
This guide demonstrates dynamic content using an order confirmation email that includes:
Pass dynamic variables directly in your API request using the params object to personalize the message body. Variables are included in the request payload alongside the email content.
Example attributes:
Hello from Brevo!
{ "name" : "Alex from Brevo", "email" : "hello@brevo.com"}
[{ "name" : "John Doe", "email" : "johndoe@example.com"}]
{ "trackingCode": "JD01460000300002350000", "estimatedArrival" : "Tomorrow" }
<html><head></head><body>Your delivery is expected {{params.estimatedArrival}}.Your tracking code: {{params.trackingCode}}</p></body></html>
Your delivery is expected {{params.estimatedArrival}}.Your tracking code: {{params.trackingCode}}
Use one of the following message body types:
htmlContent: HTML content that defines the message structure and stylingtextContent: Plain text content for simple messages like password resets or order confirmationsThe response includes a messageId that you can use to track deliverability events for this message.
Create the email template in the Brevo dashboard.
Set up your template:

Click “Next Step”.
You can also create templates via the API using the Create an SMTP template endpoint. You can pass HTML content as a string (htmlContent) or via a URL (htmlUrl).
Contacts include EMAIL, FIRSTNAME, LASTNAME, and SMS by default. Add a DELIVERYADDRESS attribute for use in the template.
Go to Contact > Settings > Contact Attributes & CRM and add a field named DELIVERYADDRESS.

Go to your contacts page and create a contact with:
JohnDoe75014 Paris, France
Click “Save and Close”.
Manage contacts via the API using Create contact attribute and Create a contact. For importing contacts, see synchronize contact lists.
Use the Send a transactional email endpoint.
sender: Sender email and name (must be registered and verified)
name overrides your default sender nameto: Recipient email and name
FIRSTNAME, LASTNAME, EMAIL, and DELIVERYADDRESS attributesname appears in email headers onlytemplateId: Template ID from the templates page or the list templates endpointparams: Transactional parameters, e.g., {"ORDER": 12345, "DATE": "12/06/2019"}Test the endpoint in the API Reference. Click “Try it” and enter your API key.
The API reference interface doesn’t support rich JSON body parameters like params. Use the code examples below for full functionality.
The API reference makes real API calls. Check your rate limits and credits before testing.
Include these headers in each request:
api-key: xkeysib-xxxxxxxxxxxxxxxxxcontent-type: application/jsonaccept: application/jsonCheck your inbox for the email.
Set up webhooks to track email status. Available events:
Sent, Delivered, Opened, Clicked, Soft Bounce, Hard Bounce, Invalid Email, Deferred, Complaint, Unsubscribed, Blocked, Error
Go to the transactional webhooks page and:

Manage webhooks via the API using Create a webhook and Update a webhook.
See all event payload structures in the webhook responses documentation.