Platform Overview

Stockisto is a retailer-discovery SaaS for product suppliers. It replaces the generic "store locator" widget with a branded, white-labeled discovery experience for consumers, a self-service portal for the retailers in a supplier's network, and analytics that prove what that network actually delivers. This page explains what the platform is, who it serves, how value flows through the supplier → retailer → consumer → installer chain, and the multi-tenant model and module map that the product is built on. Start here, then follow the cross-links into the role-specific guides.


What Stockisto is

At its core, Stockisto turns a supplier's list of retailers into three connected things:

  • A branded "where to buy" locator — a white-labeled, map-and-list discovery experience consumers use to find a retailer that carries the supplier's products, filtered by live stock, showroom availability, and service tags.
  • Retailer-network intelligence — the relationships, profiles, and analytics behind the locator, so a supplier can manage its network and bring hard discovery data to every partner conversation.
  • Installer lead routing — a separate installers platform that surfaces qualified installers near a consumer and routes lead requests to them.

It is built for European B2B suppliers, is GDPR-ready, and is EU-hosted (Sweden Central).

Not just a widget

A store-locator widget is a list of addresses with no relationship context and no analytics. Stockisto models the full supplier–retailer network, lets retailers maintain their own profiles, and measures discovery so value can be proven at every partner meeting.


The three audiences

Stockisto serves three audiences, but they are modeled differently in the system. Suppliers and retailers are tenant types; installers are a separate platform.

AudienceHow it's modeledPrimary value
SuppliersTenantType.SupplierBranded locator, network management, ROI analytics
RetailersTenantType.RetailerSelf-service profile, get found, own performance data
InstallersSeparate installer platform (not a tenant type)Surface in discovery, receive routed local leads

The TenantType enum defines exactly three values — Supplier, Retailer, and Stockisto (the internal platform operator). There is no Installer tenant type.

Why installers are separate

An installer is registered as an InstallerCompany in the installers platform with its own approval lifecycle (Pending → Approved → Rejected → Revoked). It is not tenant-scoped business data and does not log in as a supplier or retailer tenant. Consumers are not accounts at all — they use the public locator anonymously.


The value chain

Value flows in one direction, and each link makes the next one stronger:

  1. Supplier imports its retailer network, brands a locator, and publishes it.
  2. Retailer claims and completes its profile (stock tags, showroom, services) so it appears accurately in the locator.
  3. Consumer searches the branded locator, filters by stock/showroom/service, and finds a nearby retailer that carries the product.
  4. Installer is surfaced for jobs that need fitting, and qualified lead requests are routed to nearby approved installers.

Every step generates analytics — searches, profile views, CTA clicks, lead requests — that flow back to the supplier and the retailer as proof of the network's discovery value. See the Analytics & Attribution guide for what's tracked and the Analytics + ROI guide for the dashboards.


The multi-tenant model

Stockisto is a single deployment shared by many tenants. A tenant is one organization — a supplier or a retailer (or the internal Stockisto operator). Isolation is enforced in the data layer, not left to individual queries.

TenantId row isolation

Every row of tenant business data carries a TenantId, and any entity that stores supplier or retailer data implements the ITenantScoped marker interface. EF Core global query filters key off that interface to scope every read to the caller's own tenant, and a write-time guard refuses to insert any tenant-scoped row that hasn't been stamped with a TenantId. A query against retailers, products, or analytics can therefore only ever return the caller's own rows.

Read the security page for the details

The exact isolation machinery — global query filters, the write-side TenantInsertGuard, the operator-only cross-tenant bypass, RBAC roles, and authentication — is documented in the Security & Data guide.

Lifecycle stages

Each tenant has an authoritative LifecycleStage that advances as the tenant gets value from the platform. Transitions are append-only — there is no rollback.

StageMeaning
TrialSigned up, in the free trial, not yet activated
ActivatedCompleted onboarding and reached first value (a live locator)
ActiveUsing the platform in an ongoing way
MonetizedOn a paid plan
AdvocateReferring other suppliers into the platform

Plan tiers

A tenant's commercial plan is its PlanTier. New tenants start on a trial and can move up the tiers as they grow:

TierPositioning
StarterEntry tier — get a branded locator live
GrowthLarger networks, more capacity
ProAdvanced network and analytics needs
EnterpriseLargest networks and custom requirements

Subscription state is tracked separately on the tenant (SubscriptionStatusTrial, Active, PastDue, Canceled, Paused). For what each tier includes, quotas, and how billing works, see the Plans & Billing guide.

Stages and tiers are independent

Lifecycle stage describes how much value a tenant is getting; plan tier describes what they pay for. A tenant can be Active on a trial, or Monetized on the Growth tier — the two move on their own tracks.


Module map

The backend is organized into focused modules, each owning its own bounded context and database schema. The main modules are:

ModuleResponsibility
IdentityTenants, users, roles, invitations, authentication
NetworkRetailers, locations, supplier–retailer relationships, groups, sharing
CatalogBrands, products, SKUs, assortments, locator config
ActivationOnboarding, locator projects, publish state, install-health
LocatorThe public "where to buy" search and embed endpoints
AnalyticsDiscovery event capture and reporting
EntitlementsPlan tiers, feature flags, and quota enforcement
BillingSubscriptions and Stripe integration
LifecycleLifecycle-stage transitions and records
CampaignsCampaigns to retailers and groups
PRMPartner tiers (e.g. Gold/Silver/Bronze) and benefits
InstallersThe installer platform — registration, approval, finder, leads
MessagingConversation threads between organizations
CommsOutbound communications (email)
NotificationsIn-app notifications
AdminInternal operator tooling (cross-tenant administration)
ScoringRetailer/profile scoring
MarketGraphRetailer-network intelligence graph
AIAI-assisted features

One module, one schema

Each bounded context owns its own PostgreSQL schema and migration history, so concerns are separated at the database level. The Integrations & Embed guide covers how data enters the Catalog and Network modules and how the public locator endpoints are exposed.


Where to go next