Bakehouse Occasions — Shopify × RISE ERP
Custom Shopify storefront for Hong Kong bakery Bakehouse, with one-way and two-way sync to the in-house RISE ERP via webhooks and an OData job API.


Bakehouse Occasions is the corporate-gifting and occasions storefront for Bakehouse, the Hong Kong bakery known for its egg tarts and pastries. I built and maintain this at Black Durian, where I'm currently working.
I developed the custom Shopify storefront (occasions.bakehouse.hk) and the integration layer that keeps it in sync with the company's in-house ERP, "RISE", in both directions. Shopify webhooks for order creation/cancellation, customer create/update and product create/update post events to an OData async-job API, which lands them in RISE — every Shopify order becomes a linked Sales Order (SO) and Sales Invoice (SI) tagged with its Shopify order number. Each SO captures the delivery details — zone delivery fee, delivery date, time slot and method — and the matching Sales Invoices are pushed into Xero accounting automatically every day. In the other direction, RISE pushes the master product catalog, pricing and per-day availability back to Shopify.
A bakery-specific piece I built is the "Occasions Quota" system: each SKU has an Available Quantity Per Day cap (for example 1,400 Sourdough Egg Tarts a day) that's exported to Shopify, so the store never sells more than the kitchen can bake for a given delivery date.
RISE — which I co-built — is built with Laravel on the back end and a Vue.js front end, exposing an OData API that the Shopify integration talks to. It's multi-entity (a Headquarter plus branches) with segmented contacts — retail Occasions customers, wholesale accounts, internal contacts and suppliers — and real business fields like BR number and expiry, payment policy (e.g. Cash on Delivery), per-customer currency (HKD) and linked wholesale contacts. I was also responsible for the e-commerce site customization itself.
Behind the scenes







