# Results and Hot Leads

> Find who pressed 1 on an interactive IVR campaign. Keys Pressed column, ivr_digits in the results CSV, instant email alerts, sending leads to your CRM with an HTTP Request node, and calling the unreached again.

Source: https://edesy.in/docs/ivr/campaigns/results-and-leads

Every contact on an interactive campaign records the keys they pressed. You see them in the campaign's **Keys Pressed** column and in the `ivr_digits` column of the results export, so filtering for `1` gives you the interested leads. For leads in real time, add an Email or HTTP Request node on key 1 in the flow.

## Three ways to get the leads

| Method | When | How |
|---|---|---|
| **Keys Pressed** column | While the campaign runs | Campaign page in the voice app. Shows `1`, `1,2` or `-` per contact |
| Results CSV (`ivr_digits`) | After, or any time | Export the campaign results. One row per contact with status, attempts, duration and `ivr_digits` |
| Email alert | The moment someone presses 1 | An **Email** node on key 1 in the flow |
| CRM / Google Sheet / your API | The moment someone presses 1 | An **HTTP Request** node on key 1 |

## Email alert on key 1

Add an [Email](https://edesy.in/docs/ivr/nodes/email) node on the key 1 exit, before the Transfer:

- **Subject:** `Hot lead: {{var.lead_phone}} pressed {{digits}}`
- **Message:** `{{var.contact_name}} ({{var.lead_phone}}) chose "{{menu_choice}}" at {{time}}. We are forwarding the call to sales now.`

The email goes to your workspace owner. Use `{{var.lead_phone}}` for the lead's number: on campaign calls `{{caller}}` is your own caller ID.

## Send the lead to your CRM

Add an [HTTP Request](https://edesy.in/docs/ivr/nodes/http-request) node on key 1 in **Async** mode (the call continues at once, failed requests are retried):

| Field | Value |
|---|---|
| Method | POST |
| URL | Your CRM's or automation tool's webhook URL (`https://` only) |
| Content type | JSON |
| Body | `{"phone": "{{var.lead_phone}}", "name": "{{var.contact_name}}", "choice": "{{menu_choice}}", "source": "ivr-campaign"}` |

Every request is HMAC-signed and appears in [HTTP Logs](https://edesy.in/docs/ivr/logs/http-logs), where a failed one can be retried. Zapier, Make and n8n webhooks work as the URL too.

## Results export

```bash
curl -o results.csv https://voice-api.edesy.in/v1/campaigns/{id}/results \
  -H "Authorization: Bearer $EDESY_KEY"
```

For an interactive campaign the CSV includes `ivr_digits`: the keys pressed on the contact's latest call, e.g. `1` or `1,2`. An empty value means the call was answered but no key was pressed, or the call wasn't answered. See [Estimate and Results](https://edesy.in/docs/voice-api/campaigns/estimate-and-results) for the other columns.

## Read the numbers

| Measure | From the export |
|---|---|
| Answered | Contacts with a completed status |
| Pressed 1 | Rows where `ivr_digits` contains `1` |
| Press rate | Pressed 1 ÷ answered |
| Forwarded and talked | Check the transfer number's own call history, or a CRM entry from the HTTP Request |

## Call the unreached again

Duplicate the campaign with only the contacts who didn't answer:

```bash
curl -X POST https://voice-api.edesy.in/v1/campaigns/{id}/duplicate \
  -H "Authorization: Bearer $EDESY_KEY" -H "Content-Type: application/json" \
  -d '{ "audience": "unreached" }'
```

The copy keeps the same IVR flow.

## FAQ

### Do I see what the lead said after they were forwarded?

Not in the campaign. Turn on **Record these calls** in the campaign (or **Record the whole call** in the flow's Config node) to keep a recording.

### Can I see the keys for a single call?

Yes. Each campaign call also appears in IVR Studio's [Call Logs](https://edesy.in/docs/ivr/logs/call-logs) with the source "campaign" and the keys pressed.
