> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getdial.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getdial.ai/_mcp/server.

# September 22, 2026

## Changed

### A WhatsApp line in a cooling-off period now retries itself

When WhatsApp puts a number in a cooling-off period before it will accept another verification request, setup fails and `whatsapp.retryAvailableAt` says when the period lifts. Until now that was where it stopped: the line sat failed until somebody asked for a retry, and a period that expired overnight was noticed the next morning.

Dial now waits the period out and re-runs setup by itself, exactly as if the retry had been asked for. It does this a bounded number of times and then stops, so a number WhatsApp keeps refusing does not retry forever.

The `whatsapp` object on a phone number gains **`autoRetryScheduled`** to tell the two apart:

```jsonc
{
  "whatsapp": {
    "status": "failed",
    "error": "WhatsApp stopped accepting verification requests for this number. Try again in a couple of hours.",
    "retryAvailableAt": "2026-09-22T03:18:19.584Z",
    "autoRetryScheduled": true    // nothing to do — Dial will retry when the period lifts
  }
}
```

While `autoRetryScheduled` is `true`, leave the line alone and tell the user a retry is coming. When it is `false` and `retryAvailableAt` is `null`, the next attempt is yours to ask for. Asking for one yourself is unchanged, and still gives the line a fresh budget of automatic attempts.

This is an added field on an existing object, so nothing that reads a number today is affected.