Email Automation, Contact Synchronization, and Transactional Messaging Issues for a Restaurant Menu Website Using Brevo

I am managing a restaurant menu website that integrates with Brevo for email communication, including promotional campaigns, menu updates, and transactional notifications. The goal is to automatically notify users when new items are added, prices change, or limited-time offers become available. While the basic integration works, I am encountering inconsistencies in how contacts are created, updated, and segmented within Brevo. Some users receive notifications as expected, while others who meet the same criteria do not, even though their data appears correctly stored in both the website database and Brevo contact lists. This makes it difficult to trust the automation logic and ensure consistent communication with users.

One major challenge is synchronizing contact attributes between the website and Brevo. User data such as location preferences, dietary interests, and subscription status is updated frequently based on interactions with the menu. These attributes are pushed to Brevo via API calls, but updates do not always reflect immediately or accurately in contact profiles. In some cases, older attribute values overwrite newer ones, possibly due to timing issues or parallel updates. I am unsure whether this behavior is caused by API rate limits, asynchronous processing within Brevo, or mistakes in how attribute updates are structured on the website side.

Automation workflows are another source of complexity. I have set up scenarios that trigger emails when certain conditions are met, such as a new menu category being published or a seasonal promotion going live. However, workflows sometimes trigger multiple times for the same user or fail to trigger altogether. Debugging these scenarios is difficult because it is not always clear which condition prevented the workflow from executing. I would appreciate guidance on designing reliable automation logic in Brevo that avoids duplicate sends while still reacting quickly to frequent content updates.

Transactional emails also present challenges. The website sends confirmation emails when users subscribe to menu updates or request notifications for specific items. While these emails are generally delivered, there are occasional delays or missing sends without clear error responses from the API. Logs on the website side indicate successful API calls, yet the corresponding emails never appear in Brevo’s transactional logs. Understanding how to properly monitor transactional email delivery and interpret Brevo’s API responses would help diagnose whether these issues originate from the integration or from internal processing within Brevo.

Deliverability and sender reputation are additional concerns. Because menu updates can be frequent, especially during promotions, email volume can spike over short periods. I want to ensure that this does not negatively impact deliverability or cause emails to be flagged as spam. I am currently using a shared IP and standard authentication settings, but I am unsure whether additional configuration such as dedicated IPs, advanced warm-up strategies, or more granular send throttling is recommended for this type of use case. Advice on best practices for maintaining strong deliverability with frequent, content-driven emails would be very helpful.

Finally, I am planning to scale this setup to support multiple restaurant locations, each with its own subscriber base, menu variations, and promotional schedules. This will require more advanced segmentation, dynamic email content, and possibly multiple automation workflows running in parallel. Before scaling further, I want to ensure that the current integration approach is sound and maintainable. Insights from the Brevo community on structuring scalable contact models, automations, and API integrations for content-driven websites would be greatly appreciated. Sorry for long post

Is there anyone who can guide me please?

Hi @joeroot,

Great question — and it’s clear you’ve put a lot of thought into your setup! Running email automation for a restaurant menu platform comes with some unique challenges, so let’s work through them. :blush:

Contact Sync Issues

  • Double-check each contact’s status (unsubscribed/blocklisted) and whether double opt-in has been confirmed — this catches a lot of « missing » contacts!

  • Dynamic segments can have a short re-evaluation delay, so a contact qualifying right at send time might just miss the window

Attribute Updates

  • If you’re making parallel API calls for the same contact, the last one in wins — try queuing updates sequentially to avoid this

  • Always build in retry logic with exponential backoff to gracefully handle rate limits (429 responses)

Automation Workflows

  • For duplicate sends, take a look at your re-entry settings — adding a delay or disabling re-entry entirely usually does the trick

  • The Automation Logs in your dashboard are your best friend here for tracing exactly what happened for a specific contact

  • For event-based triggers like a new menu item going live, the POST /events API gives you much more precise control

Transactional Emails

  • Setting up delivery webhooks (delivered, bounce, spam) will give you real-time visibility instead of hunting through logs

  • Also worth confirming your DKIM/SPF/DMARC are all set up correctly under Senders & IPs > Domains

Deliverability & Scaling

  • For high-volume spikes, staggering your sends and keeping your list clean goes a long way

  • A dedicated IP is worth considering if volume grows consistently — just make sure to warm it up gradually

  • For multiple locations, a LOCATION contact attribute + dynamic content blocks in your templates will save you a ton of time as you scale

Hopefully this helps get things moving in the right direction! And if you’d like us to dig into your specific account — logs, workflows, API calls — don’t hesitate to reach out to our Support team at contact@brevo;com. We’re happy to take a closer look with you. :raising_hands:

Hi @joeroot,

sounds like you are pushing the limits of Brevo – as I have liked to do over the years.

I have always liked Brevo for its excellent API: It’s fairly complete and straightforward, which is not something I could say about some of the competitors.

Yet, I understand that it is still a marketing system and not a perfect task scheduling platform. There are likely no transactions or sequencing guarantees. And things need to be highly asynchronous to handle all that traffic at scale. I have also experienced the “missing actions” dilemma, which @adam’s point on “last API call wins” can explain.

I cannot know the exact goal and scale of your target platform: A system for McDonald’s or for a large number of smaller restaurants. Any recommendations depend at least on this.

That said, can it, for example, make sense to take a step back and think about what’s really necessary and desirable for this service?

A purely event-driven system sounds logical for me as a systems person. But in practice, the biggest issue you might face is to ensure to get the most appealing information across to end users while not overloading them. So, a more suitable model might be to pick a time to send updates to users, and at that time, gather whatever updates there are, if any, and send them.

Then there is

(a) less conflict between multiple events and the actions associated with them and
(b) better control over not overloading people.

I understand that implementing this can be more tricky than the pure event-based model. It all depends on the scenario. If these events are infrequent, then there will be less potential for Brevo-internal event conflicts or scheduling issues. Event-based is fine. Otherwise, the above might work better.

In any case, I learn that not overcomplicating things is always helpful to me. I am at present implementing the email layer for a somewhat involved webinar funnel product that tightly integrates with Brevo. Goal: make Brevo a truly competitive live webinar platform and avoid having to deal with a chaos of external Zapier/Make/n8n & Co. solutions. (The latter is what I ran into with a business partner and hated it.)

There are post-sign-up nurture emails, countdown emails, live pitching emails, post-event emails depending on attendance state etc. Nurture must stop when countdown starts. Countdown must time perfectly with event start, etc. etc. I can come up with all kinds of crazy requirements (and I did). But I know that in practice the setup often competes with people barely sending 2 reminders and a thank-you message.

So what are the messages that really make a difference in your case?
Which ones must absolutely not overlap?
How much does it hurt to send one twice?

If (which I don’t know) you really have a sophisticated custom application that drives most of the logic – as in my case – I have found one pattern useful: I record inbound events as they are in some table so I can trace back exactly what should have happened and where events got lost. If needed I can even replay events and Claude & Co. are excellent at correlating these events with derived attributes in tables and even via Brevo MCP.

To me the email marketing side isn’t even as critical as, e.g., Zoom events. Emails have never been a hard science and there is no guarantee.

Are you still working on it? Still on Brevo? Despite the issues you describe, I have found Brevo to be an excellent choice for these kinds of scenarios (until I run into the next unexplained, special case ;-).

I read your post some weeks back, found it quite interesting and wanted to learn more, but didn’t have permission to respond yet. So, there you go. Thanks for sharing.