Customer Experience
Customer promise, portal functionality, item lifecycle, and user journeys
Last updated: Jun 29, 2026
On This Page
Customer Promise
Residents can rely on:
- White-glove pickup and return β we handle the logistics
- Searchable inventory β find any item instantly via photos, tags, descriptions
- Predictable scheduling β 48-hour lead time, bookable weeks/months in advance
- Clear chain-of-custody β always know where your items are
Never have to...
Drive to storage or guess item status.
Service Model
What Customers Get
| Feature | Description |
|---|---|
| Pickup Service | We come to you, pick up items with 48-hour notice |
| Storage | Climate-controlled facility, documented location |
| Inventory Portal | Photos, descriptions, tags β searchable digital catalog |
| Delivery Service | Items returned to you with 48-hour notice |
| Advance Scheduling | Book up to 365 days ahead (seasonal, holidays) |
| Baseline Insurance | $2,000 included coverage |
| 14-Day Trial | Complimentary trial to explore portal and create inventory |
New Customer Flow
- Sign up β Customer subscribes via Stripe Checkout
- 14-day trial begins β No charge during trial period
- Create inventory β Customer adds items with photos, descriptions, tags
- Schedule first pickup β Book directly in the portal (native Google Calendar slots, 48-hour lead)
- First billing β Trial ends, monthly billing begins ($299/month)
What Customers Create
Important
Customers create their own inventory. Storage Valet is logistics, not cataloging.
- Customer adds item names, descriptions, keywords
- Customer uploads photos (1-5 per item)
- Customer tags items for easy search (holiday, fragile, kid1, etc.)
- Search "holiday decorations" β find Christmas ornaments instantly
Language Guidelines
| Use β | Don't Use β |
|---|---|
| "as needed" | "on-demand" |
| "48-hour lead time" | "instant" or "same-day" |
| "schedule returns" | "request delivery" |
| "planned pickup" | "on-demand retrieval" |
Portal Overview
Purpose (Non-Negotiable)
For Customers:
- Manage inventory (add, edit, delete items)
- View item state (home, stored, scheduled)
- Schedule services (pickups, deliveries)
- Recover items if booking canceled
For SV Ops:
- Capture item/service data
- Enable batching and density
- Produce operational metrics
Excluded: Real-time tracking, complex pricing dashboards, ops micromanagement UIs
Customer Surfaces (6)
portal.mystoragevalet.com serves the sv-portal-2026 codebase (since Jun 10, 2026).
| Surface | Purpose |
|---|---|
| Login | Magic link authentication |
| Dashboard | Inventory overview + booking management |
| Items + Add Item | Item catalog; photos-first item creation |
| Item Detail | Single-item view — schedule, reschedule, revert, remove |
| Booking | Items-first scheduling flow (native Google Calendar slots) |
| Account | Profile, billing, settings |
Staff/Admin Routes (Not Customer-Facing)
Staff tooling lives in the v2 portal’s /ops surface (portal.mystoragevalet.com/ops), staff-gated (is_staff()) and AAL2-stepped-up — shipped W1.4. (v1 and its ops surface were decommissioned Jun 29, 2026.)
| Route | Purpose |
|---|---|
/ops | Operations dashboard (staff-gated) |
/admin/waitlist | Waitlist management (staff-gated) |
/admin/customers | Customer management (staff-gated) |
Item Lifecycle
Item States
| State | Meaning | Customer Actions |
|---|---|---|
| home | Item is at customer's address | Schedule Pickup |
| scheduled | Item is scheduled for pickup or delivery (type determined by booking context: pickup_item_ids or delivery_item_ids) | Cancel / Revert, Remove from Booking |
| stored | Item is in SV facility | Schedule Delivery |
| in_transit | Item is currently being moved (pickup or delivery in progress) | β |
State Transitions
[Created] β HOME ββββββββββββββββββββββββββββ
β β
β schedule_pickup β delivery_completed
βΌ β
SCHEDULED (pickup) βββββββββββββββββββ€
β cancel/fail β
β (revert β HOME) β
β β
β pickup_completed β
βΌ β
STORED βββββββββββββββββββββββββββ€
β β
β schedule_delivery β
βΌ β
SCHEDULED (delivery) βββββββββββββββββ
β cancel/fail
β (revert β STORED)
Note: DB status is `scheduled` in both cases.
Pickup vs delivery is determined by booking arrays
(pickup_item_ids / delivery_item_ids).
Critical Rule
Scheduled states are NEVER terminal. Every scheduled item MUST have a customer-visible revert action.
Booking Workflow (Items-First, Native Scheduling)
Overview
Customers book entirely inside the portal: select items, pick a slot from native Google Calendar availability (48-hour lead, up to 365 days out via the month-paged picker), and confirm. Confirming creates the event on the “SV Bookings” calendar; canceling or reverting deletes it. All writes go through fn_v2_* SECURITY DEFINER RPCs.
Flow
- Select Items β Choose items at home to pick up (or stored items to deliver)
- Pick a Slot β Availability = plan service windows ∩ 48-hour lead ∩ calendar FreeBusy (
get-available-slots) - Booking Created β
pending_confirmationwith items attached (item status →scheduled) - Confirm β Booking →
confirmed; Google Calendar event created - Service Completed β Items transition (pickup →
stored, delivery →home)
Booking Statuses
| Status | Meaning | Customer Action |
|---|---|---|
pending_confirmation | Items attached, awaiting customer confirmation | Edit Items, Confirm, Cancel |
confirmed | Confirmed; calendar event live | Cancel, Reschedule |
completed | Service finished | β |
canceled | Booking canceled; items reverted | β |
pending_items and in_progress exist in the action_status enum for legacy v1-era records only; the current booking lifecycle does not use them.
Cancellation Behavior
Canceling a confirmed booking deletes the Google Calendar event and reverts scheduled pickup items back to home and scheduled delivery items back to stored.
Customers can also revert individual items off a scheduled booking; items revert based on their scheduled kind (pickup items → home, delivery items → stored).
Entitlement Gate (Jun 10, 2026)
Item creation and adding pickup items to a booking require an entitled membership (subscription_status active/trialing/past_due); otherwise the server raises SV_NOT_ENTITLED. Deliveries, cancel, revert, and reschedule are never gated — customers can always recover their inventory. sv.staff identities bypass the gate.
Inventory Features
Item Creation
Customers create items with:
- Label β Item name (required)
- Description β Details about the item (required)
- Photos β 1-5 photos per item (at least 1 required)
- Category β Optional categorization
- Tags β Searchable keywords
Search & Filter
Customers can search by: Label (item name), Description text, Tags/keywords, Status (home, stored, scheduled), Category
Tag Taxonomy (Recommended)
| Group | Example Tags |
|---|---|
| Category | clothing, shoes, toys, baby, kitchen, decor, sports, documents |
| Seasonality | winter, summer, holiday, back_to_school |
| Room | closet, nursery, kitchen, entryway |
| Owner | zach, spouse, kid1, kid2, kid3 |
| Handling | fragile, heavy, electronics, keep_upright |
| Use-case | donate_later, keepsake, hand_me_down |
| Value | high_value, declared_value_required |
Example Item Record
Title: "Holiday dΓ©cor β ornaments + stockings" Description: "2 ornament boxes, 6 stockings, 1 table runner; deliver after Thanksgiving." Tags: holiday, decor, fragile, seasonal Declared value: $500 Notes: "Customer prefers Friday delivery window."
Subscription & Billing
Pricing
- $299/month β Single plan, no tiers
- 14-day trial β Complimentary on all new subscriptions
- No setup fee β Eliminated for simplicity
Billing States
| Status | Meaning | Portal Access |
|---|---|---|
active | Subscription current | Full access |
past_due | Payment failed, grace period | Limited (no new bookings) |
canceled | Subscription ended | Read-only inventory |
trialing | Trial period | Full access |
Billing Management
Customers manage billing via Stripe Customer Portal (hosted by Stripe):
- Update payment method
- View invoices
- Cancel subscription
Design Principles for Customer Experience
- Customer clarity > internal convenience β Always show clear item state
- Items > bookings β Items are persistent; bookings are transient
- No dead ends β Every state has a clear next action
- Revert paths are mandatory β Customers can always recover from scheduled states