Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Sendinblue Api Bundle Laravel Package

sendinblue/sendinblue-api-bundle

A Symfony bundle that integrates the Sendinblue (now Brevo) API into Symfony applications, offering service configuration for transactional email, SMS, and marketing features. Low adoption; verify compatibility with current Brevo SDKs before use.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: do not adopt this bundle. It is an archived, 2017-era Symfony bundle wrapping a deprecated API generation, with no dependents and no maintainer. The correct move is to treat it as a reference implementation at best and build against the current Brevo (formerly SendinBlue) v3 API instead.

Architecture fit — the framing is wrong. This is a Symfony 2.x/3.x Bundle, not a Laravel package. That distinction matters more than the version numbers: a Symfony bundle ships a Bundle class, a DI Extension, a configuration tree, and service definitions loaded through the Symfony kernel. Laravel has no bundle lifecycle — no register()/boot(), no service container compiler passes, no config/*.yml tree. There is no facade, no publishable config, no Laravel service provider. To use it in Laravel you would either (a) manually instantiate the bundle's extension in a service provider and hope nothing depends on kernel boot ordering, or (b) ignore the bundle entirely and use the underlying API client class directly. Option (b) is the only sane path, and it means roughly 90% of what this repository actually contains — the Symfony wiring — is dead weight for a Laravel codebase.

Integration feasibility: low. Practical blockers in order of severity:

  1. API generation is obsolete. The bundle targets SendinBlue API V2 (api.sendinblue.com/v2.0). The vendor's current surface is v3 (api.brevo.com/v3) with a different auth header, different resource shapes, and different pagination. Any account relying on v2 endpoints is on borrowed time; new accounts may not have v2 access at all.
  2. Dependency conflict is near-certain. 2017-era code pins Guzzle 3/5, Symfony 2.3–3.x components, and PHP 5.5/7.0 constraints. Laravel 9+ requires PHP 8.0+ and Guzzle 7. Composer resolution will fail on modern stacks, and forcing it via --ignore-platform-reqs merely defers the failure to runtime.
  3. No security patch path. Archived means no CVE response. Guzzle 3/5 are long EOL.
  4. Zero social proof. 14 stars, 0 dependents. There is no install base to surface bugs, no Stack Overflow corpus, no community fork.

Technical risk: high and unrecoverable. The failure mode is not "it breaks loudly on install" — that would be fine. It is "it installs on a legacy branch, works in staging, and then the V2 endpoint is retired or its response shape drifts," producing silent delivery failures on transactional email, which is exactly the class of outage you cannot tolerate.

Key questions to resolve before any code is written:

  • Is SendinBlue/Brevo a hard business requirement, or an inherited choice? If it is hard, has the account been migrated to v3?
  • What is the target Laravel and PHP version? (Anything below PHP 8 with Guzzle 7 makes this a non-starter.)
  • Are we actually buying anything from the bundle layer, or do we only need authenticated HTTP calls to four or five endpoints?
  • Which capabilities are in scope — transactional send, contacts/lists, templates, campaigns, webhooks? Scope determines whether a 200-line adapter suffices.
  • Is there an existing abstraction for outbound email/CRM, or would this be a direct vendor call scattered through controllers?

Given the 0.2 score, the 11.01 "opportunity" signal almost certainly reflects category demand (email/CRM integration is universally needed), not the quality of this artifact. Do not let the opportunity score pull a decision on the package score.

Integration Approach

Stack fit: poor as delivered, workable as a thin adapter. The right integration shape in Laravel is a vendor-neutral interface in the application layer — something like App\Contracts\EmailProvider with send(), sendTemplate(), upsertContact(), subscribeToList() — plus a driver that talks HTTP. The bundle should not appear in that design at all. If you want the bundle's API client class, vendor it or fork it into a namespaced third-party/ directory with the Symfony scaffolding deleted, and never let it leak past the driver.

Migration path:

  1. Replace, don't revive. Use the official Brevo PHP SDK (getbrevo/brevo-php, v3) or, for a handful of endpoints, a plain Laravel Http::withHeaders(['api-key' => ...]) client. The latter is often less work than auditing an old SDK and has no transitive dependency surface.
  2. Anti-corruption layer. Bind the driver to the interface in a service provider; keep provider selection in config/services.php behind an env flag. This is the artifact that makes the whole decision reversible.
  3. Legacy branch only if forced. If a V2-only account makes this bundle genuinely mandatory, isolate it on a maintained branch with pinned PHP 7.4 and Guzzle 5, treat it as frozen code, and put a dated decommission item against it.

Compatibility: assume nothing resolves. Before committing, run a throwaway composer require sendinblue/sendinblue-api-bundle against the actual project's lockfile in a scratch branch. Expect a Guzzle constraint failure; expect PHP 8.1/8.2 deprecation warnings (dynamic properties, ${var} interpolation) even if it resolves.

Sequencing: (1) spike a direct v3 HTTP call for one transactional send and one contact upsert — one day, and it answers most open questions; (2) define the interface and config surface; (3) implement the driver with retries and idempotency keys; (4) put sends behind queued jobs, not the request cycle; (5) run in parallel with the incumbent provider behind a flag, comparing delivery outcomes; (6) remove the old path and the flag. The bundle, if used at all, appears only inside step 3 and is contained by steps 2 and 6.

Operational Impact

Maintenance: you inherit full ownership on day one. Archived means no upstream fixes, no dependency bumps, no PHP 8 compatibility work, no response to Guzzle CVEs. Budget for a fork that only ever receives the patches you write under incident pressure — the worst kind of maintenance load.

Support: there is no support path. Brevo's support organisation supports the current API and current SDK; referencing a 2017 Symfony bundle will get you a link to migration docs. Internal support depends on whoever performed the integration, with no external escalation available.

Scaling: expect the wrapper to be synchronous and unbatched. Transactional sends inside a request add provider latency to user-facing p95 and tie your availability to theirs. Contact/list operations at volume will hit rate limits with no backoff logic. Plan on queue workers, chunked contact sync, exponential backoff on 429, and idempotency keys so retries do not double-send. The bundle contributes nothing here; all of it is yours to build.

Failure modes to instrument for:

  • Silent contract drift / endpoint retirement on V2 — the highest-impact, lowest-visibility risk. Mitigate with synthetic canary sends and alerting on provider error-rate, not just on exceptions.
  • Auth mismatch between V2 keys and V3 api-key headers during any partial migration.
  • Dependency resolution failure on the next PHP or Laravel upgrade, blocking unrelated work.
  • Unmapped provider errors — a raw Guzzle exception escaping into a user-facing flow instead of a queued retry with a dead-letter path.
  • Webhook payload changes if inbound events are consumed; signature verification and schema tolerance must be explicit.

Ramp-up: misleadingly steep for the value delivered. A Laravel team must learn Symfony 2/3 bundle conventions — extension loading, compiler passes, YAML config trees — to debug code that provides no Laravel-idiomatic surface. Documentation is nine years stale and describes an API generation the vendor no longer documents. Onboarding cost lands on one engineer, and that knowledge is unhireable and untransferable. A direct v3 HTTP client, by contrast, is readable by any Laravel developer on day one.

Recommendation: reject for new work; if the incumbent integration depends on it, schedule replacement against the v3 API with a thin internal adapter as the containment boundary.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package