{"id":"c86ef6be-e0cd-493f-8830-7a8770ef61e1","shortId":"UNGJLZ","kind":"skill","title":"odoo-shopify-integration","tagline":"Connect Odoo with Shopify: sync products, inventory, orders, and customers using the Shopify API and Odoo's external API or connector modules.","description":"# Odoo ↔ Shopify Integration\n\n## Overview\n\nThis skill guides you through integrating Odoo with Shopify — syncing your product catalog, real-time inventory levels, incoming orders, and customer data. It covers both using the official Odoo Shopify connector (Enterprise) and building a custom integration via Shopify REST + Odoo XMLRPC APIs.\n\n## When to Use This Skill\n\n- Selling on Shopify while managing inventory in Odoo.\n- Automatically creating Odoo sales orders from Shopify purchases.\n- Keeping Odoo stock levels in sync with Shopify product availability.\n- Mapping Shopify product variants to Odoo product templates.\n\n## How It Works\n\n1. **Activate**: Mention `@odoo-shopify-integration` and describe your sync scenario.\n2. **Design**: Receive the data flow architecture and field mapping.\n3. **Build**: Get code snippets for the Shopify webhook receiver and Odoo API caller.\n\n## Data Flow Architecture\n\n```\nSHOPIFY                          ODOO\n--------                         ----\nProduct Catalog <──────sync──────  Product Templates + Variants\nInventory Level <──────sync──────  Stock Quants (real-time)\nNew Order       ───────push──────> Sale Order (auto-confirmed)\nCustomer        ───────push──────> res.partner (created if new)\nFulfillment     <──────push──────  Delivery Order validated\n```\n\n## Examples\n\n### Example 1: Push an Odoo Sale Order for a Shopify Order (Python)\n\n```python\nimport xmlrpc.client, requests\n\n# Odoo connection\nodoo_url = \"https://myodoo.example.com\"\ndb, uid, pwd = \"my_db\", 2, \"api_key\"\nmodels = xmlrpc.client.ServerProxy(f\"{odoo_url}/xmlrpc/2/object\")\n\ndef create_odoo_order_from_shopify(shopify_order):\n    # Find or create customer\n    partner = models.execute_kw(db, uid, pwd, 'res.partner', 'search_read',\n        [[['email', '=', shopify_order['customer']['email']]]],\n        {'fields': ['id'], 'limit': 1}\n    )\n    partner_id = partner[0]['id'] if partner else models.execute_kw(\n        db, uid, pwd, 'res.partner', 'create', [{\n            'name': shopify_order['customer']['first_name'] + ' ' + shopify_order['customer']['last_name'],\n            'email': shopify_order['customer']['email'],\n        }]\n    )\n\n    # Create Sale Order\n    order_id = models.execute_kw(db, uid, pwd, 'sale.order', 'create', [{\n        'partner_id': partner_id,\n        'client_order_ref': f\"Shopify #{shopify_order['order_number']}\",\n        'order_line': [(0, 0, {\n            'product_id': get_odoo_product_id(line['sku']),\n            'product_uom_qty': line['quantity'],\n            'price_unit': float(line['price']),\n        }) for line in shopify_order['line_items']],\n    }])\n    return order_id\n\ndef get_odoo_product_id(sku):\n    result = models.execute_kw(db, uid, pwd, 'product.product', 'search_read',\n        [[['default_code', '=', sku]]], {'fields': ['id'], 'limit': 1})\n    return result[0]['id'] if result else False\n```\n\n### Example 2: Shopify Webhook for Real-Time Orders\n\n```python\nfrom flask import Flask, request\napp = Flask(__name__)\n\n@app.route('/webhook/shopify/orders', methods=['POST'])\ndef shopify_order_webhook():\n    shopify_order = request.json\n    order_id = create_odoo_order_from_shopify(shopify_order)\n    return {\"odoo_order_id\": order_id}, 200\n```\n\n## Best Practices\n\n- ✅ **Do:** Use Shopify's **webhook system** for real-time order sync instead of polling.\n- ✅ **Do:** Match products using **SKU / Internal Reference** as the unique key between both systems.\n- ✅ **Do:** Validate Shopify webhook HMAC signatures before processing any payload.\n- ❌ **Don't:** Sync inventory from both systems simultaneously without a \"master system\" — pick one as the source of truth.\n- ❌ **Don't:** Use Shopify product IDs as the key — use SKUs which are stable across platforms.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["odoo","shopify","integration","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-odoo-shopify-integration","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/odoo-shopify-integration","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34666 github stars · SKILL.md body (4,050 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T06:51:42.026Z","embedding":null,"createdAt":"2026-04-18T21:41:55.403Z","updatedAt":"2026-04-23T06:51:42.026Z","lastSeenAt":"2026-04-23T06:51:42.026Z","tsv":"'/webhook/shopify/orders':394 '/xmlrpc/2/object':226 '0':260,315,316,369 '1':117,193,256,366 '2':129,218,376 '200':419 '3':139 'across':494 'activ':118 'api':18,23,74,151,219 'app':390 'app.route':393 'architectur':135,155 'ask':529 'auto':178 'auto-confirm':177 'automat':88 'avail':105 'best':420 'boundari':537 'build':65,140 'caller':152 'catalog':43,159 'clarif':531 'clear':504 'client':304 'code':142,361 'confirm':179 'connect':5,209 'connector':25,62 'cover':55 'creat':89,183,228,237,271,288,299,406 'criteria':540 'custom':14,52,67,180,238,251,275,280,286 'data':53,133,153 'db':213,217,242,267,295,354 'def':227,345,397 'default':360 'deliveri':188 'describ':125,508 'design':130 'els':264,373 'email':248,252,283,287 'enterpris':63 'environ':520 'environment-specif':519 'exampl':191,192,375 'expert':525 'extern':22 'f':223,307 'fals':374 'field':137,253,363 'find':235 'first':276 'flask':386,388,391 'float':332 'flow':134,154 'fulfil':186 'get':141,319,346 'guid':33 'hmac':455 'id':254,258,261,292,301,303,318,322,344,349,364,370,405,416,418,485 'import':205,387 'incom':49 'input':534 'instead':434 'integr':4,29,36,68,123 'intern':442 'inventori':11,47,85,164,464 'item':341 'keep':96 'key':220,447,488 'kw':241,266,294,353 'last':281 'level':48,99,165 'limit':255,365,496 'line':314,323,328,333,336,340 'manag':84 'map':106,138 'master':471 'match':438,505 'mention':119 'method':395 'miss':542 'model':221 'models.execute':240,265,293,352 'modul':26 'myodoo.example.com':212 'name':272,277,282,392 'new':172,185 'number':312 'odoo':2,6,20,27,37,60,72,87,90,97,111,121,150,157,196,208,210,224,229,320,347,407,414 'odoo-shopify-integr':1,120 'offici':59 'one':474 'order':12,50,92,173,176,189,198,202,230,234,250,274,279,285,290,291,305,310,311,313,339,343,383,399,402,404,408,412,415,417,432 'output':514 'overview':30 'partner':239,257,259,263,300,302 'payload':460 'permiss':535 'pick':473 'platform':495 'poll':436 'post':396 'practic':421 'price':330,334 'process':458 'product':10,42,104,108,112,158,161,317,321,325,348,439,484 'product.product':357 'purchas':95 'push':174,181,187,194 'pwd':215,244,269,297,356 'python':203,204,384 'qti':327 'quant':168 'quantiti':329 'read':247,359 'real':45,170,381,430 'real-tim':44,169,380,429 'receiv':131,148 'ref':306 'refer':443 'request':207,389 'request.json':403 'requir':533 'res.partner':182,245,270 'rest':71 'result':351,368,372 'return':342,367,413 'review':526 'safeti':536 'sale':91,175,197,289 'sale.order':298 'scenario':128 'scope':507 'search':246,358 'sell':80 'shopifi':3,8,17,28,39,61,70,82,94,103,107,122,146,156,201,232,233,249,273,278,284,308,309,338,377,398,401,410,411,424,453,483 'signatur':456 'simultan':468 'skill':32,79,499 'skill-odoo-shopify-integration' 'sku':324,350,362,441 'skus':490 'snippet':143 'sourc':477 'source-sickn33' 'specif':521 'stabl':493 'stock':98,167 'stop':527 'substitut':517 'success':539 'sync':9,40,101,127,160,166,433,463 'system':427,450,467,472 'task':503 'templat':113,162 'test':523 'time':46,171,382,431 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':512 'truth':479 'uid':214,243,268,296,355 'uniqu':446 'unit':331 'uom':326 'url':211,225 'use':15,57,77,423,440,482,489,497 'valid':190,452,522 'variant':109,163 'via':69 'webhook':147,378,400,426,454 'without':469 'work':116 'xmlrpc':73 'xmlrpc.client':206 'xmlrpc.client.serverproxy':222","prices":[{"id":"6a351654-792c-410f-9453-a7a3fb9f3dd6","listingId":"c86ef6be-e0cd-493f-8830-7a8770ef61e1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:41:55.403Z"}],"sources":[{"listingId":"c86ef6be-e0cd-493f-8830-7a8770ef61e1","source":"github","sourceId":"sickn33/antigravity-awesome-skills/odoo-shopify-integration","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/odoo-shopify-integration","isPrimary":false,"firstSeenAt":"2026-04-18T21:41:55.403Z","lastSeenAt":"2026-04-23T06:51:42.026Z"}],"details":{"listingId":"c86ef6be-e0cd-493f-8830-7a8770ef61e1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"odoo-shopify-integration","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34666,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"b52e013c7d458db4a54e6523edb38149887eb495","skill_md_path":"skills/odoo-shopify-integration/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/odoo-shopify-integration"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"odoo-shopify-integration","description":"Connect Odoo with Shopify: sync products, inventory, orders, and customers using the Shopify API and Odoo's external API or connector modules."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/odoo-shopify-integration"},"updatedAt":"2026-04-23T06:51:42.026Z"}}