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.
| Field | Notes |
|---|---|
| Name | Internal label — "Cairo & Giza", "Gulf", "Rest of world" |
| Countries | One or more. A zone can cover many countries. |
| Governorates | Optional, per country. Leave empty to cover the whole country. |
| Active | Inactive 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.
| Field | Notes |
|---|---|
| Price | The shipping charge |
| Rate name | Shown at checkout. Defaults to "Standard Shipping" if left empty |
| Delivery description | The delivery-time promise — "3–5 business days" |
| Condition | Optional. Restricts when the rate is offered — see below |
Weight conditions
A rate can be gated on total cart weight, so heavy baskets cost more:
| Minimum | Maximum | Applies to |
|---|---|---|
0 | 1000 | Carts up to 1kg |
1001 | 5000 | Carts 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.
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
| Action | Endpoint |
|---|---|
| List zones | GET /v1/shipping-zones |
| Zones available for a country | GET /v1/shipping-zones/available |
| Create a zone | POST /v1/shipping-zones |
| Update / delete a zone | PATCH / DELETE /v1/shipping-zones/:zoneId |
| Add / edit / delete a rate | POST / PATCH / DELETE on the zone's rates |