Setup
1
Add a shipping zone
Open Settings → Shipping (
/settings/shop/shipping) and click Add Zone. A zone has:- Zone Name, for example
Europe. Buyers do not see it on the checkout page. - Currency the price is set in.
- Shipping Price, a flat amount per order.
0makes shipping free for the zone. - Free From, optional. When the order value reaches this amount, shipping is free. Leave it empty to always charge the price.
- Countries the zone covers.
2
Create the product
Create a product and, under Delivery & Stock → What Buyers Get, pick Physical. Price, variants, stock, and quantity limits work as they do for a Service product. If your shop has no shipping zone yet, the editor warns you that buyers cannot order the product.
3
Sell it
The product shows in your storefront like any other product. Buyers add it to the cart and pay through hosted checkout.
Shipping zones
One zone is one flat price for a group of countries. The rules:- One zone per country. A country can be in only one of your zones. If you add a country that is already in another zone, Shoppex names that zone and refuses the save. Remove the country there first.
- One charge per order. The price is charged once per order, not per item and not per product. An order with three physical items pays the zone price once.
- Free From compares the goods, after discounts. Shoppex compares the order value after coupons and quantity discounts with the threshold. Tips and payment fees do not count toward it. The threshold is in the zone currency; an order in another currency is converted at the current rate first.
- Coupons do not discount shipping. A coupon lowers the goods value only. If it drops the order below Free From, shipping is charged again.
- Up to 100 zones per shop.
Editing and deleting zones
A change to a zone applies to new checkouts. An order the buyer already paid keeps the shipping price it was charged. An unpaid order is priced again with the current zone when the buyer continues the checkout, for example when they pick a payment method. When you delete a zone, buyers in its countries can no longer order physical products until another zone covers them.What the buyer sees at checkout
When the cart has at least one physical item, hosted checkout shows a Shipping address step before payment:- Country. The list offers only the countries in your zones.
- Full name, Address, and City are required.
- Apartment, suite, etc., Postal code, State or region, and Phone are optional.
The buyer can change the address until a payment arrives. After that, the address is locked, and the buyer has to contact you to change it.
Shipping an order
A paid order with physical items shows a Ship This Order strip on the order page, and a Shipping card with the full address, the phone number, the zone, and the shipment status.1
Mark it shipped
Click Mark Shipped. Optionally add a Tracking Code and a Tracking Link (it must start with
https:// or http://). Leave Notify customer by email on to send the buyer a shipping email.2
Correct the tracking if needed
After shipping, Edit Tracking replaces the tracking code and link. The shipped date stays the same. With Notify customer by email on, the buyer gets the new tracking.
3
Mark it delivered
When the parcel arrives, click Mark Delivered. The physical items count as delivered and the order leaves your open tasks.
What the buyer sees after payment
On the checkout completion page and in the customer portal, the buyer sees the shipment state:
The customer portal also shows the full shipping address. The public order link that anyone with the URL can open shows only the city and country.
Emails
The Shipping Confirmation email tells the buyer that the order is on its way, with the tracking code, the tracking link, and the shipping address. Shoppex sends it when you mark the order shipped with Notify customer by email on.- You decide per shipment: the email goes out when Notify customer by email is on (
notify_customerin the Developer API), even if the Payment Received switch on Buyer Emails is off. A buyer who opted out of order emails does not get it. - Shoppex sends one email per tracking. Saving the same tracking again sends nothing; changing it sends an update with its own subject (“Tracking updated for your order”).
- Edit the text under Store → Emails (
/store/emails); Email templates and variables explains how. The template has the variables{{shop_name}},{{invoice_id}},{{invoice_url}},{{customer_email}},{{tracking_code}},{{tracking_url}},{{shipping_address}}, and{{tracking_updated}}(truewhen the email announces changed tracking). The buyer’s address and the tracking are HTML-escaped in your template, line breaks in the address become<br>, and a missing tracking code shows as a dash. - The default template’s button opens the order page, which shows the tracking link when there is one. If you link
{{tracking_url}}directly, keep in mind it is empty when you ship without a tracking link.
Refunds
Shipping is part of the order total, so a full refund includes it. There is no separate shipping refund. If you refund one physical item of an order with several physical items, the order can no longer be marked shipped or delivered, because one shipment always covers every physical item. Ship the rest outside Shoppex and keep the conversation in the order thread.Limits
- Flat rate only. There are no weight-based, quantity-based, or carrier-calculated rates, and one rate per zone (no standard and express choice).
- No labels, no carrier integration. Shoppex does not buy postage or read tracking status from carriers. You mark shipped and delivered yourself.
- One zone per country, up to 100 zones per shop.
- One shipment per order. No partial shipments.
- No tax on shipping.
- Hosted checkout only. Physical products cannot be sold through subscriptions, the reseller program, gift orders, POS, invoices you create in the dashboard, or orders created through the Developer API. Those paths refuse a physical product instead of skipping the address.
Developer API and webhooks
Everything above is also available to your own systems:- Manage zones with the
/dev/v1/shipping-zonesendpoints (products.read/products.writescopes). - Ship and deliver with
POST /dev/v1/orders/{id}/shipandPOST /dev/v1/orders/{id}/deliver. - Listen to
order:shippedandorder:item.delivered.