Everything PowersportOS does today, in one place.
A modular operating layer for powersport retail. Modules marked Live are in production; Coming items are on the immediate roadmap, prioritized by what founding partners actually ask for next.
Modules
What's in the box.
Channel Communications (multi-kind)
One publishing engine, four message kinds, routed through the existing brand-subscription graph. Blog posts auto-publish to opted-in dealers' Shopify blogs via the Admin API, with auto-publish or queue-for-review per subscription. Product-release pings ("Alphatrac just released 8 new SKUs") batched weekly by default. Operational alerts for sales-stops, MSRP changes, etc. surface as banner + inbox row on the dealer's portal. Recalls force-delivered with email + persistent red banner regardless of mute settings, with 48-hour owner / admin acknowledgement SLA. Adapter pattern from day one (Shopify Admin blog v1; WordPress / intranet CMS / webhook plug in via the same interface). Click-through Channel Author / Subscriber Terms, DSA Article 6 hosting classification, voluntary transparency report. Nobody else in powersport is doing this. Read the doc
YMM search
Submodel- and generation-aware vehicle selectors. Customers see only the parts that actually fit. Wildcard support for parts that fit all submodels of a year-model. Concept doc.
Internal YMM Lookup
Same YMM search as the storefront, but inside the operator portal. Lets a salesperson on the phone find a part by vehicle context without leaving the platform. Per-row print-label + open-manual + open-part actions. Multi-Store children get parent's catalog merged into results automatically. Concept doc.
Label printing (ZPL + PDF)
Thermal-printer ZPL and plain-paper PDF generated from your catalog. Distributor-specific templates (the 76×25 mm major-EU-distributor format, etc.) auto-pull the right alias SKU per destination. Bulk print from a CSV/Excel upload or one-click per row from My Catalog / My Parts. PrintNode + Zebra Browser Print + WebUSB all supported as print bridges. Concept doc.
Dealer map
Interactive store locator with country filtering, custom map markers, optional per-dealer logos in popup cards, and full address management. Available in two surfaces: as a Mapbox-rendered widget on the customer's Shopify storefront, and as a split-view (list + map) inside the operator portal at /dealers/map. CSV import with automatic geocoding for bulk uploads; logo_url column auto-fetches images to bucket storage. Concept doc.
Operator dashboard
"What should I do today?" snapshot rather than a wall of vanity counts. Personal welcome with tenant identity at the top, an Actionable-warnings block that surfaces stock-feed staleness / zero-stock products / missing geocodes / unactivated parent items (Multi-Store children), the standard catalog + dealer counts, and a system-health strip at the bottom showing backup schedule + last stock-push + Shopify connection state. The warnings block disappears entirely when there's nothing to do, empty dashboard is a feature.
Multi-timezone header clocks
Up to three live clocks in the portal header for tenants operating across time zones (typical case: HQ office + retail / Shopify market + manufacturing or distribution warehouse). Each clock has a free-text label and an IANA timezone; per-tenant config picks 24h vs 12h format and Monospace vs Doto (dot-matrix display) font. Updates on the minute boundary, hidden on mobile to preserve header real-estate, no visual footprint when not configured.
Multi-tenant catalog
Central parts database that vendors publish to. Dealers activate exactly the brands they carry. Automatic catalog updates as new parts are added by the brand. Concept doc.
PIM-Light: structured product data
Multi-image gallery, dimensions + EAN + country of origin, multi-OEM cross-references, HTML descriptions, deep category tree, lifecycle status with replaced-by pointer, and per-tenant bin / warehouse location. Enough product-information-management to feed Shopify with rich product pages without bolting on a separate PIM. Concept doc.
SKU aliases
One canonical part can carry alternate SKU identifiers per source: a major distributor's code, a regional distributor's code, your internal POS code, OEM cross-reference, legacy supplier number. Storefront + labels resolve aliases automatically, print distributor-format labels for shipments to that distributor, your POS code for internal handling, all from the same source row. Concept doc.
Audit log
Append-only record of every admin mutation: tenant create / update / delete, user create / reset / delete, API-key rotation, brand-subscription changes, Shopify install / uninstall. Surfaced as a tab on each tenant detail page. Captures who, what, when. Tenant-facing audit log is on the roadmap when first multi-user customer asks.
Asset storage (images + manuals)
Hetzner Object Storage bucket for product images and PDF manuals. Browser uploads via presigned PUT URLs. Bucket versioning enabled for accidental-overwrite recovery. CSV importer auto-fetches from external URLs and caches locally so customer catalogs don't break when supplier URLs rot. Concept doc.
Retail multi-location
RETAIL tenant type with DealerStock per location. POST /api/integrations/location-stock for per-store stock push. Customer-facing widget shows nearest-store availability.
Reseller stock network
Opt-in stock-sharing across MANUFACTURER and RESELLER tenants. "Find this part at a reseller near you" widgets on manufacturer product pages. Haversine-sorted, precision-aware.
Upstream Inventory
The layer above stock-sharing: SUPPLIER tenants (factories, warehouses) publish inventory once, every subscribed buyer sees it live. Shared-pool model (one row per SKU, propagates to N buyers), inbound batch pipeline with per-batch ETAs, buyer-placed orders with PDF order document and email-to-supplier notification, one-click transactional Receive on inbound batches. Connections are free for buyers; suppliers pay their own subscription. Read the doc
Brand entity + metadata
Logo, website, country of origin, contact info, optional tenant link. Brand metadata flows to every reseller's storefront. Transactional rename keeps part references in sync.
PowersportOS Shopify Theme
Shopify Skeleton-based theme with all our widgets pre-built and pre-wired (YMM, dealer map, stock locator). Bundled with every customer subscription.
Bulk CSV + Excel import
Year-range expansion (a value like "2012-2016,2018-2023" expands to nine fitments, quoted because the comma inside is part of the year list, not a CSV column boundary), submodel-wildcard support, idempotent re-import. Customer portal has tenant-side bulk import for proprietary parts and vehicles. The Labels page accepts Excel files directly from distributor packing lists, column auto-detection picks the right SKU and quantity columns even for files with multiple columns or Swedish headers. CSV format doc.
Multi-Store (parent / child tenants)
One brand operating several Shopify storefronts shares the catalog through a parent/child tenant hierarchy. Each child storefront activates a subset of the parent's items with its own pricing and stock per item. Canonical content reads live from the parent so updates propagate automatically. Single-level hierarchy in v1; full guide in docs.
B2B pricing tiers
Customer-group pricing, login-gated catalogs, bulk-discount logic. Schema already supports it; UI and theme exposure when the first customer asks.
Customer garages
End customers save their own vehicles (year, make, model, submodel) and only see compatible products across visits. Stickiness for retail customers, repeat-purchase patterns for everyone in the chain.
Shopify product push
Write PowersportOS catalog into a customer's Shopify products with one click (or bulk on a list). Variant groups become multi-variant Shopify products with per-variant images. Per-tenant push profile decides which fields overwrite vs leave alone on re-push. Dry-run preview shows per-field diffs before you push. Loop-prevention guard for stock that round-trips back via the merchant's own inventory worker. Saves the central pain that the distributor pitch hinges on: 4 days per brand onboarding turns into one click. Read the doc
Managed brands and parts (data provider tier)
Delegated write access to the central catalog scoped per brand. DATA_PROVIDER and MANUFACTURER tenants curate their own brand data directly through the portal: CSV upload, direct JSON API, role-based permissions (READ / WRITE / OWNER), audit-logged writes, lifecycle status with replaced-by pointers instead of destructive deletes. A pluggable per-provider adapter pattern for XML / REST / proprietary feeds is in active development. The Data provider tier is free; flips cleanly up to paid tiers when the relationship matures. Read the doc
Integrations
API-first. Partner-friendly.
Stable, documented endpoints with X-API-Key auth. Push from anywhere: Shopify, ERP, WMS, custom backend. For complex setups against existing systems, integration partners take the implementation work.
Direct API push
If you have developers, point your existing inventory or order system at our endpoints. JSON arrays, idempotent upserts, X-API-Key per tenant. Straightforward to integrate.
Shopify integration
Storefront widgets read from our public API with a per-tenant key pasted once into the bundled theme. Stock pushes from your ERP, POS, or a cron against Shopify's Admin API land on /api/integrations/stock-feed. Outbound writes use a Dev Dashboard app you create via Shopify's Dev Dashboard, paste the Client ID + Client Secret into your portal, we exchange them for short-lived tokens via client_credentials on each call, you revoke whenever you want.
Integration partners
For larger customers with custom POS, ERP, or warehouse systems, regional integration agencies (Codeunit-tier in the Nordics, equivalents in other markets) build the bridge. We provide stable APIs that don't change behind their back.
Ready to talk?
PowersportOS is in early access with a small group of dealers, manufacturers, and distributors. If your business shape matches what we just described, get in touch.