> For the complete documentation index, see [llms.txt](https://guides.d7networks.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guides.d7networks.com/verify/flow-analytics.md).

# Flow Analytics

Track how many OTPs a flow sends, delivers, and verifies, how often it falls   back to another channel, and how each channel performs.

## Verification Flow Analytics

Each verification flow has its own analytics page. It shows the flow's performance over a date range you choose, and lets you test, edit, export, or delete the flow.

To open it, go to **Verify → Flow** and click the **Analytics** icon on the flow's row.

<figure><img src="https://1617928555-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F56vP61LHDfGd4HenwKbH%2Fuploads%2FybQtDEM3wuEvV0qNc9iK%2Fflow_analytics.png?alt=media&amp;token=1645f0c0-126c-4eab-9794-79ba7277b7e3" alt=""><figcaption></figcaption></figure>

### Header

The header shows the flow's details:

* **Flow name** and its **primary channel** (SMS, VOICE, or WHATSAPP).
* **Flow ID**.
* **Updated** date: when the flow was last changed.
* **Voice language**: shown for flows whose primary channel is Voice.

It also has these controls:

| Control        | What it does                                                              |
| -------------- | ------------------------------------------------------------------------- |
| **Date range** | Selects the period for all the data on the page. See Choose a date range. |
| **Edit Flow**  | Opens the flow editor. See Edit a flow.                                   |
| **Export**     | Downloads the daily data for the selected range as a CSV file.            |
| **Delete**     | Deletes the flow after you confirm, and returns you to the flow list.     |
| **Test Flow**  | Sends and verifies a real test OTP.                                       |

### Choose a date range

By default, the page shows the **last 90 days**. Use the date picker to choose another range; the whole page updates.

You can't select future dates or dates before the flow was created. If the flow is less than 90 days old, the range starts on its creation date.

### Summary metrics

| Metric                | Description                                                                                                                                                               |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Verifications**     | Total OTP verification requests made with this flow.                                                                                                                      |
| **Delivered**         | Requests where the OTP was delivered to the user (Verifications minus Failed).                                                                                            |
| **Verified**          | Requests where the user entered the correct OTP.                                                                                                                          |
| **Verification Rate** | Percentage of verification requests that were verified (Verified ÷ Verifications).                                                                                        |
| **Fallback Rate**     | Percentage of verifications that needed a fallback channel. Hover over the info icon to see the number of fallback verifications and the average number of fallback hops. |

A **hop** is one move to the next channel in the fallback sequence. For example, SMS → Voice is one hop; SMS → WhatsApp → Voice is two.

### Verification Trend

The **Verification Trend** chart plots two daily lines for the selected range:

* **Verifications**: OTP requests made each day.
* **Verified**: OTPs verified each day.

The gap between the two lines shows how many users didn't complete verification. Hover over a day to see its values.

### Status Breakdown

Shows how many verification requests are in each status for the selected range:

<table><thead><tr><th width="250">Status</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>OPEN</strong></td><td>The OTP was sent and is still waiting to be verified.</td></tr><tr><td><strong>APPROVED</strong></td><td>The user entered the correct OTP.</td></tr><tr><td><strong>FAILED</strong></td><td>The OTP verification failed.</td></tr><tr><td><strong>EXPIRED</strong></td><td>The OTP wasn't verified before the flow's expiry duration ran out.</td></tr></tbody></table>

### Channel Breakdown

Shows the verification status split by the channel each OTP was **finally** delivered or verified on, including fallback channels. For example, if an OTP fell back from SMS to Voice and was verified, it counts under **Voice**.

For each channel used in the period you'll see:

* The channel's **verification rate** and **total** requests.
* A bar split into **Verified**, **Failed**, **Expired**, and **Open**. Hover over a segment to see its count and percentage.
* The count for each status under the bar.

Use it to compare channels and decide whether to change your primary channel or fallback order.

### Export data

Click **Export** to download a CSV file of the daily data for the selected range. The file has these columns:

| Column            | Description                      |
| ----------------- | -------------------------------- |
| **Date**          | The day, in `YYYY-MM-DD` format. |
| **Verifications** | OTP requests made that day.      |
| **Delivered**     | OTPs delivered that day.         |
| **Verified**      | OTPs verified that day.          |

The file is named after the flow, channel, and date range, for example `flow-analytics-user_signup_flow-SMS-2026-07-01_to_2026-09-30.csv`. **Export** is disabled when there's no data in the selected range.

### Test a flow

Use **Test Flow** to check a flow end to end before you use it in production. It sends a real OTP through the flow's configured channels.

1. Click the **Test Flow** button (paper-plane icon) in the header.
2. Enter a **Phone Number** and click **Send Test**.
3. Enter the code you receive and click **Verify OTP**.

When the code is verified, you'll see **Flow verified successfully**.

If you don't receive the code, click **Resend Code** after the countdown ends. The countdown matches the flow's **Retry Delay**. To use a different number, click the back arrow.

Test OTPs are real messages or voice calls and are charged at the standard verification rates.

<figure><img src="https://1617928555-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F56vP61LHDfGd4HenwKbH%2Fuploads%2FgAZjUB9eGpAWDem80AKa%2FTestflow1.png?alt=media&amp;token=6481589d-9b45-4ca8-8522-5009d02e4d21" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1617928555-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F56vP61LHDfGd4HenwKbH%2Fuploads%2FUqtFuf8dLs2G52U5jrqg%2FTestflow2.png?alt=media&amp;token=490ee7db-dea4-4190-83cb-6edae4fb8470" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1617928555-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F56vP61LHDfGd4HenwKbH%2Fuploads%2F503acsrVUh6ogBmXUnH5%2FTestflow3.png?alt=media&amp;token=28c95066-bd73-437b-83a3-8043301a4e16" alt=""><figcaption></figcaption></figure>
