PHP SDK Changelog

Release history for the getbrevo/brevo-php SDK.

April 10, 2026 — v4.0.14

Fixed

  • Process endpointsduplicate_email_id is now typed as a string (URL to a CSV file) instead of an integer. The legacy in_process status value is now handled correctly.
  • Event endpointscontact_properties and event_properties now accept boolean values in createEvent and createBatchEvents.
  • Contact endpointsattributes now accepts plain integers in createContact and updateContact. PHP users no longer need to cast integers to float.

March 25, 2026 — v4.0.11

Added

  • $client->event->getEvents() — retrieve a paginated list of custom events with filters for contact, event name, object type, and date range.
  • $client->event->createBatchEvents() — track multiple contact interactions in a single request.
  • PatchCrmAttributesIdRequest — update a CRM attribute’s display label and option labels.
  • CreateUpdateProductRequest and batch product upsert now accept optional brand and description fields.
  • Balance: getActiveBalancesApi(), getContactBalances(), and getSubscriptionBalances() now accept includeInternal.
  • Balance: getTransactionHistory() now supports filtering by status and transactionType.

Improved

  • meta field on balance definition requests is now a typed class instead of a generic array.
  • metaInfo size limit for products clarified: maximum 20,000 characters total.
  • users field on GetAccountResponsePlanVerticalsItem is now nullable.

Fixed

  • createContact() no longer throws BrevoException: Failed to deserialize response: Syntax error on empty success responses.

March 12, 2026 — v4.0.10

Added

  • Batch events endpoint: $client->event->createBatchEvents() to track multiple contact interactions in a single request.
  • getEmailCampaign() accepts a new optional excludeHtmlContent flag to omit the HTML body from the response.

Fixed

  • UpdateContactRequest and CreateContactRequest: boolean values in union-typed attribute maps now serialize correctly. Previously threw JsonException: Cannot serialize value of type boolean.
  • Order::products: OrderProductsItem now exposes all product fields — price, productId, variantId, quantity, quantityFloat.
  • GetCampaignStats: appleMppOpens and opensRate are now correctly typed as nullable (?int, ?float).

Deprecated

  • sendTransacSms() — use sendAsyncTransactionalSms() instead.

February 27, 2026 — v4.0 release

Released the PHP SDK v4 (getbrevo/brevo-php) with a type-safe client for the Brevo API.

$composer require getbrevo/brevo-php guzzlehttp/guzzle

Key highlights

  • Unified client via new Brevo(apiKey: "...") — single entry point with namespaced service clients
  • Strongly typed request and response objects with full PHPDoc annotations
  • PSR-18 HTTP client support — use Guzzle, Symfony HttpClient, or any compatible client
  • Automatic retries with exponential backoff (configurable per client or per request)
  • Structured errors via BrevoApiException with getCode(), getBody(), and getMessage()
  • 33 service namespaces covering the entire Brevo API