JavaScript API (Programmatic Triggers)
If you need more control over how and when the widget opens, you can trigger it programmatically using the global SignalogPlugin object.
Opening the Widget
Use openWidget() to open the widget. You can pass an options object to specify the display mode, position, and the specific panel to open.
Display Modes
// Open as a detached window (default)
SignalogPlugin.openWidget({ mode: 'window' })
// Open as a centered modal
SignalogPlugin.openWidget({ mode: 'modal' })
// Open as a side drawer (right is default)
SignalogPlugin.openWidget({ mode: 'drawer', position: 'right' })
// Open as a left-side drawer
SignalogPlugin.openWidget({ mode: 'drawer', position: 'left' })| Mode | Description |
|---|---|
window | Floating window in the bottom-right corner |
modal | Centered modal with backdrop |
drawer | Side drawer (use position: 'left' or 'right') |
fab | Show the floating action button only |
hidden | Hide the widget entirely |
Direct Navigation
You can open a specific panel directly by passing the trigger option:
// Opens the feedback panel
SignalogPlugin.openWidget({ trigger: 'feedback' })
// Opens the bug report panel
SignalogPlugin.openWidget({ trigger: 'bugReport' })
// Opens the feature request panel
SignalogPlugin.openWidget({ trigger: 'featureRequest' })
// Opens the changelog / what's new panel
SignalogPlugin.openWidget({ trigger: 'changeLogs' })| Trigger key | Opens panel |
|---|---|
feedback | Feedback |
bugReport | Bug report |
featureRequest | Feature request |
changeLogs | Changelog |
Combining mode and trigger
You can combine both:
// Open the feedback panel as a centered modal
SignalogPlugin.openWidget({
mode: 'modal',
trigger: 'feedback',
})
// Open the changelog as a right-side drawer
SignalogPlugin.openWidget({
mode: 'drawer',
position: 'right',
trigger: 'changeLogs',
})Closing and Toggling
// Closes the widget
SignalogPlugin.closeWidget()
// Toggles the widget state (opens if closed, closes if open)
SignalogPlugin.toggleWidget()Floating Action Button (FAB) Visibility
Programmatically show or hide the default Floating Action Button trigger:
// Hide the FAB (your buttons trigger the widget instead)
SignalogPlugin.showTrigger.value = false
// Show the FAB again
SignalogPlugin.showTrigger.value = trueWhy .value?
showTrigger is a Vue 3 ref under the hood. Setting .value triggers reactivity inside the widget — the FAB animates in or out smoothly.
Practical patterns
Show widget only after sign-up
// On your sign-up success handler
window.SignalogPlugin?.openWidget({
mode: 'modal',
trigger: 'feedback',
})Open feedback when user spends >2 min on page
setTimeout(() => {
if (window.SignalogPlugin) {
window.SignalogPlugin.openWidget({ trigger: 'feedback' })
}
}, 120000)Trigger from a keyboard shortcut
document.addEventListener('keydown', (e) => {
// Cmd+/ or Ctrl+/ opens feedback
if ((e.metaKey || e.ctrlKey) && e.key === '/') {
e.preventDefault()
window.SignalogPlugin?.toggleWidget()
}
})Wait until the widget global is available
The script loads asynchronously, so SignalogPlugin may not exist yet on first interaction. Check before calling:
function whenSignalogReady(callback, attempts = 20) {
if (window.SignalogPlugin) return callback(window.SignalogPlugin)
if (attempts <= 0) return
window.setTimeout(() => whenSignalogReady(callback, attempts - 1), 150)
}
function openSignalog(opts = {}) {
whenSignalogReady((SignalogPlugin) => {
SignalogPlugin.openWidget(opts)
})
}The current widget bundle does not dispatch a public signalog:ready event.