# How deflection value is booked

> What an AI agent resolving help desk tickets or Salesforce conversations is worth: the rule, customers who come back, the price, one entry a month.
>
> Source: https://roiva.ai/docs/how-deflection-value-is-booked
> Checked against the product on October 12, 2026

When an AI agent resolves a ticket in Zendesk or Freshdesk, or a conversation in Intercom or Salesforce Messaging, and no person has to, Roiva books what handling it would have cost as freed capacity: agent time given back, not cash, because your support team is paid the same either way. That value doesn't come from a value formula, and so the [Formula library](https://roiva.ai/docs/reference/formulas) has no formula for it. The help desk's own sync books it, for each initiative that links the connection as a **value source**.

This page is about tickets. Intercom works the same way with conversations. Salesforce decides what counts its own way, under **Salesforce Agentforce** below.

#### What counts as deflected

A ticket counts when three things are true:

- **The help desk resolved it.** In Zendesk that's a status of solved or closed, in Freshdesk resolved or closed, and in Intercom a closed conversation. An open ticket never counts, whatever else is true of it.
- **It meets the link's deflection rule.** The rule is set on the link, under **Deflection rule**, and there are two kinds:
  - **Tagged (default)**: the ticket carries a tag, `ai-deflected` unless you name another.
  - **Resolved by a specific user**: the ticket's assignee is the user your AI agent works as in the help desk. Pick it by name, or type its ID.

  On Intercom, either kind can also count **only conversations the customer confirmed Fin resolved**. Intercom records how Fin's part of each conversation ended. It counts a customer who leaves without asking for a person as an assumed resolution, including one who gave up. Tick the option to book only the conversations where the customer said Fin's answer helped. It books less, and nothing in it rests on a guess.

- **The customer didn't come back.** A ticket the customer reopened, or followed with another ticket within the recontact window, wasn't resolved by the AI, whatever its status says. See **When the customer comes back** below.

Roiva doesn't decide on its own whether the AI resolved a ticket. It reads the tag or the assignee your help desk records. So the tag has to be put on the tickets the AI resolves, for example by a trigger or your AI tool's own setting. Otherwise the rule matches nothing and the initiative books $0.

A ticket counts in the month it was created. A ticket created in March and resolved in April adds to March's entry once its recontact window has passed, provided March hasn't been approved yet.

#### When the customer comes back

An AI agent's resolution isn't always the end of it. The customer may reopen the ticket, or write in again a day later about the same problem. Roiva leaves such a ticket out of deflection value entirely. It doesn't book it at a discount.

A ticket is left out when either of these happened:

- **It was reopened.** Zendesk counts reopens on each ticket, and Intercom on each conversation. Freshdesk records the time a ticket was last reopened, and Roiva reads that when it's there. Any reopen counts, because none of the three says when it happened.
- **The same customer opened another ticket within the recontact window** after this one was resolved. In Zendesk, a reply to a closed ticket arrives this way, as a follow-up ticket. Roiva doesn't keep subjects, so it can't tell whether the new ticket is about the same problem, and any new ticket counts. That errs toward booking less.

The window is the assumption `pricing.deflection.recontact_window_days`, four days unless you set your own. Four days is Zendesk's default for how long a solved ticket waits for a reply before it closes. Intercom's own recontact rate looks 24, 48 or 72 hours ahead. A longer window catches more customers who come back, and books each ticket later. Change it under **Method → Assumptions**. While it's Roiva's default, the entry rests on Roiva's figures, as it does on the default price: its row in **Approvals** says so, and **ROI → Provisional** lists it. Each ticket is held to the window in effect on the date it was created.

Roiva counts the window from when the help desk resolved the ticket: Zendesk's solved time, Freshdesk's resolved or closed time, and the time an Intercom conversation was last closed. A ticket missing that time counts from its last update instead, which is never earlier.

**Why exclusion, not a discount.** One alternative is to discount every ticket by the share that came back. That share would be estimated from these same tickets, so it would catch no one that exclusion misses. It would also charge the tickets known to be resolved for the ones known not to be, while still booking those at most of their price. Excluding them keeps every booked dollar on a ticket ID and every excluded ticket on a reason.

**What it can't see.** A customer who gave up and never came back looks resolved. Zendesk and Intercom both count that as an automated resolution. On Intercom, the option to count only conversations the customer confirmed leaves those out. Zendesk and Freshdesk record nothing on the ticket that tells them apart. Neither can Roiva see a customer who came back by phone or through another channel the help desk doesn't record. If that matters for your figures, lower the price per ticket rather than the count.

#### Settling

A ticket can't be known to be resolved until its window has passed. Until then it's **settling**: it isn't booked yet, and the entry says how many tickets are settling and when the last one settles. The first sync after a ticket's window closes either books it or leaves it out. That decision is then kept for good. A customer who reopens the ticket a month later doesn't change it, so a ticket an approved entry booked is never also counted as agent work.

A month with nothing settled yet has no entry. If you approve a month while some of its tickets are still settling, those tickets aren't counted anywhere, the same as a ticket resolved after its month was approved. Its row in **Approvals** says "Still settling", and approving it says how many tickets it would leave out and when the last one settles. To count every ticket, approve a month once the recontact window has passed after its last day.

#### The price of a deflected ticket

Each ticket is worth one figure, the cost of a deflected ticket, which is an assumption: `pricing.zendesk.cost_per_deflected_ticket`, `pricing.freshdesk.cost_per_deflected_ticket`, `pricing.intercom.cost_per_deflected_conversation`, or `pricing.salesforce.cost_per_deflected_conversation`. The link form shows the figure your account is on.

Roiva ships a default, listed with its reasoning on [Assumption defaults](https://roiva.ai/docs/reference/assumptions). It's a convention rather than a measured figure: ten minutes of Roiva's blended labor rate, which is low for most support teams. Replace it with what a ticket costs your team to handle: the agent minutes it takes multiplied by your loaded agent cost. Under **Method → Assumptions**, the price is in the **In Use** list once a help desk is linked to an initiative as a value source, and **Used by** names the link and its initiative. Click **Confirm or override** on its row. The initiative's **Setup** tab asks for it too, and saves it in place; its overview says when it's still needed. Anyone on the account can set it.

Each ticket is priced at the figure in effect on the date it was created. A new figure applies from its **Effective from** date, and your account's earliest figure also covers tickets created before its date, rather than Roiva's default. Months that haven't been approved are repriced on the next sync, and approved months keep the price they were approved with.

**Priced from a time study.** If the initiative has published a [time study](https://roiva.ai/docs/running-a-time-study) of agent minutes per ticket, its tickets are priced from it instead of Roiva's default: the minutes the study timed without the AI, multiplied by your account's labor rate (`labor_rate_cents_per_hour`). The study in force for a month is the one its formulas would read for that month. This replaces only Roiva's default. A price your account set itself stands, since it may include costs that minutes times a labor rate don't, such as overhead or a vendor's rate. Each entry names the study, the minutes, the rate and Roiva's default price it replaced. The entry then rests on the study's baseline, measured or reconstructed, and the people who ran and timed the study count as its authors when it's approved, as they do for a formula's figures. Its row in **Approvals** says so when the labor rate is Roiva's default, when the study was a sample timed after go-live, or when it's past its re-study date.

#### One entry per initiative per month

Each sync adds up the month's deflected tickets that have settled without the customer coming back, and writes one value entry per initiative per month: the count multiplied by the price, as a freed capacity entry. The same sync also records two readings for the initiative, the number of tickets resolved by AI and that number as a share of every ticket resolved that month. Formulas and charts can read both.

Freed capacity is reported beside cash value and is in no ROI. It becomes cash when your support costs actually fall because of it: fewer seats on an outsourced support contract, overtime or contractors you stopped paying, or ticket growth absorbed without a hire you had planned. Record that as **Capacity realized as cash**, for each month, citing the contract, the invoices or the requisition that shows it. See [Adding costs and value entries](https://roiva.ai/docs/adding-costs-and-value-entries).

A deflection entry is never approved automatically, because auto-approve covers only entries from formulas Roiva supplied. It waits in **Approvals** for a person, and once approved it's never rewritten. A ticket that resolves after its month was approved isn't counted anywhere.

#### What the entry lets a reviewer check

Open the entry from the initiative's **Value Entries** tab. Under **Deflected Tickets** it shows a snapshot taken when the sync last wrote it:

- **Rule**: the rule a ticket had to meet, in words, such as "Resolved tickets tagged ai-deflected". If someone changes the rule later, this entry still shows the rule it was counted with, until a sync rewrites it.
- **Tickets**: how many met the rule and were counted.
- **Not Counted**: the tickets the customer reopened or followed with another within the window, each with its ID and, for a follow-up, the ID of the ticket they came back in. Open both in the help desk to check. Roiva lists up to 100.
- **Still Settling**: how many tickets are still inside their window, and the day the last one settles.
- **Cost per Ticket**: each price applied, with how many tickets it applied to and what they came to, and whether it was Roiva's default, your account's figure or a time study's, and when it took effect. A month that spans a price change shows both prices. Count multiplied by price adds up to the entry's amount.
- **Priced From**: for tickets priced from a time study, the study, its agent minutes per ticket, the labor rate, the price they came to, and Roiva's default price it replaced.
- **Ticket IDs**: the tickets behind it, so you can open a sample in the help desk and see the tag, the status and who resolved them. Roiva keeps up to 100 IDs per entry. When a month has more, the list says it shows the first 100 and gives the total.

The entry's **Provenance** names the sync that wrote it. Roiva keeps fields such as each ticket's ID, status, tags, assignee and dates, not its subject or messages. It doesn't keep the requester either: only a one-way digest of the requester's ID, which tells whether two tickets came from the same customer and can't be turned back into the ID. See [What Roiva keeps from each platform](https://roiva.ai/docs/reference/stored-data).

#### Counting a ticket once

A deflected ticket is counted once, in these ways:

- **Syncing again.** A sync rewrites the month's entry rather than adding another, so no ticket is counted twice by the same initiative, however often the connection syncs.
- **The formula library.** The library had two formulas that valued deflected tickets, one for customer support and one for IT help desks. Both were retired when this sync replaced them, so adopting a template doesn't add a second count of the same tickets.
- **Two initiatives on one help desk.** Two links on one connection can't have the same rule, because each would count every ticket the other does. A second link left on the default rule is refused, and the form names the initiative that already counts those tickets. Give each initiative its own tag or its own AI user. Different rules can still both match a ticket, for example one tagged `ai-deflected` and assigned to the AI's user. Such a ticket is worth one price, split evenly between the initiatives: the lowest of the prices each initiative would give it, so one initiative's time study never prices it above another's figure. Each entry shows it on its own line under **Cost per Ticket**, as the price divided by the number of initiatives.
- **Agent work on the same help desk.** **Agent Handle Time Freed Capacity**, from the AI Support Ticket Routing & Resolution template, values the agent time saved per ticket, on tickets agents resolved. Zendesk, Freshdesk and Intercom count those for it: every resolved ticket that no deflection rule on the connection matched, plus the ones a rule matched whose customer came back. A ticket the AI resolved is deflection value or agent work, never both. While it's settling it stays on the AI's side. The minutes are agent work per ticket, recorded from a time study or your help desk's time tracking. They aren't how long a ticket was open, which is mostly waiting. Roiva syncs that as the average days to resolve. HubSpot tickets and Salesforce cases don't show whether an AI resolved them, so there the count of tickets agents resolved is recorded by hand. A Salesforce conversation an AI agent handled alone is deflection value, so leave it out of a hand count of cases agents resolved.

What the AI agent costs is booked separately. A Zendesk, Freshdesk, Intercom or Salesforce connection books no cost, so a vendor's charge per automated resolution reaches the initiative from the invoice in your books, through a vendor mapping, or as a recurring cost. See [How costs reach an initiative](https://roiva.ai/docs/how-costs-reach-an-initiative).

#### Salesforce Agentforce

A Salesforce value link books one of two things, chosen under **Books** on the link: **Won deals**, or **Conversations an AI agent handled without a person**. Nothing is chosen for you, and a value link has to choose one. To book both, link the connection to two initiatives. Links made before the choice existed book won deals. Switching a link from one to the other archives what it booked under the old choice that no one has approved yet. Approved entries keep their figures.

The conversations are Salesforce Messaging sessions, not cases. A conversation an Agentforce agent resolves often opens no case, and a case it does open is usually how it hands the customer to a person. Roiva reads the sessions created in the last 12 months, and for each one the Omni-Channel work records that say who it was routed to: an AI agent, meaning an Agentforce agent or an Einstein Bot, or a person. It doesn't read the messages.

A conversation counts when all of these are true:

- **The session has ended.**
- **The AI agent the link names took it.** Pick the agent by name under **Deflection rule**. Each initiative names its own agent, and a second initiative can't name one another initiative already counts.
- **No person took part, and none was asked for.** No person was routed the session, Salesforce's Agent Type for it isn't Agent or Bot & Agent, and the agent didn't hand it to a queue. A conversation handed to a queue doesn't count even when nobody picked it up before the customer left.
- **The customer didn't come back.** A Messaging session never reopens, so the one sign is the same customer starting another conversation within the recontact window, as with a follow-up ticket. On web chat a visitor who isn't signed in may not be recognized as the same customer, so a return can be missed.
- **The customer wrote at least twice.** A customer who asks one question and leaves isn't counted, even when the agent answered it, because Salesforce records that conversation the same way as one where the customer gave up. So the count leaves out some real deflections rather than counting conversations that weren't. A conversation the customer leaves open still counts once Salesforce ends it for inactivity, if the customer wrote twice. One that an automation or an error ended doesn't.

That's Salesforce's own deflection outcome, a session that ended without escalation to a person, less the sessions its agent analytics counts as abandoned. It isn't Salesforce's task resolution rate, which Salesforce's Trust Layer judges from the conversation itself and Roiva can't read. So the entry says deflected, not resolved.

Each conversation that counts is priced at `pricing.salesforce.cost_per_deflected_conversation`, what a person would have cost to handle it, and booked as above: once its recontact window has passed, in one freed capacity entry per initiative per month, waiting in **Approvals**. The sync also records how many conversations the AI agent handled and what share that is of the month's conversations handled by the agent or by a person.

Messaging and Omni-Channel have to be set up in Salesforce, and the user Roiva connects as needs Read on Messaging Sessions and Agent Work. The connection page checks both under **Messaging sessions**. Without Agent Work no conversation counts, because Roiva can't tell who took a session.

Roiva doesn't read what Agentforce consumes or what Salesforce bills for it. That cost reaches the initiative from Salesforce's invoice in your books or as a recurring cost. For Agentforce uses that don't run over Messaging, the Salesforce connection's other readings still apply. Cases give how many were opened and closed, the resolution rate, the average days to resolve and how many are open. Opportunities give the win rate, deal size and sales cycle. A formula with a baseline can measure an initiative by the change in those readings.

#### Next

- [Linking connections to initiatives](https://roiva.ai/docs/linking-connections-to-initiatives): setting up a value source link
- [How Roiva calculates value](https://roiva.ai/docs/how-value-is-calculated): value that does come from a formula
- [Approving value and initiatives](https://roiva.ai/docs/approving-value-and-initiatives): who approves an entry
