The Challenge
Maggio’s is a bakery and café that has been trading since 1998 in Cammeray, in Sydney, and now has a second location in Ryde. Each location has its own Shopify store, so Maggio’s runs as a pair of sites, and customers choose the one they want to collect from. People order cakes, pastries and catering online and collect them in store.
Pickup orders are different from posting a parcel. A celebration cake can’t be ready tomorrow. A tray of sandwiches isn’t served at 8am. The shop is closed on Christmas Day and over Easter. If the website lets a customer choose any date and time, someone in the kitchen has to ring them back and rearrange the order. And once the orders do come in, the team still needs a clear list of what to make each day.
The Approach
I started from the people at each end: the customer choosing a date, and the kitchen working from the list.
- Only offer what can be done. Rather than check dates after the fact, the cart shows only the days and times that suit what is actually in it.
- Let the shop run its own rules. Closures, notice periods and time limits are settings the team can change themselves, so a new holiday doesn’t need a developer.
- One app, two stores. I built it as a custom Shopify app and installed it on both sites, so anything new is built once and shared across Cammeray and Ryde quickly. Each store keeps its own settings, closures and reports.
- Finish the loop. A date on an order is only useful if the kitchen can turn it into a prep list, so I built that too.
The Solution
Three small pieces of custom work, delivered as one custom Shopify app that is installed on both of Maggio’s stores, Cammeray and Ryde. Improving one of them means changing it once for both.
A pickup calendar in the cart
Before checking out, customers choose a pickup date and a time. Both are required, and they are saved with the order.
- Notice that fits the order: there is a minimum notice period for the whole shop. Large sizes, catering, and any product flagged by staff need longer, so a large cake can’t be booked for tomorrow.
- Times that suit the food: pizza and sandwiches can have the earliest pickup times hidden, and some products can be marked as unavailable for early pickups. The next-day earliest slots are also hidden.
- Product-specific windows: an individual product can carry its own earliest or latest pickup date, for seasonal lines.
- Closed days handled for you: Christmas, New Year and Easter closures are worked out automatically each year. Staff can also block one-off dates, or schedule a block to start on a chosen day.
- A Christmas cut-off: after a set date, the last few days before Christmas are closed to new orders automatically.
- Special product rules: one pastry is only available for pickup Monday to Thursday.
- Nothing stale: if the cart changes and the chosen date no longer works, the customer is told and asked to pick again. They can’t check out without a date and time.
- All set in the theme editor: lead times, keywords, hidden times and holidays are all plain settings.
An “alcohol free” option on cakes
On the cakes that can be made without alcohol, a tick box on the product page lets the customer ask for it. It travels with the order, so the kitchen sees it. Staff choose which products show it and can edit the wording.
A pickup prep report for staff
From the Orders page in Shopify admin, staff pick a date range and get one spreadsheet (CSV) per pickup day.
- What to make, grouped: items and quantities grouped by product type, with subtotals and a total for the day
- Sorted how they like: by quantity or by name, with optional SKU and order count columns
- Sensible filters: cancelled orders are left out by default, and it can be limited to paid orders
- Ready to download: each file is saved to the store’s Files area, named by store and date so Cammeray and Ryde reports don’t get mixed up
- No retyping: because the date is saved with the order, the list builds itself
The Result
Customers choose a pickup date and time that works for their order at either location, and can’t proceed without one. Staff at each store get a daily prep list from the orders themselves, and can handle holidays, notice periods and special cases without waiting on a developer.