Ecommerce

The new basket: saved baskets, combo deals, quick rebuy and slot booking

Most South African checkouts treat the basket as a holding pen: things go in, things come out, and nothing about the shopper's history makes the next order easier. GoGee's basket is built the other way round, it remembers, it bundles, and it books.

Four separate pieces of the platform sit behind that: saved baskets, combo deals, quick rebuy off the shopper's own order history, and a delivery-slot picker that checks real capacity before it lets anyone choose a time.

GoGee feature series · 17 of 33

How it's actually built

Saved baskets
Named baskets per user, stored as JSON line items
Basket privacy
Row-level security scoped to the owning user or an admin
Combo deals
Slug, fixed bundle price in cents, start and end timestamps
Combo contents
Line items with quantity and display order
Quick rebuy
Recently ordered products plus live combo deals
Rebuy display
Compact or store view, item limit of 5, 8, 12 or 20
Delivery slots
Weekday templates with capacity, plus date overrides
Slot availability
Database function returning capacity, booked and remaining
How the pieces connect
  1. 01Input

    Saved baskets

    Named baskets per user, stored as JSON line items

  2. 02Deterministic

    Basket privacy

    Row-level security scoped to the owning user or an admin

  3. 03Deterministic

    Combo deals

    Slug, fixed bundle price in cents, start and end timestamps

  4. 04Deterministic

    Combo contents

    Line items with quantity and display order

  5. 05Output

    Quick rebuy

    Recently ordered products plus live combo deals

The New Basket, data flow, generated from the shared GoGee feature diagram template.

Saved baskets, not abandoned lists

A saved basket is a named list of line items attached to the shopper's account. Because it is stored server-side against the user rather than in browser storage, it survives a new phone, a cleared cache and a switch from mobile to desktop, which is exactly where the usual "save for later" feature quietly loses the order.

Access is enforced at the database level: a shopper can read and write only their own baskets, and an administrator can see them for support. There is no shared or guessable basket URL.

  • One shopper can keep several baskets, a monthly restock, a seasonal order, a branch order
  • Line items are stored as structured JSON so a basket can be rebuilt into a live cart
  • Row-level security, not application-level filtering, keeps baskets private

Combo deals are priced, not calculated

A combo deal is a set of products with a single bundle price in cents, a slug of its own so it can be linked and advertised, and start and end timestamps. That means the deal price is a fact rather than the output of a stack of discount rules that nobody can reconcile at month end.

Each item in the combo carries a quantity and a sort order, so a bundle of four items shows in the order the merchandiser intended rather than alphabetically.

  • Fixed bundle price, the margin is known before the deal goes live
  • Start and end timestamps mean deals expire on their own
  • Its own slug, so a combo can be the landing page for an ad

Quick rebuy runs off real order history

The quick rebuy panel lists products the shopper has actually ordered before, alongside the combo deals currently running. For a hardware, plastics, grocery or trade catalogue this does most of the work of a subscription feature without asking anyone to commit to one.

The panel has a compact and a store view, density presets, and a shopper-chosen item limit of 5, 8, 12 or 20 that is remembered in the browser, because the right number of tiles on a 6-inch phone is not the right number on a counter terminal.

Delivery slots that respect capacity

Slots are defined as weekday templates with a start time, end time and capacity, and closures or one-off changes are handled by date-level overrides rather than by editing the template. Availability is answered by a database function that returns capacity, how many slots are booked and how many remain.

That last detail matters: capacity is computed where the bookings live, so two shoppers checking out at the same moment cannot both be handed the last slot by an out-of-date page.

Abandoned baskets: what actually happens

Abandoned carts appear in the admin, and an abandoned basket is one of the triggers available to the automation rules engine, the automation issues a voucher from a template when the trigger fires, and every run is recorded. It is a rules-and-voucher mechanism, so treat it as recovery incentives rather than a multi-step drip campaign.

Questions we get asked

Can a shopper have more than one saved basket?

Yes. Baskets are named, so a customer can keep a standing monthly order separate from a one-off project list.

Do combo deals need to be switched off manually?

No. Each combo has start and end timestamps and stops applying automatically at the end date.

Can two customers book the same delivery slot?

No. Remaining capacity is calculated in the database at the moment of the request, not cached in the page.