Intermittent issue where emails are not sent using the Brevo API

We are currently using the Brevo API to send emails, but we are experiencing an intermittent issue where emails are occasionally not sent, and we are having trouble identifying the root cause.

Issue

When the email sending process is executed, it appears to complete successfully, but the email is not actually delivered in some cases.

However, sending another email later (for example, the next day) works normally.

What we have confirmed

  • No errors are shown in the logs.
  • The only logs output are:
    • Finished running action
    • Finished running workflow
    • Finished running action
  • We could not find any indication of conflicts or overlapping operations in the logs.
  • We have not reached the workload unit limit defined in our plan.
  • As a reproduction test, we sent emails at 30-second intervals.
    → The first email was not sent, while the second and third emails were sent successfully.

Questions

Given this behavior, what are the most likely areas to investigate?

In particular, we would appreciate any insights on the following:

  • Whether the request may not be reaching or being queued properly on the Brevo side
  • Cases where the API call succeeds but the email internally fails to send
  • Rate limiting or temporary suppression mechanisms
  • Issues related to workflows or asynchronous processing
  • Whether anyone has experienced similar behavior

If there are additional logs, diagnostics, or information we should check, please let us know.

Thank you in advance for any suggestions.

I use Postmark, and through their dashboard I can see every request that reaches them. If a request fails (whether because of an error in the API call or because the recipient server rejects it) that’s all logged and documented.

I’m not sure if Brevo provides a similar feature, but it’s possible the issue is happening on their side, and the reason may be documented more clearly in their dashboard.

Also… Are the failed requests all being generated by the same mechanism? I’m asking because, in my apps, emails are sent from several different workflows under different scenarios.

It’s possible that the issue is with a specific workflow rather than with the API call itself.

Are you using JSON safe values in all the places you should be?

That is typically the issue I see with intermittent email sending.

Hope that helps. :blush:

You would normally see errors with this though.

I use Postmark as well and it’s much better with viewing things like that just like mentioned above.

With SendGrid, sometimes certain email addresses would just bounce for some reason.

Try seeing if it’s a specific domain that it doesn’t like. Like Yahoo or something like that.

Check your domain on mxtoolbox. It could be a DMARC record issue, maybe your domain is on a blacklist etc. Run the tools they have and you should see what the issue is. If its not a large number of emails then Brevo should work. Else it could be that your actions in Bubble are failing.
Try using resend for a few emails and run parallel tests

Thank you for your response.
I’ll try using MXToolbox.

We are using JSON safe values everywhere.
Also, this issue does not affect all emails; it only occurs intermittently, approximately once every few messages.
The recipient domain is the same in all cases since the emails are sent to internal company addresses.
Due to requirements, we are unable to use Postmark.

I would instrument the send path before swapping providers.

Create an email_send_attempt thing before the Brevo API call, then update it after the call with:

  • workflow/send_attempt id
  • template name
  • recipient/domain
  • payload hash or key fields
  • Brevo status code/body/message id if available
  • retry count and final state

Then you can answer the important question: did Bubble skip the call, did Brevo reject it, or did Brevo accept it and later suppress/bounce/delay delivery?

Bubble saying the action finished only proves the workflow reached the end of the step. For intermittent email issues, I would want a small delivery ledger and retry/failure state around the existing Brevo setup so you are not debugging from delayed workflow logs alone.