Install widgets on the host site
Installation-aware widgets, public APIs and embeddable product experiences for the isolated Disposable Discounter platform.
Paste the bundle, place the host div, and the widget mounts itself.
The search widget now behaves like an on-site autocomplete: product suggestions appear while visitors type, each item shows image, title and price, clicking opens the product, and additional results load while the visitor scrolls the suggestion panel.
Open hosted search widget test pagePaste one GTM-ready snippet and the floating launcher mounts itself.
The chatbot embed now ships as a single script block that works in Google Tag Manager or raw HTML without adding a placeholder `div` to the site. The launcher now lazy-bootstraps on first open, keeps a dedicated chat session token separate from bootstrap, and uses the same public snippet contract shown below.
Open hosted chatbot widget HTML test pageUse the search bundle for catalogue discovery. It auto-mounts from the host element attributes, validates the origin, renders inside Shadow DOM, and keeps paginating suggestions while the user scrolls.
<div data-didi-search-widget data-api-base-url="https://public.disposablediscounter.com" data-publishable-key="pk_didi_live_6a44a70629e2befdc49723e9" data-locale="nl" data-placeholder="Zoek producten, SKU of materiaal" data-initial-query="nitril handschoenen" data-limit="8" ></div> <script defer src="https://public.disposablediscounter.com/widgets/search.js"></script>
Use the chatbot bundle for the floating launcher and panel. Paste the snippet as a single Custom HTML tag in GTM or directly into the site, and the widget will create its own floating mount point. The assistant UI stays isolated inside an iframe, opens an OpenAI Realtime session through the DiDi public API, and communicates with the host only through explicit bridge actions.
<script>
(function () {
var config = {
publishableKey: 'pk_didi_live_6a44a70629e2befdc49723e9',
locale: 'nl'
};
var hasMounted = false;
function mount() {
if (hasMounted) {
return true;
}
if (!window.DidiChatbotWidget) {
return false;
}
window.DidiChatbotWidget.mount(config);
hasMounted = true;
return true;
}
if (mount()) {
return;
}
var existingScript = document.querySelector('script[data-didi-chatbot-widget-script]');
if (!existingScript) {
existingScript = document.createElement('script');
existingScript.src = 'https://public.disposablediscounter.com/widgets/chatbot.js';
existingScript.defer = true;
existingScript.setAttribute('data-didi-chatbot-widget-script', 'true');
(document.head || document.body || document.documentElement).appendChild(existingScript);
}
existingScript.addEventListener('load', mount, { once: true });
var retries = 0;
var interval = window.setInterval(function () {
retries += 1;
if (mount() || retries > 40) {
window.clearInterval(interval);
}
}, 250);
})();
</script>