Run multiple widget instances on the same page with isolated containers, events, and instance APIs. Use unique instance IDs to load different configs side-by-side (for example sales + support) without collisions.
Some applications need more than one widget at once. Multi-brand e-commerce sites might display widgets for different product categories, and support platforms may run separate widgets for sales and technical support. Multi-widget support is now available through instance-based embedding and per-instance APIs.
data-instance-iddata-config-id values per instance when neededcompanin-widget-container-<instanceId> / companin-docs-widget-container-<instanceId>)This allows multiple independent widgets to coexist on one page without overriding each other.
Use unique script IDs and instance IDs for every widget instance:
<script
id="companin-widget-script-sales"
src="https://widget.companin.tech/widget.js"
data-client-id="..."
data-agent-id="..."
data-config-id="sales-config-id"
data-instance-id="sales-widget"
></script>
<script
id="companin-widget-script-support"
src="https://widget.companin.tech/widget.js"
data-client-id="..."
data-agent-id="..."
data-config-id="support-config-id"
data-instance-id="support-widget"
></script>
Use registry APIs to target specific instances:
const sales = window.CompaninWidgets?.get('sales-widget');
const support = window.CompaninWidgets?.get('support-widget');
sales?.sendMessage('Show current offers');
support?.sendMessage('I need technical help');
window.CompaninWidgets?.list();
window.CompaninWidgets?.destroy('support-widget');
Docs widget instances use a parallel registry:
window.CompaninDocsWidgets.get(id)window.CompaninDocsWidgets.list()window.CompaninDocsWidgets.destroy(id)Existing integrations continue to work. window.CompaninWidget and window.CompaninDocsWidget still point to the most recently initialized instance, while the registry APIs provide deterministic multi-instance targeting.