Skip to main content

Shipping Zones & Rates

Shipping pricing is built from zones. A zone is a set of destinations plus the rates you offer to them.

Zone "Gulf"
├── Countries: Saudi Arabia, UAE, Kuwait
└── Rates
├── Standard — 40, "3–5 business days"
└── Express — 90, "next day"

Zones are independent of carriers. You can run zones with no carrier integration at all, and you can use a carrier for delivery while charging your own rates.


Creating a zone

Settings → Shipping → Add zone.

FieldNotes
NameInternal label — "Cairo & Giza", "Gulf", "Rest of world"
CountriesOne or more. A zone can cover many countries.
GovernoratesOptional, per country. Leave empty to cover the whole country.
ActiveInactive zones are invisible at checkout

Governorate targeting is what makes MENA pricing work: one zone for Greater Cairo, another for Upper Egypt, each with its own price, both inside Egypt.


Rates

Each zone holds any number of rates. A rate is what the shopper picks at checkout.

FieldNotes
PriceThe shipping charge
Rate nameShown at checkout. Defaults to "Standard Shipping" if left empty
Delivery descriptionThe delivery-time promise — "3–5 business days"
ConditionOptional. Restricts when the rate is offered — see below

Weight conditions

A rate can be gated on total cart weight, so heavy baskets cost more:

MinimumMaximumApplies to
01000Carts up to 1kg
10015000Carts from just over 1kg to 5kg
5001(empty)Everything above 5kg

Weights are in grams, and both bounds are inclusive. Leaving the maximum empty means "and up". A rate with no condition always applies.

Mind the gaps

Conditions are not validated against each other. If your bands leave a gap — say 0–1000 and 2000–5000 — a 1.5kg cart matches no rate and the shopper is stuck at checkout. Always leave one uncapped rate or make your bands contiguous.

Product weights also have to be set for this to work. Items with no weight contribute nothing to the cart total.


What the shopper sees

At checkout, TakeTheme finds every active zone covering the shopper's country and offers its rates, filtered by any conditions the cart doesn't meet. The shopper picks one, and its price is added to the order.

If no zone covers their country, no shipping option appears — this is the usual cause of "I can't check out from X".


Free shipping

Free shipping comes from the discount engine, not from zones — create a free-shipping coupon or automatic discount. The discount is applied to the shipping line, and the order records shipping already net of it.


API reference

ActionEndpoint
List zonesGET /v1/shipping-zones
Zones available for a countryGET /v1/shipping-zones/available
Create a zonePOST /v1/shipping-zones
Update / delete a zonePATCH / DELETE /v1/shipping-zones/:zoneId
Add / edit / delete a ratePOST / PATCH / DELETE on the zone's rates