Skip to content

Checkout

Decisions behind the unified checkout's sign-in prompt, its list of places to collect from, and the header around it. The checkout's look comes from fragment/checkoutStyles.html (the nc- classes on the --nbc-* tokens), so every Nova-family theme re-skins it.

A customer we recognise

A returning customer can be known (from a cookie) without being signed in. The old box read "Welcome back, Chris Kellet! Sign In", with Sign In as a bold link beside the greeting, which looked like a signed-in state rather than an offer.

What shipped (extensions/account/authentication.html, compact mode, which is the checkout's):

  • The greeting uses the first name ("Welcome back, Chris"). AuthenticationExtension works it out (greetingName) and falls back to the full name.
  • One line says they aren't signed in and what signing in does: "You're not signed in. Sign in and we'll fill in your details and saved addresses." The benefit is the reason to tap.
  • Sign in is a button (ui/button, ink: a strong action that isn't the purchase, which keeps buy for Pay). It goes to /login and comes back to the checkout.
  • "Not Chris?" (ui/button, text) forgets them, a sign-out, so someone else can check out as a guest.
  • Both actions are 44px tall on phones, and the button takes the full row there.

A guest gets the existing "Returning customer? Sign in for faster checkout" reminder, which opens in place.

Many places to collect from

More than four collection options (UnifiedCheckoutExtension.STORE_PICKER_THRESHOLD) fold into one Collect from a store choice that opens a search box and a list. This now applies to any list of collection points, not only Enterprise store collection: Clatter's ten kitchens filled a phone screen four times over. Rows in the picker show the name, address and ready time; the collection instructions appear only for the chosen one, so the list stays short. See Click and collect.

No header switch in the checkout

Bistro's header strip carries a Collection / Delivery switch for the menu. In the checkout the delivery options make that choice, so two controls for one decision disagreed (the header said Delivery while the order said Collection, on the confirmation page too). OrderingStatusInterceptor sets orderingInCheckout on /checkout, /p/checkout, /buy and /o pages, and the strip keeps its open / closed line but drops the switch there.