# Support

URL: /systems/support · Id: `system:support`

> Support answers Conversations with Customers across email, chat and API, and links each reported bug or request to an Issue.

Support answers every [Conversation](/business/nouns/conversation) with a [Customer](/business/nouns/customer), from email, chat, the API or a shared [Channel](/business/nouns/channel), in one queue. The [Customer Lead](/agents/customer/customer-lead) answers from the [Knowledge base](/systems/knowledge-base) with citations and escalates with a summary when unsure.

## Summary
| Part | This System |
| --- | --- |
| Group | Support |
| Status | Live |
| Shelf | Front: offered from a Startup’s first days |

You can ask:

- “Answer my customers within an hour”
- “Hand this conversation to me”
- “What are customers asking about most?”
- “Turn this complaint into a bug”

## What you get
| Part | This System |
| --- | --- |
| Starts | On for every Startup at creation, with nothing to install. |
| Built from | [Email delivery](/systems/communications/email), [AI gateway](/code/platform/ai-gateway), [Search](/code/platform/search), [Workflows](/code/platform/workflows) |

## Nouns it owns
| Noun | Definition |
| --- | --- |
| [Conversation](/business/nouns/conversation) | A Conversation is a Thread with one or more Contacts that a Worker must answer, such as a support request. |

## Verbs
| Verb | Object | Approval | Event |
| --- | --- | --- | --- |
| [Conversation.create](/business/nouns/conversation/create) | [Conversation](/business/nouns/conversation) | None | `Conversation.created` |
| [Conversation.answer](/business/nouns/conversation/answer) | [Conversation](/business/nouns/conversation) | None | [`Conversation.answered`](/business/events/Conversation.answered) |
| [Conversation.assign](/business/nouns/conversation/assign) | [Conversation](/business/nouns/conversation) | None | [`Conversation.assigned`](/business/events/Conversation.assigned) |
| [Conversation.escalate](/business/nouns/conversation/escalate) | [Conversation](/business/nouns/conversation) | None | [`Conversation.escalated`](/business/events/Conversation.escalated) |
| [Conversation.close](/business/nouns/conversation/close) | [Conversation](/business/nouns/conversation) | None | [`Conversation.closed`](/business/events/Conversation.closed) |
| [Conversation.reopen](/business/nouns/conversation/reopen) | [Conversation](/business/nouns/conversation) | None | [`Conversation.reopened`](/business/events/Conversation.reopened) |

## Events
| Direction | Event | How |
| --- | --- | --- |
| Emits | `Conversation.created` | By [Conversation.create](/business/nouns/conversation/create) |
| Emits | [`Conversation.answered`](/business/events/Conversation.answered) | By [Conversation.answer](/business/nouns/conversation/answer) |
| Emits | [`Conversation.assigned`](/business/events/Conversation.assigned) | By [Conversation.assign](/business/nouns/conversation/assign) |
| Emits | [`Conversation.escalated`](/business/events/Conversation.escalated) | By [Conversation.escalate](/business/nouns/conversation/escalate) |
| Emits | [`Conversation.closed`](/business/events/Conversation.closed) | By [Conversation.close](/business/nouns/conversation/close) |
| Emits | [`Conversation.reopened`](/business/events/Conversation.reopened) | By [Conversation.reopen](/business/nouns/conversation/reopen) |
| Consumes | [`Action.asked`](/business/events/Action.asked) | Moves [Conversation](/business/nouns/conversation) to `waiting` |
| Consumes | `Message.created` | Moves [Conversation](/business/nouns/conversation) to `open` |

## States
The lifecycle of a [Conversation](/business/nouns/conversation):

| State | Meaning | Moves to |
| --- | --- | --- |
| `open` (first) | A Contact wrote, and a Worker owes the answer by `respondBy`. | `waiting` on [`Conversation.answered`](/business/events/Conversation.answered); `waiting` on [`Action.asked`](/business/events/Action.asked) when the Question goes to this Conversation’s Contact; `resolved` on [`Conversation.closed`](/business/events/Conversation.closed) |
| `waiting` | A Worker answered, and the Customer owes the reply. | `open` on `Message.created` when a Contact’s Message arrives in this Conversation; `resolved` on [`Conversation.closed`](/business/events/Conversation.closed) |
| `resolved` | Resolved, confirmed by the Customer or assumed after 72 hours with no reply. | `open` on [`Conversation.reopened`](/business/events/Conversation.reopened) |

## Who operates it
| Part | This System |
| --- | --- |
| Accountable | [Customer Lead](/agents/customer/customer-lead) |
| Team | [Customer Team](/agents/customer) |
| Seat | A role agent holds it until a Human is seated. |
| Autonomy | `supervised` |
| Also calls its Verbs | [Onboarding Specialist](/agents/customer/onboarding-specialist) |

## Approvals and limits
| Verb | Rule | Detail |
| --- | --- | --- |
| [Conversation.answer](/business/nouns/conversation/answer) | Limit for the [Customer Lead](/agents/customer/customer-lead) | 500 calls per day |
| [Conversation.answer](/business/nouns/conversation/answer) | Mandate `answer` for the [Customer Lead](/agents/customer/customer-lead) | Answers Conversations and sends Messages, each through the Startup’s Guards. |

## Processes that use it
| Process | How it uses it |
| --- | --- |
| [Support](/workflows/processes/support) | A step calls [Conversation.answer](/business/nouns/conversation/answer) |
| [Call routing](/workflows/processes/call-routing) | A step calls [Conversation.answer](/business/nouns/conversation/answer) |

## Rail underneath
None.

## Views and dashboards
| View | Shows | Metrics |
| --- | --- | --- |
| Queue | Open Conversations by priority, with the time each has waited. | [First response time](/agents/customer#first-response-time), [Agent resolution rate](/agents/customer#agent-resolution-rate) |
| The [Customer Lead](/agents/customer/customer-lead)’s view | The Metrics its accountable Role answers for. | [Month-3 retention](/agents/customer#month-3-retention), [Net revenue retention](/agents/customer#net-revenue-retention), [Logo churn](/agents/customer#logo-churn), [Repeat purchase rate](/agents/customer#repeat-purchase-rate), [First responses on time](/agents/customer#first-responses-on-time), [Resolution time](/agents/customer#resolution-time) |

## Access
What each Access level may call here.

| Access level | May call |
| --- | --- |
| `owner` | Every Verb (10) |
| `admin` | Every Verb (10) |
| `member` | Every Verb (10) |
| `viewer` | Read only (2 of 10) |

## Import and export
| Connector | Mode |
| --- | --- |
| Slack | Import: edits made in the tool arrive as Changes. |
| Microsoft Teams | Import: edits made in the tool arrive as Changes. |

## Fees and pricing
None.

## Availability and limits
| Part | This System |
| --- | --- |
| Status | Live |

## Compliance notes
Controls it carries:

- [Action completion](/systems/trust-and-governance/controls/action-completion)

## Related Systems
- [Knowledge base](/systems/knowledge-base)
- [Mailboxes](/systems/mailboxes)
- [Success](/systems/success)

## Example
```ts
// A payroll managed service. A Customer asks in a shared Slack channel why a bonus was withheld at 22 percent.
import { $ } from 'startup-builder'

// Answered in the same thread, citing the help article, inside the first-response target.
await $.Conversation.answer({ conversation: 'conv_3Fp9', body: 'Bonuses are supplemental wages, withheld at a flat 22 percent. Source: Bonus withholding.' })

// The Customer says thanks. With no reply in 72 hours, the resolution is `assumed` instead.
await $.Conversation.close({ conversation: 'conv_3Fp9', resolution: 'confirmed' })

// Another Customer asks for a person: a Human gets it where one holds the Role above.
await $.Conversation.escalate({ conversation: 'conv_7Lm2', reason: 'askedForPerson' })
```