Etsy Store Management
This is the installation and configuration guide for Etsy Store Management, the module you downloaded from your ECOSIRE dashboard. Everything on this page describes the etsy_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.
| Technical name | etsy_store_management |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.2.1.0, 18.0 → 18.0.2.1.0, 19.0 → 19.0.2.2.0 |
| Price | $499 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 (no activation key, no licence client) |
| Category | Connector |
The module installs and runs standalone on all three Odoo versions, with no activation key and no licence client. Each Odoo major version is its own build: buy and download the one for the version you run.
Requirements
| Requirement | Detail |
|---|---|
| Odoo | 17.0, 18.0 or 19.0, Community or Enterprise. Self-hosted or Odoo.sh — Odoo Online (SaaS) cannot install third-party modules |
| Odoo apps | base, sale_management, stock, account, delivery, mail, web, product, contacts — Odoo installs any that are missing |
| ECOSIRE dependency | None. The module installs and runs on its own. |
| Python packages | requests |
| Platform account | An Etsy account with API access |
| Licence | None required — the module is OPL-1 and needs no key or activation |
Install the Python packages into the same interpreter that runs Odoo:
sudo -u odoo pip install requests
Installation
1. Download the ZIP for your Odoo version
Download the ZIP for the Odoo series you run from your ecosire.com dashboard or the Odoo App Store listing.
2. Extract into your addons path
unzip etsy_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/etsy_store_management/__manifest__.py # sanity check
The module must end up as a single top-level etsy_store_management/ directory with __manifest__.py directly inside it. If your ls check fails, the folder landed one level too deep or too shallow — move it so the path above resolves.
3. Restart Odoo and install
sudo systemctl restart odoo
- Go to Apps and click Update Apps List (developer mode must be on).
- Search for Etsy Store Management and click Install.
- Odoo pulls in the Odoo apps listed above automatically.
When the install finishes, a Etsy menu appears in the main Odoo app switcher.
Configuration
Connect to Etsy
Create a connection record on the etsy.configuration model. The fields the module defines for the connection are:
| Field | Technical name | Type | Required |
|---|---|---|---|
| Configuration Name | name | Char | Yes |
| API Key (Keystring) | api_key | Char | Yes |
| Client Secret (Shared Secret) | client_secret | Char | Yes |
| Company | company_id | Many2one | Yes |
| Access Token | access_token | Char | No |
| Refresh Token | refresh_token | Char | No |
| Shop ID | shop_id | Char | No |
| Etsy URL | etsy_url | Char | No |
| Marketplace | marketplace | Char | No |
The fields marked Yes are enforced by the model — Odoo will not let you save the record without them. The technical name is the reliable identifier if your screen wording differs.
The same record carries 7 behaviour checkboxes — sync_products, sync_orders, sync_customers, sync_inventory, auto_sync_products, auto_sync_orders, auto_sync_customers. They gate what the module is allowed to do automatically once it is connected. Leave anything you are not ready for switched off, and turn them on one at a time.
The module's own source contacts these hosts: www.etsy.com, api.etsy.com, developers.etsy.com, openapi.etsy.com. Your firewall must allow outbound HTTPS to them.
Scheduled actions
The module installs 6 scheduled actions (Settings → Technical → Scheduled Actions):
| Scheduled action | Runs every | Enabled on install |
|---|---|---|
| etsy: Sync Products | 1 hour | Yes |
| etsy: Sync Orders | 30 minutes | Yes |
| etsy: Sync Customers | 6 hours | Yes |
| etsy: Sync Inventory | 15 minutes | Yes |
| etsy: Test Connection | 1 day | Yes |
| etsy: Cleanup Old Logs | 1 day | Yes |
Intervals above are the shipped defaults. Adjust them to your volume — but be aware that the platform, not Odoo, sets the API rate limits, and shortening a sync interval is the usual cause of throttling errors in the logs.
Webhook and API endpoints your server exposes
These are the HTTP routes this module adds to your Odoo instance. Only the public ones are reachable without an Odoo login.
| Endpoint | Auth | Purpose |
|---|---|---|
/etsy/webhook | public | Webhook receiver — see the note below; Etsy has no webhook push, so it rejects every delivery |
/etsy/api/status | logged-in user | connection and sync status read by the dashboard |
/etsy/api/sync | logged-in user | triggers a sync from the dashboard |
/etsy/dashboard/data | logged-in user | dashboard KPI data |
/etsy/webhook is closed in this build — sync runs on the scheduled actionsThe route exists and is publicly reachable, but it fails closed: etsy.webhook._verify_signature() rejects every delivery and the endpoint answers HTTP 403. Etsy Open API v3 has no webhooks at all — receipts and listings must be polled — so no inbound payload to this route could be authentic. The module will not process an unauthenticated payload, so there is nothing to register in your Etsy seller portal today — there is no Etsy-side webhook setting to fill in. Leave the scheduled actions above enabled; they are how this build stays current.
Using the module
The module's menu is laid out as:
- Etsy → Dashboard
- Etsy → Orders
- Etsy → Receipts (Shadow)
- Etsy → Products
- Etsy → Listings (Shadow)
- Etsy → Customers
- Etsy → Buyers (Shadow)
- Etsy → Operations — Import Wizard, Export Wizard, Mapping Wizard, Test Connection, Logs, Reports
- Etsy → Compliance & Finance — Settlements, Refunds, Returns / Cases, Risk Scores, DAC7 (EU), Analytics
- Etsy → Configuration — Settings, Shop Sections, Production Partners, Carriers, Workflows, Auto-Workflow Rules
A normal first run is:
- Save the connection record and confirm the module reports a successful connection before importing anything.
- Review the mapping records so imported data lands on the right Odoo records.
- Run a small import first — restrict it by date or by a handful of products — and check the results before letting the scheduled actions take over.
- Watch the log records during the first full sync. Failures are recorded there rather than raised at the user.
Troubleshooting
Syncing
| Symptom | Cause and fix |
|---|---|
| The connection will not validate | Re-check every required field in the table above. Most failures are a mistyped secret, or credentials created for a sandbox while the module points at production (or vice-versa). |
| Nothing syncs even though the connection is fine | The scheduled actions are disabled at the Odoo level, or Odoo's cron worker is not running. Check Settings → Technical → Scheduled Actions and that --max-cron-threads is greater than zero. |
| Sync starts then stops part-way | Read the module's log records for that run. Rate limiting and rejected field values are the two common causes; both are logged with the platform's own error text. |
| Records import but map to the wrong Odoo values | Fix the mapping records under the module's configuration, then re-run the import. |
| Duplicated products or customers | Run the initial import once. If a first attempt half-finished, check the existing records before re-running rather than importing on top. |
Version history
| Odoo version | Version you download today |
|---|---|
| 17.0 | 17.0.2.1.0 |
| 18.0 | 18.0.2.1.0 |
| 19.0 | 19.0.2.2.0 |
ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.2.2.0 is the Odoo 19 build of module version 2.2.0. Your installed version is shown in Apps.