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.
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.
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
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.