> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ocular.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Fulfilment & logistics

> Triggers in Ocular for courier performance, RTO rates, courier billing discrepancies, and return reasons — to diagnose fulfilment and logistics issues.

<Note>
  All analyses on this page use the **Fulfilment Data Model** in Chart Builder and require the **Clickpost connector** to be live.
</Note>

For each trigger below: **what happened, where to go, how to read it, the decision you're making.**

## Which courier partner is costing us the most in failed deliveries?

**Trigger:** RTO rates climbing or delivery complaints rising. You need to know which courier — to renegotiate, reallocate, or escalate.

**Chart Builder:** Fulfilment · Measures: `rto_rate`, `delivery_rate`, `tat_breach_rate`, `avg_days_to_deliver` · Dimension: `courier_partner` · Table sorted by `rto_rate` desc.

A courier with high RTO **and** high TAT breach simultaneously → highest-risk partner. Every failure is an order lost plus reverse logistics cost.

**Add financial context:** `avg_shipment_cost` alongside. Expensive *and* unreliable → strong candidate for reduced allocation.

**Decision:** Reduce allocation, renegotiate terms, or escalate for performance review?

***

## Which cities or pincodes cause the most delivery failures?

**Trigger:** Overall RTO is high — is it concentrated in specific geographies (courier coverage issue) or spread evenly (payment method or product quality issue)?

**Chart Builder:** Fulfilment · Measure: `rto_rate` · Dimension: `drop_city` · Breakdown: `reason_for_first_failed_delivery` · Pivot.

The city × failure-reason matrix tells you whether failures are **addressable** (Customer Unavailable, Wrong Address — fixable with address validation, retry logic) or **structural** (courier doesn't service the area — fixable only by changing allocation).

**Pincode granularity:** Filter to `drop_pincode` for the highest-RTO cities. Specific pincodes often drive disproportionate failure shares.

**Decision:** Address validation, switch courier for specific pincodes, or flag high-risk geos for COD?

***

## Are we being overbilled by courier partners?

**Trigger:** Logistics costs higher than expected, or WMS-declared vs. courier-invoiced weights are off. Quantify the gap and find responsible partners and zones.

**Chart Builder:** Fulfilment · Measures: `cost_discrepancy_rate`, `avg_weight_discrepancy`, `avg_shipment_cost` · Dimension: `courier_partner` · Breakdown: `zone` · Table.

* `cost_discrepancy_rate` — % shipments with billing mismatch
* `avg_weight_discrepancy` — gap between WMS-declared and courier-billed weight

Couriers with high discrepancy rates in **Metro and Zone A** (where volumetric weight billing kicks in differently) → biggest source of unbilled cost.

**Decision:** Which courier-zone combinations to flag for billing disputes, and do I need to recalibrate WMS weight declarations?

***

## How does COD delivery performance compare to prepaid?

**Trigger:** Considering tightening COD availability (specific pincodes, order values). Quantify the RTO penalty of COD vs. prepaid, broken down by courier.

**Chart Builder:** Fulfilment · Measures: `delivery_rate`, `rto_rate` · Dimension: `payment_method` · Breakdown: `courier_partner` · Grouped Bar.

COD has higher RTO by nature — buyers haven't paid upfront. **Interesting question:** is the COD penalty courier-specific? If one courier has a dramatically higher COD RTO for the same zones, they're not following up on failed COD deliveries.

**Decision:** Restrict COD by pincode or order threshold, and stop assigning COD to specific couriers?

***

## What are the most common return and exchange reasons?

**Trigger:** High return volumes — is it sizing, quality, or misleading PDPs? The answer decides whether to fix the product, the listing, or fulfilment.

**Chart Builder:** Fulfilment · Measure: `returned_shipments` · Dimension: `return_reason` · Bar sorted desc.

**Cross-reference with:** Sales · Measure: `percentage_orders_returned` · Dimension: `product_name`, filtered to the high-return-reason categories.

This connects the **logistics reason** (Clickpost) with the **product dimension** (Sales) — so you can see whether "Size issue" or "Not as described" concentrates in specific SKUs.

**Decision:** Product issue (fix sizing, quality), listing issue (update PDP, images, size guide), or fulfilment issue (wrong items, packaging damage)?

## Next

<CardGroup cols={2}>
  <Card title="Custom analysis" icon="wand-sparkles" href="/overview/start-with-the-question/custom-analysis">
    Chart Builder and Dashboards for one-offs.
  </Card>

  <Card title="Back to overview" icon="circle-question" href="/overview/start-with-the-question">
    All categories and the quick reference table.
  </Card>
</CardGroup>
