Changelog
Everything we've shipped, newest first. We write down the things we change to the product so you can trust we're working on it.
- Shipped
Product variants (matrix ordering)
Declare up to three option axes on any product — Size, Color, Material — and add one variant per combination. Each variant gets its own SKU, optional price override, and independent stock pool, all tied back to the parent product. Orders and quotes now persist the selected variant so history reads correctly forever. The storefront picker lands next; admin + API support is live today.
- Shipped
Request for quote (RFQ) and quote-to-order
Buyers can request a formal quote from the storefront, staff price it and send with an expiry date, and a single click on the buyer side accepts the quote and spawns the order — stock decremented, PO captured, shipping address frozen in the same transaction. Unanswered quotes auto-expire on an hourly sweep.
- Shipped
Multi-warehouse stock
Distributors can now run multiple fulfillment locations. Manage them under Settings → Warehouses, pick a default, and every order is stamped with the warehouse it shipped from. Per-location stock, the denormalized total, and the stock-movement ledger stay in lockstep automatically.
- Shipped
Net terms and purchase-order workflow
Assign payment terms per customer (Net 15, Net 30, etc.), let buyers place orders against a PO, and track open balances straight from the dashboard.
- Shipped
Tiered pricing, MOQ, and case packs
Product pricing can now step down at higher quantities, enforce minimum order quantities, and round up to case-pack increments. Tiers are surfaced on the storefront so buyers see the volume price before they check out.
- Shipped
Custom domain storefronts
Point your own domain at Distribu, verify with a CNAME, and your buyer portal now lives on your brand.
- Shipped
QuickBooks Online integration is live
Two-way sync between Distribu and QuickBooks Online for customers, invoices, and payments.
- Shipped
Cin7 Core inventory integration
Sync stock levels with Cin7 Core so warehouse adjustments propagate into Distribu without a spreadsheet round-trip.
- Shipped
Blog and resources library
A new /blog and /resources section with long-form guides for distributors moving off email + spreadsheets.
- Improved
Cleaner integrations install flow
Planned integrations no longer clutter the catalog, and you can cancel an in-progress install with one click.
- Fixed
OAuth redirect mismatch during integration install
A handful of integrations failed the final token exchange on production deployments — resolved.
- Shipped
Integrations catalog and install flow
A browsable catalog under Settings → Integrations, with one-click OAuth installs, per-integration pause/resume, and a unified sync log.
- Shipped
Xero accounting integration
Push invoices and payments straight from Distribu into Xero.
- Shipped
Shippo tracking sync
Install Shippo once and every outbound shipment's tracking number flows back into the order automatically.
- Shipped
ShipStation integration
Two-way sync for orders and shipments, including an inbound webhook that closes the shipping loop the moment a label is printed.
- Shipped
HubSpot CRM integration
Customers created in Distribu can mirror into HubSpot as contacts, keeping sales and operations on the same record.
- Shipped
Slack notifications
Route new-order, low-stock, and fulfillment alerts into a Slack channel so the team doesn't live in their inbox.
- Shipped
Comp admin: grant free access without Stripe
Distribu staff can now comp a company on any plan for life or until a date, with or without an existing Stripe subscription. Expiring comps re-block automatically — no cron needed.
- Shipped
Platform audit log viewer with filters and CSV export
Workspace admins get the full per-company audit stream at /dashboard/settings/audit, filterable by action and actor, exportable as CSV up to 10,000 rows.
- Shipped
Plan CRUD for platform staff
Super-admins can create, edit, and deactivate plans from the dashboard without a migration.
- Improved
Webhook deliveries now retry with exponential backoff
Failed webhooks retry automatically over multiple attempts with widening gaps, then give up cleanly. Every attempt is visible on the delivery record.
- Security
Idempotency-Key and per-IP limits on the v1 API
POST endpoints on the public API accept an Idempotency-Key header to make retries safe. Every request is now rate-limited per key and per IP independently.
- Security
Closed a CSV-import row-cap bypass
Hardened the CSV importer so the row limit is enforced server-side regardless of how many chunks a client sends.
- Improved
Plan and Product deletes no longer break under FK load
Tightened foreign-key handling so companies and products can be deleted cleanly even when they carry historical orders.
- Shipped
Returns, refunds, and store-credit ledger
Customers can request returns from the storefront, staff can approve and issue refunds or store credit, and every movement is audited.
- Shipped
Public /requests page for feature and integration requests
A public form that writes straight into our roadmap triage — no account needed.
- Shipped
Expanded v1 API with webhook secret rotation and replay
More endpoints, more webhook events, manual replay from the dashboard, and a 7-day dual-signature grace period on secret rotation.
- Improved
Expired trials now redirect to a dedicated plans page
Blocked workspaces see a clear locked-access overlay pointing at a checkout instead of a silent 403.
- Improved
Privacy policy and terms of service
Published full privacy and terms pages naming every subprocessor we actually use.
- Shipped
In-app notifications, activity feed, and opt-in email digest
A per-user notification stream for every material event, a dashboard activity feed, and a daily or weekly email digest you can opt into per workspace.
- Shipped
Tax, shipping, discounts, and a stock-movement ledger
Orders now carry proper line-level tax and shipping, configurable discounts, and every stock change is recorded in an append-only ledger.
- Shipped
Scheduled report delivery by email
Any saved report can be scheduled daily or weekly; the cron delivers CSV or JSON to the addresses you pick.
- Shipped
Ad-hoc reports and data export
Sales, customer spend, and inventory valuation reports, exportable as CSV or JSON.
- Shipped
Edit-order flow for SUBMITTED and CONFIRMED orders
Staff can edit line items, quantities, and customer details until an order moves to processing.
- Shipped
Shipment tracking surfaced to customers
Drop a tracking number when you mark an order SHIPPED and the customer sees it on their order page.
- Security
Password reset and email verification for staff and customers
Hashed single-use tokens, enumeration-safe responses, separate flows for staff and storefront customers.
- Improved
Mobile-friendly app shell
Dashboard and storefront now work properly on phones.
- Improved
Upstash Redis rate limiting across public surfaces
Swapped in-memory buckets for Upstash so limits hold across serverless instances.
- Shipped
Unified search and command palette
⌘K from anywhere — jump to any product, order, customer, or page.
- Shipped
Advanced order filters
Filter the order list by status, date range, customer, channel, and total.
- Shipped
Invoice PDFs and customer price lists
Generate a branded invoice for any order and assign per-customer price overrides from the dashboard.
- Shipped
Multi-user customer accounts
A single customer company can invite multiple buyers, each with their own login.
- Shipped
Storefront pagination and order status tracking
Customers can page through long catalogs and track the live status of every order they've placed.
- Shipped
Orders API and webhook system
v1 of the public REST API, plus HMAC-SHA256-signed outbound webhooks for order and customer events.
- Shipped
Initial release
Catalog, branded storefronts, order pipeline, staff dashboard, Stripe-backed billing. Distribu opens to early customers.
Want something that's not here?
We triage feature requests weekly and post them back into this log when they ship.
