Status
| Part | What it does |
|---|---|
| Galleries | Home page and product pages from switches, any display hook from Design, Positions, or a widget tag in a theme. |
| Catalogue | Full sync on a schedule (every 24 hours by default) plus product changes as they happen. |
| Orders | Sent as they are placed, with the widget visitor id, queued and retried by the scheduled task. |
| Status panel | Connection state, last sync and product count, last order sent, events waiting, last error. |
| Add to cart in the gallery | Built into the widget for PrestaShop (it opens the theme’s own added-to-cart modal) and arriving with early access; until then product taps open the product page. |
Requirements
- PrestaShop 1.7.8 or 8.x. The module installs on 9.x but 9.x is not declared tested.
- A way to call a URL every 15 minutes (server cron or a cron service).
- Outbound HTTPS from the shop server (cURL).
- Your Business GUID and a default gallery GUID (both in the embed code in the Idukki dashboard).
Install
We share idukki.zip with early-access shops. In the back office open Modules, Module Manager, Upload a module and pick the zip. Install creates two tables (idukki_queue, idukki_cart_visitor), registers the module’s hooks and generates a cron token. Upgrading from an older version is the same upload; legacy pairing settings are kept.
Connect with a store connection key
In the Idukki dashboard open Settings, then the PrestaShop tab under Integrations, and create a key in the Store connection card. Early-access accounts have the tab switched on for them.
The key starts with idk_pc_ and is shown once, when you create it. Idukki keeps only a hash of it, so a lost key cannot be shown again: revoke it and make a new one. One key belongs to one store and one platform; a Magento key is refused by a PrestaShop store. Revoking a key in the dashboard stops the module at once.
- Open Modules, Idukki for PrestaShop, Configure.
- Paste the key into Connection key, fill in Business GUID and Default gallery GUID, and Save. Saving a new key runs Test connection (
GET /webhooks/partner/ping) for you. - Set up the scheduled task below, then click Sync catalogue now once or wait for the first cron run.
*/15 * * * * curl -fsS "https://your-shop.example/modules/idukki/cron.php?token=<cron token>" >/dev/nullThe configure page shows the exact URL. Each run sends queued orders, runs the full catalogue sync when it is due and sends queued product changes. A 30-minute lock stops runs overlapping. The cron token is not the connection key and can be regenerated. The key is stored encrypted with PrestaShop’s own encryption and only idk_pc_ plus four characters are ever shown. In multistore each shop can have its own key; a key saved in All shops covers every shop without one.
Place galleries
| Where | How |
|---|---|
| Home page | Gallery on the home page switch (displayHome), with an optional gallery GUID for that placement. |
| Product pages | Gallery on product pages switch (displayFooterProduct). The mount carries filter-pid set to the id_product. |
| Any display hook | Design, Positions, Transplant a module, pick Idukki for PrestaShop and the hook. |
| Theme template | {widget name='idukki' guid='GALLERY_GUID'}, or with product_id=$product.id to filter to a product. |
| Theme hook | {hook h='displayIdukkiGallery' guid='GALLERY_GUID'} |
<div class="idukki-ugc idukki-ugc--<hook>" data-ugc="idukki" data-bguid="..." data-guid="..." filter-pid="<id_product>" data-platform="prestashop"></div>The loader is added once per page from displayHeader. Do not add it again in the theme.
Cookie consent
| Mode | Behaviour |
|---|---|
| Load immediately | No gating. |
| Wait for a consent cookie | The loader is added in the browser once a named cookie exists and, optionally, its value contains a given text (for example your banner’s marketing category). |
| Wait for a JavaScript signal | Your consent manager calls window.idukkiConsentGranted() or dispatches idukki:consent-granted on document. |
The cookies written by specific consent modules (Cookiebot, Axeptio, iubenda and others) have not been checked against the module. Look at what your banner writes, or use its on-accept callback with the JavaScript signal. Without consent the loader never runs, so that visitor’s orders are sent without a visitor id.
What data is sent
| Call | Data |
|---|---|
| Catalogue | Product id, reference, name and URL in the catalogue language, cover and up to 10 images, tax-included price and compare-at price in the shop’s default currency, stock, and combinations (max 100). |
| Orders | Order id and reference, created time, currency, tax-included total, paid or pending, id_customer, id_cart, the widget visitor id, and line items (product id, combination id, reference, quantity, unit price). |
| Never sent | Customer names, emails, phone numbers or addresses. |
Stored in the shop database: settings and status, the retry queue (with id_customer for GDPR lookups) and a cart-to-visitor table purged after 90 days. The module implements the psgdpr export and erasure hooks for both tables.
How orders are matched to widget activity
On actionValidateOrder the module writes the order to its queue first, then sends it at the end of the request within a 3-second budget. Any failure leaves it queued for cron, up to 24 attempts. The visitor id comes from the idk-vid cookie (then idk_vid). Payment modules that confirm orders by server callback do not carry the shopper’s cookies, so the module also remembers the visitor id against the cart while the shopper browses and uses that instead.
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 |
|---|---|
| Connection key rejected | Revoked, mistyped, or made for another platform. Create a PrestaShop key and paste it again. |
| No gallery | Business GUID and gallery GUID set, home or product switch on, consent mode not waiting for a cookie that never appears. Look for data-ugc="idukki" in the page source. |
| Product page gallery empty | Posts must be tagged with the product in Idukki and the catalogue must have synced. |
| Last sync never changes | The cron URL is not being called, or answers 403 (wrong token) or 409 (a previous run still holds the lock). |
| Orders waiting keep growing | See Last error; usually a revoked key or no outbound HTTPS. |
| Key can no longer be decrypted | The shop cookie key changed. Paste the key again. |
Errors are also written to Advanced Parameters, Logs with object type Idukki.
Uninstall
Uninstalling the module drops both tables, deletes every IDUKKI_* configuration value (including the key and queued events) and unregisters the hooks. It does not revoke the key on the Idukki side: revoke it in the dashboard.