Skip to content
Gaurav TiwariDocs

The Admin, the Sidebar and Product Pages

Version 0.2.0 Updated November 15, 2026

Where Vendwick sits in the EmDash admin: the Store and Store settings folders, pinning the store under Content, product pages, dashboard widgets, the editor panel, the Access column and what each role sees. It also explains what EmDash 1.5 allows a plugin to do, and where those limits show.

The sidebar

Vendwick’s pages sit in two folders:

FolderPages, in order
Store (daily work)Store overview, Orders, Products, Customers, Subscriptions, Licenses, Invoices, Reports
Store settings (setup)General, Payments, Shipping, Tax and VAT, Coupons, Invoice settings, Emails, Appearance, Page access, Integrations, Webhooks, Store import, Modules, Vendwick license

Shipping, Webhooks and Store import are always listed; they work once their module (Physical Goods and Shipping, Outgoing Webhooks, Store Importer) is on in Modules. The importer’s page is called "Store import" because EmDash has its own "Import". Releases and Deliveries are not in the sidebar: they are tabs of Products and Orders in Vendwick’s own header, and every link to them still works.

Every page has its own name, so EmDash’s command palette (Cmd+K or Ctrl+K) finds it by typing that name: "orders", "invoice settings", "vendwick license" and so on. The General page is listed as "General"; type "general" (its page title is "Store settings"). The setup wizard (/setup) isn’t in the sidebar either; the Store overview and the General page link to it as Setup guide.

EmDash highlights Store overview in the sidebar on Releases, Deliveries and the setup guide (pages that are not in the sidebar), and also on General, because it marks the entry whose path the current page starts with and the overview’s path is the plugin’s root. A plugin cannot change that; Vendwick’s own header always marks the right page.

By default both folders are in the Plugins section, at the bottom of the sidebar. EmDash opens a folder only when you are on one of its pages; otherwise it stays closed. A folder shows its first page’s icon: a storefront for Store, a gear for Store settings.

Vendwick’s header (on every Vendwick page) mirrors the folders: the Store pages as links, Store settings as a menu, plus a search box for order numbers, emails, license keys and the start of a customer’s name. The header measures itself: links that do not fit go into a More menu, and when space is short the search box becomes a search button (click it or press / to open it, Escape to close it). The store name is cut short on narrow screens; hover it for the full name. A license key typed there travels only in the request body: it is never put in a URL, a log line, an audit event or an error message, and the answer shows the key masked. If the search fails, it answers "Search is unavailable right now" without repeating what was typed.

Rearranging the sidebar for yourself

EmDash 1.5 lets each user reorder or hide sidebar entries under Settings > Sidebars (/_emdash/admin/settings/sidebars). That changes your own sidebar only; Vendwick’s order is the default everyone starts with.

Pin the store to the top of the sidebar

EmDash puts a plugin page in the Content section only when the page’s folder has the same name as the folder of a visible content type. A plugin cannot create a content type on its own, so Vendwick asks an administrator to do it with one click.

Where: the card "Show the store at the top of the sidebar" on the Store overview and at the bottom of the General page. Only administrators see it. Once the store is pinned, the card leaves the Store overview; the pinned state and Unpin stay on the General page.

What one click creates: a content type named Product pages (singular "Product page"), in the Store folder, with:

FieldTypeNotes
TitleTextRequired
ProductText with Vendwick’s product pickerRequired. Stores the product’s slug
SummaryLong textUp to 2,000 characters
BodyRich text (Portable Text)Vendwick’s blocks are available
Slug, SEOEmDash’s ownSEO title, description and image

Drafts and revisions are on. The content type is not routable: EmDash does not serve its entries at a URL of their own, because Vendwick shows them on the product’s store page.

From then on the Store folder sits under Content, with Product pages first, then Vendwick’s Store pages. Reload the admin to see the sidebar change.

If a Product pages content type already exists (you created it yourself, or unpinned earlier), pinning only moves it into the Store folder. Its fields and entries stay as they are. A content type hidden in Content types keeps the folder in Plugins until you show it there.

If something fails (for example, the user is not an administrator), the card shows the reason and nothing changes. When the content type was created but a field could not be added, Vendwick removes the new, empty content type again.

Unpin moves the folder back to Plugins by clearing the content type’s folder. It never deletes the content type or any product page.

Vendwick stores nothing about pinning: the card reads the content type each time, so whatever you change in Content types is what it shows.

Product pages

A product page is long-form landing content for one product, written in EmDash’s editor.

  • Choose the product in the Product field (search by name). The field shows the product’s name and whether it is active.
  • When the entry is published, the product’s store page (/products/<slug>/) shows its title, summary and body above the plans and buy buttons, and uses its SEO title, description and image. The product card under it keeps its plans.
  • Drafts are never shown. A product without a published product page looks exactly as before.
  • The product index (/products/) shows a product page’s summary in place of the product’s description.
  • Pages are cached for about a minute, so an edit can take a minute to appear.

Themes that build their own product pages can read the entry the same way the built-in page does (internal/product-page/entry).

Dashboard widgets

Four widgets appear at the bottom of EmDash’s dashboard, two to a row:

WidgetWhat it showsWho sees it
SalesNet sales today, in the last 7 days and in the last 30 days, each compared with the period before, with a 30-day sparkline. Main currency, UTC daysAdministrators and editors
Recent ordersThe last 5 orders with status and amount, each linking to the orderAdministrators
Needs attentionFailed deliveries, failed refund reversals, refund jobs that failed, refunds the provider failed (last 30 days), past-due subscriptions, open disputes and pending refunds, each linking to the filtered list (/deliveries?status=failed, /deliveries?queue=refunds&status=failed, /orders?refund=failed, /subscriptions?status=past_due, /orders?dispute=open, /orders?refund=pending; the Overview uses the same links). Rows at zero are hidden; with nothing to do it says "All clear"Administrators
Store setupThe setup checklist’s progress and the next stepAdministrators, until the checklist is complete. Hide dismisses it for you on this browser

Other roles see a one-line "Admins only" instead of the data.

The Store panel in the content editor

On every saved entry, of any content type, the editor’s settings sidebar has a Store panel:

  • Limit to buyers lists the page access rules that cover the entry: its own rule and any path rule that matches its URL. Administrators can add a product (only its buyers can then read the entry) or remove one. Removing the last product removes the rule. This needs the Page access module; without it the panel links to Modules.
  • On product pages, the panel also shows the linked product with links to edit it and to view its store page.

The Access column in content lists

Content lists get an Access column for administrators: a lock and the product names on entries limited to buyers. A list page costs one lookup. Once Vendwick learns that a content type has no access rules, the column leaves that type’s lists for the rest of your session.

Roles

EmDash shows plugin pages to every role, but most of Vendwick’s admin needs an administrator. Vendwick 0.2.0 shows editors and other roles a clear "Admins only" page instead of failed requests. Reports stay readable by editors (without the admin-only actions), and so does the Sales widget; the other dashboard widgets show a one-line "Admins only" note.

Orders list filters

commerce/orders/list combines its filters (AND): status, kind, customerEmail, search, from/to, refunded (any refund), gateway, disputed (any dispute) or dispute (open, won, lost), and refund (pending: a refund waiting on the provider; failed: a refund the provider failed in the last 30 days). Every filter except refund runs in the storage query, so each page is full and has a total. refund is looked up through the refunds themselves and answers one page of up to 100 orders, with the other filters applied to it. The Orders page reads the same names from its URL (?dispute=open, ?refund=pending).

Share

Was this helpful?

Still stuck? Open a support ticket