GUI Extensions
Extend the Omnium UI with custom iframes, webhook actions, and context-aware panels — without modifying the core platform.
What Are GUI Extensions?
GUI extensions let you embed custom content and actions directly into the Omnium backoffice UI. Each extension is a configuration entry in tenant settings that can:
- Display an iframe — embed an external application, dashboard, or tool inside an Omnium page
- Trigger a webhook — add a button that sends contextual data to an external endpoint when clicked
- Show information — display text, descriptions, or custom properties alongside Omnium data
Extensions are configured per tenant and appear in specific extension areas throughout the UI — on order pages, product pages, customer views, store pages, and more. No code changes to Omnium are required.
How Extensions Work
- An admin creates an extension in Tenant Settings > GUI Settings
- The extension is assigned to an extension area (e.g., the order sidebar, product edit page, or a context menu)
- At runtime, Omnium renders the extension in that area and passes context data (the current order, product, customer, etc.)
- If the extension has an iframe URL, it loads the external page with context values injected into the URL
- If the extension has a webhook URL, clicking the button sends the context data to the external endpoint
Extension Areas
Each extension is assigned to an area that determines where it appears in the UI and how it's displayed. Areas are grouped by the page or feature they belong to.
Orders
| Area | Display type | Description |
|---|---|---|
orders | Inline | Order list page |
orderInfo | Inline | Order detail — info section |
EditOrderInline | Inline | Order edit — inline panels |
editorderSidebarLeft | Sidebar | Order edit — left sidebar |
orderEditManage | Context menu | Order edit — manage/action menu |
orderEditCustomer | Inline | Order edit — customer section |
orderEditExport | Inline | Order edit — export section |
orderLine | Context menu | Order line — right-click actions |
orderContextMenu | Context menu | Order list — right-click actions |
ordersEditPickList | Inline | Pick list edit page |
pickListContextMenu | Context menu | Pick list — right-click actions |
ordersPromotionInline | Inline | Order promotion section |
Carts
| Area | Display type | Description |
|---|---|---|
carts | Inline | Cart list page |
cart | Inline | Cart detail page |
cartInline | Inline | Cart edit — inline panels |
cartManage | Context menu | Cart — manage/action menu |
cartSidebar | Sidebar | Cart — sidebar |
Products
| Area | Display type | Description |
|---|---|---|
products | Inline | Product list page |
productEdit | Inline | Product edit page |
productInline | Inline | Product edit — inline panels |
editProductSidebar | Sidebar | Product edit — sidebar |
Customers
| Area | Display type | Description |
|---|---|---|
privateCustomers | Inline | Private customer list |
privateCustomerEdit | Inline | Private customer edit page |
privateCustomerContact | Inline | Private customer — contact section |
viewPrivateCustomerSidebarLeft | Sidebar | Private customer — left sidebar |
businessCustomers | Inline | Business customer list |
businessCustomerEdit | Inline | Business customer edit page |
businessCustomerContact | Inline | Business customer — contact section |
businessCustomersButtonRow | Button row | Business customer list — action buttons |
Stores
| Area | Display type | Description |
|---|---|---|
stores | Inline | Store list page |
storeEdit | Inline | Store edit page |
storeInformationInline | Inline | Store edit — info section |
storeTab | Tab | Store edit — additional tab |
Purchase Orders
| Area | Display type | Description |
|---|---|---|
editPurchaseOrderDetailsInline | Inline | Purchase order detail — inline |
PurchaseOrderManage | Context menu | Purchase order — manage menu |
editPurchaseOrderSidebarLeft | Sidebar | Purchase order — left sidebar |
PurchaseOrderContextMenu | Context menu | Purchase order list — right-click |
ProcessGoodsModal | Inside modal | Goods reception modal |
AfterProcessGoodsModal | Inside modal | After goods reception |
Deliveries
| Area | Display type | Description |
|---|---|---|
DeliveriesInline | Inline | Delivery view — inline panels |
DeliveriesManageContextMenu | Context menu | Delivery — manage menu |
Other
| Area | Display type | Description |
|---|---|---|
settings | Inline | Settings page |
Extension Model
Each extension is a JSON object in TenantSettings.GuiSettings.GuiExtensions:
| Property | Type | Description |
|---|---|---|
| Name | string | Internal name (or translation key via NameTranslateKey) |
| GuiExtensionArea | string | Which area to display in (see Extension Areas) |
| Header | string | Title shown above the extension (or HeaderTranslateKey) |
| Description | string | Text displayed in the extension panel (or DescriptionTranslateKey) |
| ButtonText | string | Label for the action button (or ButtonTextTranslateKey) |
| IconCssClass | string | CSS class for the extension icon |
| IframeUrl | string | URL to load in an iframe (supports URL templates) |
| WebhookUrl | string | URL to call when the button is clicked |
| WebhookHttpVerb | string | HTTP method for webhook (POST or GET) |
| WebhookRequestHeaders | List | Custom headers sent with webhook requests |
| Properties | List | Custom key-value properties displayed in the panel |
| Tags | List | Tags for conditional display |
Minimal example
An extension that embeds an external dashboard on the order edit page:
Full example
An extension with both an iframe and a webhook action:
Iframe Extensions
When an extension has an IframeUrl, Omnium renders an iframe in the designated area. The iframe receives context data in two ways:
URL templates
The IframeUrl supports dynamic placeholders that are replaced with actual values at render time. Placeholders use double curly braces:
| Placeholder | Resolves to |
|---|---|
{{dataObject.*}} | Any property on the current object (order, product, customer, etc.) |
{{user.email}} | Current logged-in user's email |
{{user.firstName}} | Current user's first name |
{{user.lastName}} | Current user's last name |
{{language}} | Current UI language code |
{{selectedStoreIds}} | Comma-separated list of currently selected store IDs |
Example URLs:
postMessage API
After the iframe loads, Omnium also sends the full context data to the iframe via the browser's postMessage API. Your iframe application can listen for this message to receive the complete object data:
Omnium sends the postMessage twice — once immediately when the iframe loads, and again after a short delay. This ensures your application receives the data even if it initializes slowly.
Webhook Extensions
When an extension has a WebhookUrl and ButtonText, Omnium displays an action button. Clicking the button sends the current context data to the webhook URL.
Request format
The webhook receives a JSON payload containing the extension configuration and the event data:
Custom headers configured in WebhookRequestHeaders are included in the request, allowing you to pass API keys or other authentication tokens.
Response format
Your webhook endpoint can return a validation result that Omnium displays to the user:
| Field | Type | Effect |
|---|---|---|
isValid | bool | Whether the operation succeeded |
validationMessages | string[] | Informational messages shown to the user |
validationWarnings | string[] | Warning messages shown to the user |
Retry policy
Webhook requests are retried automatically on failure, with increasing delays between attempts (1, 5, and 15 seconds).
Event logging
Every webhook trigger is logged in the Omnium event system with operation ID 200001 (GuiExtensionTriggered). You can subscribe to this event via the standard Events system for monitoring or auditing.
Tag-Based Filtering
Extensions can be conditionally displayed based on tags. When an extension has Tags configured, it only appears if the current context object's tags include all of the extension's tags.
This lets you show different extensions for different types of objects. For example:
The "B2B Credit Check" extension only appears on orders tagged with "B2B". The "Gift Wrapping Options" extension only appears on orders tagged with "gift-order".
Custom Properties
Extensions can include custom key-value properties that are displayed in the extension panel. These are useful for showing static configuration or reference information:
Help Menu Items
In addition to page-level extensions, you can add custom items to the help menu in the Omnium UI. Help menu items are configured in TenantSettings.GuiSettings.GuiHelpMenuItems:
When Routes is empty, the help item appears on all pages. When specific routes are listed, it only appears on matching pages.
Common Patterns
External dashboard on order page
Embed an analytics dashboard that shows order-specific insights:
ERP sync button
Add a button that triggers an order sync to your ERP system:
Store-specific information panel
Show store-specific tools on the store edit page:
Customer lookup in external CRM
Embed a CRM view on the customer page:
Configuring in the UI
Extensions are managed in the Omnium backoffice under Administration > Tenant Settings > GUI Settings.
The admin panel provides:
- Extensions tab — add, edit, reorder, and remove extensions
- Settings: name, header, description, button text, area assignment, tags, icon
- Properties: custom key-value pairs
- IFrame: iframe URL configuration
- Webhook: webhook URL, HTTP method, custom request headers
- Help menu tab — configure custom help menu items
Extensions can be reordered by dragging them in the list. The order determines the display order within each extension area.
Related Documentation
| Topic | Link |
|---|---|
| Events and webhooks | Events |
| Custom reports | Custom Reports |
| Configuration overview | Configuration |
