The hosting decision you make before the connector decision
A Shopify merchant spent three months evaluating Odoo for their operations, chose a plan, and signed up for Odoo Online — the fully managed SaaS version. They then reached out to a Shopify Odoo connector vendor and asked to install the connector module inside their Odoo instance.
The answer was no. Odoo Online does not allow custom third-party modules to be installed. The connector in question was a native Odoo module that required installation inside Odoo. The merchant had to either switch to Odoo.sh or self-hosted, or find a connector that works via Odoo's external API without requiring module installation.
This is one of the most common and most expensive mistakes made when starting a Shopify Odoo integration. The Odoo hosting option you choose has direct consequences for what kind of connector you can use, what API capabilities are available, and how upgrades work.
This guide covers all three Odoo hosting options in detail, with specific focus on what each means for a Shopify integration.
---
The three-way Odoo hosting choice
Odoo Online
Odoo Online is Odoo's fully managed SaaS product. You get an Odoo instance at yourcompany.odoo.com with no servers to manage, automatic version updates, and a subscription price that includes hosting.
Key characteristics:
- Managed by Odoo S.A., not you or your IT team
- Automatic upgrades to new Odoo versions (semi-annual major releases)
- No access to the underlying server, filesystem, or database directly
- No ability to install custom Python modules or native Odoo addons that aren't published in Odoo's official App Store
- Access to Odoo's XML-RPC and JSON-RPC external API (same as the other hosting options)
- Automatic backups managed by Odoo
Odoo.sh
Odoo.sh is Odoo's PaaS (Platform-as-a-Service) hosting option. You get a managed hosting environment specifically designed for Odoo, but with the ability to deploy custom code.
Key characteristics:
- GitHub-based deployment workflow — your custom modules live in a GitHub repository
- Multiple environments: production, staging, and development branches
- Upgrade control — you decide when to upgrade, and Odoo.sh provides upgrade testing on staging before it touches production
- Full ability to install custom modules, including third-party Shopify connector modules
- Access to Odoo's external API
- Managed infrastructure, database, and backups
- More expensive than Odoo Online; cost scales with project complexity
Self-hosted Odoo (Community or Enterprise)
Self-hosted means you run Odoo on your own servers (on-premise or in a cloud provider like AWS, GCP, or Azure). You have full control over everything.
Key characteristics:
- Full server access — filesystem, database, Python environment, everything
- Install any module: official, third-party, or custom-built
- Full control over upgrade timing
- Responsible for your own backups, security patches, and infrastructure
- Can use Odoo Community Edition (free, fewer features) or Enterprise (paid license)
- Can configure network restrictions, VPNs, IP allowlisting
---
Odoo Online: what it means for your Shopify connector
What you can do
Odoo Online exposes the same XML-RPC and JSON-RPC external API as all other Odoo hosting options. This means a Shopify connector that operates purely via the external API — reading and writing Odoo records using standard model methods — works on Odoo Online without any modifications.
The API surface includes:
execute_kwfor create/read/write/unlink on any Odoo modelsearch_readfor querying records with domain filtersname_searchfor lookup by name- Server actions and workflow methods
For a Shopify connector, this means you can:
- Create sale orders, customers, products
- Update inventory quantities (via stock.quant or inventory adjustments)
- Read delivery orders and write tracking numbers
- Create invoices and credit notes
- Query any standard Odoo model
What you cannot do
You cannot install a custom Odoo module. This eliminates a category of connector architecture: connectors that install a native Odoo addon to add custom fields, custom models, background processing workers, or event hooks inside Odoo.
Specific things that require a module and therefore don't work on Odoo Online:
- Custom database fields on existing Odoo models (e.g., a
shopify_order_idfield onsale.order) - Custom background jobs or cron actions that run inside Odoo
- Odoo webhook outbound triggers implemented as module code
- Overrides to core Odoo business logic via module inheritance
For connectors that use custom fields to store Shopify identifiers (order ID, product ID, variant ID), Odoo Online requires a workaround. The most common approach is to use Odoo's existing ref field or origin field on models, or to store the Shopify ID in the website_published or other existing text fields that aren't used for other purposes. The cleaner approach is to maintain a mapping table on the connector side (not in Odoo), keyed by Odoo record ID and Shopify ID.
Automatic upgrades: the compatibility risk
Odoo Online upgrades your instance to new Odoo versions automatically — you get an email notification a few weeks in advance, but you don't control the timing precisely. This creates a compatibility risk for Shopify connectors.
If the connector relies on specific field names, API behaviors, or model structures that change between Odoo versions (as documented in the tax sync guide, for example), an automatic upgrade can break the connector without warning.
Mitigations: 1. Use a connector that explicitly supports version detection and adapts its API calls to the Odoo version 2. Test the connector against a staging Odoo Online environment before the upgrade hits production (Odoo Online provides a staging option) 3. Ensure your connector vendor has a policy of testing compatibility before major Odoo releases
Rate limits on Odoo Online
Odoo Online imposes rate limits on external API calls. The limits vary by plan (Odoo One, Standard, Custom Enterprise) but typically include:
- API call volume limits per hour/day
- Concurrent connection limits
- Session limits
These limits matter for Shopify connectors during high-volume operations: initial bulk imports of products or historical orders, large inventory reconciliation jobs, or high-frequency webhook processing during peak sale events.
If you are running a high-volume Shopify store (thousands of orders per day) on Odoo Online, verify that your connector's API call patterns fit within the plan's limits. The connector should batch API calls efficiently (reading multiple records per call using search_read with domain filters rather than one read per record).
---
Odoo.sh: what it means for your Shopify connector
Custom module support
Odoo.sh's primary advantage for Shopify connectors is the ability to install custom modules. This unlocks:
- Custom fields on Odoo models (store Shopify IDs natively in Odoo)
- Custom models for connector state management (sync logs, mapping tables) stored in the Odoo database
- Odoo-side cron jobs for periodic sync tasks
- Odoo-side event hooks (using
_computemethods,@api.model_create_multi, or model overrides) - Direct database access for bulk operations that the external API can't perform efficiently
A connector running on Odoo.sh can store its mapping tables (Shopify order ID → Odoo sale order ID) in the Odoo database using a custom shopify.sync.record model. This eliminates the need for an external database in the connector's own infrastructure.
Staging environments
Odoo.sh gives you GitHub-branch-based environments. Every push to a branch creates or updates a staging environment. This is extremely useful for:
- Testing connector updates before deploying to production
- Testing Odoo version upgrades before applying them to production (Odoo.sh creates an upgrade-test environment that you can run the connector against)
- Running development work without affecting live operations
For connector deployments, the recommended workflow on Odoo.sh:
1. Develop connector changes in a feature branch 2. Push to Odoo.sh staging → verify connector behavior 3. Merge to production branch → Odoo.sh deploys automatically
Upgrade control
Unlike Odoo Online, Odoo.sh gives you control over when you upgrade. You can accept a major version upgrade on your schedule, test it on staging first, and only upgrade production when you're confident.
The Odoo.sh upgrade process: 1. Odoo S.A. prepares an upgrade script for your database 2. Odoo.sh creates an upgrade-test branch with your data and the new Odoo version 3. You test your connector against the upgrade-test environment 4. When ready, you apply the upgrade to production
This upgrade control is the single biggest reason multi-warehouse or high-volume merchants should choose Odoo.sh over Odoo Online when running a complex Shopify integration.
Cost considerations
Odoo.sh pricing is based on the number of modules and workers (Odoo's term for worker processes). It is meaningfully more expensive than Odoo Online for equivalent functionality. Budget for:
- Odoo.sh project subscription
- Additional workers for background processing (important if your connector does heavy background sync)
- Storage costs for large product catalogs with images
---
Self-hosted Odoo: what it means for your Shopify connector
Maximum flexibility, maximum responsibility
Self-hosted gives you everything Odoo.sh gives you, plus:
- Direct database access (PostgreSQL)
- Ability to run background workers outside Odoo's process model
- Custom networking: VPN, private networking, IP allowlisting for the Shopify connector's API access
- No hard API rate limits imposed by Odoo (your own server is the limit)
- The ability to run Odoo Community Edition (no license cost)
- Full control over Odoo's configuration (
odoo.conf) including worker counts, limits, and timeouts
For large-scale Shopify integrations (millions of orders, very high SKU counts, complex multi-company setups), self-hosted is often the only viable option because:
1. You can tune Odoo's PostgreSQL database for the connector's access patterns 2. You can run background sync workers as separate processes that don't compete with user-facing Odoo requests 3. You can allocate dedicated server resources for peak sync loads
Networking implications
A self-hosted Odoo instance needs to be reachable from your Shopify connector (which may be a cloud service, or your own servers). This means:
- The Odoo server must have a stable hostname or IP
- Port 8069 (default Odoo HTTPS port) must be accessible from the connector
- If behind a VPN or firewall, the connector's IP must be allowed
For the reverse (Odoo calling Shopify or a webhook receiver), outbound HTTPS from the self-hosted server must also work. Ensure your firewall allows outbound connections to api.shopify.com and your connector's webhook endpoint.
The upgrade burden
Self-hosted Odoo upgrades are your responsibility. Major Odoo version upgrades (e.g., from 17 to 18) require:
1. Running Odoo's migration scripts 2. Upgrading custom modules to match the new API 3. Testing everything 4. Scheduling a maintenance window 5. Actually performing the upgrade
Many self-hosted merchants stay on the same Odoo major version for 2-3 years because upgrades are operationally complex. This creates a risk for Shopify connectors that rely on newer Odoo features — your connector vendor may drop support for older Odoo versions before you've had the chance to upgrade.
Set a policy: upgrade your self-hosted Odoo within 12 months of a new major release to avoid falling too far behind the connector's supported version matrix.
Odoo Community vs Enterprise
If you choose self-hosted, you also choose between Community Edition (free) and Enterprise Edition (paid license per user).
For Shopify integration purposes, the differences that matter:
| Feature | Community | Enterprise | |---------|-----------|------------| | Manufacturing (MRP) | Basic | Advanced | | Multi-company | Available | Better supported | | eCommerce | Available | Better supported | | Website Builder | Available | More features | | Accounting (full) | Available | Better localization | | EDI | Via third-party module | Better native support |
Most merchants running a Shopify integration need the Enterprise edition if they are also using Odoo for accounting, manufacturing, or have multiple companies. Community edition is viable for order/inventory-only integrations on a budget.
---
API surface comparison: which calls work where
This table summarizes the API behaviors across the three hosting options:
| Capability | Odoo Online | Odoo.sh | Self-hosted | |-----------|-------------|---------|-------------| | XML-RPC / JSON-RPC external API | Yes | Yes | Yes | | Custom Odoo module install | No | Yes | Yes | | Custom fields via module | No | Yes | Yes | | Direct database access (psql) | No | No (via staging only) | Yes | | Odoo-side cron jobs | Limited (system crons only) | Yes (via module) | Yes | | Custom Odoo models | No | Yes | Yes | | Server-side event hooks | No | Yes | Yes | | API rate limits | Yes (plan-based) | Looser | Server-limited |
---
Module install constraints: the "no module required" question
A subset of Shopify Odoo connectors require no Odoo module installation. They operate purely via the external API. These connectors:
- Maintain all connector state (sync logs, mapping tables, configuration) in the connector's own database, not in Odoo
- Use existing Odoo fields to store Shopify identifiers (the
originfield on sale orders is commonly used for the Shopify order name, e.g.,#1234) - Do not add custom fields or models to Odoo
These "no module" connectors work on all three hosting options, including Odoo Online.
Trade-offs of the no-module approach:
Advantages:
- Works on all Odoo hosting options
- No module compatibility concerns during Odoo version upgrades
- Simpler deployment
Disadvantages:
- Odoo-side visibility is limited (you can't see sync status in Odoo's interface)
- Mapping data lives outside Odoo — if your connector database is lost, the mapping is lost
- No Odoo-side event hooks — detecting changes in Odoo requires polling
- Less efficient for large-scale operations (can't use Odoo-side computed fields)
Synco Connector is built on the no-module approach, which is why it works on all three hosting options including Odoo Online.
---
Cost comparison
Rough monthly cost ranges (2026 estimates, varies by user count and plan):
| Hosting | Base cost | Per-user cost | Notes | |---------|-----------|---------------|-------| | Odoo Online | $24–$96/month | $24–$48/user/month | Includes hosting | | Odoo.sh | $79–$200/month | $24–$48/user/month | Includes hosting + Git workflow | | Self-hosted (cloud) | $50–$500/month (server) | Enterprise license required | AWS/GCP/Azure server + license | | Self-hosted (on-prem) | Hardware cost | Enterprise license required | Own hardware + license |
For a 10-user team:
- Odoo Online: ~$340–$580/month
- Odoo.sh: ~$320–$680/month
- Self-hosted (cloud): ~$200–$980/month (depends heavily on server sizing)
The cost differential between Odoo Online and Odoo.sh is smaller than most people expect. The main driver of self-hosted cost is whether you already have server infrastructure and technical staff to maintain it.
---
Upgrade path implications: connector compatibility across version bumps
Each major Odoo version changes something that affects Shopify connectors (see the detailed tax sync guide for version-specific changes). When you upgrade Odoo, you need to verify connector compatibility.
Odoo Online upgrade path
1. Odoo notifies you of an upcoming upgrade 2. You test your Shopify connector against the staging version (if Odoo Online provides one for your plan) 3. Upgrade happens automatically on Odoo's schedule 4. You test again and fix any issues
The risk: no upgrade control means you may not catch compatibility issues until after production is upgraded.
Odoo.sh upgrade path
1. Odoo.sh creates a staging upgrade environment 2. You test your connector against the upgrade environment 3. You upgrade production when ready (within Odoo.sh's upgrade window) 4. You test production after upgrade
This is the safest path for complex connectors.
Self-hosted upgrade path
1. You set up a test environment with the new Odoo version and your data 2. You test your connector 3. You schedule a maintenance window and upgrade production 4. Full control, full responsibility
---
Migration scenarios: moving between hosting options
Odoo Online to Odoo.sh
Common reason: starting with Odoo Online and wanting custom modules later.
1. Request a database export from Odoo Online (GDPR-compliant export is available) 2. Create an Odoo.sh project 3. Import the database export to Odoo.sh 4. Install any additional modules you want 5. Update your connector configuration to point at the new Odoo.sh URL
Timeline: typically 1-2 days of technical work plus 1-2 weeks of testing.
Odoo.sh to self-hosted
Common reason: outgrowing Odoo.sh's constraints or wanting dedicated server resources.
1. Export database from Odoo.sh (direct PostgreSQL dump available) 2. Set up your own server with matching Odoo version 3. Import database 4. Install all modules from your GitHub repository 5. Reconfigure outbound networking and DNS 6. Update connector configuration
Timeline: typically 1-3 days of technical work.
Self-hosted to Odoo Online
Common reason: reducing operational overhead.
Warning: If you have custom modules installed on self-hosted that are not approved for Odoo Online, those modules must be removed. All custom fields added by those modules, and all data in custom models, must be migrated to other storage before moving.
This is often the most complex migration. Do a thorough audit of every custom module before planning this transition.
---
The connector that works on all three: requirements
A Shopify connector that works reliably on Odoo Online, Odoo.sh, and self-hosted must meet all of these requirements:
1. No Odoo module installation required. All connector logic runs in the connector's own infrastructure, not inside Odoo.
2. External API only. The connector must only use the XML-RPC or JSON-RPC API, never direct database access.
3. Odoo version detection. The connector must detect the Odoo version at startup and adapt its API calls to match.
4. Configurable field mapping. Where the connector needs to store Shopify identifiers in Odoo fields, those fields should be configurable (not hardcoded to a custom field that might not exist on Odoo Online).
5. Efficient API usage. The connector must batch its API calls to stay within Odoo Online's rate limits.
6. No assumptions about installed modules. The connector should not depend on modules being installed (e.g., delivery_ups, account_accountant) — it should check for the existence of models before calling them.
Synco Connector is designed to these requirements. It works on Odoo Online, Odoo.sh, and self-hosted Community and Enterprise editions without any Odoo-side module installation.
---
Summary
The Odoo hosting choice has direct consequences for your Shopify integration:
- Odoo Online: works with API-only connectors, no custom modules, automatic upgrades create compatibility risk
- Odoo.sh: supports custom modules and has upgrade control — the best balance of managed hosting and flexibility for complex integrations
- Self-hosted: maximum control, highest operational overhead, no API rate limits — best for very high-volume or complex multi-company setups
Before choosing a Shopify Odoo connector, confirm that the connector supports your Odoo hosting option — specifically, whether it requires a module install that Odoo Online won't allow.
Install Synco Connector from the Shopify App Store — it works on all three Odoo hosting options without requiring an Odoo module install. See also our Odoo Online connector guide, Odoo.sh connector guide, self-hosted connector guide, and the no-module connector overview.