Connecting a Shop to Email Marketing: What to Sync and What to Skip
Connecting a shop to email marketing looks like a settings-panel task. Pick a plugin, paste an API key, watch contacts appear. What you actually did was sign a data contract. Your store becomes the upstream source for a system that sends mail on your behalf, and whatever it hands over is what you now store, secure and delete on request. We run our own fleet of sending servers, so we watch the downstream effect of that decision play out constantly. The shops with clean sending are rarely the ones with the richest integrations. They are the ones that decided, before flipping the connector on, which fields actually change a sending decision and which ones only fatten a database.
What a Shop Integration Actually Moves
A shop connector moves three separate streams. Identity: email, name, language, account status. Behaviour: orders, dates, values, abandoned carts, page views. Catalogue: products, categories, prices, stock. Most platforms pull all three by default, because defaults get written for the largest possible use case. Most senders need a fraction of it. The exact split depends on the connector, and it is worth reading what a given shop integration pulls across by default before you enable it.
The mismatch stays quiet at first. Nothing breaks when you sync a billing address you will never segment on. The bill lands later, in two places: a bounce spike after a full re-import, and a subject access request that now covers fields you forgot you held. Both are cheaper to prevent than to unwind.
Sync This: The Fields That Change Sending Decisions
Start from a short list and defend every addition to it. The core set:
- Email address - the only mandatory field.
- Consent flag with timestamp and source - proof, not a boolean.
- Last order date and order count.
- Order value, aggregated rather than per line.
- Product categories bought, not SKUs.
- Language and currency.
The consent record has no substitute. Under RODO and article 398 of the PKE you need evidence that someone opted in, and no, business addresses are not exempt. Order recency segments better than any engagement score, because it reflects money rather than pixel loads. Category beats SKU for targeting in almost every catalogue I have worked with. And language plus currency kill the wrong-template problem on multi-market shops.
Tip: store the consent source as a string - checkout box, newsletter form, imported list. When a complaint arrives, that string decides what you do next.
Skip This: Data That Adds Risk Without Adding Targeting
Leave the rest in the shop. Full billing addresses, phone numbers and tax IDs belong there unless a specific campaign uses them. Payment metadata never belongs in a marketing database. In any form, for any reason.
Raw cart contents at SKU level are worth skipping for large catalogues: heavy tables, thin targeting gains, slow segment queries. Guest checkout addresses without a consent flag are the mistake we see most often. A completed order is a contract, not permission to send marketing. On PrestaShop this is a live setting rather than a theory, because the module that syncs shop customers to a mailing list lets you decide which customer groups cross over at all.
Two more to refuse outright. Scraped or purchased lists hooked into the shop connector, which is how a good sending domain gets burned in a week. And deleted accounts that keep coming back because the connector only syncs one way, so every removal you make upstream gets undone on the next pass.
Why Oversyncing Damages Deliverability
Bigger lists tempt bigger sends. Bigger sends to unengaged addresses are exactly what filters measure. An old shop database holds years of dead mailboxes; some of those have been recycled into spam traps, and you cannot tell which by looking. Nobody can.
Bounce handling has to be wired back into the shop, not only into the sending platform. Otherwise the platform suppresses an address correctly, the next full sync reintroduces it, and you retry a hard bounce forever. Warmup on a fresh sending domain dies fast under those conditions, because the first import is a ten-year export.
Every block we have had to dig our way out of came from list quality, not from missing authentication. Authentication is table stakes and easy to verify. Nobody, us included, can promise you past a filter. The levers are what you send and who you send it to.
The Technical Layer Under the Integration
Authentication sits below the connector and has to be right before any import. SPF, DKIM and DMARC aligned with the Return-Path domain, plus a PTR record on the sending IP. Use a dedicated sending subdomain so shop marketing traffic does not share reputation with transactional order confirmations. Those two streams deserve separation at the subdomain or IP level, because a promotional complaint should never delay a receipt.
The sequence we recommend:
- Authenticate the domain and verify alignment, not just DNS presence.
- Split transactional from marketing sending.
- Import consented contacts only.
- Warm up gradually, watching bounces and complaints per provider.
- Turn on automation last.
Our notes on our own email sending infrastructure cover how that stack is built. Tip: confirm your shop plugin is not rewriting the From address, which breaks DKIM alignment silently.
Sync Direction, Frequency and Conflict Rules
Decide the source of truth per field and write it down somewhere. The shop owns orders, products and account state. The email platform owns consent state, unsubscribes and suppression. Mix those ownerships and you get contacts that flip back and forth on every sync.
Unsubscribes must flow back to the shop. Without that return path, the next import resurrects someone who already walked away, and you have a complaint waiting. Deletion requests need to complete in both systems. A record removed in one place is not deleted. On WordPress the cleanest entry point is a form that writes consent at the moment of signup, which is what the signup form plugin for WordPress is for.
On frequency: full daily re-imports are simple and produce zombie contacts. Incremental webhook updates are lighter and far less prone to it. Where a connector cannot push unsubscribes back yet, that gap is worth naming rather than papering over. Ours is on the roadmap, not shipped.
A Minimal Integration That Works
The smallest useful setup holds five things: consented contacts, last order date, order value, product category and language. That covers the segments most shops actually send to - first-time buyers, repeat buyers, lapsed customers, category-based offers. Add a field when a specific campaign needs it. Remove it when the campaign ends.
This discipline pays twice. Segment queries stay fast because the tables stay narrow. Data requests stay answerable because you know what you hold without an audit.
Tip: run the integration in test mode against a hundred contacts before opening the full sync. Check the consent flags survived the mapping, the language field populated, and the unsubscribe path works end to end. Fixing a mapping error at a hundred records costs nothing. Fixing it at eighty thousand is a weekend.
Summary: Fewer Fields, Cleaner Sending
The split is simple. Sync what changes a sending decision. Skip what only changes your storage bill and your legal exposure. Two things stay non-negotiable: a consent record with timestamp and source, and unsubscribes syncing back to the shop. Everything else is negotiable per campaign.
Deliverability follows list quality more than platform choice. A careful sender on a modest platform beats a careless one on an expensive platform. Every time. Authentication gets you admitted to the conversation; behaviour keeps you there. Before you widen the field list, check whether the segmentation and automation tools you already have cover the campaign you had in mind.
Treat compliance as a product feature rather than a constraint. A consent record you can produce on demand is also the record that tells you which contacts are worth sending to. The legal requirement and the deliverability practice point the same way.


