When you add a dashboard menu plugin extension, the generated file lands under src/extensions/dashboard/menu-plugins/<plugin-folder>/ and the extension is registered in your project's extensions.ts.
This file is the same whether you add the menu plugin in a Studio Two site project or in a Wix CLI project.
| File | What it's for |
|---|---|
<plugin-folder>.extension.ts | The configuration file for the menu plugin ID, title, slot ID, icon, and click action. |
A menu plugin has no component file. When a Wix user clicks the item, the page or modal it opens runs the code.
The <plugin-folder>.extension.ts file declares the menu plugin with extensions.dashboardMenuPlugin().
Import extensions from the package your project uses:
Example:
| Field | Type | Description |
|---|---|---|
id | string | Menu plugin ID as a GUID. It must be unique across all extensions in the project. |
title | string | The label of the menu item. |
extends | string | Slot ID of the menu slot the item appears in. Each slot is on a dashboard page built by Wix. For the available slots and their IDs, see About Dashboard Page Slots. |
iconKey | string | Name of the Wix Design System icon shown next to the label. The generated file uses Sparkles. |
action | object | What happens when a Wix user clicks the item. Contains either navigateToPage or openModal. See Click action. |
Set action to one of the following:
| Field | Type | Description |
|---|---|---|
navigateToPage.pageId | string | ID of the dashboard page to navigate to. For a dashboard page in your project, use the id from its .extension.ts file. For a dashboard page built by Wix, see Page IDs. |
openModal.componentId | string | ID of the dashboard modal to open. Use the id from the modal's .extension.ts file. |
The slot passes data from the host page to the page or modal the item opens, such as the ID of the item in view. Each slot defines its own data type, which the business solution's package exports under the plugins namespace of its dashboard entry point. The type path is plugins.<page>.<slot>Params.
How the data reaches your code depends on the click action:
openModal: The modal receives the data as an object. To read it, call observeState().navigateToPage: Wix adds the data to the dashboard URL as query parameters, for example ?contactId=<contact ID>. To read them in the page, use the location.search value that observeState() passes. The values are strings, not the slot's data type.For example, the Contact main more actions menu slot on the CRM contact page passes contactId, the ID of the contact in view. A modal reads it like this:
Some slots pass no data. For the data each slot passes, see About Dashboard Page Slots.
Last updated: 2 November 2026