> ## Documentation Index
> Fetch the complete documentation index at: https://docs.callers.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Success criteria

> Define what counts as a successful conversation so Callers can classify every call, chat, and email and measure your success rate.

Success criteria are the possible outcomes of a conversation, written in plain language. After each conversation, Callers reads the transcript and picks the criterion that matches. The result becomes the contact's status, drives your **Success Rate**, triggers webhooks and post-call actions, and tells you who to follow up with.

Criteria come in two groups:

* **Goal Reached:** the conversation did what the agent was built for, for example "Meeting booked" or "Payment promised". These contacts count as **Interested**.
* **Goal Not Reached:** the conversation ended without that, for example "Already has a provider" or "Not the decision maker". These contacts count as **Not interested**.

> [!NOTE]
>
> Success criteria were previously called "interest criteria". You'll still see that name in the API (`interestCriteriaV2`) and in the legacy `interested` webhook field.

## Set up success criteria

**1. Open Success Criteria**

Open the agent, click **Edit**, and choose **Success Criteria** in the settings sidebar. You can also open it from the **Success Criteria** node on the workflow canvas.

![Workflow tab of the agent editor with the Success Criteria node highlighted, showing Scheduled a Demo and Requested More Info under Goal Reached and Declined Outright and Already Has a Solution under Goal Not Reached, between the Script and Post-Conversation Actions nodes](https://mintcdn.com/voxiaai/ELyrb3NxuHh0ILKS/images/documentation/build-your-agent/workflow-tab.png?fit=max\&auto=format\&n=ELyrb3NxuHh0ILKS\&q=85\&s=512189e7bb7ba5e9c77c8c33293c16d3)

The Success Criteria node on the Workflow tab lists the Goal Reached and Goal Not Reached outcomes.

**2. Generate a starting set**

Click **Generate** to have AI suggest criteria based on your script. Click **Regenerate** to get a new set.

**3. Add or edit criteria**

Click **Add**, or click a criterion to edit it. Fill in:

* **Title:** the status shown on the contact, for example `Follow-Up Scheduled`. Titles must be unique within the agent.
* **Description:** when this outcome applies, written for the AI, for example "The contact agreed to a follow-up call and gave a day and time."
* **Status Group:** **Goal reached** or **Goal not reached**.

Click **Create** or **Update** to save.

**4. Choose the default**

In the **Goal Not Reached** group, hover over a criterion and click **Set as Default**. The default is used when no other criterion matches. Out of the box it's **Not interested**.

**5. Mark as reviewed**

After you edit the script, the page shows "Review the success criteria after the last edits". Check that your criteria still fit and click **Mark as Reviewed**.

![Success Criteria dialog titled Review the success criteria after the last edits, listing Scheduled a Demo and Requested More Info under Goal Reached and Declined Outright and Already Has a Solution under Goal Not Reached, each with a description, and Regenerate, Add, and Mark as Reviewed buttons at the bottom](https://mintcdn.com/voxiaai/ELyrb3NxuHh0ILKS/images/documentation/build-your-agent/success-criteria.png?fit=max\&auto=format\&n=ELyrb3NxuHh0ILKS\&q=85\&s=0bd081ce9949156b03642bf27a37a672)

The Success Criteria dialog asking for a review, with Regenerate, Add, and Mark as Reviewed.

## Built-in criteria

Every voice agent includes built-in **Goal Not Reached** criteria. You can't delete them:

| Criterion | When it applies |
| :- | :- |
| **Not interested** | None of the other criteria matched. This is the initial default. |
| **Wrong Number** | The contact says you've reached the wrong person or number. |
| **Do Not Call** | The contact asks not to be contacted again. |
| **Call Later** | The contact is busy, asks for a callback, or is temporarily unavailable. Shown, with an editable description, only when **Continue Dialing Attempts after "Call Later"** is off. When it's on, call-later contacts are retried instead. |

Email agents include **Unsubscribed** and **Invalid Email** in place of the call-specific ones.

> [!WARNING]
>
> Don't create custom criteria that mean the same thing as a built-in outcome, such as "Callback requested" or "Remove from list". Callers warns you when a name is similar to a built-in status, because a custom criterion doesn't trigger the same behavior (retries, Do Not Call handling) as the built-in one.

## How criteria are applied

* Criteria are checked against real conversations only. Unanswered calls, voicemail, and silent or very short calls are handled before classification and retried. See [Statuses and outcomes](https://docs.callers.ai/documentation/using-callers/call-statuses.md).
* Each criterion is checked against the conversation. If both a **Goal Reached** and a **Goal Not Reached** criterion match, the **Goal Reached** one wins. Among several matches in the same group, the strongest match wins.
* If nothing matches, the conversation gets your default **Goal Not Reached** criterion.
* The criterion's name is shown as the contact's and call's status, so a contact can show "Follow-Up Scheduled" instead of "Interested".
* **Success Rate** counts every **Goal Reached** outcome, whatever its name.

## Writing good criteria

> [!TIP]
>
> Describe what happened in the conversation, not what you hope the contact feels. "The contact confirmed a demo date and time" is easier to classify than "The contact is excited about the product".

* **Make goals verifiable.** Name the action that proves success: booked, confirmed, agreed to pay, gave an email address.
* **Keep criteria distinct.** If two descriptions could both match the same call, merge them or add a detail that separates them.
* **Use Goal Not Reached criteria to learn why.** "Price too high", "Using a competitor", and "Not the decision maker" turn a single Not interested bucket into reasons you can act on.
* **Keep the list short.** Three to six criteria per group is usually enough.

## Use criteria in automations

Each criterion creates its own webhook event, `POST_PROCESSING_FINISHED:<criterion name>`, which you can subscribe to in [webhooks](https://docs.callers.ai/documentation/webhook/webhook-overview.md). See [Webhook events](https://docs.callers.ai/documentation/webhook/webhook-events.md#outcome-events-and-success-criteria) for the full list. Renaming or deleting a criterion updates webhooks that use it.

The [webhook payload](https://docs.callers.ai/documentation/webhook/webhook-payload.md#status-and-outcome)'s `successCriteria` object tells you the result:

```json theme={"dark"}
"successCriteria": {
  "goalReached": true,
  "name": "Follow-Up Scheduled",
  "description": "The contact agreed to a follow-up call and gave a day and time.",
  "reason": "The contact asked to talk again on Thursday at 3 pm.",
  "type": "INTERESTED"
}
```

[Post-call actions](https://docs.callers.ai/documentation/build-your-agent/agent-actions.md) can also run only for specific criteria, for example creating a CRM task only for "Follow-Up Scheduled". Deleting a criterion asks you to confirm, and lists the post-call actions that use it.

## Set criteria with the API

`POST /agents/{agentId}/update/interestcriteria` replaces the agent's whole set of criteria.

```json Request body theme={"dark"}
{
  "successCriteria": {
    "interested": [
      {
        "name": "Follow-Up Scheduled",
        "description": "The contact agreed to a follow-up call and gave a day and time.",
        "type": "INTERESTED",
        "order": 0
      }
    ],
    "notInterested": [
      {
        "name": "Using a competitor",
        "description": "The contact says they already use another provider and won't switch.",
        "type": "NOT_INTERESTED",
        "order": 0
      }
    ]
  }
}
```

Because the request replaces everything, read the agent first, change the criteria, and send back the full object.

## Related

> **[Statuses and outcomes](https://docs.callers.ai/documentation/using-callers/call-statuses.md)**
>
> How each outcome is decided.

> **[Post-call analysis](https://docs.callers.ai/documentation/using-callers/key-questions.md)**
>
> Capture answers and details from each conversation.

> **[Actions](https://docs.callers.ai/documentation/build-your-agent/agent-actions.md)**
>
> Run follow-ups based on the outcome.

> **[Agent results and insights](https://docs.callers.ai/documentation/using-callers/agent-insights.md)**
>
> Track your success rate.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.