Docs

Get started in an afternoon

Install via NuGet, configure in the Umbraco backoffice and ship your first order. Here's the whole path.

1

Install the package

Add Optimus Commerce to your Umbraco 17+ / .NET 10 project. The package applies its own migrations on startup — no manual database schema.

install-the-package
# Package Manager Console
Install-Package Optimus.Commerce

# or .NET CLI
dotnet add package Optimus.Commerce
2

Map your content model

In the backoffice, map a document type to a product. Optimus uses your existing Umbraco properties for name, price, images and variants.

map-your-content-model
// Program.cs
builder.Services.AddOptimusCommerce(options =>
{
    options.MapProduct<ProductPage>(p => new
    {
        Sku = p.Sku,
        Price = p.Price,
        Variants = p.Variants
    });
});
3

Configure payments & shipping

Add a payment provider and a shipping method in the Optimus dashboard. Stripe, Klarna and Mollie are ready out of the box.

configure-payments-shipping
// Program.cs
builder.Services.AddOptimusPayments(pay =>
{
    pay.AddStripe(o => o.ApiKey = cfg["Stripe:Key"]);
    pay.AddMollie(o => o.ApiKey = cfg["Mollie:Key"]);
});
4

Render the storefront

Drop the cart and checkout widgets on your templates, or call the headless API from a separate frontend. You're live.

render-the-storefront
<optimus-cart></optimus-cart>
<optimus-checkup></optimus-checkup>

GET /umbraco/api/optimus/cart

API reference

GET /umbraco/api/optimus/catalog

List and filter products with facets.

GET /umbraco/api/optimus/product/{sku}

Fetch a single product with variants.

POST /umbraco/api/optimus/cart/add

Add an item to the current cart.

POST /umbraco/api/optimus/cart/checkout

Place an order from the cart.

GET /umbraco/api/optimus/orders/{id}

Retrieve an order by id.

POST /umbraco/api/optimus/webhooks/payment

Payment provider callback.

Full OpenAPI schema is generated from your content model at /umbraco/api/optimus/swagger.

Have a question while building?

Support is included with Pro and Enterprise — or reach the team directly.

Contact us