# Goods ready signals

> Tell Delivr when the goods are packed, so the driver arrives when the parcel does.

Source: https://docs.delivr.no/guides/ready-signals/

An on-demand driver should arrive when your goods are packed: not before, wasting the driver's time, and not after, wasting the shopper's. Each store's `readySignal` decides how Delivr knows.

## `assumed` (default)

The goods count as ready at the order's `readyBy` or, without one, `prepMinutes` after the order. Delivr plans the driver search when the order is placed, so a driver arrives about then. You never have to call anything, which suits stores that always pack within a known time.

You can still send the signals below to correct the plan, for example when packing is quicker or slower than usual.

## `required`

On-demand orders wait in `awaiting_goods` until you signal. Choose this when packing time varies a lot, or when your warehouse system knows exactly when a parcel is packed.

## The signals

```bash
# Packing has started; the goods will be ready at readyAt (within 24 hours).
curl -X POST https://driver-staging-api.delivr.no/v1/merchant/orders/$ORDER/processing \
  -H "Authorization: Bearer $DELIVR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ "readyAt": "2026-11-03T13:25:00Z" }'

# Ready now.
curl -X POST https://driver-staging-api.delivr.no/v1/merchant/orders/$ORDER/ready \
  -H "Authorization: Bearer $DELIVR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```

| Signal                 | Effect                                                                                                                                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `processing {readyAt}` | The driver search is timed so a driver arrives at about `readyAt`. Repeat it as often as you like until the search starts. A `readyAt` in the past means ready now. The recipient's tracking page shows the time. Sends `order.ready_at_changed`. |
| `ready`                | The search starts at once, if it has not already.                                                                                                                                                                                                 |

On a window order, both signals are only recorded, for tracking.

## Deadlines

The goods are due at `readyBy`: yours, or the store's `readyDeadlineMinutes` after the order.

1. At `readyBy`, if the goods are not ready, you get `order.ready_overdue`. This mostly matters for `required` stores.
2. After the market's grace period the order fails with `goods_not_ready`, and your [fallback policy](/guides/fallbacks/) applies.

A `processing` with a `readyAt` past the deadline moves the deadline with it.