Postcode capabilities
How delivery and installation availability is resolved from postcode_capabilities metaobjects.
Postcode capabilities
๐ Dev ยท ๐ค Ops (reference)
When a customer enters a postcode, what they're allowed to do in that area โ delivery and/or
at-home installation โ is driven by postcode_capabilities metaobjects, matched by postcode.
See Delivery zones for the customer-facing behaviour.
How it resolves
- The theme sends the postcode to the backend (
/v1/postcode/{postcode}). - The backend matches it against the
postcode_capabilitiesmetaobjects and enriches the response with that area's capabilities. - The browser receives the result and stores it. Crucially, the storefront just gets
deliveryandinstallation_serviceas booleans (plus the suburb/state and installer calendar URL) โ all the matching logic lives server-side. See The backend API.
Because the matching and enriching happen in the backend, the theme never decides eligibility itself โ it only reads the booleans it's handed and updates the UI (delivery messaging, installation CTA).
The postcode_capabilities metaobject
Managed under Shopify Admin โ Content โ Metaobjects โ Postcode capabilities. To change what an area can do, edit or add an entry โ no code change required. See Metaobjects.
| Field (key) | Name | Type | Meaning |
|---|---|---|---|
display_name | Display Name | Text (single line) | Friendly location name shown to the customer. |
suburb_name | Suburb Name | Text (single line) | The suburb for this entry. |
postcode | Postcode | Number (integer) | The postcode this entry matches. |
installation_service | Installation Service | True/false | Whether at-home installation is available in this area. |
delivery | Delivery | True/false | Whether delivery is available in this area. |
installer_calendar_url | Installer calendar URL | URL | The installer calendar used for this area's bookings. |
This is now the source of truth for delivery and installation availability โ not a hard-coded
list. To open or close an area, update its postcode_capabilities entry in admin (or have the
backend team confirm the entry exists for that postcode).