Car Battery Pro
Appendix

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

  1. The theme sends the postcode to the backend (/v1/postcode/{postcode}).
  2. The backend matches it against the postcode_capabilities metaobjects and enriches the response with that area's capabilities.
  3. The browser receives the result and stores it. Crucially, the storefront just gets delivery and installation_service as 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)NameTypeMeaning
display_nameDisplay NameText (single line)Friendly location name shown to the customer.
suburb_nameSuburb NameText (single line)The suburb for this entry.
postcodePostcodeNumber (integer)The postcode this entry matches.
installation_serviceInstallation ServiceTrue/falseWhether at-home installation is available in this area.
deliveryDeliveryTrue/falseWhether delivery is available in this area.
installer_calendar_urlInstaller calendar URLURLThe 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).

On this page