Creates a new Shopify delivery profile with custom shipping zones, rates, and methods. Delivery profiles control which shipping options are available to customers at checkout for subscription orders.
What is a Delivery Profile? A delivery profile defines shipping configurations (zones, rates, methods) for specific products or locations. Subscription memberships can have dedicated delivery profiles with custom shipping pricing (free shipping for VIPs, regional rates, express delivery options, etc.).
Request Body Structure (CreateShippingProfileRequestV2):
{
"profileName": "VIP Membership Free Shipping",
"locationInfos": [
{
"locationId": "gid://shopify/Location/12345",
"countryInfos": [
{
"countryCode": "US",
"provinceCodeInfoList": ["CA", "NY", "TX"],
"deliveryMethodInfo": [
{
"name": "Standard Shipping",
"amount": 0.00,
"currencyCode": "USD",
"minWeight": null,
"maxWeight": null,
"description": "Free for members"
},
{
"name": "Express Shipping",
"amount": 9.99,
"currencyCode": "USD",
"description": "2-day delivery"
}
]
}
]
}
]
}
Field Explanations:
profileName (string, required):
locationInfos (array, required):
/data/locations endpointgid://shopify/Location/{numeric_id}countryInfos (array, required):
deliveryMethodInfo (array, required):
Common Use Cases & Examples:
1. Free Shipping for VIP Members
{
"profileName": "VIP Free Shipping",
"locationInfos": [{
"locationId": "gid://shopify/Location/67890",
"countryInfos": [{
"countryCode": "US",
"deliveryMethodInfo": [{
"name": "Free Standard Shipping",
"amount": 0.00,
"description": "Included with VIP membership"
}]
}]
}]
}
2. Regional Pricing (Different Rates per State)
{
"profileName": "Regional Shipping",
"locationInfos": [{
"locationId": "gid://shopify/Location/12345",
"countryInfos": [
{
"countryCode": "US",
"provinceCodeInfoList": ["CA", "OR", "WA"],
"deliveryMethodInfo": [{
"name": "West Coast Shipping",
"amount": 4.99
}]
},
{
"countryCode": "US",
"provinceCodeInfoList": ["NY", "NJ", "CT"],
"deliveryMethodInfo": [{
"name": "East Coast Shipping",
"amount": 5.99
}]
}
]
}]
}
3. Tiered Shipping (Standard + Express)
{
"profileName": "Multi-Speed Shipping",
"locationInfos": [{
"locationId": "gid://shopify/Location/12345",
"countryInfos": [{
"countryCode": "US",
"deliveryMethodInfo": [
{
"name": "Standard (5-7 days)",
"amount": 0.00,
"description": "Free standard shipping"
},
{
"name": "Express (2-3 days)",
"amount": 9.99,
"description": "Faster delivery"
},
{
"name": "Overnight",
"amount": 24.99,
"description": "Next business day"
}
]
}]
}]
}
Validation Rules:
Common Errors:
400 - Invalid Country Code:
{"error": "Invalid country code 'USA'. Use 'US' instead (ISO 3166-1 alpha-2)"}
Solution: Use 2-letter codes (US, CA, GB, AU, etc.)
400 - Invalid Location ID:
{"error": "Location not found: gid://shopify/Location/99999"}
Solution: Verify location exists via /data/locations endpoint
400 - Missing Delivery Methods:
{"error": "Country US has no delivery methods configured"}
Solution: Add at least one delivery method to each country
400 - Invalid Province Code:
{"error": "Province code 'California' invalid for US. Use 'CA'"}
Solution: Use 2-letter state codes (CA, NY, TX), not full names
500 - Shopify API Error: Shopify’s delivery profile API rejected the request. Common reasons:
Response (DeliveryProfileDTO): Returns created profile with:
id: Shopify delivery profile IDprofileName: Confirmed profile nameactive: Whether profile is active (true by default)locationGroupId: Shopify internal location group IDHow to Get Location IDs:
GET /api/data/locations
Response:
{
"locations": {
"nodes": [
{
"id": "gid://shopify/Location/12345",
"name": "Main Warehouse"
}
]
}
}
Best Practices:
Authentication: Requires API key authentication via X-API-Key header or api_key parameter
curl --request POST \
--url https://membership-admin.appstle.com/api/external/v2/delivery-profiles/v2/create-shipping-profile \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"locationInfos": [
{
"locationId": "<string>",
"countryInfos": [
{
"shouldIncludeAllProvince": true,
"code": "<string>",
"deliveryMethodInfo": [
{
"amount": 123,
"carrierServiceId": "<string>",
"name": "<string>",
"priceConditions": [
{
"amount": 123,
"deliverCondtion": "<string>"
}
],
"weightConditions": [
{
"deliveryCondition": "<string>",
"weight": 123,
"weightUnit": "<string>"
}
]
}
],
"restOfWorld": true,
"provinceCode": "<string>"
}
]
}
]
}
'{
"shop": "my-store.myshopify.com",
"deliveryProfileId": "<string>",
"id": 201,
"sellerGroupIds": [
"<string>"
],
"name": "Standard Shipping"
}Documentation Index
Fetch the complete documentation index at: https://developers.appstle.com/llms.txt
Use this file to discover all available pages before exploring further.
API Key (Deprecated - Use Header X-API-Key instead)
Delivery profile configuration with locations, zones, and shipping methods
Delivery profile successfully created in Shopify. Returns DeliveryProfileDTO with profile ID and configuration.
Shop domain identifier
"my-store.myshopify.com"
Shopify delivery profile ID
Unique identifier of the delivery profile
201
Set of selling plan group IDs associated with this delivery profile
Set of selling plan group IDs associated with this delivery profile
Display name of the delivery profile
"Standard Shipping"
curl --request POST \
--url https://membership-admin.appstle.com/api/external/v2/delivery-profiles/v2/create-shipping-profile \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"locationInfos": [
{
"locationId": "<string>",
"countryInfos": [
{
"shouldIncludeAllProvince": true,
"code": "<string>",
"deliveryMethodInfo": [
{
"amount": 123,
"carrierServiceId": "<string>",
"name": "<string>",
"priceConditions": [
{
"amount": 123,
"deliverCondtion": "<string>"
}
],
"weightConditions": [
{
"deliveryCondition": "<string>",
"weight": 123,
"weightUnit": "<string>"
}
]
}
],
"restOfWorld": true,
"provinceCode": "<string>"
}
]
}
]
}
'{
"shop": "my-store.myshopify.com",
"deliveryProfileId": "<string>",
"id": 201,
"sellerGroupIds": [
"<string>"
],
"name": "Standard Shipping"
}