Request early access

Enter your first name and business email address. We will email you a link to confirm your request for Tajo access.

Tajo Team Beginner 12 min Updated Oct 7, 2026

Understanding Shopify Data Sync with Brevo

How Tajo moves Shopify data into Brevo: the Shopify app's webhook sync as events arrive, and governed sync rules with scheduled runs, a consent filter, idempotent writes and an audit trail.

Tajo moves Shopify data into Brevo in two ways. The Tajo Shopify app processes Shopify webhooks as they arrive. Sync rules are human-approved, one-directional, run in batches and logged end to end. This article explains both, what they do not include, and the few things the Tajo Shopify app writes back to Shopify.

Quick check This article assumes you have connected Shopify and Brevo and published at least one sync rule. If not, start with connecting Tajo to Shopify.

As Events Happen: the Tajo Shopify App

The Tajo Shopify app subscribes to Shopify webhooks and processes each one as it arrives. Customer and product changes wait about four seconds first. Customers, orders, checkouts, products, collections and stock levels reach Brevo this way, along with events such as order_paid and cart_abandoned. The Shopify integration guide lists every topic and what it writes to Brevo.

The Shape of a Sync Rule

A sync rule is a reviewed, approved definition of exactly what moves and how. An agent builds it from your description, and a person approves it. A rule has four parts you can inspect on its page under Connections > Syncs and mappings:

PartWhat it does
Field mappingEach source field, the Brevo field it writes to, and any transform in between
Filter expressionEvaluated per record; records that do not match are skipped
CursorTracks how far syncing has progressed, so each run picks up where the last one stopped
Run historyEvery run, with records read, written, and failed, plus duration and status

A sync rule moves data one direction: from your source into Brevo. It never writes to Shopify. The Tajo Shopify app does write a few things back to Shopify, such as consent opt-outs and loyalty tier tags. Shopify permissions explained lists each write and when it happens.

When a Sync Rule Runs

Sync rules run in batches. Contact sync rules run every 15 minutes by default. An active, published Shopify orders → Brevo orders rule runs every 15 minutes too, but only with the template’s buyer marketing opt-in filter. A rule whose filter was edited runs only when you start it. An orders rule’s first scheduled run starts a few minutes before that moment and sends no older orders. Each later run sends the orders updated since the previous one. Past orders reach Brevo only when you run the rule yourself. An active rule’s page has a Test run (1 batch) button, and the Sync Operator agent runs active rules when you ask it to. Batch runs are what make every write reviewable, budgeted and attributable to a specific run.

Each run reads new and changed records since the cursor, applies the filter, maps the fields, and writes to Brevo. The run record shows exactly how many records were read, written, and failed.

The Governance Guarantees

A rule that writes personal data to Brevo cannot be published without the consent and suppression filter. At run time, a contact written to a marketing audience without provable consent is refused. When consent cannot be established, Tajo refuses the write rather than guessing. The failure mode is always “too careful”, never “over-sent”.

Runs are idempotent

Every write carries a key derived from the source record. The key is a hash, so it holds no personal data. Re-running a sync over the same records, after a failure, a pause or by hand, does not create duplicate writes.

Everything is audited

Publishing a rule, invalidated approvals and automatic pauses are recorded under Activity. Each approval decision carries a written rationale. Each run is recorded in the rule’s run history. The approval that authorized a publication is bound to a digest of the exact rule that was previewed. Editing the rule returns it to draft and invalidates the approval, so what runs is always what was authorized.

Failures pause the rule

If five consecutive runs fail, a circuit breaker pauses the rule automatically and shows the last error on the rule’s page. Fix the cause, then re-publish to resume. A partially failed run reports its failed count so you can see exactly what did not land.

How Unsubscribes Are Respected

  • When a contact unsubscribes via a Brevo email footer link, that opt-out is recorded against the contact, and Brevo excludes them from further campaigns.
  • In the batch customer sync, the Tajo Shopify app compares the time of the Shopify consent with the time of the Brevo unsubscribe and keeps the later one.
  • A consent change that arrives from Shopify as a webhook is written to Brevo as Shopify reports it.
  • If the contact was subscribed in Shopify, the Tajo Shopify app marks them unsubscribed in Shopify as well. A Brevo event only ever moves a customer from subscribed to unsubscribed. It never subscribes anyone, so a subscribe in Brevo does not change Shopify.

What Data Is Available

The Tajo Shopify app sends contacts, orders, order and cart events, the product catalog and stock. What a sync rule sends depends on its field mapping. For Shopify customers, the template maps identity fields, total spent, order count, tags and the opt-in into Brevo contact attributes you can use in segments and campaigns. The exact mapping for your workspace is not hidden in a description: open the sync rule and read the field mapping table. That table is the authoritative answer to “what syncs”.

What Tajo Does Not Do Today

Being precise about the boundaries matters more than a long feature list:

  • No two-way sync rules. A sync rule only writes into Brevo. The Shopify app’s own writes to Shopify (consent opt-outs, Brevo engagement and loyalty metafields, loyalty tier tags) are listed in Shopify permissions explained.
  • No real-time sync rules. Sync rules run in batches. Only the Tajo Shopify app’s webhook sync works as events arrive.
  • No back-in-stock button. The app keeps product stock current in Brevo and sends a back_in_stock event to shoppers who asked to be notified. The request has to come from your storefront: the app does not add a “Notify me” button to your theme.

If one of these boundaries blocks a use case for you, tell the team — early access priorities are shaped by exactly this feedback.

Where to See Your Data

  • In Tajo: open the sync rule under Connections > Syncs and mappings for run history, cursor position and per-run counts. Activity records publications and automatic pauses.
  • In Brevo: open Contacts and inspect any contact’s attributes to confirm mapped fields are populating. Build segments on those attributes for targeting.

Troubleshooting

  • Contacts not appearing in Brevo: check the rule’s latest run for failures and its status (a paused rule is not running). See contacts missing in Brevo.
  • Runs failing repeatedly: the circuit breaker will pause the rule and show the last error. See data not syncing.
  • Duplicate contacts: writes are idempotent per source record, but pre-existing duplicates in Brevo stay. See duplicate contacts.

Common Questions

Can I make the sync faster? An active rule’s page has a Test run (1 batch) button. For changes as they happen, the Tajo Shopify app’s webhook sync already covers customers, orders, checkouts, products and stock.

What happens if a run fails halfway? The run reports its failed count, the cursor only advances over what was processed, and the next run safely re-covers the ground — idempotency keys prevent duplicates.

Can I change what syncs? Yes. Ask the agent to change the rule’s field mapping or filter. The edit returns the rule to draft, and it must go back through preview and approval before it runs again.

Why did my rule pause itself? Consecutive run failures trip the circuit breaker. The rule’s page shows the failure count and last error; fix the issue and re-publish.

Get Help

Contact the team.