IdukkiIdukki
Install guides

PrestaShop

Install Idukki on PrestaShop

One module for galleries without code, a catalogue Idukki can tag posts against, and orders sent with the widget visitor id. Early access: this guide covers what the module does and how to set it up.

Status

PartWhat it does
GalleriesHome page and product pages from switches, any display hook from Design, Positions, or a widget tag in a theme.
CatalogueFull sync on a schedule (every 24 hours by default) plus product changes as they happen.
OrdersSent as they are placed, with the widget visitor id, queued and retried by the scheduled task.
Status panelConnection state, last sync and product count, last order sent, events waiting, last error.
Add to cart in the galleryBuilt 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.
Scheduled task, every 15 minutesbash
*/15 * * * * curl -fsS "https://your-shop.example/modules/idukki/cron.php?token=<cron token>" >/dev/null

The 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

WhereHow
Home pageGallery on the home page switch (displayHome), with an optional gallery GUID for that placement.
Product pagesGallery on product pages switch (displayFooterProduct). The mount carries filter-pid set to the id_product.
Any display hookDesign, 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'}
What every mount rendershtml
<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.

ModeBehaviour
Load immediatelyNo gating.
Wait for a consent cookieThe 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 signalYour 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

CallData
CatalogueProduct 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).
OrdersOrder 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 sentCustomer 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

SymptomCheck
Connection key rejectedRevoked, mistyped, or made for another platform. Create a PrestaShop key and paste it again.
No galleryBusiness 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 emptyPosts must be tagged with the product in Idukki and the catalogue must have synced.
Last sync never changesThe cron URL is not being called, or answers 403 (wrong token) or 409 (a previous run still holds the lock).
Orders waiting keep growingSee Last error; usually a revoked key or no outbound HTTPS.
Key can no longer be decryptedThe 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.

Checked against: idukkidev/idukki-prestashop-module/README.md, idukki-ext/src/cart/adapters/prestashop.ts. Something here that the product does not do? Tell us and it gets fixed in the doc or the code.

We use cookies

We use essential cookies to run this site and optional analytics cookies to understand how it’s used. You can change your choice anytime in our privacy policy.