Everything to run a store, inside Umbraco
A complete commerce surface — from catalog to checkout — that editors manage in the backoffice and developers extend with a clean, typed API.
Catalog & merchandising
Products & variants
Unlimited products with variants, dimensions, bundles and rich media — modeled as Umbraco content.
Categories & navigation
Hierarchical categories and facets with drag-and-drop ordering in the backoffice content tree.
Pricing & discounts
Customer groups, currency-specific pricing and scheduled promotions with usage limits.
Search & facets
Fast on-site search with faceted filtering, powered by an index tuned for commerce.
Cart & checkout
Optimized checkout
A streamlined, conversion-focused checkout with guest and account paths.
Shipping & tax
Pluggable shipping providers and accurate tax calculation per region and product type.
Payments
Stripe, Klarna and Mollie out of the box, plus a clean provider interface for more.
Orders & returns
Full order lifecycle, returns, partial refunds and exportable reports.
Platform & developer experience
Headless API
A typed JSON API for catalog, cart and checkout — build any frontend you like.
Multi-store
Multiple stores, currencies, languages and domains from one Umbraco install.
Extensible
Compose pipelines, event handlers and custom property editors — Umbraco-first extensibility.
SEO & performance
Canonical URLs, structured data, sitemaps and output caching for fast product pages.
A typed API for headless commerce
Query the catalog, build a cart and place orders from any client. The API is versioned, documented and shaped around your Umbraco content model — so your storefronts stay in sync with the backoffice.
- REST + JSON endpoints
- OpenAPI schema generated from your model
- Cart, checkout and order webhooks
- Per-channel API keys and rate limits
const res = await fetch(
"https://shop.local/umbraco/api/optimus/catalog",
{ headers: { "X-Api-Key": KEY } }
);
const { products, facets } = await res.json();
await fetch("/umbraco/api/optimus/cart/add", {
method: "POST",
body: JSON.stringify({ sku: "TEE-01", qty: 2 })
});
Want the full feature matrix?
Compare Community, Pro and Enterprise side by side.