Skip to main content
Status Sign in

Welcome to PowersportOS

PowersportOS is the operating layer for European powersport retail, the catalog, fitment, and integration infrastructure that retailers, manufacturers, and distributors of ATV, UTV, motorcycle, and snowmobile parts use to run their commerce.

These docs are the conceptual reference for the platform. They cover what the moving parts are, how the data flows, and the vocabulary you'll see used inside the apps and across our APIs. They are not the operational how-to for a customer running PowersportOS day-to-day, that documentation lives inside the customer portal at app.powersportos.com.

Who PowersportOS is for

PowersportOS serves four overlapping audiences, all of whom touch the same shared infrastructure but use different surfaces of it:

Retailers
Single-store dealers, webshops, and B2B sellers running Shopify or similar storefronts. They subscribe to brands, pull the central catalog into their store, and add their own pricing and stock.
Retail chains
Multi-location operators showing per-store stock on their product pages. The platform tracks inventory per location, surfaces nearest-store availability to end customers.
Manufacturers
Brands and importers who maintain a catalog. Their data flows to every subscribing reseller; their product pages can show 'find this part at a reseller near you' with live stock.
Distributors
Pan-European or regional importers sitting between brands and retailers. They use PowersportOS to push their range to all their reseller customers' Shopify stores in one motion.

The architectural shape

PowersportOS is a multi-tenant SaaS platform. Every customer is a tenant in the same database, isolated from the others. The data sits in two clearly separated layers:

  • The central catalog is curated by PowersportOS itself, makes, models, vehicles, parts, fitments. Customers read from it, none of them can write to it directly.
  • Each tenant layer holds the customer's own data: their prices, stock, dealer locations, proprietary SKUs not in the central catalog.

The separation matters because it makes the catalog content a true shared resource, one tenant's product description update can't break another tenant's storefront, while keeping each tenant's commercial data fully their own. See Two-layer data model for the details.

How the surfaces fit together

A live PowersportOS customer typically touches three surfaces, depending on what they're doing:

  1. Their own Shopify storefront, which calls our public API (/api/t/*) with a tenant API key pasted into the bundled PowersportOS theme settings, to render YMM widgets, dealer maps, and product detail content.
  2. The PowersportOS customer portal at app.powersportos.com, where they manage their activated catalog, proprietary parts, dealers, and stock-sharing preferences.
  3. Their own POS, ERP, or WMS (or a small worker reading Shopify's Admin API) pushing stock and price data into PowersportOS via the integrations API (/api/integrations/*) on a schedule.

For outbound writes back into Shopify (the product push feature), the customer creates a Dev Dashboard app via Shopify's Dev Dashboard and provides the Client ID + Client Secret to the PowersportOS portal. We exchange those for short-lived OAuth tokens via client_credentials on each call; the credential stays under their control. The wiring is set up once during hands-on onboarding.

Where to go next

If you're new to the platform, read Two-layer data model first. It anchors the rest of the vocabulary. From there, Tenant types explains the different commercial shapes, and What is YMM covers the fitment side that makes powersport different from generic ecommerce.

Developers integrating against the platform should start with API overview.