Shipping Zones, Rules & Advanced Features
Free-shipping rules, shipping zones, auto-fulfillment, wallet history, activity log, WhatsApp updates, and multi-vendor shipping.
How shipping costs are calculated
When a customer enters their delivery address at checkout:
Zone lookup
The customer's pincode is matched against your configured shipping zones (e.g. "Metro Cities", "North India", "Remote"). No match falls into the Default Zone.
Base cost
Each zone has a base shipping cost — if no rule applies, the customer pays the base cost for their zone.
Rules evaluation
Any active shipping rules are checked against the order. If one matches (e.g. order value above the free-shipping threshold), the cost is adjusted.
Display
The customer sees the final calculated cost (or "Free") at checkout.
Creating and managing shipping zones
Go to Settings → General (Store group → General card in the Settings Hub) and scroll to the Shipping Zones section, then click Add Zone.
Finding this screen
There's no menu item literally labelled "Shipping Zones" in either admin sidebar. In the classic (v1) sidebar, click Settings, then the General card in the Store group. In the new (v2) sidebar there's no Settings-hub route to it either — the fastest way in is clicking the store-name card at the top of the sidebar, which opens the same screen directly.
| Classic field | What to enter |
|---|---|
| Zone Name | A descriptive name |
| Zone Type | Local, Regional, National or International |
| Pincode From / Pincode To | The inclusive postcode range |
| Base Rate | Shipping base cost |
| Estimated Days | Expected delivery time |
| Zone Status (Active) | Whether this zone is available for quotes |
Select Save Zone, or Cancel to leave the dialog. In the new editor the corresponding labels are Zone name, Zone type, Pincode from, Pincode to, Base rate (₹), Estimated days and Active, with save zone to save. A blank name, invalid pincode range, a busy save or unchanged values can prevent saving.
Zones and checkout quotes belong to the current store. Before editing, check the selected store, then save the active zone and check the delivery pincode again. Matching prefers the store's own zone; another store's zone cannot supply its rate. Applicable shared defaults may still be used.
Weight-band rates multiply the matching zone's base cost; checkout also evaluates applicable free-shipping rules. The zone forms above do not expose a working per-kg or weight-band editor. Ask the owner or support to review configured bands if the weight quote is unexpected rather than looking for a Per-kg rate control that is not on these forms. Manual delivery uses the merchant's zone/rules quote; it does not need to invent a courier rate-shopping option.
Why did my shipping cost differ after changing stores? Each store has its own active zones and rules. Check the store, pincode range, base cost and parcel weight together. A zero base cost alone is not the way to offer free shipping; configure an applicable free-shipping rule.
Editing and deleting a zone. Click the pencil icon on a zone row to edit its fields, or the trash icon to delete it — a confirmation step asks you to confirm before the zone is removed.
Delete works the same on both skins
Zone delete works the same way on the new (v2) admin skin — a confirmation step asks you to confirm before the zone is removed there too.
Shipping rules
Go to Shipment → Shipping Rules and click + New Rule to create one, or the pencil icon on an existing rule to edit it. Every rule has a type, one or more conditions, an action, and a priority (rules are evaluated in priority order; the first match wins).
Rule types
| Rule type | What it does |
|---|---|
| Free Shipping | Waives the shipping cost when the conditions match |
| COD Surcharge | Adds a surcharge amount to Cash on Delivery orders |
| Weight Tier Pricing | Charges shipping based on which weight band the cart falls into |
| Zone Restriction | Blocks or explicitly allows shipping to a zone, independent of cost |
| Provider Preference | Prefers a specific courier/provider when the conditions match |
Conditions
Rules are matched against these fields — this is the actual, current list; don't assume other fields (like "product category") are supported:
| Condition field | Compares against |
|---|---|
| Cart Total (₹) | The order's total value |
| Cart Weight (kg) | The order's total weight |
| Payment Method | Prepaid or COD |
| Pincode | The delivery pincode |
| Zone | The shipping zone the delivery pincode falls into |
Each condition uses an operator — equals, greater than, greater-or-equal, less than, less-or-equal, or "in" (matches a list) — and conditions on the same rule can combine.
Actions
| Action | What it does |
|---|---|
| Discount | A value of 100 makes shipping free; other values override the calculated rate |
| Surcharge | Adds the surcharge amount to the order (used for COD Surcharge rules) |
| Block | Prevents shipping to matching destinations (used for Zone Restriction rules) |
| Allow | Explicitly allows shipping without touching the calculated rate (used for Zone Restriction rules) |
How rules and zones work together
- Cart meets a free-shipping rule threshold → shipping = ₹0, regardless of zone.
- A discount rule applies (e.g. a Weight Tier rule for lighter parcels) → base cost is reduced.
- No rule matches → customer pays the zone's base cost.
- Multiple rules match → the most favourable rule wins (lowest price for the customer).
Example — Metro zone (base ₹60), Remote zone (base ₹120), free shipping above ₹499 cart total:
| Customer | Cart value | Zone | Shipping cost |
|---|---|---|---|
| Mumbai customer | ₹600 | Metro | ₹0 (free-shipping rule applies) |
| Remote customer | ₹400 | Remote | ₹120 (no rule applies) |
| Mumbai customer | ₹300 | Metro | ₹60 (base cost) |
| Remote customer | ₹600 | Remote | ₹0 (free-shipping rule applies) |
During checkout, if the cart is close to a free-shipping threshold but not there yet, the customer sees a progress nudge like "Add ₹150 more for free shipping!". Once qualified, cost drops to ₹0 and a "Free Shipping" badge appears immediately.
COD surcharge
Create a rule that adds a surcharge to COD orders (e.g. "Add ₹50 for Cash on Delivery") to help recover the COD handling fee Shiprocket charges you — Shipping Rules → + New Rule → rule type COD Surcharge → condition Payment Method = COD → action Surcharge → amount.
A rule's condition column shows “No condition (always applies)”
A rule created without a condition set (or with a partially-filled one) shows this label in the rules list rather than a broken-looking blank or literal "undefined" — it means the rule's action fires unconditionally whenever its rule type is evaluated. If that's not what you intended, click the pencil icon and fill in a condition field, operator, and value.
Editing and deleting a rule
Click the pencil icon on any rule row to reopen the same form pre-filled — change the type, conditions, action, or priority, then save. Click the trash icon to delete a rule; a confirmation dialog asks you to confirm before it's removed. There's no undo, so if you just need to pause a rule temporarily, edit it down to a condition that never matches instead of deleting it.
Auto-Fulfillment
If you don't want to book each shipment manually, enable Auto-Fulfillment on the Shiprocket plugin page (Plugins → Plugins → Shiprocket → Fulfilment tab).
What triggers it: a prepaid order is confirmed (payment captured), or a COD order status moves to Confirmed.
What it does: books the shipment with your configured courier strategy, generates the AWB and label, schedules a pickup for the next working day, and sends the customer a shipment confirmation.
When it does not fire
The order is On Hold, your Shiprocket wallet balance is below the minimum threshold, the delivery pincode isn't serviceable by any available courier, or the product has no warehouse assigned. In any of these cases the order stays in Processing and a notification appears in your Notification Centre — book manually.
Multi-provider failover
If both Shiprocket and Delhivery are connected and an auto-fulfillment booking fails on the primary provider (low wallet, API timeout, pincode not serviceable), the platform automatically tries the next provider. You see one successful booking — the failover is invisible.
Wallet pre-check
Before booking through Shiprocket, the platform checks your wallet balance. If it's below the minimum threshold, the booking is blocked with a clear warning rather than failing silently — this prevents surprise failures during auto-fulfillment. Top up at shiprocket.in.
Wallet History — your shipping spend ledger
Every Shiprocket charge — a booking, a return label, a refund, a top-up — is recorded in Wallet History (Plugins → Plugins → Shiprocket → Wallet History).
The Balance Card at the top shows:
| Field | What it tells you |
|---|---|
| Current Ledger Balance | What our records say you have, after every charge we've booked through your account |
| SR-Reported Balance | What Shiprocket's own dashboard last reported |
| Drift | The difference between the two — if non-zero, the table below shows which transactions are involved |
If a value shows "—", the first sync hasn't run yet (e.g. a freshly connected account) — it populates after the next reconciliation cycle.
The table below lists every wallet transaction chronologically — action type, signed amount (debits red, credits green), running balance, linked AWB or order, who triggered it, and notes. Filter by date range, action type, AWB, or triggered-by, and export the filtered set as CSV for accounting.
Automatic wallet reconciliation
Every 30 minutes, the platform compares your ledger balance against Shiprocket's reported balance. Any drift gets a reconciliation entry automatically added to your transaction history with the amount and a note. This means a complete audit trail with no silent corrections, and any unattributed refund or adjustment on Shiprocket's side is captured within 30 minutes.
Tip
If drift is consistently non-zero across multiple cycles, raise a ticket with Shiprocket — there may be an unattributed charge on their side. Your transaction history gives them the exact figures.
Activity Log — one timeline for every event
The Activity Log (Dashboard → Activity Log) is your single timeline of everything that happens in your store: orders, payments, shipments, returns, wallet movements, configuration changes, and authentication events.
Use it when
- A customer calls asking what happened to their order — filter by order number to see the full history.
- You want to verify whether an auto-fulfillment cron actually fired for a confirmed order.
- You need to audit who changed a shipping rule or initiated a manual refund.
- An anomaly appears in the dashboard and you want to see what preceded it.
Filter by category — order, shipment, return, payment, wallet, auth, or config events. Clicking a row opens the corresponding detail page (an order event takes you to that order, a shipment event to its tracking). Every entry is permanently stored, tenant-scoped, and timestamped to the second.
Pincode serviceability and city autofill
As a customer types their pincode in the checkout address form, the platform looks it up in real time, autofills city and state, and confirms serviceability. If the city field can't be resolved, it stays blank and the customer types it manually — no "Unknown" placeholder.
WhatsApp delivery updates (Engage 360)
Engage 360 sends automatic WhatsApp messages to your customers as their parcel moves. It is a card on the Shiprocket plugin page, not a separate WhatsApp tab.
Turn it on
- Connect and activate the WhatsApp plugin first (Plugins → Plugins → WhatsApp). Engage 360 only works while WhatsApp is installed and active.
- Go to Plugins → Plugins → Shiprocket and stay on the Shipping tab (other top tabs, Fulfilment and Wallet History, appear only when those features are enabled for your store).
- Find the card titled Customer Notifications (Engage 360) — "Automatically notify customers about shipment status via WhatsApp".
- Check the status chip next to the WhatsApp icon. It reads WhatsApp Connected or WhatsApp Not Connected.
- Flip the switch in the Enabled / Disabled row. A toast confirms Enabled or Disabled.
What else is on the card:
- A read-only Notification Events list: Shipped, Out for Delivery, Delivered, NDR Alert. The ticks turn green when the switch is on. These are not individual toggles — the switch turns all four on or off together.
- Manage Templates, which opens the WhatsApp plugin page (
/plugins/whatsapp) where your message templates live. - When WhatsApp is not connected, a yellow notice with a Connect WhatsApp button that takes you to the WhatsApp plugin page. The switch is greyed out until WhatsApp is connected.
- If the settings service cannot be reached, an info notice says the toggle will be enabled after a backend update, and a toggle attempt shows a warning toast instead of saving.
In the new admin the connection state shows once, as the chip, and Enabled / Disabled shows once, beside the switch. The classic admin also repeats each as plain text or a chip at the top right.
What customers receive
WhatsApp only lets a business message customers outside the 24-hour chat window with a template Meta has approved in advance. BillionBiz submits these four shipment templates for approval when WhatsApp is connected (approval is not instant). Each message is filled in with the order's own details:
| Event | Message the customer sees |
|---|---|
Shipped (shipment_shipped) | "Good news! Your order 1024 has shipped." plus the courier, a tracking link and the estimated delivery date. Footer: "Reply STATUS anytime to check your order." |
Out for delivery (shipment_out_for_delivery) | "Your order 1024 is out for delivery today." plus the courier and a tracking link. Footer: "Please keep your phone reachable." |
Delivered (shipment_delivered) | "Your order 1024 has been delivered. We hope you love it!" Footer: "Reply HELP if anything is wrong with your order." |
Delivery failed / NDR (shipment_ndr_alert) | "We couldn't deliver your order 1024." plus the reason, "Attempt: N of 3", and "What would you like us to do?" with two reply buttons: Try again and Cancel order. |
Messages go out from your connected WhatsApp Business number, so they appear as coming from your store.
If customers are not getting messages
- Switch is greyed out. WhatsApp is not connected or not active. Use Connect WhatsApp on the card.
- Templates not approved. Open Manage Templates and check that the four shipment templates show as approved. A template that is pending or rejected cannot be sent, and you will not see an error on the Shipping tab.
- The card says Disabled but you never touched it. The notification service treats a store with no saved Engage 360 setting as enabled, while this card reads the saved setting and shows Disabled when there is none. If you want a definite state, flip the switch on (or on then off) once so a setting is saved. A change can take up to about a minute to take effect, because the setting is cached briefly.
Branded tracking page
Every shipment has a tracking URL you can share with customers — a page branded with your store name and logo, not a generic Shiprocket page. Find it in the Shipment Detail Drawer for any shipment.
Marketplace stores (multi-vendor shipping)
If your store operates as a marketplace with multiple sellers, the shipping system adapts automatically.
Per-vendor warehouses. Each vendor adds their own warehouses from their Vendor Dashboard → Shipment → Warehouses — visible only to that vendor. If a vendor has no warehouses configured, the platform blocks adding products for them with a clear warning.
Each warehouse row shows a registration-status chip per connected provider (e.g. "Shiprocket: active", "Delhivery: pending" or "failed"), so a vendor can see at a glance which providers a warehouse is actually usable with. The Register control becomes a button group — one button per active provider — when more than one provider is connected, so the vendor picks which one to register the warehouse with. Vendors can mark one warehouse as their default for new shipments, and delete a warehouse they no longer use (a soft delete — it stops appearing in the active list but historical shipments still reference it).
Per-vendor shipping credentials. Each vendor connects their own Shiprocket account (Plugins → Shiprocket in their Vendor Dashboard) so shipments and wallet balances stay completely separate from the store owner's.
How multi-vendor orders ship. When a customer places a single order with products from multiple vendors, BillionBiz automatically splits it into separate sub-shipments — one per vendor, each from its own warehouse using its own credentials. The customer gets one order confirmation but may receive multiple parcels on different timelines.
Vendor shipping preferences — courier strategy, default packaging dimensions, and default shipping mode — are set per vendor and only affect that vendor's shipments.