Public Storefront

Publish selected Stock products, capture customer interest, and turn quote carts into CRM and Sales records.

The Stock public storefront is an anonymous, read-only catalog at:

https://workspace.leenops.com/public/storefront/<workspace-handle>

Visitors can search and filter published products, inspect product galleries, ask about an item, and add positively priced products to a quotation cart. The storefront does not accept payment.

Permissions

Only workspace owners and admins can:

  • Enable or disable the public storefront
  • Change its URL handle
  • Publish or unpublish products
  • Bulk-change storefront visibility

Other workspace members can view Stock data and engagement according to their normal workspace access, but cannot expose inventory publicly.

Prepare products

A product appears publicly only when all three conditions are true:

  1. The product is active.
  2. Show on public storefront is enabled for that product.
  3. The workspace storefront is enabled.

Before publishing, review:

  • Product name and public description
  • Primary photo and gallery
  • Category
  • Sale price, or the decision to use Price on request
  • Active state

Imported products do not publish automatically. Publish one product from its edit form or use the bulk action on Stock > Products.

Configure and enable the storefront

  1. Open Stock > Settings.
  2. In Public storefront, enter a URL handle using lowercase letters, numbers, and hyphens.
  3. Select Save handle.
  4. Confirm that at least one active product is published.
  5. Turn on the storefront.
  6. Confirm the public-access warning.
  7. Copy or open the generated URL.

Leenops refuses to enable an empty storefront. URL handles are unique across all workspaces; if a handle is taken, choose another one. Leaving the handle empty falls back to the workspace UUID.

What visitors can do

The catalog supports server-side:

  • Search
  • Category filters
  • Newest, name, price, and popularity sorting
  • Pagination/load-more
  • Card, list, and table views
  • Product galleries and previous/next navigation

Only active, explicitly published products are returned by the public loaders and APIs.

Priced products: quotation workflow

A product with sale_price > 0 can be added to the quote cart.

  1. The visitor adds one or more products and chooses quantities.
  2. The cart is stored locally and isolated to that storefront.
  3. The visitor enters an email and optional name.
  4. On submission, the server verifies the storefront is still enabled.
  5. The server re-reads each product, confirming it is active and published, and uses the current server price rather than trusting the browser.
  6. Leenops creates or reuses the CRM contact for the submitted email.
  7. An atomic, idempotent operation creates the Sales quotation and its lines.
  8. The visitor receives an opaque confirmation link and an acknowledgement email.
  9. The cart is cleared after success.

The storefront creates a quotation request, not an order or payment. The internal team continues the commercial workflow in Sales.

Products without a positive sale price cannot enter the quote cart. They display Price on request and use the interest workflow instead.

Questions and buy interest

On a public product page, the visitor sees:

  • Ask about this item for a priced product
  • Request price and availability for an inquiry-only product

The form requires an email and accepts an optional name and message. The visitor's identity is remembered in that browser for 30 days so it can be reused on another product or in the quote cart.

When submitted, Leenops:

  1. Rate-limits the public request and checks a hidden bot-trap field.
  2. Confirms the storefront, product, active state, and publication state.
  3. Creates or reuses a CRM contact, deduplicated by lowercase email within the workspace.
  4. Creates a stock_product_interests entry with status New and quantity 1.
  5. Records an audit event.
  6. Notifies workspace owners and admins through Leenops's notification service. Connected Slack, Teams, or push forwarding can receive the same notification.
  7. Links the notification to the product's Storefront engagement section.

The visitor's raw IP address is never stored; Leenops stores a SHA-256 hash for abuse/audit context.

Comments

The public API also supports product comments. A comment follows the same validation, CRM-contact upsert, audit, and owner/admin notification flow, then stores a non-internal comments record for the product.

The current storefront UI exposes the interest/question form, not a separate public comment form. Comments submitted through the supported endpoint appear in the internal engagement timeline, but customer-facing comment submission and public comment display are not currently part of the visible storefront flow.

Follow up internally

  1. Open Stock > Products.
  2. Open the relevant product.
  3. Scroll to Storefront engagement.
  4. Review the unified, newest-first timeline.
  5. Select View contact to open the CRM record, or use the visitor's email link.
  6. For an interest entry, update the status:
StatusUse
NewNot reviewed yet
ContactedA team member has followed up
WonInterest converted successfully
LostOpportunity did not proceed
ArchivedNo longer active but retained for history

Comments are display-only in this panel. Interest entries provide the lifecycle control.

CapabilityPublic storefrontPrivate share link
AudienceAnyone with the stable URLAnyone with an expiring token
ScopeAll active published productsSelected catalog, product, or warehouse scope
Customer actionsBrowse, ask, quote cartRead-only sharing
ConfigurationWorkspace toggle and product publicationStock > Settings > Share links

Use a private share link for temporary or controlled catalog access. Use the public storefront for an ongoing customer-facing catalog.

Disable access

  • Turn off the storefront to make the complete public catalog unavailable.
  • Unpublish one product to remove only that product.
  • Archive a product to hide it from both active Stock views and the storefront while preserving history.
  • Revoke a private share link independently under Stock > Settings.