Introduction
Funky Food Australia (funkyfood.com.au) delivers weekly rescued fruit and vegetable boxes to households. The brand was growing, but the Shopify store behind it was still running delivery rules, box customisation, and packing lists by hand.
This case study splits the work into two parts: the functional journey customers and ops now use, and the technical Shopify system that makes that journey hold together.
Opens ChatGPT with this case study pre-loaded. No signup required on our site.
| Client | Industry | What we built | Stack |
|---|---|---|---|
| Funky Food Australia | Rescued food / weekly meal box | Custom box builder + delivery gate | Shopify, selling plans, custom app, checkout extensions |
Image space
Homepage screenshot
Rescue Food From Waste, suburb input, Build my box.
The problem
Demand was fine. Operations were not. Four things kept breaking the week:
- Postcode rules were manual. Customers could order from suburbs Funky Food did not deliver to. The team then cancelled, refunded, and explained the restriction after payment.
- Box size was a guess. Shoppers did not know if they needed XSmall or Big. Weekly swaps and exclusions lived in support tickets and spreadsheets.
- Add-ons fought the subscription. Off-the-shelf apps could not keep a weekly box and one-time rescued pantry items in one cart without breaking checkout.
- Packing did not match the order. Warehouse lists were not tied to what the customer actually chose. Staff fixed boxes after the order was already paid.
The store needed one flow: check the suburb first, then size the box, then customise it, then add extras, then check out on a weekly plan — with the same rules applied again before the order is created.
Functional solution
Functional means what the customer and the packing team actually do. The live journey is six steps. Each step has an empty image slot so you can drop the screenshot in later.
1. Suburb / postcode gate
The customer enters a suburb before building a box. If the area is not on a courier route, they never reach checkout. Invalid orders stop here instead of becoming refunds.
Image space
Step 1 — suburb check
Enter suburb + Get started / Build my box.
2. Household size
Adults and children counters recommend a box size (XSmall, Small, Medium, or Big). The shopper does not pick a SKU by guesswork. Support stops answering “which box is right for two people?”
Image space
Step 2 — household size
How many people are you feeding? Adults / Children counters.
3. Weekly box + swaps
The customer sees next week’s produce list, changes size, swaps items, and sets exclusions. The box is no longer a mystery bag — they know what arrives.
Image space
Step 3 — box customiser
Weekly order + Customise drawer: What’s included, Swap, Exclusions.
4. Rescued add-ons
After the box is set, they can add rescued juice, pantry, fruit, and veg. Each product shows a Rescued badge and a save-vs-supermarket percentage. Add-ons sit in the same cart as the weekly box.
Image space
Step 4 — shop add-ons
Shop Now grid: category pills, Rescued / Save % badges.
5. Cart: delivery, frequency, savings
The cart re-checks postcode, shows weekly frequency, free-delivery progress, and supermarket savings. Discount codes still work. Ops no longer reconcile ZIP in a spreadsheet after payment.
Image space
Step 5 — cart
Slide-out cart: suburb, weekly frequency, box line, savings, checkout.
6. Recurring checkout
Checkout shows Shop Pay, PayPal, and Google Pay, a review block, Channel 7 proof, the exact produce list, and “$X every week”. The customer can see this is a subscription before they pay.
Image space
Step 6 — checkout
Express pay, reviews, box contents, recurring subtotal.
Technical solution
Technical means what Shopify is doing underneath those six steps. We did not stack five apps that each owned ZIP, subscriptions, or bundles. One custom flow owns eligibility, box configuration, selling plans, and the last checkout check.
Image space
Technical diagram
Optional: flow diagram or selling-plan setup. No private admin URLs.
One custom Shopify app
ZIP validation, box configuration, and recurring orders run in one app instead of competing storefront scripts. The same rules apply at the start of the journey and again before the order is created.
Line-item properties
Size, swaps, and exclusions store on the line item. Packing lists can read what the customer chose without a side spreadsheet.
Native selling plans
The weekly box uses Shopify selling plans so checkout can show a recurring subtotal, and the customer can skip or pause later in the customer portal.
Pre-checkout validation
Checkout extensions re-check postcode and box contents before the order exists. A bad ZIP or an empty box cannot sneak through at the last step.
Issue → solution
Each operational issue mapped to one rule in the flow:
| Issue | What we solved |
|---|---|
| Orders in non-delivery suburbs | Suburb / ZIP check at step 1, then again in cart and checkout |
| Guessing box size | Household step suggests XSmall → Big from adults and children |
| Nobody knew what was in the box | Weekly “what’s included” list with swap and exclude |
| Add-ons broke the subscription cart | One cart: weekly box + rescued add-ons |
| Staff fixing orders after payment | Rules run in the app before the order exists |
| Checkout felt risky for a weekly plan | Reviews, express pay, and recurring total shown on checkout |
Results
The store now runs suburb → box → add-ons → checkout as one flow. Manual ZIP and swap work dropped off the packing list.
| Metric | After the build |
|---|---|
| Manual ops | 0% — no spreadsheet ZIP / swap fixes |
| Order errors | Near 0 — out-of-zone and incomplete boxes blocked early |
| Flow | End-to-end — suburb check through to weekly delivery |
FAQ
Conclusion
Funky Food did not need another disconnected Shopify app. They needed one flow that matched how a rescued-food box actually sells: check the area, size the household, show next week’s produce, allow swaps, add extras, then charge on a weekly plan.
Functional work is the six-step journey. Technical work is the custom app, line items, selling plans, and checkout checks that keep that journey honest.
If you have a similar subscription or box-builder problem, book a technical call or browse other Aimbrill case studies.
