odiseoteam / sylius-brevo-plugin
Brevo integration for Sylius: contacts, newsletter, ecommerce sync and tracking
Package info
github.com/odiseoteam/sylius-brevo-plugin
Type:sylius-plugin
pkg:composer/odiseoteam/sylius-brevo-plugin
Requires
- php: ^8.2
- giggsey/libphonenumber-for-php: ^8.13 || ^9.0
- sylius/sylius: ^2.0
- symfony/http-client: ^6.4 || ^7.4
- symfony/intl: ^6.4 || ^7.4
Requires (Dev)
- behat/behat: ^3.16
- dbrekelmans/bdi: ^1.4
- deptrac/deptrac: ^3.0
- dmore/behat-chrome-extension: ^1.4
- dmore/chrome-mink-driver: ^2.9
- friends-of-behat/mink: ^1.11
- friends-of-behat/mink-browserkit-driver: ^1.6
- friends-of-behat/mink-debug-extension: ^2.1
- friends-of-behat/mink-extension: ^2.7
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.1
- friends-of-behat/symfony-extension: ^2.6
- friends-of-behat/variadic-extension: ^1.6
- nyholm/psr7: ^1.8
- phpstan/phpstan: ^2.1
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-webmozart-assert: ^2.0
- phpunit/phpunit: ^10.5
- robertfausk/behat-panther-extension: ^2.0
- shipmonk/composer-dependency-analyser: ^1.8
- sylius-labs/coding-standard: ^4.4
- sylius-labs/suite-tags-extension: ~0.2
- sylius/sylius-rector: ^3.0
- sylius/test-application: ^2.0.0@alpha
- symfony/browser-kit: ^6.4 || ^7.4
- symfony/debug-bundle: ^6.4 || ^7.4
- symfony/dotenv: ^6.4 || ^7.4
- symfony/runtime: ^6.4 || ^7.4
- symfony/web-profiler-bundle: ^6.4 || ^7.4
- symfony/webpack-encore-bundle: ^2.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-12 05:46:04 UTC
README
Introduction
This plugin connects each Sylius channel to a Brevo account and keeps both in sync: customers, newsletter, catalog, orders and shop events, so marketing works in Brevo with the store's real data.
What makes this plugin different?
- ✅ Per channel - Each channel has its own Brevo account, API key, sender and modules, or shares one with other channels
- ✅ Never in the way - Every call runs in the background through Symfony Messenger: a Brevo failure never breaks a request or a checkout
- ✅ Contacts that stay up to date - Customers and guests, with addresses and order stats, sent whenever they change, from the shop, the admin, the API or the CLI
- ✅ Newsletter with double opt-in - A Brevo list, a cacheable subscription section in the shop and an API endpoint for headless shops
- ✅ Brevo Ecommerce filled in - Taxons, product variants and orders, sent only when they change and converted to the account currency
- ✅ Tracker and events - Page views and identified visitors with consent, plus cart, order and customer events to trigger automations
- ✅ Built to extend - Tagged providers for every payload, decorators for every rule, Twig hooks in the admin and the shop
- ✅ Tested on the whole matrix - Sylius 2.0 to 2.3, Symfony 6.4 and 7.4, PHP 8.2 to 8.4, MySQL and PostgreSQL
Screenshots
Getting Started
Install it in 4 steps ⚡
- ✅ Require the plugin (the Flex recipe registers it)
- ✅ Run the migrations
- ✅ Add a Brevo configuration to your channel, with its API key
- ✅ Turn on the modules you need
👉 Follow the installation guide
Quick Example
composer require odiseoteam/sylius-brevo-plugin bin/console doctrine:migrations:migrate
Then go to Brevo > Configuration in the admin, add the channel's API key, turn on its modules and send what the store already has:
bin/console odiseo:brevo:sync
Important
By default Brevo calls run right after each response, in the same PHP process. In production, set
ODISEO_BREVO_MESSENGER_TRANSPORT_DSN to an async transport and run bin/console messenger:consume odiseo_brevo.
Modules
Each feature is a module, turned on per channel:
| Module | What reaches Brevo |
|---|---|
| Contacts | Customers and guests as contacts, with names, phone, address, group and order stats |
| Newsletter | Subscribers in the channel's list, from the shop form, the account, the admin or the API |
| Catalog | Taxons as categories and product variants as products, with price, stock and image |
| Orders | Completed orders, with their status, products and totals |
| Tracking | The Brevo tracker, page views, identified visitors and the shop events |
Learn more about each module →
Brevo Pro
Brevo Pro is the paid add-on that builds on this plugin. It concentrates the features where a bug costs sales, with screens for the marketing team:
- ✉️ Transactional emails - Sylius emails designed in the Brevo editor, per language, with previews, test sends and Twig as fallback
- 📬 Sent emails - Every email with its delivery status, blocked addresses and one-click unblocking
- 🛒 Cart and payment recovery - Signed links that bring back a guest's cart, and payment links for unpaid orders, with UTM
- 📦 More events - Order awaiting payment, shipped, cancelled and refunded, and product reviews
- 🔁 Webhooks - Unsubscriptions made in Brevo back in Sylius
- 🗂️ Past orders - The order history imported into Brevo Ecommerce
- ⚙️ Admin settings - Contact attributes and events per channel, without YAML
One price, perpetual license, every Pro module included.
👉 Compare Free and Pro · Get Brevo Pro
Documentation
The full documentation lives at docs.brevo.odiseo.io:
- 📦 Installation - With the Flex recipe, or step by step
- 🏁 Your first channel - API key, modules and the initial sync
- 👥 Contacts and Newsletter - Attributes, lists, the shop form and double opt-in
- 🛍️ Catalog and Orders - What Brevo Ecommerce gets, and when
- 📈 Tracking and Events - The tracker, consent and every event with its properties
- ⚙️ Configuration reference - Every key under
odiseo_sylius_brevo - 🧩 Extending - Providers, decorators and hooks
- 💻 Console commands -
debug,syncand each module's sync - 🚑 Troubleshooting - Nothing reaching Brevo, missing attributes, wrong currency
- 🤝 Contributing - Running the test application and the suites
Compatibility
| Plugin | Sylius | PHP | Symfony | Database |
|---|---|---|---|---|
^1.0 |
2.0 · 2.1 · 2.2 · 2.3 | 8.2 · 8.3 · 8.4 (Sylius 2.3 needs 8.3) | 6.4 · 7.4 | MySQL · PostgreSQL |
Only the latest minor is supported. Security fixes land on master.
Professional Support
This plugin is maintained by Odiseo. Need help with it, or with any Sylius project?
- 🎬 Live demo - A live walkthrough of the free plugin and Brevo Pro
- 🛠️ Sylius development - Help with this plugin or any Sylius project
- 🏪 Multi-vendor marketplace - Turn your Sylius store into a marketplace
- 🔌 More Sylius plugins - Browse all our Sylius plugins
License
MIT.



