Basket Lifecycle¶
Models the lifecycle of a shopping Basket (cart) from creation through checkout conversion or abandonment. Applies to all channels that support a pre-order selection step: eCommerce, mobile app, kiosk, and clienteling.
Object: basket ·
States: 5 ·
Transitions: 6
State Diagram¶
flowchart LR
%% ── classDef palette ─────────────────────────────────────
classDef stInit fill:#0d9488,stroke:#0f766e,color:#fff,font-weight:bold
classDef stNorm fill:#3b82f6,stroke:#2563eb,color:#fff
classDef stOk fill:#16a34a,stroke:#15803d,color:#fff,font-weight:bold
classDef stFail fill:#dc2626,stroke:#b91c1c,color:#fff,font-weight:bold
classDef stHold fill:#d97706,stroke:#b45309,color:#fff
%% ── nodes ───────────────────────────────────────────────
open(["Open"])
locked["Locked"]
converted[["Converted"]]
abandoned[["Abandoned"]]
merged[["Merged"]]
%% ── transitions ─────────────────────────────────
open -->|"basket-checkout-started"| locked
locked -->|"basket-updated"| open
locked -->|"basket-converted"| converted
open -->|"basket-abandoned"| abandoned
locked -->|"basket-abandoned"| abandoned
open -->|"basket-merged"| merged
%% ── class assignments ───────────────────────────
class open stInit
class locked stNorm
class converted,merged stOk
class abandoned stFail
States¶
| State | Label | Description | Initial | Terminal |
|---|---|---|---|---|
open |
Open | Basket is active. Items can be added, removed, or modified. | ✓ | |
locked |
Locked | Checkout in progress. Basket content is frozen pending payment. | ||
converted |
Converted | Basket successfully became an Order. No further modifications possible. | ✓ | |
abandoned |
Abandoned | Session expired or customer left without completing checkout. | ✓ | |
merged |
Merged | Basket merged into another (e.g. guest basket merged on login). | ✓ |
Transitions¶
| From | To | Trigger | Guards |
|---|---|---|---|
open |
locked |
basket-checkout-started |
Basket contains at least one valid line; Customer identity available or guest session active |
locked |
open |
basket-updated |
Payment not yet attempted |
locked |
converted |
basket-converted |
Payment authorized; Order created successfully |
open |
abandoned |
basket-abandoned |
Session inactivity timeout elapsed OR customer explicitly cleared basket |
locked |
abandoned |
basket-abandoned |
Payment failed or timed out; Customer did not retry |
open |
merged |
basket-merged |
Target basket is in open state |