Skip to main content
Odoo Community Association

Shopify Connector

Beta License: AGPL-3 OCA/connector-shopify Translate me on Weblate Try me on Runboat

The core Shopify connector links any number of Shopify stores to Odoo 19 Community through company-scoped binding records. It synchronizes products, inventory, customers, orders, returns, refunds, and fulfillment through the GraphQL Admin API.

Signed webhooks provide the fast path, OCA queue_job provides durable execution, and scheduled reconciliation repairs missed or delayed events. Onboarding, health checks, a sync dashboard, error recovery, and configurable retention support day-to-day operation.

Table of contents

Configuration

Shopify app

Since January 1, 2026, Shopify no longer lets merchants create legacy custom apps from the Shopify admin. Create the app in the Shopify Dev Dashboard:

  1. Open the Dev Dashboard of the organization that owns the store. Odoo gets its access tokens with the client credentials grant, which only works when the app and the store belong to the same organization. Owning the store or installing the app on it is not enough. For a test store, create it from the Dev stores page of that same Dev Dashboard.

  2. Create the app and fill in its version. The connector has no page in the Shopify admin and never sends users through Shopify’s authorization pages, so:

    • App URL: https://shopify.dev/apps/default-app-home, the default Shopify gives for apps that are not embedded.

    • Embed app in Shopify admin: unchecked.

    • Allowed redirection URL(s): none. If Shopify asks for one, enter the App URL again.

    • Use legacy install flow: unchecked, so that installing the app grants the scopes selected on the version. With the legacy flow the app would have to request them itself, which the connector cannot do.

    • Webhooks: none. Odoo creates its own subscriptions during onboarding.

    • Webhooks API version: 2026-01, the Admin API version the connector uses. Shopify writes the payloads of the subscriptions Odoo creates in this version.

    • Scopes: read_customers, write_customers, read_draft_orders, read_fulfillments, read_inventory, write_inventory, read_locations, read_merchant_managed_fulfillment_orders, write_merchant_managed_fulfillment_orders, read_orders, read_products, write_products and read_returns. To import orders older than 60 days, also select read_all_orders, which Shopify may have to approve.

  3. Release the version and install the app on the store. After a later scope change, release a new version and approve the change on the store.

  4. Copy the client ID and the client secret from the app’s Settings page.

The app must have access to protected customer data: names, addresses, emails and phone numbers. For merchant-created apps this depends on the store’s plan, and the Basic plan does not include it. Without it, Shopify refuses some of the order webhooks and the order and customer imports fail.

A legacy custom app created before 2026 keeps working. Leave the client ID empty and enter the app’s Admin API access token and API secret key instead.

Odoo

  1. Add OCA queue_job and this repository to the Odoo addons path, then install Shopify Connector.

  2. Grant operators the Shopify Manager group. The administrator gets it on install.

  3. Set the web.base.url system parameter to a public HTTPS address of Odoo, and set web.base.url.freeze to True so that it does not change when an administrator logs in from another address. Shopify sends its webhooks to <web.base.url>/shopify/webhook/<instance id> and downloads exported product images from the same address.

  4. Open Shopify > Configuration > Instances and click Start Onboarding:

    • Credentials: enter the <store>.myshopify.com domain, the client ID and the client secret, then Test Connection. Odoo requests the access token and renews it before it expires, every 24 hours. The client secret also verifies the webhook signatures.

    • API Scopes: add any missing scope to a new app version, release it, approve the change on the store and check again.

    • Map the Shopify locations, review the generated tax mappings, choose the synchronization policies, install the webhooks and queue the initial imports.

  5. Review the payment-gateway and carrier mappings before enabling unattended order and fulfillment processing.

Jobs run on the root.shopify.import, root.shopify.export and root.shopify.webhook channels. Add queue_job to the server-wide modules, after the Odoo defaults base,rpc,web, and give each channel a capacity in odoo.conf, for example:

[options]
server_wide_modules = base,rpc,web,queue_job

[queue_job]
channels = root:4,root.shopify.import:2,root.shopify.export:1,root.shopify.webhook:1

Usage

Use Shopify > Dashboard to monitor binding states, queue backlog, recent errors, webhook health, drift schedules, and operational table sizes.

Normal changes flow through webhooks and idempotent jobs. Use the entity import or reconcile actions for manual catch-up. For failures, correct the underlying configuration or data, select error bindings, and choose Retry Failed Shopify Bindings. Resetting to pending clears the state without scheduling work.

Run Check Webhooks after changing domains or credentials and repair any missing or misrouted subscriptions. Never edit Shopify IDs or raw payloads.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.

Credits

Authors

  • Sawir Studio

Contributors

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

This module is part of the OCA/connector-shopify project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Metadata

Release files for odoo-addon-shopify-connector 19.0.1.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for odoo-addon-shopify-connector 19.0.1.0.7
File Interpreter ABI Platform
odoo_addon_shopify_connector-19.0.1.0.7-py3-none-any.whl Python 3 none any Details

Release files / odoo_addon_shopify_connector-19.0.1.0.7-py3-none-any.whl

Download URL odoo_addon_shopify_connector-19.0.1.0.7-py3-none-any.whl
Size 303.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
929bffd57ced941dacbbe13645c8c6a8ce0e911f43b6bb0ca2f140a6c13341c4
BLAKE2b-256 checksum
How to use checksums
59caf170397acbeabee1640deada34d596314ca768e057d866bbee4e2d35a106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Security for odoo-addon-shopify-connector 19.0.1.0.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page