Status
| Part | Where it happens |
|---|---|
| Galleries | The Idukki widget. The plugin adds the block, the shortcode, the product page gallery and the consent gate. |
| Catalogue | Idukki will pull products with a read-only WooCommerce REST key you save in Idukki; that sync is being finished, so for now the catalogue comes in by CSV or feed (Products, Import). The plugin does not push products. |
| Orders | WooCommerce’s own webhooks to https://api.idukki.io/webhooks/woocommerce/orders. The plugin can create them for you. |
| Proven attribution | The plugin stamps _idk_vid on each order at checkout; Idukki reads it from the webhook. |
| Add to cart in the gallery | The widget adds tagged products to the cart through WooCommerce’s Store API. Variable products open the product page to pick options. Not yet checked on a live store. |
Requirements
- WordPress 6.0 or later, WooCommerce 6.0 or later, PHP 7.4 or later.
- HPOS (custom order tables) and the Cart and Checkout blocks are supported.
- Your Business ID (
data-bguid) and a default gallery ID (data-guid) from the Idukki embed code.
Install
We share the plugin zip with early-access stores. Upload it in Plugins, Add New, Upload Plugin (or copy it to wp-content/plugins/idukki-woocommerce/), activate Idukki for WooCommerce, and open WooCommerce, Settings, Idukki.
Connect
WooCommerce connects in three independent pieces. Do all three for the full set.
- Storefront. In WooCommerce, Settings, Idukki, paste the Business ID and a default gallery ID.
- Orders. Open Order webhook and click Create the order webhook for me. The plugin creates two webhooks (Order created, Order updated) signed with one generated secret, shown once. Add a WooCommerce REST key with Read permission (Settings, Advanced, REST API), then in the Idukki dashboard’s WooCommerce tab enter the store URL shown on screen, the consumer key and the webhook secret.
- Catalogue. Import the catalogue in Idukki under Products, Import (a WooCommerce product export or a feed URL). Catalogue sync from the read-only key is being finished; once it reaches your account, you save the same key as catalogue credentials in the WooCommerce tab and run a sync instead.
Optional: a store connection key. In the Idukki dashboard open Settings, then the WooCommerce tab under Integrations, and create a key in the Store connection card. Early-access accounts have the tab switched on for them. On WooCommerce the key is used only by the plugin’s Test connection button; nothing else needs it. It is stored in wp_options and shown back only as a masked prefix.
Place galleries
| Where | How |
|---|---|
| Block editor | Add the Idukki gallery block to posts, pages or block-theme templates. Gallery ID (empty uses the default) and product filter (current product, none, or a product id). |
| Shortcode | [idukki_gallery], [idukki_gallery guid="..."], [idukki_gallery product="none"], [idukki_gallery product="123"] |
| Product pages | Tick Product pages to add a gallery below the product summary on classic templates. On block themes, add the block to the Single Product template. |
<div data-ugc="idukki" data-bguid="..." data-guid="..." data-platform="woocommerce" filter-pid="<product id>"></div>The loader is enqueued once, async, only on pages that render a gallery.
Cookie consent
With Cookie consent ticked, the loader is never printed by the server. A small script loads it in the browser when the WP Consent API reports statistics consent, now or later. Sites with their own banner can call window.idukkiConsentGranted() instead. Order stamping also waits for statistics consent in this mode.
What data is sent
| Sender | Data |
|---|---|
| The plugin | Only the connection check (the key, to /webhooks/partner/ping). It adds the visitor id and Business ID to each order as hidden meta. |
| WooCommerce webhooks | The full REST v3 order, if you create them. |
| Idukki catalogue sync | Once it is live for your account, reads products with the read-only key you saved in Idukki. |
| The widget, in the browser | Sets the idk-vid visitor cookie and sends gallery analytics. Suggested privacy-policy text is added under Settings, Privacy. |
How orders are matched to widget activity
At checkout (classic and block checkout) the plugin reads the widget’s visitor id cookie (idk-vid, then idk_vid) and saves it on the order as _idk_vid, with the Business ID as _idk_biz. An order already stamped is never overwritten, and errors are logged rather than blocking checkout. Idukki reads both from the order webhook alongside the customer id and a salted ip and user-agent fingerprint, which is always marked estimated.
Idukki matches each order to widget activity through the visitor id first, then the customer id and the cart id. An order counts as proven only when the same visitor added a product they bought to the cart from the widget beforehand. Orders that only followed a widget view or click land in the influence tiers, and the rest are store orders. The dashboard keeps proven, influenced and store orders in separate columns and never adds them together.
Troubleshooting
| Symptom | Check |
|---|---|
| No gallery | Business ID and gallery ID (staff see a dashed note where a gallery would be when one is missing), the Cookie consent setting, and blocked idukki-cdn.com requests in the console. |
| Orders not in Idukki | Settings, Advanced, Webhooks: the Idukki webhooks Active with no failed deliveries. Idukki answers store not registered until the store URL, key and secret are saved; a 401 means the secrets differ. |
| Orders never proven | Check the order for _idk_vid. It is set only when the shopper’s browser had the visitor cookie and, with Cookie consent on, statistics consent. |
| Test connection not available | The store connection release has not reached that API yet. Nothing else depends on it. |
Uninstall
Deleting the plugin removes its options, the legacy cron event and the webhooks it created. _idk_vid and _idk_biz stay on past orders as part of those orders. Disconnect the store in the Idukki dashboard separately and revoke any connection key.