Description
Codihi Smart Cart Order Sync for Skroutz connects your WooCommerce store with the Skroutz Smart Cart (Orders API) and Webhook systems. Skroutz is an independent marketplace platform; this plugin is an unofficial, third-party integration and is not affiliated with, endorsed by, or sponsored by Skroutz.
The plugin adds a secure webhook endpoint to your site. Skroutz calls it whenever one of your Smart Cart orders is created or changes state, and the plugin creates or updates the matching WooCommerce order.
This plugin allows merchants to:
* Automatically receive new Skroutz orders into WooCommerce through the Skroutz order webhook (customer, address, line items, Skroutz commission and fees).
* Match Skroutz line items to your WooCommerce products by SKU, Product ID, a custom meta field, or a “Smart Match” (custom meta, SKU, ID, EAN, MPN in turn).
* Have WooCommerce reduce the ordered items’ stock as soon as a Skroutz order arrives, and restore it automatically if the order is rejected or cancelled — using WooCommerce’s own built-in stock management. Stock levels are not sent back to Skroutz.
* Map each Skroutz order state to one of your existing WooCommerce order statuses, and optionally mark delivered orders as Completed.
* Receive an email for every new Skroutz order, see Skroutz details (code, state, Skroutz Plus, express, pickup point) on the order screen, and filter the order list to Skroutz orders.
Why choose this plugin:
1. Lightweight: one webhook endpoint and one API request per webhook, no background jobs.
2. Security-conscious: the webhook is protected by a secret token; built following WordPress coding standards (prepared SQL statements, nonces, output escaping).
3. No bundled libraries: no third-party libraries or tracking scripts.
(Upgrade to the Premium version for one-click Courier Vouchers generation, automatic invoice uploading to Skroutz, and full Skroutz Last Mile integration.)
External services
This plugin connects your store to the Skroutz Smart Cart API, operated by Skroutz S.A., so that orders placed on the Skroutz marketplace can be imported into WooCommerce.
When a Skroutz order webhook is received, the plugin calls https://api.skroutz.gr (using the API token you enter in Settings) to fetch the full order details — customer, line items and shipping data — so the corresponding WooCommerce order can be created or updated. The request carries only your API token and the Skroutz order code; nothing is sent to Skroutz unless a Skroutz order webhook is received.
This service is provided by Skroutz S.A.: Terms of Use, Privacy Policy.
Codihi product catalog (codihi.com)
When an administrator opens the “Codihi Plugins” overview page in wp-admin, the plugin requests the public product list from https://codihi.com/wp-json/wc/store/v1/products to show the other Codihi plugins with their prices. It is a plain GET request: no store, customer or order data is sent, and the result is cached for 12 hours. If codihi.com cannot be reached, a built-in list without prices is shown instead. Nothing is requested from codihi.com on any other page or on the front end.
This service is provided by Codihi: Terms of Use, Privacy Policy.
Screenshots


Installation
- Upload the plugin files to the
/wp-content/plugins/codihi-skroutz-orders-api-freedirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the ‘Plugins’ screen in WordPress.
- Go to Codihi Plugins -> Skroutz Orders to configure the settings.
- Add your Skroutz API Token, check the Webhook Secret, and copy the Webhook URL shown there into the Skroutz Merchants Panel.
FAQ
-
Does a Skroutz order reduce my WooCommerce stock?
-
Yes. When a Skroutz order is imported, WooCommerce’s own stock management reduces the ordered items’ stock as part of the normal order-creation flow, and restores it automatically if you reject or cancel the order. This plugin does not send stock levels back to Skroutz — you still need to keep your Skroutz product feed/listing up to date the way you already do today.
-
How do I manage Vouchers?
-
Voucher generation is a Premium feature. In the Free version, you manage acceptance/rejection from the Skroutz Merchants Panel, and the plugin strictly handles the WooCommerce order creation and stock deduction.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Codihi Smart Cart Order Sync for Skroutz” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Codihi Smart Cart Order Sync for Skroutz” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.9
- Changed: every text in the order box, the order-list column and filter, the admin menu and the Pro-active notice is now in English and translatable (some of it was hard-coded in Greek). Skroutz order states share one translatable list.
1.1.8
- Fixed: new Skroutz orders did not reduce stock on arrival. Skroutz sends new orders with the state “open”, which the plugin did not recognise (it expected “new”), so the order stayed “Pending payment” and its stock was only reduced once it was accepted. “open” is now treated as “new”: the “New” status mapping applies and stock is reduced immediately.
- Added: “Expired” state (order not accepted in time). It restores stock and has its own Status Mapping entry (default: Cancelled).
1.1.7
- Fixed (WordPress.org review): no CSS is printed as a raw
1.1.6
- Fixed: choosing “No Change (Ignore)” in the Status Map was saved as an empty value and silently replaced by the default mapping (e.g. DISPATCHED Completed). It is now honoured, and the dropdown shows the default that actually applies when nothing has been saved.
- Changed: the readme now describes exactly what the code does (webhook endpoint, product matching, inbound-only stock handling — no stock is sent to Skroutz), with the correct settings location.
- Changed: “External services” now also documents the product catalog request the “Codihi Plugins” overview page makes to codihi.com.
- Changed: removed “sync” wording from the in-plugin manual’s product-matching and stock sections.
- Added: the User Manual tab is now also available in English. It opens in Greek for Greek-language admins and in English for everyone else, with a switch at the top.
- Fixed: Plugin Check “OutputNotEscaped” errors in the shared “Codihi Plugins” menu (Codihi_Hub_2): the menu-icon CSS is now attached with wp_add_inline_style() instead of being printed as a raw
- Changed: the Webhook URL is now a field on the Connection tab, right below the Webhook Secret it contains, instead of a notice at the top of the page.
- Fixed: the manual said a rejected/cancelled order always becomes “Cancelled”; it now explains that this depends on the Status Map, while the stock is restored in every case.
- Changed: the Settings page no longer shows disabled Pro-only fields (Order Defaults tab, Auto Accept, Auto Pick-up Time, Auto Sync, Order Management, Manual Import, Advanced Webhook Protection, custom statuses). They are replaced by an informational “Available in Pro” panel of feature cards with a single link, which each user can close with its × button (and reopen from the User Manual); every setting shown now works in this plugin.
- Fixed: the “Learn more about Pro” link now always opens the Pro product page. It used to look the product up in the merchant’s own database, so on every store other than codihi.com it fell back to the codihi.com home page.
- Changed: “Plugin URI” now points to the plugin’s current page instead of an old address that redirected.
- Removed: a stray copy of the Skroutz API documentation (
orders_api.html.md.erb) that was not used by the plugin.
1.1.5
- The Overview product map now includes the plugins about to be sold (AI Product Importer, Quick Edit, Semantic Search, Checkout Invoice, myDATA, Barcode Stock Updater, Product Presentation, Language Switch) (Codihi_Hub_2).
1.1.4
- The “Codihi Plugins” menu now sits right under Settings so it no longer leaves an odd gap before Appearance (Codihi_Hub_2).
1.1.3
- The brand-coloured “Codihi Plugins” menu icon is now always visible, not only on hover (Codihi_Hub_2).
1.1.2
- “Codihi Plugins” Overview: the brand-coloured menu icon now renders correctly (WordPress was repainting it white), and installed-plugin cards link to each plugin’s settings page automatically (Codihi_Hub_2).
1.1.1
- The “Codihi Plugins” Overview now also lists every plugin sold on codihi.com, with price and a link to get it (Codihi_Hub_2).
1.1.0
- Η σελίδα ρυθμίσεων μεταφέρθηκε στο κοινό μενού «Codihi Plugins».
1.0.23
- Fixed: cancelling or rejecting an order did not return the stock when the default status mapping had been changed. WooCommerce only restores stock on “Cancelled” and “Pending”, so shops that mapped Rejected/Canceled to “Refunded” or “Failed”, or to “No Change”, never got the stock back. Stock is now settled from the Skroutz state itself and applied last, so it is correct for every mapping.
1.0.22
- Changed:
readme.txtno longer describes a “stock sync” with Skroutz (short description, feature bullet, FAQ, “External services”). The plugin only ever fetches order details fromhttps://api.skroutz.gr; it has no code that pushes WooCommerce stock levels to Skroutz. What actually happens — WooCommerce’s own built-in stock management reducing/restoring the ordered items’ stock as a Skroutz order is imported/rejected/cancelled — is now described accurately and distinguished from the (nonexistent) outbound sync.
1.0.21
- Changed: renamed the plugin from “Codihi Skroutz Orders API – Free” to Codihi Smart Cart Order Sync for Skroutz, to drop the discouraged “Free” term and place “Skroutz” in a non-affiliation-implying structure, per WordPress.org Plugin Directory naming guidelines.
- Removed:
codihi_skroutz_free_register_custom_statuses(),codihi_skroutz_free_add_custom_statuses()and their stock-transition hooks — a fully working implementation of custom WooCommerce order-status creation that had no UI in the Free version to enable it, but would still run if acustomstatus mapping was set (e.g. a leftover option value from a PRO downgrade). Per the Directory’s guidelines, a built-in feature can’t ship gated behind PRO like this; creating custom statuses is now exclusively part of the PRO plugin’s own codebase. The webhook’s order-status handling already no-ops safely on a straycustomvalue. - Fixed: the sub-tab switcher on the Settings page was a raw
<script>tag printed inline in the page markup, flagged by the WordPress.org Plugin Check. It is now registered withwp_enqueue_script()/wp_add_inline_script(), loaded only on the plugin’s own settings page. - Removed: the disabled “Create New (Custom) — PRO only” option from the status-mapping dropdown. It could never be selected, which is the locked-built-in-feature pattern the Plugin Directory guidelines disallow; the plain explanatory text about the PRO-only custom-status feature elsewhere on the page is unaffected.
- Removed: an unused
assets/js/admin.jsleft over from the PRO codebase — it was never enqueued and its two AJAX actions (voucher/invoice handling, manual order import) have no matching handler in the Free version. - Changed:
readme.txt— removed the “background sync routines” claim (no cron-based sync is implemented in the Free version; the plugin only reacts to incoming Skroutz webhooks), reworded the status-mapping bullet to avoid implying the Free version can create custom WooCommerce statuses, added a non-affiliation note, and added an “External services” section documenting the Skroutz API connection. - Changed:
Contributorsinreadme.txtnow lists the actual WordPress.org account (panosrekou) instead of a non-account name.
1.0.20
- Fixed: “Plugin URI” and “Author URI” in the plugin header were identical, which WordPress.org flags as an error (a plugin URI must describe the plugin, an author URI must describe the author). They now point to two distinct, real pages.
1.0.19
- Changed: “Payment Gateway”, “Shipping”, “User ID” and “Billing Email” are now marked as PRO-only in Settings Order Defaults. They were never applied by the Free version’s webhook order-creation logic, so saving them had no effect — they now show a clear upgrade badge instead of a misleading, non-functional field.
- Removed: “Variation participation attributes” and “Color/Parent ID” settings — never used by the actual product-matching logic (which relies on SKU/Product ID/Custom Meta/Smart Match), removed rather than left as misleading UI (same cleanup as the PRO version, v1.2.3).
- Fixed: leftover “variation attributes” text in the in-plugin User Manual, describing a setting that no longer exists.
- Security: hardened a few read-only admin list filters and settings-page inputs/outputs (defensive escaping and sanitization, no behavior change).
1.0.18
- Added: official HPOS (High-Performance Order Storage) compatibility declaration — the plugin is no longer listed as incompatible and no longer blocks you from enabling HPOS.
- Changed: internal hardening of API response handling, so a failed call to Skroutz can never turn into a fatal error (same fix as the PRO version).
1.0.17
- Changed: IP allowlist validation and replay protection for incoming webhooks are now marked as PRO-only features in Settings Connection & Security.
1.0.16
- Changed: “Create New (Custom)” order status is now a PRO-only feature. The Free version can still map Skroutz states to any of your existing WooCommerce statuses.
1.0.15
- Added: Auto Complete logic for delivered Skroutz orders.
1.0.13
- Security: the webhook now fails closed (rejects the request) instead of allowing unauthenticated calls when no Webhook Secret is configured, and token comparison uses a timing-safe check.
- Security: a random Webhook Secret is now generated automatically on activation, so the webhook is never left unprotected.
- Security: the Webhook Secret field can no longer be saved empty by mistake.
- Added: plugin icon on the settings page, matching the Premium version.
1.0.1
- Fixed: 100% Compliance with WordPress.org Plugin Check.
- Security: Implemented strict $wpdb->prepare for all queries.
- Security: Massively improved escaping and nonce validation.
- i18n: Unified text domains and added translator comments.
1.0.0
- Initial release.
