Socialone Logo

Order Routing

Routing is the process of selecting which location fulfills an order. For single-location businesses, routing always resolves to the default location with no configuration needed. For multi-location businesses, Socialone evaluates coverage, stock, capacity, and policy to pick the best location automatically.

Auto-Routing

Auto-routing is enabled by default. When a new order arrives, Socialone immediately runs the routing algorithm and assigns a fulfillment location. You can disable auto-routing in Settings → OMS Settings → Routing if you prefer to assign locations manually for every order.

How Routing Works

Routing runs in four steps in sequence. A location must pass all four to be selected:

  1. Coverage filter: only locations whose coverage mode includes the customer's delivery address are kept. National locations pass for all addresses. Radius locations pass if the address pincode is within the configured radius. Pincode-list locations pass if the address pincode is in their list.
  2. Stock filter: only locations with enough available-to-sell (ATS) for all items in the order are kept. Products with unlimited stock (marked as infinite) skip this check. Shared-pool inventory is checked at the pool level.
  3. Capacity filter: locations that have already reached their daily order capacity limit are removed. Locations with no capacity limit always pass.
  4. Policy rank: from the remaining candidates, one is chosen based on the routing policy.

Routing Policies

PolicyHow the winner is chosenBest for
Nearest (default)Location with the shortest haversine distance from the customer's pincodeSingle-tier businesses with stores spread across a region
Warehouse FirstWarehouses and dark stores win; stores only serve their local radius as fallbackBusinesses with central fulfillment and local last-mile stores
Store FirstNearest store wins; warehouse is the fallback when no store covers the addressRetail businesses that prefer local store fulfillment over central dispatch

Distance ranking requires that locations have coordinates. Coordinates are resolved from the location's pincode. Locations without coordinates are excluded from distance-based ranking and can only win when they are the only candidate.

Needs Routing

When no location passes all four filters, the order is placed in a needs_routing sub-status. Staff can then manually assign a location from the order detail page. This can happen when:

  • The delivery address is outside all locations' coverage areas.
  • No location has sufficient stock for one or more items.
  • All eligible locations have hit their daily capacity.

Configure a notification template for the Needs Routing (Admin) event to alert staff via WhatsApp when an order needs manual routing.

Order TTLs & Stall Settings

  • Pay-first TTL: how long (in minutes) a stock reservation is held for a pay-first order waiting for payment. Default is 45 minutes. After expiry, the reservation is released. Enable Auto-cancel on expiry to cancel the order automatically; otherwise it stays as a lead for staff to follow up.
  • Stall alert: hours before Socialone sends a staff alert for a confirmed or COD order that has not moved. Default is 24 hours. Adjust to match your expected processing time.
  • Auto-cancel on expiry: when enabled, pay-first orders that reach their TTL are cancelled automatically. When disabled, expired orders are kept as leads.

Courier Settings

These settings apply when Delivery Charge Mode is set to Live Courier Cost:

  • Courier selection: how Socialone picks a courier when multiple are available — Cheapest (default), Fastest, or Priority (your preferred carrier first).
  • Quote buffer %: percentage added on top of the raw courier quote before showing it to the customer. Use this to cover handling or packaging costs. Zero means the exact courier rate is passed through.
  • Quote confirm TTL: minutes the customer has to confirm a delivery quote before it expires. Default is 15 minutes. If the customer does not confirm, the quote lapses and they must restart checkout.
  • Live cost fallback: action taken when no courier quote can be retrieved — Hold (flag the order for staff), Flat Fee (fall back to your flat delivery fee), or Merchant Paid (absorb the cost and let the order proceed silently).
  • Default package dimensions: length × breadth × height (in cm) used for courier quotes when a product has no shipping weight or dimensions set.

Common Blockers

  • All orders stuck in needs_routing: check that at least one location has Fulfillment center enabled and is active. Also check the location's coverage mode — National coverage means no address restriction.
  • Routing ignores closer locations: locations without saved coordinates cannot participate in distance ranking. Enter the location's pincode and save to resolve coordinates.
  • Stock check failing even though stock is set: check the product's availability flag. If set to out_of_stock or discontinued, the product is excluded regardless of inventory count.
  • Courier quote always fails: check that the fulfillment location has a valid pincode and that the product has a shipping weight set.

Related Docs

Related product

Commerce & Orders for WhatsApp selling

Manage WhatsApp catalogs, products, variants, bulk imports, product messages, carts, payments, and order follow-up from one Socialone workspace.

View product →