FlowKit

Automating email marketing with Brevo (ex-Sendinblue) and n8n: contacts, transactional, AI

Published 31 July 2026 · 6 min read

Brevo (formerly Sendinblue) is one of the most widely used email marketing tools among European small businesses: a generous free plan, EU hosting, and a full marketing-plus-transactional stack. But as long as contacts are entered by hand and campaigns go out disconnected from what happens on your site or store, you're only using a fraction of the tool. n8n fills exactly that gap: a native Brevo node for contacts and transactional emails, the REST API v3 for everything else, and workflows connecting Brevo to your forms, your CRM and your e-commerce events. This guide covers setup, two-way contact synchronization, transactional sending with templates, event-driven scenarios, AI enrichment and GDPR obligations.

Setup: v3 API key and n8n credential

  1. In your Brevo account, open the settings and the API keys section, then generate a new v3 key (legacy v2 keys don't work with the n8n node);
  2. In n8n, add a Brevo node (it may still appear under its old Sendinblue name in some versions), create a credential and paste the key;
  3. Test with a simple operation — creating a test contact — before wiring anything into production.

The node covers the Contact resource (create, update, delete, list), Email (transactional sending, with or without a template) plus sender and attribute management. For lists, marketing campaigns or statistics, the HTTP Request node calls the v3 API with the same key in the api-key header. Create a key dedicated to n8n, revocable without breaking your other integrations.

Synchronizing contacts both ways

Site → Brevo: sign-up with attributes and list

The base workflow: a Webhook node (or Form Trigger) receives the sign-up from your site, a Set node normalizes the data, then the contact is created in Brevo with its attributes (FIRSTNAME, LASTNAME, plus your custom attributes) and added to the right list. Two precautions make all the difference:

  • Upsert by email, never blind creation. The email address is the unique identifier of a Brevo contact. Via the API, pass updateEnabled: true so the call updates an existing contact instead of failing as a duplicate:
POST https://api.brevo.com/v3/contacts
{
  "email": "{{ $json.email.toLowerCase().trim() }}",
  "updateEnabled": true,
  "attributes": {
    "FIRSTNAME": "{{ $json.firstname }}",
    "SOURCE": "website-form"
  },
  "listIds": [12]
}

The same pipeline extends naturally: automatic lead enrichment (company, industry) before writing to Brevo, and a copy to your CRM following our HubSpot/Pipedrive sync guide so marketing and sales see the same contact.

Brevo → site: unsubscribes and bounces via webhook

The return direction matters just as much: Brevo can push its events to an external URL. Configure a Brevo webhook (in the settings, or via the API) pointing to an n8n Webhook node, for marketing events (unsubscribe) and transactional events (hard bounce, spam complaint, block). On receipt, n8n updates the contact's status in your database and CRM. Two rules:

  • A hard bounce is final: the address doesn't exist, or no longer does. Contacting it again damages your sender reputation — mark it as invalid everywhere, immediately;
  • An unsubscribe is a withdrawal of consent: it must propagate to all your systems, not just Brevo. Under GDPR that's a requirement, not an option.

Transactional emails: template + parameters

For action-driven emails (confirmation, invoice, follow-up), the Brevo node's transactional send operation accepts a template ID and parameters injected into the template with the {{ params.PARAM_NAME }} syntax on the Brevo side. The n8n workflow builds the parameters dynamically:

  • the template is designed and tested in the Brevo editor (HTML rendering stays in Brevo, logic stays in n8n);
  • parameters are fed by expressions: {{ $json.order_id }}, {{ $json.total }}…;
  • the sender must be an authenticated domain in Brevo (SPF/DKIM configured), otherwise deliverability collapses.

This template/logic separation is what keeps the whole thing maintainable: marketing tweaks the design in Brevo without touching workflows, and n8n decides when to send and with what data.

Triggering scenarios on events

This is where n8n goes beyond Brevo's built-in automations, which are limited to the Brevo ecosystem:

  • New order: the e-commerce event (Shopify/WooCommerce/PrestaShop webhook) triggers the transactional confirmation email, updates the contact's attributes (last purchase, lifetime value) and moves it into a "customers" list — the foundation described in our e-commerce order automation guide;
  • Abandoned cart: detect the unconverted cart, wait a few hours, then send a personalized transactional email with the cart contents — the full pipeline is detailed in our AI abandoned cart recovery article;
  • Inbound lead: the contact form first goes through AI lead qualification, and only relevant leads enter the Brevo nurturing sequence, with a score attribute usable for segmentation.

Adding AI: segmentation, subject lines, newsletters

Three patterns that combine well with Brevo:

  • Assisted segmentation: a periodic pass over contacts (via the lists API) where a model classifies each contact based on attributes and history, and writes the segment into a custom attribute — which your Brevo campaigns then use as a filter;
  • Subject line personalization: the workflow generates a subject line adapted to the segment or context (viewed product, cart contents) before the transactional send, following the principles of our AI email automation guide. This is not a gimmick: a study by Navdeep Sahni, S. Christian Wheeler and Pradeep Chintagunta published in 2018 in Marketing Science, "Personalization in Email Marketing: The Role of Noninformative Advertising Content" (see on Google Scholar), based on randomized field experiments across millions of emails, measured that simply including the recipient's first name in the subject line raised open rates by about 20%, generated leads by 31%, and cut unsubscribes by 17%;
  • Newsletter drafts from an RSS feed: your automated RSS monitoring feeds a model that writes a newsletter draft (selection, summaries, transitions), then created as a draft campaign via the Brevo API — a human reviews and schedules the send. AI prepares, a human approves.

GDPR: consent, double opt-in, purging

Email marketing is one of the most scrutinized areas of GDPR. Three obligations to wire into your workflows rather than handle by hand:

  • Traceable consent: record the source, date and proof of consent in contact attributes at sign-up time;
  • Double opt-in: Brevo handles the process natively (confirmation email with a dedicated template) — via the API, the contact only enters the list after clicking the confirmation. Strongly recommended for list quality as much as for compliance;
  • Right to erasure and purging: a workflow that deletes the contact from Brevo, the CRM and your databases on request, plus a scheduled purge of inactive contacts with no recent consent. Our guide to handling GDPR requests with n8n covers the multi-system orchestration.

Known pitfalls: rate limits, duplicates, bounces

  • API rate limits: the v3 API enforces rate limits (varying by plan and endpoint). For an initial sync of thousands of contacts, process in batches with a pause between each, and enable retry on 429 errors in the node settings;
  • Duplicates: always upsert by normalized email, never direct creation;
  • Ignored hard bounces: without the return webhook, you keep writing to dead addresses and your sender reputation silently degrades. The bounce webhook → status update is the first "return path" workflow to set up.

Key takeaways

Brevo + n8n is a natural pairing for small-business email marketing: a v3 API key in a dedicated credential, the native Brevo node for contacts and transactional sends, HTTP Request for lists and campaigns. Start with two-way contact synchronization — upsert by email one way, unsubscribe/bounce webhooks the other — then wire transactional emails to your business events (order, abandoned cart, qualified lead). Add AI where it pays off: segmentation, personalized subject lines, newsletter drafts. And treat GDPR as a workflow, not a chore: traceable consent, double opt-in, automated purging.

FAQ

Frequently asked questions

Is there an official Brevo node in n8n?

Yes. n8n ships a native Brevo node (formerly named Sendinblue), covering contact management, transactional email sending, and sender and attribute management. For features the node doesn't cover — lists, marketing campaigns, statistics — the HTTP Request node calls Brevo's REST API v3 directly with the same credential.

How does n8n authenticate with Brevo?

With a v3 API key, generated in your Brevo account settings (in the API keys section). In n8n, create a Brevo credential and paste the key. For manual HTTP Request calls, the key goes in the api-key header. Create a key dedicated to n8n, never reused elsewhere, so you can revoke it without breaking other integrations.

How do I avoid duplicate contacts between my site and Brevo?

The email address is the natural identifier of a Brevo contact: always use upsert logic. Via the API, the contact creation endpoint accepts an updateEnabled parameter set to true, which updates the existing contact instead of returning a duplicate error. Normalize the email (lowercase, trimmed) before every call.

Can Brevo notify n8n of an unsubscribe or a hard bounce?

Yes, via Brevo webhooks: configure an n8n webhook URL for marketing events (unsubscribe) and transactional events (hard bounce, spam complaint, block). n8n receives the event in real time and can propagate the status to your CRM or your database, which prevents contacting an address that has withdrawn consent.

Bundle FlowKit Complet

€269