Tom Sailors
· Refreshed
Brief · Anonymized case study

Delivery Customization Blocklist

A Delivery Customization Function reads the customer's zip code at checkout and consults a blocklist of known service gaps. When a zip matches the blocklist, Saturday disappears from the available delivery options. The blocklist stays current through a weekly sync that queries the carrier API and surfaces discrepancies to an admin panel.

A mid-market DTC merchant was offering Saturday delivery at checkout, but the carrier's actual service area was narrower than advertised. Customers in certain zip codes would select Saturday and receive incorrect delivery dates. The merchant needed a way to filter Saturday from specific zip codes without changing the global carrier settings.
Four pieces
Shipping

Zip Code Blocklist

A private list of zip codes where the carrier does not actually deliver Saturday, so the Function knows which addresses to filter.

Shopify metafield + custom app
Admin GraphQL explorer graphql
# Admin GraphQL
mutation SetWeekendBlocklist($metafields: [MetafieldsSetInput!]!) {
  metafieldsSet(metafields: $metafields) {
    metafields {
      id
      namespace
      key
      value
    }
    userErrors {
      field
      message
    }
  }
}

# Variables:
# {
#   "metafields": [
#     {
#       "ownerId": "gid://shopify/Shop/[YOUR_SHOP_ID]",
#       "namespace": "delivery_config",
#       "key": "weekend_blocklist_zips",
#       "type": "json",
#       "value": "[\"90210\",\"60601\",\"10001\"]"
#     }
#   ]
# }
Replace YOUR_SHOP_ID with your shop ID and add your known problem zips as JSON strings in the value array.
Shipping

Checkout Delivery Filter

The Function that runs at checkout, reads the customer's zip and the blocklist, and hides Saturday from delivery options if that zip is on the list.

Shopify Delivery Customization Function
Shipping

Carrier Sync Tool

A weekly scan that calls the carrier API, compares their stated service areas against known weekend black holes, and flags new zips to add to the blocklist.

Heroku-hosted sync + admin dashboard
Admin GraphQL explorer or backend scheduled task graphql
# Admin GraphQL — query to fetch current blocklist and update it
query GetBlocklist {
  shop {
    metafield(namespace: "delivery_config", key: "weekend_blocklist_zips") {
      value
    }
  }
}

mutation UpdateBlocklist($metafields: [MetafieldsSetInput!]!) {
  metafieldsSet(metafields: $metafields) {
    metafields {
      id
      value
    }
    userErrors {
      field
      message
    }
  }
}

# Your sync service calls the carrier API, parses the response,
# compares it to shop metafield, and submits the mutation with new zips.
Run this on a weekly cron job to keep the blocklist fresh as carrier coverage changes.
Shipping

Blocklist Admin Panel

A simple dashboard where zip codes can be viewed, added, and removed from the Saturday blocklist without touching code.

Custom Shopify app (React + Polaris)

Got a similar problem?

Sketch your build in 30 seconds — voice, type, or attach a screenshot.

Sketch the build →