{"id":356997,"date":"2026-09-01T15:48:18","date_gmt":"2026-09-01T15:48:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/leela-partner\/"},"modified":"2026-09-02T08:36:34","modified_gmt":"2026-09-02T08:36:34","slug":"luumtech-inventory-sync-for-leela","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/luumtech-inventory-sync-for-leela\/","author":23552890,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.4","stable_tag":"1.2.4","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Inventory Sync for Leela Cotton","header_author":"Luumtech","header_description":"Keeps WooCommerce stock in step with the Leela wholesale catalogue, matched on EAN. Published by Luumtech; not an official Leela Cotton product.","assets_banners_color":"9da3ae","last_updated":"2026-09-02 08:36:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.luumtech.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":77,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"luumtech","date":"2026-09-01 15:47:59","revision":3676448},"1.2.1":{"tag":"1.2.1","author":"luumtech","date":"2026-09-01 15:50:50","revision":3676449},"1.2.2":{"tag":"1.2.2","author":"luumtech","date":"2026-09-01 15:54:02","revision":3676453},"1.2.3":{"tag":"1.2.3","author":"luumtech","date":"2026-09-01 16:01:37","revision":3676465},"1.2.4":{"tag":"1.2.4","author":"luumtech","date":"2026-09-02 08:36:34","revision":3677514}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3676448,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3676448,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3676448,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3676448,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0","1.2.1","1.2.2","1.2.3","1.2.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3677514,"resolution":"1","location":"assets","locale":"","width":2560,"height":1778},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3677514,"resolution":"2","location":"assets","locale":"","width":2560,"height":1778},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3677514,"resolution":"3","location":"assets","locale":"","width":2560,"height":1778}},"screenshots":{"1":"The settings screen: connection, EAN matching, stock handling and sync interval.","2":"Real-time updates, and the result of the last run: changes received, products updated, barcodes with no match here.","3":"Diagnostics and the log: products whose SKU does not look like a barcode, and every run recorded."}},"plugin_section":[],"plugin_tags":[1292,11082,6601,12448,286],"plugin_category":[45],"plugin_contributors":[278688],"plugin_business_model":[],"class_list":["post-356997","plugin","type-plugin","status-publish","hentry","plugin_tags-barcode","plugin_tags-ean","plugin_tags-inventory","plugin_tags-stock","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-luumtech","plugin_committers-luumtech"],"banners":{"banner":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/banner-772x250.png?rev=3676448","banner_2x":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/banner-1544x500.png?rev=3676448","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/icon-128x128.png?rev=3676448","icon_2x":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/icon-256x256.png?rev=3676448","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/screenshot-1.png?rev=3677514","caption":"The settings screen: connection, EAN matching, stock handling and sync interval."},{"src":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/screenshot-2.png?rev=3677514","caption":"Real-time updates, and the result of the last run: changes received, products updated, barcodes with no match here."},{"src":"https:\/\/ps.w.org\/luumtech-inventory-sync-for-leela\/assets\/screenshot-3.png?rev=3677514","caption":"Diagnostics and the log: products whose SKU does not look like a barcode, and every run recorded."}],"raw_content":"<!--section=description-->\n<p>For authorised dealers of Leela Cotton. Connects your WooCommerce shop to the\nLeela Partner API so that when an article sells out at Leela, your listing goes\nout of stock too, without anyone touching a spreadsheet.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ul>\n<li>Matches your products to Leela's catalogue on EAN (barcode).<\/li>\n<li>Pulls only what changed since the last run, so a sync costs one request when\nnothing has moved.<\/li>\n<li>Optionally receives push updates over a signed webhook, for changes within\nseconds rather than minutes.<\/li>\n<li>Writes quantity and stock status; optionally applies a safety buffer so a\nburst of orders on Leela's side cannot make you oversell.<\/li>\n<\/ul>\n\n<p><strong>What is transferred<\/strong><\/p>\n\n<p>Only EAN, SKU, quantity and a timestamp. No prices, no customer data, no orders.<\/p>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>An active Leela dealer account and an API key from partners.leela.eco<\/li>\n<li>WooCommerce 8.0 or newer<\/li>\n<li>Your products' EANs in the SKU field, or in a GTIN plugin's custom field<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Leela Partner API, a service operated by Leela\nCotton Naturtextilien Handels GmbH, to read the stock levels it writes into your\nshop. It is the only external service the plugin contacts, and the plugin does\nnothing without it.<\/p>\n\n<p><strong>When it connects<\/strong><\/p>\n\n<ul>\n<li>When you save your API key, to verify it.<\/li>\n<li>On each scheduled sync (every 15 minutes by default), and whenever you press\nSync in the settings screen.<\/li>\n<li>If you enable the optional webhook, once to register your site's callback URL\nand once to remove it again when you disable it. After that the Leela API\ncontacts your site rather than the other way round.<\/li>\n<\/ul>\n\n<p><strong>What is sent<\/strong><\/p>\n\n<ul>\n<li>Your API key, as an HTTP Authorization header, so the service knows which\ndealer is asking.<\/li>\n<li>A numeric sync cursor, which is the version number of the last change your\nshop received. It carries no information about your shop beyond how recently\nit synced.<\/li>\n<li>When registering the webhook only: your site's callback URL, and your site's\nhostname as a label so you can recognise the endpoint in the partner portal.<\/li>\n<\/ul>\n\n<p>No product data, customer data, order data or prices are ever sent.<\/p>\n\n<p><strong>What is received<\/strong><\/p>\n\n<p>For each changed article: EAN (barcode), SKU, quantity, an in-stock flag, a\ntimestamp and a version number. Nothing else.<\/p>\n\n<p>Service: https:\/\/partners.leela.eco\nTerms: https:\/\/partners.leela.eco\/imprint\nPrivacy policy: https:\/\/partners.leela.eco\/data-policy\nData we share: https:\/\/partners.leela.eco\/data-policy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip under Plugins \u2192 Add New \u2192 Upload Plugin, then activate.<\/li>\n<li>Go to WooCommerce \u2192 Inventory Sync for Leela.<\/li>\n<li>Paste the API key from partners.leela.eco and save. The connection is tested\non save.<\/li>\n<li>Choose your match field and sync interval.<\/li>\n<li>Press \"Run full sync\" for the first import.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Sign in at partners.leela.eco with the same account you use to place wholesale\norders, then open API keys.<\/p><\/dd>\n<dt id=\"nothing%20is%20syncing.\"><h3>Nothing is syncing.<\/h3><\/dt>\n<dd><p>Almost always an EAN mismatch. The Diagnostics section on the settings screen\nlists products whose SKU does not look like a barcode.<\/p><\/dd>\n<dt id=\"my%20scheduled%20syncs%20are%20irregular.\"><h3>My scheduled syncs are irregular.<\/h3><\/dt>\n<dd><p>WordPress cron only fires when someone visits your site. On a quiet shop this\ndrifts. Enable the webhook, or run WP-Cron from a real system cron.<\/p><\/dd>\n<dt id=\"does%20this%20create%20products%3F\"><h3>Does this create products?<\/h3><\/dt>\n<dd><p>No. It only updates the stock of products that already exist in your shop.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20anything%20about%20my%20shop%20to%20leela%3F\"><h3>Does this plugin send anything about my shop to Leela?<\/h3><\/dt>\n<dd><p>Only your API key and a numeric sync cursor. Not your products, your customers,\nyour orders or your prices. See the External services section above for the\nexact list in both directions.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20safe%20here%3F\"><h3>Is my API key safe here?<\/h3><\/dt>\n<dd><p>WordPress stores plugin options in plain text, so anyone with admin access to\nyour WordPress can read it. Give the key an IP allowlist in the partner portal\nso it cannot be used from anywhere but your server, and rotate it when staff\nwith admin access leave.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Renamed to \"Inventory Sync for Leela Cotton\". The installation directory,\nthe settings and the registered webhook are unchanged: only the name shown\nin the plugins list and on the settings screen is different.<\/li>\n<li>The plugin now reports its own version number to the Leela API. It had\nbeen announcing 1.2.0 since that release, whatever version was actually\ninstalled. Nothing about syncing changes.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>","raw_excerpt":"Keeps WooCommerce stock in step with the Leela wholesale catalogue, matched on EAN. Published by Luumtech, not by Leela Cotton.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/356997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=356997"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/luumtech"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=356997"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=356997"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=356997"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=356997"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=356997"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=356997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}