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.
| Audience | How it's modeled | Primary value |
|---|---|---|
| Suppliers | TenantType.Supplier | Branded locator, network management, ROI analytics |
| Retailers | TenantType.Retailer | Self-service profile, get found, own performance data |
| Installers | Separate 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.
- For the supplier journey, see the Supplier Onboarding guide.
- For the retailer journey, see the Retailer Guide.
- For the installer journey, see the Installer Guide.
- For the public discovery experience, see the Consumer Locator guide.
The value chain
Value flows in one direction, and each link makes the next one stronger:
- Supplier imports its retailer network, brands a locator, and publishes it.
- Retailer claims and completes its profile (stock tags, showroom, services) so it appears accurately in the locator.
- Consumer searches the branded locator, filters by stock/showroom/service, and finds a nearby retailer that carries the product.
- 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.
| Stage | Meaning |
|---|---|
Trial | Signed up, in the free trial, not yet activated |
Activated | Completed onboarding and reached first value (a live locator) |
Active | Using the platform in an ongoing way |
Monetized | On a paid plan |
Advocate | Referring 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:
| Tier | Positioning |
|---|---|
Starter | Entry tier — get a branded locator live |
Growth | Larger networks, more capacity |
Pro | Advanced network and analytics needs |
Enterprise | Largest networks and custom requirements |
Subscription state is tracked separately on the tenant (SubscriptionStatus — Trial, 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:
| Module | Responsibility |
|---|---|
Identity | Tenants, users, roles, invitations, authentication |
Network | Retailers, locations, supplier–retailer relationships, groups, sharing |
Catalog | Brands, products, SKUs, assortments, locator config |
Activation | Onboarding, locator projects, publish state, install-health |
Locator | The public "where to buy" search and embed endpoints |
Analytics | Discovery event capture and reporting |
Entitlements | Plan tiers, feature flags, and quota enforcement |
Billing | Subscriptions and Stripe integration |
Lifecycle | Lifecycle-stage transitions and records |
Campaigns | Campaigns to retailers and groups |
PRM | Partner tiers (e.g. Gold/Silver/Bronze) and benefits |
Installers | The installer platform — registration, approval, finder, leads |
Messaging | Conversation threads between organizations |
Comms | Outbound communications (email) |
Notifications | In-app notifications |
Admin | Internal operator tooling (cross-tenant administration) |
Scoring | Retailer/profile scoring |
MarketGraph | Retailer-network intelligence graph |
AI | AI-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
- New supplier? Start with the Getting Started guide, then the Supplier Onboarding guide.
- Invited retailer? See the Retailer Guide.
- Installer? See the Installer Guide.
- Curious about the consumer experience? See the Consumer Locator guide.
- Evaluating security? See the Security & Data guide.