---
title: reports.quoteWinRate | Doing Work API
description: Of the quotes made between two dates (inclusive, UTC) and sent, how many were signed, declined, or are still waiting. Win rate is signed over signed plus d
url: https://doingwork.work/docs/reference/reports-quotewinrate/
---

# reports.quoteWinRate

Of the quotes made between two dates (inclusive, UTC) and sent, how many were signed, declined, or are still waiting. Win rate is signed over signed plus declined; null when none are decided yet.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `GET /v1/reports/quote-win-rate` |
| MCP tool | `reports_quoteWinRate` |
| Writes | no |
| Area | [Costs, expenses and reports](https://doingwork.work/docs/reference/#costs-expenses-and-reports) |

## When to use it

Of the quotes made between two dates (inclusive, UTC) and sent, how many were signed, declined, or are still waiting. Win rate is signed over signed plus declined; null when none are decided yet.

## What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

## Input

| Field | Type | Required |
|---|---|---|
| `shop_id` | string (uuid) | yes |
| `from` | string | yes |
| `to` | string | yes |

## Example

```http
GET https://doingwork.work/v1/reports/quote-win-rate?shop_id=00000000-0000-4000-8000-000000000000&from=...&to=...
```

## Output

| Field | Type | Always there |
|---|---|---|
| `sent` | integer | yes |
| `signed` | integer | yes |
| `declined` | integer | yes |
| `waiting` | integer | yes |
| `win_rate` | ['number', 'null'] | yes |

```json
{
  "sent": 1,
  "signed": 1,
  "declined": 1,
  "waiting": 1,
  "win_rate": "..."
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
