User guide
How to use Shopify Connector Pro, screen by screen.
Everything the connector does runs as a job (Shopify > Operations > Jobs) with its attempts, its result in words, and - when a person is needed - what to do. When it cannot be sure, it opens a conflict (Operations > Conflicts) instead of guessing; resolving the conflict runs the job again.
Orders from Shopify
- Arrive by webhook (and can be imported one by one from the shop form). Twenty deliveries of one order make one Odoo order; an older version never overwrites a newer one.
- Lines, shipping, discounts (as their own lines, with the discounted line's taxes) and taxes (through the tax mapping). The order is confirmed automatically only when Odoo's total equals Shopify's to the cent; otherwise it stays a quotation with a totals conflict.
- Payment is shown on the order as paid, partly paid, authorised, pending, cash on delivery, refunded or voided. Only paid is money received. Per gateway (Orders tab), orders can be invoiced on import and, when paid, have their payment registered in a journal you choose.
- Markets (when on): the order's shipping country picks the market, which sets pricelist, fiscal position, sales team and warehouse. A country two markets claim stops for a decision.
- Channels: each source (web, POS, an app) is listed as it appears; give it an analytic account, or exclude it - its orders are then skipped with the reason in the job.
- Other currencies: an order in another currency is held on a pricelist in that currency.
- Gift cards sold are imported on the gift-card product you set (give it a liability account); without one, such an order waits and says why.
- Orders already fulfilled in Shopify when imported are not shipped again from Odoo.
Stock and shipping (inventory bridge)
- Send stock now or a schedule: Odoo's sellable quantity per mapped location, minus orders Shopify took that Odoo has not imported yet, minus a safety buffer, times the shop's share. Each write is compare-and-set: a sale in between is re-read, never overwritten.
- Shopify-run locations (authority Shopify's counts become Odoo's): Take Shopify counts or a daily schedule enters Shopify's on-hand quantities as Odoo inventory counts - waiting in Inventory > Physical Inventory for a person, or applied at once if you choose.
- Validating a delivery marks exactly the shipped units fulfilled in Shopify, with the tracking number; a tracking number typed in later is sent as an update. The buyer is emailed only if you turn that on.
Refunds and cancellations
- A refund made in Shopify becomes a credit note against the invoice (a draft unless you choose to post it, and only when it matches Shopify's amount). Goods come back only if Shopify's restock type says so.
- Refund in Shopify and Cancel in Shopify from the Odoo order: sent once even if the answer is lost; refunds need the accounting role and match Shopify's own suggested amount.
Payouts
Turn on on the Payouts tab with a journal and four accounts. Each paid Shopify Payments payout becomes one posted entry: net to the destination (your bank's outstanding receipts), fees to the fee account, charges and refunds reconciled with the orders' open invoices and credit notes, everything else on the clearing account. A difference Shopify does not explain is booked and opened as a conflict.
Exporting from Odoo
Actions menu > Export to Shopify on contacts, sales orders and products (Export tab first):
- Contacts are matched to an existing Shopify customer by email or phone before anything is created.
- Orders go as draft orders with payment terms, are checked against Odoo's total, completed, and linked - so shipping and refunds work on them. The buyer is not charged or emailed. Orders from Shopify are never sent back.
- Products are created once (as drafts by default) and then updated field by field according to who owns each field; variants added in Shopify are never removed.
Who owns a field
For product name, price and barcode, choose on the Products tab: Shopify, Odoo, or whoever changed it. With the last, a field both sides changed since the last sync becomes a conflict and neither is overwritten.
Metafields, languages, segments
- Metafields (Metafields & languages tab): map a metafield to an Odoo field, one direction each. Imports write only custom fields (x_...) and a few descriptive ones.
- Translations: list the shop's languages, match them to Odoo's, choose a direction.
- Segments: list them, tick follow; the segment keeps a contact tag of its own in step.
Reports and health
- Health tab: live counts of what needs a person.
- Shopify > Reporting > Shopify sales (Sales Analysis by shop, market and channel) and Order profitability (revenue, refunds, cost at refresh time, real Shopify fees; definitions on the report).
- Download support bundle (Setup tab): a redacted file to send us when you need help.