The module that publishes products to Shopify from the EAN, keeps price and inventory up to date on every re-sync, applies SKU and tags — and stops for review whenever you want.
Last updated: September 2, 2026
Sync Engine is the third stage of the pipeline (Collect → Enrich → Deliver). Once products have been collected and enriched, it creates or updates each one in your Shopify store and runs a post-processing pass for SKU, tags, and price.
For each product, it:
Writes are limited to ~2 per second to respect Shopify's rate limit.
Under Stores → Connect a new store, enter your .myshopify.com domain and complete the OAuth authorization on Shopify. When you return:
Your plan defines how many stores you can connect: Trial 1 · Flex/Advantage 5 · Enterprise no practical limit.
write_inventory). Stores connected before this update need to reconnect once to grant it — new stores already come with it.
The EAN is the key: it's what Trinis uses to decide between creating and updating, and it's what prevents duplicate products across re-syncs. Products without a valid EAN never make it to this stage (they're discarded in Collect).
| Shopify field | What it receives |
|---|---|
| Title | The name collected from the supplier. |
| Description (body) | The description rewritten by Enrich (or the original, if AI Enricher isn't active). |
| Supplier / vendor | The Brand name configured for the supplier. |
| Status | active. |
| Barcode | The EAN. |
| Inventory | The supplier's quantity, when their platform exposes it (see below). Managed by Shopify. |
| Images (creation only) | Up to 5: images processed by Image AI when the module is active; otherwise, the original images collected from the supplier. |
When Sync Engine finds a product that already exists (same EAN), it updates it — without duplicating. What changes and what doesn't change on a re-sync:
| Field | Creation | Re-sync |
|---|---|---|
| Title, description, supplier | ✓ | ✓ |
| Price and "compare-at" price | ✓ | ✓ (recalculated — see Pricing rules) |
| Inventory | ✓ | ✓ — only for VTEX, Nuvemshop, and WooCommerce (API) suppliers |
| Images and manual curation | ✓ | ✗ — preserved |
Suppliers on other platforms (public Shopify sites, sites read by AI) and products coming from Import don't carry an inventory quantity — for these, the field stays as it is in the store.
Price goes through two stages:
The pricing step recalculates from the inventory cost registered in Shopify (the variant's cost per item field):
These run automatically after publishing.
Generates an SKU for every variant that doesn't already have one — it never overwrites. The SKU comes from the title: Tramontina 5-Piece Knife Set → TRA-5-PIE-KNI-SET (first 3 letters of each word, whole numbers kept as-is).
Generates SEO tags from the words and word pairs in the title, the supplier, and the product type (plus seed keywords, when available). They're normalized to Title Case and capped at 50 per product.
Under Settings → Schedule, the "Approval before applying" toggle holds back every write to Shopify. With it on:
pending_approval status with the list of changes already calculated.Each supplier can have a Sync schedule (a cron expression). The scheduler checks every 5 minutes and triggers the full pipeline — collection, enrichment, and publishing. If a scheduled run hits the plan's product limit, that supplier's sync is paused and resumes once you have quota again. Cron details are in Configuring Collect.
Every job records the products it changed and takes a snapshot before writing. The job page has a revert button that undoes only the products from that job. History and point-in-time restore depend on the Backup add-on.
Products not showing up in your store, or price came out different than expected? Talk to us.
Contact support