Skip to main content

Brevo Conversations

Connect the chat on your site so its conversations appear in StorePilot beside your leads. It takes one URL, pasted once, and no Brevo API key.


Connect it

  1. In StorePilot, open Settings → Integrations → Chat provider and press Connect Brevo Conversations. A webhook URL appears. It is shown once — copy it now.
  2. In Brevo, go to Conversations → Settings → Integrations → Webhooks and add a webhook pointing at that URL.
  3. Come back to the panel. Until the first webhook arrives it says waiting for the first webhook; once one has, it says when the last message came in. That line is how you know the URL landed in the right field — not the fact that you pressed a button.

The URL is the credential

Brevo does not sign its webhooks, so the key in the path is the whole credential. StorePilot stores only a SHA-256 of it, which is why the panel can never show it to you again.

  • If it leaks, press Rotate key. The old URL stops working immediately and Brevo gets a 404 until you paste the new one. Conversations already received are kept.
  • Disconnect stops new chats arriving and keeps everything already received — it is your shop's data, not the integration's.

What Brevo sends

Three events, all of which StorePilot understands:

EventWhenWhat it carries
conversationStartedA visitor or an agent begins a chatThe first message, the visitor, the page it began on
conversationFragmentAfter each messageEvery message so far
conversationTranscriptThe conversation endsThe whole transcript; the chat is marked closed

Because the second and third repeat messages already delivered, StorePilot stores each message once — keyed on the provider's own message id. Re-deliveries and Brevo's retries add nothing.

One conversation, several Brevo ids

Brevo ends a conversation when the visitor leaves your website, and gives their next message a brand-new conversation id. A shopper who asks a question on the product page, goes to the basket and asks another therefore produces two conversations in Brevo, minutes apart, each holding part of what they said.

StorePilot keeps them together. A new id from the same visitor within 24 hours of their last message joins the conversation already open for them, and the transcript marks where they left and came back. One chat, in order, however many pieces it arrived in — which also means the bell rings once, when the conversation starts, and not every time the visitor changes page.

Longer than that and it is a new conversation: a customer returning next week is asking something else, and their old thread should not go on collecting messages for ever.

The one exception is a reply from your own team. When an agent answers a visitor days later — a question asked on Saturday, answered on Monday — Brevo hands that answer a new conversation id too, because the visitor had left the site in between. An answer belongs with its question, so a conversation that begins with an agent's message joins that visitor's most recent conversation however long the pause was. The widget's automatic greeting is not a reply and does not do this: it is printed on every visit, and a visit is what the 24-hour rule tells apart.


About the responses StorePilot gives Brevo

Brevo discards a webhook on most error responses and retries only on 429, so the receiver is built the other way round from most:

SituationResponse
A valid key, a readable body200
A valid key, a body we cannot read (a field Brevo added, say)200, and the delivery is skipped rather than thrown away by an error
An unknown or rotated-away key404
A problem on our side429 — so Brevo retries and the transcript is not lost

What StorePilot tells the widget

One thing, and it never passes through StorePilot's servers. Where the Brevo chat widget is on your page, the StorePilot collector — running in the visitor's browser — hands the widget two values through Brevo's own updateIntegrationData API:

KeyValue
STOREPILOT_VISITORThe pseudonymous browser identifier StorePilot already keeps for that visitor
STOREPILOT_SESSIONThe identifier of the current visit

Brevo shows them in the conversation's right pane and sends them back on every webhook, which is what lets a chat from somebody who never typed an email land on their visitor page, attach to their lead, and point at the recording of the visit. It happens only where tracking is allowed on your site — a visitor who refused consent is not announced — and nothing else is handed over: no name, no address, no page.


What StorePilot never does

It never calls Brevo. There is no API key to provide, no message is ever sent from here, and no data travels from StorePilot's servers to your chat provider. See Conversations for what happens to a transcript once it arrives, and the Privacy Policy for what is masked before it is stored.