FUTIA
E-TICARET9 min read

Brevo Transactional Email Setup: SMTP and API Guide

Configuring Brevo's SMTP settings without using the correct parameters causes order emails to land in spam. Here's the step-by-step technical setup.

Brevo Transactional Email Setup: SMTP and API Guide
Miraç Eroğlu
April 24, 2026

You sent an order confirmation email from your e-commerce site, and the customer says "I didn't receive it." You check the spam folder, it's not there either. Server logs show a "550 rejected" error. The problem is that your shared hosting IP is on spam lists. I experienced the same situation in my first WooCommerce project in 2019, and I've been using transactional email services ever since. Brevo (formerly Sendinblue) offers a daily quota of 300 free emails and SMTP + API flexibility. In this article, I'll explain how to integrate Brevo into WordPress, WooCommerce, and custom PHP applications, how to configure SMTP parameters, and how to verify SPF/DKIM records. Even in the services I provide from the Netherlands, I recommend Brevo to my Turkish clients because it offers a Turkish interface, local support, and KVKK-compliant infrastructure.

What is Brevo and why is it important for transactional email

Brevo is a cloud-based platform for marketing and transactional email delivery. Transactional email refers to emails triggered after user actions: order confirmation, password reset, invoice, shipping notification. The difference from marketing email is that it's content the user expects and needs to receive immediately. Brevo's transactional side works via SMTP relay and REST API. Instead of using your own server's IP reputation, you send through Brevo's optimized IP pool.

There are three reasons I prefer Brevo. First, the free plan allows 300 emails per day, which is sufficient for small e-commerce sites. Second, SMTP and API can be used simultaneously; SMTP for WordPress, API for custom automation scripts. Third, there are real-time delivery reports and webhook support. In the diolivo.com.tr project, we send cart abandonment emails through Brevo, with a 42% open rate and 18% click rate. When the same emails were sent from hosting SMTP, the open rate was 9% because half of the emails landed in spam.

Brevo's popularity in Turkey is increasing because it's more affordable than Mailchimp and SendGrid. For 20,000 emails per month, Brevo charges 19 euros, while SendGrid charges 89 dollars. Additionally, Brevo offers a data processing agreement (DPA) under KVKK and has the option to store data on European servers. Since I work from the Netherlands, GDPR compliance is critical, and KVKK compliance is equally important for my Turkish clients.

Opening a Brevo account and obtaining an API key

Opening a Brevo account is free and doesn't require credit card information. Go to brevo.com and click the "Sign Up Free" button. Enter your first name, last name, email, and password. Click the verification link sent to your email. When you first log in, Brevo will ask about your account type: "Marketing", "Transactional", or "Both". Choose "Both" for e-commerce because you'll be sending both order emails and campaign emails.

After opening the account, go to the "SMTP & API" tab from the left menu. Here you'll see three pieces of information:

  • SMTP server address: smtp-relay.brevo.com
  • SMTP port: 587 (TLS) or 465 (SSL)
  • SMTP username: your email address
  • SMTP password: not shown here, you need to create it by clicking the "Generate a new SMTP key" button

Click the "Generate a new SMTP key" button. In the window that opens, give the key a name, for example "WordPress SMTP". Copy the generated key and save it in a secure place. This key will be used as the SMTP password. Brevo won't show the key again; if you lose it, you'll need to create a new key.

For the API key, switch to the "API Keys" tab on the same page. Click the "Create a new API key" button, give the key a name (for example "WooCommerce API"), select the "v3" version. Copy the generated key. The API key is used to send emails via REST API and is faster than SMTP because it works over HTTP.

Brevo SMTP setup for WordPress

WordPress uses PHP's mail() function by default. This function depends on your server's SMTP settings and is unreliable on most shared hosting. To integrate Brevo SMTP into WordPress, you can use WP Mail SMTP or Brevo's own plugin.

Setup with WP Mail SMTP

WP Mail SMTP is the most popular SMTP plugin for WordPress. From the "Plugins" > "Add New" menu, search for "WP Mail SMTP", install it, and activate it. The setup wizard will open; select the "Other SMTP" option. In the form that opens, enter the following information:

  • SMTP Host: smtp-relay.brevo.com
  • SMTP Port: 587
  • Encryption: TLS
  • Auto TLS: Enabled
  • Authentication: On
  • SMTP Username: Your email address registered with Brevo
  • SMTP Password: The SMTP key you obtained from Brevo

In the "From Email" field, enter your sender email address, for example info@yoursite.com. In the "From Name" field, enter your brand name. Click the "Save Settings" button. After saving the settings, go to the "Email Test" tab, enter your own email address, and click the "Send Email" button. If the email arrives, the setup is successful.

The free version of WP Mail SMTP is sufficient; the pro version offers Amazon SES and Outlook integration, but it's not necessary for Brevo. I generally use the free version and track logs from the Brevo dashboard.

Setup with Brevo Official Plugin

Brevo has its own WordPress plugin: "Brevo (formerly Sendinblue)". This plugin offers not only SMTP but also subscription forms, marketing automation, and SMS sending. To install, search for "Brevo" from the "Plugins" > "Add New" menu, install it, and activate it. On first launch, you'll be asked to connect to your Brevo account; click the "Connect with Brevo" button, log in to Brevo, and grant permission.

After the plugin connects, go to the "Transactional" tab and activate the "Activate email via Brevo" option. This setting sends all WordPress emails through Brevo. Fill in the "From Email" and "From Name" fields and click the "Save Changes" button. To send a test email, go to the "Tools" > "Test Email" menu.

The Brevo plugin offers more features than WP Mail SMTP but is heavier. For a simple e-commerce site, WP Mail SMTP is sufficient; if you're doing marketing automation, the Brevo plugin makes more sense.

Brevo integration with WooCommerce

WooCommerce sends transactional emails like order confirmation, shipping notification, and invoice. By default, it uses WordPress's mail function, so the WP Mail SMTP setup also covers WooCommerce emails. No additional configuration is needed.

However, if you want to customize WooCommerce emails further, you can use the Brevo for WooCommerce plugin. This plugin synchronizes order data to Brevo and allows you to segment customers. To install, search for "Brevo for WooCommerce" from the "Plugins" > "Add New" menu, install it, and activate it. The plugin will ask you to connect to your Brevo account; enter your API key.

In the plugin settings, activate the "Order Sync" option. This adds each order to Brevo as a contact and saves the order amount and products as attributes. This way, you can create segments in Brevo like "customers who made purchases over ₺500 in the last 30 days". In the diolivo.com.tr project, we used this segmentation to divide cart abandonment emails into 3 groups: ₺100-300 cart, ₺300-500, and ₺500+. We sent different discount codes to each group, and the conversion rate increased from 18% to 26%.

Configuring SPF and DKIM records

SPF (Sender Policy Framework) and DKIM (DomainKeys Identified Mail) are email authentication protocols. SPF specifies which servers can send emails on your behalf. DKIM proves that the email content hasn't been altered with a digital signature. To send emails through Brevo, you must add SPF and DKIM to your domain's DNS records; otherwise, emails will land in spam.

In the Brevo dashboard, go to the "Senders & IP" > "Domains" tab. Click the "Add a Domain" button and enter your domain name (for example yoursite.com). Brevo will give you three DNS records:

1. SPF record: TXT type, content "v=spf1 include:spf.brevo.com ~all" 2. DKIM record: TXT type, host "mail._domainkey", content is the long key provided by Brevo 3. Tracking record (optional): CNAME type, for open and click tracking

Go to your domain provider's DNS management panel (GoDaddy, Namecheap, Cloudflare, etc.). Add a new TXT record, enter "@" (for root domain) or the prefix specified by Brevo in the host field, and paste the SPF record in the value field. Add the second TXT record for DKIM, host "mail._domainkey", value is the key provided by Brevo. Save the records.

DNS propagation takes between 15 minutes and 48 hours, usually spreading within 1-2 hours. Click the "Verify" button in Brevo to verify. When the records are verified, a green checkmark will appear. You can send emails through Brevo without verification, but deliverability will be low.

If you already have other services in your SPF record (for example Google Workspace), you need to merge the records. Example: "v=spf1 include:_spf.google.com include:spf.brevo.com ~all". An SPF record can contain a maximum of 10 lookups; more than that invalidates the SPF. I generally use Cloudflare DNS because changes propagate in 2-3 minutes.

Sending emails via API (PHP example)

SMTP is practical for ready-made systems like WordPress, but it's slow in custom automation scripts. Brevo's REST API allows sending emails via HTTP POST request and is 3-5 times faster than SMTP. To use the API, you can use the Brevo PHP SDK or cURL.

Sending emails with Brevo PHP SDK

Brevo's official PHP SDK is installed via Composer:

composer require sendinblue/api-v3-sdk

After installation, you can send emails with this code:

require_once(__DIR__. '/vendor/autoload.php');

$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_BREVO_API_KEY_HERE');
$apiInstance = new SendinBlue\Client\Api\TransactionalEmailsApi(
 new GuzzleHttp\Client(),
 $config
);

$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail();
$sendSmtpEmail['subject'] = 'Order Confirmation';
$sendSmtpEmail['htmlContent'] = '<html><body><h1>Your order has been received</h1></body></html>';
$sendSmtpEmail['sender'] = array('name' => 'Brand Name', 'email' => 'info@yoursite.com');
$sendSmtpEmail['to'] = array(array('email' => 'customer@example.com', 'name' => 'Customer Name'));

try {
 $result = $apiInstance->sendTransacEmail($sendSmtpEmail);
 print_r($result);
} catch (Exception $e) {
 echo 'Error: ', $e->getMessage(), PHP_EOL;
}

This code sends an email with HTML content. The API response contains a "messageId", which you can use to track the email status in the Brevo dashboard.

Sending emails with cURL

If you can't use Composer or don't want to add dependencies, you can make direct API calls with cURL:

$url = 'https://api.brevo.com/v3/smtp/email';
$data = array(
 'sender' => array('name' => 'Brand Name', 'email' => 'info@yoursite.com'),
 'to' => array(array('email' => 'customer@example.com', 'name' => 'Customer Name')),
 'subject' => 'Order Confirmation',
 'htmlContent' => '<html><body><h1>Your order has been received</h1></body></html>'
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 'accept: application/json',
 'api-key: YOUR_BREVO_API_KEY_HERE',
 'content-type: application/json'
));

$response = curl_exec($ch);
curl_close($ch);

echo $response;

This method is lighter than the SDK but error handling must be done manually. I use cURL in custom automation scripts and prefer the SDK in WordPress projects.

Email status tracking with webhooks

Brevo notifies you of sent email statuses via webhooks: delivered, opened, clicked, bounced, spam. The webhook sends a POST request to the URL you specify, and the email status comes in JSON format. This is important for e-commerce sites because if an order email doesn't arrive, you can notify the customer via SMS.

To set up a webhook, go to the "Transactional" > "Settings" > "Webhooks" tab in the Brevo dashboard. Click the "Add a new webhook" button and enter your webhook URL (for example https://yoursite.com/brevo-webhook.php). Select the events you want to listen to: delivered, opened, clicked, hard_bounce, soft_bounce, spam, unsubscribed. Click the "Save" button.

The webhook endpoint should be a PHP script that processes the incoming POST data:

$input = file_get_contents('php://input');
$data = json_decode($input, true);

if ($data['event'] == 'delivered') {
 // Email successfully delivered
 $messageId = $data['message-id'];
 $email = $data['email'];
 // Save to database
} elseif ($data['event'] == 'hard_bounce') {
 // Email bounced, email address is invalid
 $email = $data['email'];
 // Add customer to blacklist
}

To test webhooks, use Brevo's "Send a test" feature. You can check if the webhook works without sending a real email. In the diolivo.com.tr project, we automatically delete hard bounce addresses from WooCommerce using webhooks, keeping the bounce rate below 2%.

Brevo free plan limits and upgrading to paid plans

Brevo's free plan allows you to send 300 emails per day, with no monthly limit. 300 emails is sufficient for small e-commerce sites: if you receive 50 orders per day and send 3 emails per order (confirmation, shipping, delivery), that's 150 emails. The remaining 150 emails can be used for password resets and notifications.

In the free plan, the Brevo logo appears at the bottom of emails, which doesn't look professional. To remove the logo, you need to upgrade to the Lite plan, which costs 25 euros per month and includes 20,000 emails. If you receive 100+ orders per day, the Lite plan makes sense. The Premium plan (65 euros/month) includes marketing automation and a landing page builder, which isn't necessary for transactional email.

Brevo increases the price as email volume increases, but it's cheaper than SendGrid and Mailgun. For 100,000 emails per month, Brevo charges 99 euros, while SendGrid charges 149 dollars. Additionally, if you send more emails, Brevo doesn't automatically upgrade you to a higher plan; it sends you a notification and asks for confirmation. This prevents unexpected billing shocks.

Since I work from the Netherlands, I generally recommend the Lite plan to my clients. The euro is expensive in Turkey, but the deliverability and reporting features Brevo offers are much more valuable than hosting SMTP. Especially for revenue-generating emails like cart abandonment, the difference between a 40% open rate and a 9% open rate creates a revenue difference far exceeding the monthly 25 euros.

When you configure Brevo correctly, your transactional emails arrive reliably, don't land in spam, and open and click rates are measurable. At FUTIA, I set up Brevo for all my client projects; in my 6 years of social media marketing experience, email deliverability has been the most overlooked topic. For Brevo setup on your site or to check your existing SMTP configuration, you can email info@futia.net. I work from the Netherlands but have special packages for Turkish brands, including site + automation + monthly maintenance.

Frequently Asked Questions

Is 300 emails per day sufficient in Brevo's free plan?

It's sufficient for small and medium-sized e-commerce sites. If you receive 50 orders per day and send 3 emails per order (confirmation, shipping, delivery), you'll use 150 emails. The remaining 150 emails can be used for password resets, notifications, and cart abandonment. If you receive 100+ orders per day or also send marketing emails, you need to upgrade to the Lite plan (20,000 emails per month). Brevo doesn't automatically charge for exceeding limits; it sends you a notification.

What's the difference between Brevo SMTP and API?

SMTP works over email protocol and is easily integrated into ready-made systems like WordPress and WooCommerce. It can be set up in minutes with plugins like WP Mail SMTP. API works over HTTP, is faster, and offers more control. API is preferred for custom PHP scripts, bulk email sending, or webhook integration. SMTP setup doesn't require technical knowledge; API usage requires basic programming knowledge. You can use both simultaneously: SMTP for WordPress emails, API for automation scripts.

Can I use Brevo without adding SPF and DKIM records?

Technically you can, but most of your emails will land in spam. SPF and DKIM are email authentication protocols; without them, sent emails aren't considered trustworthy. Providers like Gmail and Outlook automatically send emails without SPF/DKIM to spam. Adding the records takes 10-15 minutes; you just need to add a TXT record from your DNS provider's panel. After domain verification in the Brevo dashboard, deliverability rises above 95%. In e-commerce sites, if order emails don't arrive, you lose customers; SPF/DKIM eliminates this risk.

What are Brevo webhooks used for?

Webhooks notify you of sent email statuses in real-time: delivered, opened, clicked, bounced, spam. This is critical for e-commerce sites because if an order email doesn't arrive, you can notify the customer via SMS. In case of hard bounce (invalid email address), you can delete the customer from the database and reduce bounce rate. The webhook sends a POST request to the URL you specify, and you process this data and take action. Setup takes 5 minutes from the Brevo dashboard; a simple PHP script is sufficient for the endpoint. Without webhooks, you need to manually check email statuses.

Brevo or WP Mail SMTP for WooCommerce?

If you're only sending transactional emails (order, shipping, invoice), WP Mail SMTP is sufficient. Simple setup, lightweight plugin, no extra features. If you're doing marketing automation, customer segmentation, or cart abandonment, the Brevo Official Plugin makes more sense. The Brevo plugin synchronizes WooCommerce orders to Brevo and creates contact attributes, allowing you to create segments like "customers who made purchases over ₺500 in the last 30 days". I generally install both plugins: WP Mail SMTP for transactional emails, Brevo plugin for marketing. The two plugins don't conflict; they have different functions.

ABOUT THE AUTHOR
Miraç Eroğlu

Hacettepe mezunu, 6 yıldır sosyal medya, 2 yıldır AI otomasyon.

Learn more →

Want to apply one of the techniques from this post? Fill out a short form and we'll email you a free preview audit within 48 hours.