Marketplace Events | Pandium Docs
Emitted Events from the Pandium Marketplace
In addition to the multiple customization options and ways of implementing the Pandium Marketplace, we also support emitted events from the iframe that you can use to trigger additional custom actions or navigate outside of the iframe.
The Pandium Marketplace iframe communicates with your parent application using the browser's window.postMessage() API. When a user performs an action inside the iframe (installing, saving, navigating, etc.), Pandium sends a structured message to the parent window. Your application listens for these events using window.addEventListener('message', ...) and can respond accordingly. For example, closing a modal, navigating to another page, or showing a confirmation.
Each message contains a message field with the event name, and depending on the event, a tenant object with the tenant and integration IDs.
Example Listener
window.addEventListener('message', (event) => {
// Always verify the origin in production
// if (event.origin !== 'https://your-pandium-domain.com') return
const { message, tenant } = event.data
switch (message) {
case 'pandium-install-cancel':
console.log('User cancelled install for tenant:', tenant?.id)
closeModal()
break
case 'pandium-save-sync':
console.log('User saved and synced tenant:', tenant?.name)
showSuccessNotification()
break
case 'pandium-content-height-change':
// Resize the iframe to match content
const iframe = document.getElementById('pandium-iframe')
iframe.style.height = event.data.height + 'px'
break
default:
console.log('Pandium event:', message, tenant)
}
})
Tenant Payload Shape (When Included)
{
"message": "pandium-install-save",
"tenant": {
"id": 123,
"name": "tenant-name",
"integration": {
"id": 456,
"name": "integration-name"
}
}
}
Supported Events
| Event | Screen | Trigger | Payload |
|---|---|---|---|
pandium-install-cancel |
Install flow | Cancel new install (deletes tenant) | { tenant } |
pandium-install-next |
Install flow | Next button — advance to next tab | { tenant } |
pandium-install-back |
Install flow | Back button — go to previous tab | { tenant } |
pandium-install-save |
Install flow | Save without syncing | { tenant } |
pandium-save-sync |
Install flow | Save & Sync Now — succeeded | { tenant } |
pandium-save-sync-error |
Install flow | Save + Sync Now — sync failed | { tenant } |
pandium-connection-settings-cancel |
Connection Settings | Settings Cancelled | { tenant } |
pandium-connection-settings-save |
Connection Settings | Settings Saved | { tenant } |
pandium-uninstall |
Tenant Settings | Uninstall Confirmed | { tenant } |
pandium-uninstall-cancel |
Tenant Settings | Uninstall Cancelled | { tenant } |
pandium-connector-connect |
Connector auth | Connector Connected | { tenant } |
pandium-connector-connect-cancel |
Connector auth | Connect Cancelled | { tenant } |
pandium-connector-connect-next |
Connector auth | Next in connect flow | { tenant } |
pandium-connector-connect-back |
Connector auth | Back in connect flow | { tenant } |
pandium-connector-disconnect |
Connector Auth | Connector Disconnected | { tenant } |
pandium-connector-disconnect-cancel |
Connector Auth | Disconnect Cancelled | { tenant } |
pandium-content-height-change |
All | iFrame content resizes | { height } |
pandium-connect-app |
Integration Show | 'Connect' button clicked | |
pandium-all-integrations |
Integration Show | "All Integrations" nav |