{"id":378741,"date":"2026-10-05T10:48:18","date_gmt":"2026-10-05T10:48:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/shopglu-for-woocommerce\/"},"modified":"2026-10-05T10:47:46","modified_gmt":"2026-10-05T10:47:46","slug":"shopglu-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/am.wordpress.org\/plugins\/shopglu-for-woocommerce\/","author":18324108,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.3.0","stable_tag":"4.3.0","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"ShopGlu for WooCommerce","header_author":"Shopglu","header_description":"Sync your WooCommerce store with Takealot. Manage stock locations, product data, and order statuses. Requires a ShopGlu account.","assets_banners_color":"dcdafa","last_updated":"2026-10-05 10:47:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/shopglu.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":183,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.3.0":{"tag":"4.3.0","author":"shopglu","date":"2026-10-05 10:47:46","revision":3728699}},"upgrade_notice":{"4.3.0":"<p>Renamed to ShopGlu for WooCommerce. Adds an explicit connect screen so nothing is sent\nbefore you agree, a Settings page, and HPOS compatibility. Fixes variation barcodes\noverwriting each other, and removes a site-wide CORS override.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3728710,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3728710,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3728710,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3728710,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3728710,"resolution":"1","location":"assets","locale":"","width":1920,"height":955},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3728710,"resolution":"2","location":"assets","locale":"","width":1920,"height":954},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3728710,"resolution":"3","location":"assets","locale":"","width":1440,"height":539}},"screenshots":{"1":"The connect screen, listing exactly what is sent before anything leaves your store.","2":"ShopGlu settings: connection status and which product fields to manage.","3":"The Stock Locations tab in the WooCommerce product editor."}},"plugin_section":[],"plugin_tags":[6601,8379,16281,1558,162308],"plugin_category":[45],"plugin_contributors":[284473],"plugin_business_model":[],"class_list":["post-378741","plugin","type-plugin","status-publish","hentry","plugin_tags-inventory","plugin_tags-marketplace","plugin_tags-orders","plugin_tags-sync","plugin_tags-takealot","plugin_category-ecommerce","plugin_contributors-shopglu","plugin_committers-shopglu"],"banners":{"banner":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/banner-772x250.png?rev=3728710","banner_2x":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/banner-1544x500.png?rev=3728710","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/icon-128x128.png?rev=3728710","icon_2x":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/icon-256x256.png?rev=3728710","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/screenshot-1.png?rev=3728710","caption":"The connect screen, listing exactly what is sent before anything leaves your store."},{"src":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/screenshot-2.png?rev=3728710","caption":"ShopGlu settings: connection status and which product fields to manage."},{"src":"https:\/\/ps.w.org\/shopglu-for-woocommerce\/assets\/screenshot-3.png?rev=3728710","caption":"The Stock Locations tab in the WooCommerce product editor."}],"raw_content":"<!--section=description-->\n<p>ShopGlu connects your WooCommerce store to Takealot, South Africa's largest online\nmarketplace, so you can run both from one catalogue.<\/p>\n\n<p>Your store stays the source of truth for what you sell and what it costs. ShopGlu pushes\nyour prices and stock up to Takealot, and brings Takealot's orders back down into\nWooCommerce as real orders you can fulfil, refund and report on as usual.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Pushes selling price, RRP and stock from WooCommerce to your Takealot offers<\/li>\n<li>Brings Takealot orders into WooCommerce, including fulfilment and cancellations<\/li>\n<li>Optionally writes Takealot's per-warehouse stock (Cape Town, Johannesburg, Durban) onto your products<\/li>\n<li>Adds a Stock Locations tab to the product editor for your warehouse quantities<\/li>\n<li>Adds a Barcode field to products and variations<\/li>\n<li>Registers order statuses for returns and partial cancellations, so Takealot's states survive the trip into WooCommerce<\/li>\n<\/ul>\n\n<p><strong>A ShopGlu account is required.<\/strong> This plugin is the bridge between your store and the\nShopGlu service; on its own it does not sync anything. Pricing and sign-up are at\n<a href=\"https:\/\/shopglu.com\">shopglu.com<\/a>.<\/p>\n\n<h4>Third-Party Service<\/h4>\n\n<p>This plugin relies on the ShopGlu service, hosted at\n<a href=\"https:\/\/flow.shopglu.com\">flow.shopglu.com<\/a>, to do the actual synchronising with\nTakealot. The plugin cannot function without it, and an account is required.<\/p>\n\n<p><strong>Nothing is sent until you ask for it.<\/strong> On first use the plugin shows you a screen\nlisting exactly what will be transmitted and does not contact ShopGlu until you press\n\"Connect store\". When you do, it sends:<\/p>\n\n<ul>\n<li>your store address<\/li>\n<li>your administrator email address<\/li>\n<li>your WordPress username<\/li>\n<li>a randomly generated secret, created locally, used only to identify this store to ShopGlu<\/li>\n<\/ul>\n\n<p>ShopGlu uses these to create or locate your account and to sign you in. Once connected,\nthe same details are sent again each time you open the ShopGlu menu, to sign you in to the\napp. After you connect, the plugin exchanges catalogue and order data with the service as\npart of normal syncing.<\/p>\n\n<p>When you <strong>delete<\/strong> the plugin (not merely deactivate it), it makes one final request to\nShopGlu telling it to stop syncing this store. Your store's identifying secret is kept in\nthe database so that reinstalling reconnects you without starting over.<\/p>\n\n<ul>\n<li>Service provider: <a href=\"https:\/\/shopglu.com\">ShopGlu<\/a><\/li>\n<li><a href=\"https:\/\/shopglu.com\/terms-conditions\/\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/shopglu.com\/privacy-policy\/\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install through the WordPress plugins screen, or upload the <code>shopglu-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Make sure WooCommerce is installed and activated.<\/li>\n<li>Activate ShopGlu for WooCommerce through the Plugins screen.<\/li>\n<li>Open <strong>ShopGlu<\/strong> in the admin menu, review what will be sent, and press <strong>Connect store<\/strong>.<\/li>\n<li>Approve the WooCommerce access request so ShopGlu can read your catalogue and write orders.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce must be installed and activated.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20shopglu%20account%3F\"><h3>Do I need a paid ShopGlu account?<\/h3><\/dt>\n<dd><p>You need a ShopGlu account. The plugin is the connector; the syncing itself is performed by\nthe ShopGlu service. See <a href=\"https:\/\/shopglu.com\">shopglu.com<\/a> for plans.<\/p><\/dd>\n<dt id=\"is%20anything%20sent%20to%20shopglu%20before%20i%20agree%3F\"><h3>Is anything sent to ShopGlu before I agree?<\/h3><\/dt>\n<dd><p>No. The plugin makes no outbound request until you press \"Connect store\" on the screen that\nlists what will be sent.<\/p><\/dd>\n<dt id=\"what%20takealot%20warehouses%20are%20supported%3F\"><h3>What Takealot warehouses are supported?<\/h3><\/dt>\n<dd><p>Cape Town (CPT), Johannesburg (JHB) and Durban (DBN), plus your own warehouse.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20high-performance%20order%20storage%3F\"><h3>Is it compatible with High-Performance Order Storage?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares HPOS compatibility and its custom order statuses work with both\nHPOS and the legacy posts-based order storage.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>The product fields it added stay on your products. The plugin tells ShopGlu to stop syncing\nand removes its own settings, but keeps the store's identifying secret so a reinstall\nreconnects cleanly.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.3.0<\/h4>\n\n<ul>\n<li>Renamed to \"ShopGlu for WooCommerce\"<\/li>\n<li>New: an explicit connect screen. The plugin now makes no outbound request until you press \"Connect store\", and lists exactly what will be sent first<\/li>\n<li>New: a Settings screen showing connection status and per-field control over the product fields ShopGlu manages<\/li>\n<li>New: declares High-Performance Order Storage compatibility, so enabling HPOS is no longer blocked while this plugin is active<\/li>\n<li>Fixed: barcodes on product variations are now stored per variation. Previously every variation on a product shared one field and overwrote each other<\/li>\n<li>Fixed: the variation Barcode field no longer loads every variation on the product to render one row<\/li>\n<li>Removed: a site-wide CORS override that disabled WordPress's own CORS handling on every REST route. It was never needed - the ShopGlu service calls this store server to server<\/li>\n<li>Removed: a site-wide change that raised the REST <code>per_page<\/code> ceiling to 10000 for all post types<\/li>\n<li>Removed: unused front-end stylesheet and script that loaded jQuery on every page of the store<\/li>\n<li>Security: REST routes now authorise in their permission callback; catalogue queries bind all values as parameters; product saves verify a nonce<\/li>\n<li>Uninstall now removes only this plugin's own prefixed options. The generically named <code>api_key<\/code> and <code>add_fields<\/code> options are left in place, as another plugin may own them<\/li>\n<\/ul>\n\n<h4>4.2.0<\/h4>\n\n<ul>\n<li>On plugin deletion (uninstall, not deactivation), notify ShopGlu so it stops syncing the store; the store's data is retained for a grace period so a reinstall reconnects seamlessly<\/li>\n<li>get-products now accepts an optional \"mwh\" parameter, so stores that keep main-warehouse stock in a custom field (a 3rd-party inventory plugin) rather than WooCommerce's own stock field are read correctly by the catalogue refresh<\/li>\n<\/ul>\n\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>Store-field endpoints now accept the per-store bridge secret, so the ShopGlu app can enable and disable the barcode and CPT\/JHB\/DBN fields from its settings<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Standalone app model - the menu now opens the ShopGlu app in a new tab<\/li>\n<li>Secure onboarding: auto-provisioning and one-time launch tickets via the ShopGlu bridge<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Safe migration from v1 settings format - existing configurations are preserved on update<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Security hardening: nonce verification, capability checks, input sanitization<\/li>\n<li>Fixed SQL injection vulnerability in product queries<\/li>\n<li>Properly prefixed all functions to avoid conflicts<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added stock locations tab in the WooCommerce product editor<\/li>\n<li>REST API for product and location management<\/li>\n<li>Custom order statuses for returns<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Sync your WooCommerce store with Takealot: prices, stock, orders and order statuses. Requires a ShopGlu account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378741"}],"author":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shopglu"}],"wp:attachment":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378741"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378741"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378741"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378741"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378741"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}