> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Brevo Webhook Setup Guide

> Configure Brevo to deliver events to StackOne.

## Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See [Getting Started](/connectors/brevo#getting-started) on the Brevo connector page.

<section data-guide-section data-guide-scopes="">
  <h2>How webhooks are set up</h2>

  <p>No configuration is required in Brevo. When you connect your account, StackOne creates the webhook subscriptions for you and removes them again when you disconnect.</p>

  <Steps>
    <Step title="Two subscriptions are created">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Brevo separates webhooks by type, so StackOne registers two — one <strong>Transactional</strong> webhook and one <strong>Marketing</strong> webhook — both pointing at the same StackOne callback URL. They appear in Brevo under <strong>Settings > Webhooks</strong>, on the corresponding tabs, with the description `StackOne managed webhook (transactional/marketing)`.</p>
      </div>
    </Step>

    <Step title="Do not edit or delete them in Brevo">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>These subscriptions are managed by StackOne. Editing or deleting them in the Brevo interface stops event delivery until the account is reconnected.</p>
      </div>
    </Step>

    <Step title="Check your webhook allowance">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Brevo allows a maximum of 40 webhooks per account, across marketing and transactional combined. If your account is at the limit, delete unused webhooks in Brevo before connecting.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>How events are delivered</h2>

  <p>Points to be aware of when consuming Brevo events.</p>

  <Steps>
    <Step title="Some events arrive from both subscriptions">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Delivery, open, click, bounce, spam and unsubscribe activity is reported by both the transactional and the marketing webhook. Marketing deliveries carry campaign identifiers in the payload, which distinguishes them from transactional ones.</p>
      </div>
    </Step>

    <Step title="Contact events can be high volume">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p><strong>Contact Updated</strong> fires on every attribute change, including bulk imports and list synchronisations, so it can generate significant traffic on large accounts.</p>
      </div>
    </Step>

    <Step title="Only new activity is delivered">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events are sent from the moment the connection is made. Brevo does not replay activity that occurred beforehand.</p>
      </div>
    </Step>

    <Step title="Retries on failure">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Brevo retries a failed delivery up to four times, after 10 minutes, 1 hour, 2 hours and 8 hours. A `4xx` response other than `429`, or any `5xx` response, stops retries and the event is discarded.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available webhook events</h2>

  <p>The events below can be enabled for this connection.</p>

  <Steps>
    <Step title="Transactional email events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for emails sent through the Brevo transactional API or SMTP relay.</p>

        <ul>
          <li><strong>Email Sent</strong> (`request`) — Fired when Brevo accepts the send request.</li>
          <li><strong>Email Delivered</strong> (`delivered`) — Fired when the email reaches the recipient's server.</li>
          <li><strong>Email Opened</strong> (`opened`) — Fired each time a recipient opens the email.</li>
          <li><strong>Email Unique Opened</strong> (`unique_opened`) — Fired on a recipient's first open only.</li>
          <li><strong>Email Clicked</strong> (`click`) — Fired when a recipient clicks a tracked link.</li>
          <li><strong>Email Soft Bounced</strong> (`soft_bounce`) — Fired on a temporary delivery failure.</li>
          <li><strong>Email Hard Bounced</strong> (`hard_bounce`) — Fired on a permanent delivery failure.</li>
          <li><strong>Invalid Email</strong> (`invalid_email`) — Fired when the recipient address is not valid.</li>
          <li><strong>Email Deferred</strong> (`deferred`) — Fired when delivery is temporarily delayed.</li>
          <li><strong>Spam Complaint</strong> (`complaint`) — Fired when a recipient marks the email as spam.</li>
          <li><strong>Email Unsubscribed</strong> (`unsubscribed`) — Fired when a recipient unsubscribes.</li>
          <li><strong>Email Blocked</strong> (`blocked`) — Fired when Brevo blocks the email from being sent.</li>
        </ul>
      </div>
    </Step>

    <Step title="Marketing campaign events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for emails sent as part of a marketing campaign.</p>

        <ul>
          <li><strong>Marketing Hard Bounce</strong> (`hardBounce`) — Fired on a permanent campaign delivery failure.</li>
          <li><strong>Marketing Soft Bounce</strong> (`softBounce`) — Fired on a temporary campaign delivery failure.</li>
          <li><strong>Marketing Spam Report</strong> (`spam`) — Fired when a recipient reports a campaign as spam.</li>
        </ul>
      </div>
    </Step>

    <Step title="Contact events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for contacts in your Brevo account.</p>

        <ul>
          <li><strong>Contact Created</strong> (`list_addition`) — Fired when a contact is added to one or more lists.</li>
          <li><strong>Contact Updated</strong> (`contact_updated`) — Fired when a contact's details change.</li>
          <li><strong>Contact Deleted</strong> (`contact_deleted`) — Fired when a contact is removed.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.