Geofence API v1
radius_delivery.geofences_v1 · Schema 1.0
Geofence API v1 makes delivery areas configured in Radius Delivery available to merchant-authorized integrations. Build your own application or connect an existing system; Radius Ads Geofencing is one optional consumer.
Radius Delivery is required. Radius Ads Geofencing is optional.
Install and authorize Radius Delivery in the Shopify store, then save a valid delivery configuration. Your consuming application or custom integration must have its own authorized access to that same store through Shopify Admin API. Installing Radius Ads Geofencing is not required.
This page documents a versioned data contract, not a public Internet endpoint. It does not grant access to another merchant’s data. Every integration needs the merchant’s authorization and appropriate Shopify permissions.
Data location and access
Radius Delivery creates the definition and publishes a merchant-owned Shop metafield after a valid configuration is saved. Its non-reserved namespace allows other authorized apps to read it through Shopify. Use it as a read-only source.
Shop → radius_delivery → geofences_v1 · json · schema_version: 1.0
Published data
The document includes stable geofence_id values, increasing revisions, active/inactive status, Basic circles with center/radius/unit, Pro polygon geometry, inclusions, exclusions, source location labels and coordinates, and update timestamps. Removed areas can remain inactive so consumers can detect removal without automatically deleting external objects.
Example JSON
This fictional example illustrates the contract and is not connected to a live store. Field names and schema values are not translated.
{
"schema_version": "1.0",
"updated_at": "2026-08-28T00:00:00.000Z",
"geofences": [
{
"schema_version": "1.0",
"geofence_id": "gf_exampletorun001",
"name": "Toruń Delivery",
"status": "active",
"revision": 1,
"location": {
"source_type": "shopify_location",
"shopify_location_id": "gid://shopify/Location/EXAMPLE",
"label": "Toruń Store",
"latitude": 53.0138,
"longitude": 18.5984
},
"geometry": {
"type": "circle",
"center": { "latitude": 53.0138, "longitude": 18.5984 },
"radius": 12,
"unit": "km"
},
"inclusions": [],
"exclusions": [],
"delivery_type": "local_delivery",
"updated_at": "2026-08-28T00:00:00.000Z"
}
]
}Consumer query
Read the metafield through your integration’s authenticated server-side Shopify Admin GraphQL client. The query is independent of Radius Ads Geofencing. Never expose access tokens in public browser code.
query ReadRadiusDeliveryGeofences {
shop {
metafield(namespace: "radius_delivery", key: "geofences_v1") {
value
type
updatedAt
}
}
}Security and authorization
The contract contains delivery geography, not customers, orders or advertising credentials. Do not edit the source metafield. Authorization to read store data does not authorize unrelated processing or changes in external systems; obtain the merchant’s approval for those operations.
Required source attribution
Use of this API requires publicly identifying the data source. Display a visible, clickable attribution in the integration’s public description or documentation and alongside maps, reports or other published outputs based on the data. Use the wording below and link to this documentation. Attribution does not require publishing private store data or credentials, and does not replace merchant authorization.
Data source: Radius Delivery Geofence API
https://radiusdelivery.app/geofence-api/
Compatibility and change detection
Area IDs remain stable when edited. Saved changes increase revisions and update timestamps. Reject unsupported schema versions and preserve the last safe state if data is missing or invalid. Optional fields may be added within v1; breaking changes require a new schema version and metafield key.
Optional example: Radius Ads Geofencing
Radius Ads Geofencing reads delivery areas from Radius Delivery for advertising geography. It needs its own installation, merchant authorization and advertising-platform connection only when you choose this integration. Other apps can use the same contract for their own integrations, subject to authorization and the source attribution requirement.