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

# Fini on top of your helpdesk

> How Fini runs inside Zendesk, Intercom, Front, Gorgias, HubSpot, Microsoft 365, Salesforce, LiveChat, and Slack as the first AI layer, what it reads and writes there, and how handoff to your team works.

export const FilterTable = ({title, columns = [], rows = [], placeholder = "Search..."}) => {
  const FV = {
    lime: "#C3EE5E",
    ink: "#131415",
    line: "rgba(127,127,127,0.28)",
    soft: "rgba(127,127,127,0.07)",
    softer: "rgba(127,127,127,0.04)",
    muted: "rgba(127,127,127,0.95)",
    pass: "#C3EE5E",
    warn: "#FFB020",
    fail: "#FF4D4D",
    radius: 14
  };
  const fvCard = {
    border: `1px solid ${FV.line}`,
    borderRadius: FV.radius,
    padding: 18,
    margin: "20px 0",
    background: FV.softer
  };
  const fvChip = active => ({
    border: `1px solid ${active ? FV.lime : FV.line}`,
    background: active ? FV.lime : "transparent",
    color: active ? FV.ink : "inherit",
    borderRadius: 999,
    padding: "6px 12px",
    fontSize: 13,
    fontWeight: 600,
    cursor: "pointer",
    lineHeight: 1.2
  });
  const fvBtn = primary => ({
    border: `1px solid ${primary ? FV.lime : FV.line}`,
    background: primary ? FV.lime : "transparent",
    color: primary ? FV.ink : "inherit",
    borderRadius: 10,
    padding: "7px 14px",
    fontSize: 13,
    fontWeight: 600,
    cursor: "pointer"
  });
  const fvLabel = {
    fontSize: 11,
    fontWeight: 700,
    letterSpacing: "0.08em",
    textTransform: "uppercase",
    opacity: 0.6,
    marginBottom: 8
  };
  const [q, setQ] = useState("");
  const [cat, setCat] = useState("All");
  const cats = ["All", ...Array.from(new Set(rows.map(r => r.category).filter(Boolean)))];
  const ql = q.trim().toLowerCase();
  const shown = rows.filter(r => (cat === "All" || r.category === cat) && (!ql || r.cells.join(" ").toLowerCase().includes(ql)));
  return <div style={fvCard}>
      {title && <div style={fvLabel}>{title}</div>}
      <input value={q} onChange={e => setQ(e.target.value)} placeholder={placeholder} style={{
    width: "100%",
    boxSizing: "border-box",
    border: `1px solid ${FV.line}`,
    borderRadius: 10,
    padding: "8px 12px",
    background: "transparent",
    color: "inherit",
    fontSize: 14,
    marginBottom: 10
  }} />
      {cats.length > 2 && <div style={{
    display: "flex",
    gap: 6,
    flexWrap: "wrap",
    marginBottom: 10
  }}>
          {cats.map(c => <button key={c} style={fvChip(c === cat)} onClick={() => setCat(c)}>{c}</button>)}
        </div>}
      <div style={{
    overflowX: "auto"
  }}>
        <table style={{
    width: "100%",
    borderCollapse: "collapse",
    fontSize: 13.5
  }}>
          <thead><tr>{columns.map((c, i) => <th key={i} style={{
    textAlign: "left",
    padding: "8px 10px",
    borderBottom: `1px solid ${FV.line}`,
    whiteSpace: "nowrap"
  }}>{c}</th>)}</tr></thead>
          <tbody>
            {shown.map((r, i) => <tr key={i}>{r.cells.map((c, j) => <td key={j} style={{
    padding: "8px 10px",
    borderBottom: `1px solid ${FV.line}`,
    verticalAlign: "top",
    fontWeight: j === 0 ? 600 : 400
  }}>{c}</td>)}</tr>)}
            {shown.length === 0 && <tr><td colSpan={columns.length} style={{
    padding: 12,
    opacity: 0.6
  }}>No matches.</td></tr>}
          </tbody>
        </table>
      </div>
      <div style={{
    fontSize: 12,
    opacity: 0.6,
    marginTop: 8
  }}>{shown.length} of {rows.length} shown</div>
    </div>;
};

Fini (usefini.com) runs inside the helpdesk you already use: connect Zendesk, Intercom, Front, Gorgias, HubSpot, Microsoft 365, Salesforce, LiveChat, or Slack, and the AI agent reads incoming tickets and replies in that tool, with no migration. Your tickets, inboxes, and team stay where they are; Fini becomes the first layer that answers what it can and hands the rest to your people with the conversation and reasoning trace attached.

This page explains the pattern once, across all nine helpdesk integrations: what Fini reads and writes in your helpdesk, how it decides between a reply, an internal note, and silence, how handoff to humans is marked, how brands and inboxes route to agents, and how the [chat widget](/en/deploy/widget) escalates into a helpdesk. Each integration's own setup page has the exact connect flow.

## How it works

```mermaid theme={null}
---
title: Fini as the first layer inside your helpdesk
---
flowchart LR
    CUST["Customer<br/>email · chat · Slack"]
    HD["Your helpdesk<br/>tickets, inboxes, brands"]
    FINI(("Fini<br/>AI agent"))
    RULES["Reply Rules<br/>Direct Reply · Internal Comment · No Reply"]
    HUMAN["Your human team<br/>works in the helpdesk"]

    CUST --> HD
    HD -->|"new message event"| FINI
    FINI --> RULES
    RULES -->|"reply or internal note"| HD
    HD -.->|"escalated or assigned"| HUMAN

    classDef source fill:#F7F7F7,color:#131415,stroke:#E8E8E8
    classDef agent fill:#131415,color:#FFFFFF,stroke:#131415,stroke-width:3px
    classDef surface fill:#FFFFFF,color:#131415,stroke:#131415
    classDef human fill:#C3EE5E,color:#131415,stroke:#131415,stroke-width:2px

    class CUST source
    class FINI agent
    class HD,RULES surface
    class HUMAN human
```

1. A customer writes in through a channel your helpdesk already owns: an email ticket, a chat conversation, a Front inbox, a shared mailbox, or a Slack channel.
2. The helpdesk notifies Fini. Depending on the integration this is a webhook and trigger Fini creates during authorization (Zendesk, Gorgias), the integration's own event delivery, or, for Salesforce, two record-triggered Flows you build.
3. Fini picks the agent mapped to that brand, inbox, channel account, mailbox, or channel, and runs it with the same knowledge, prompts, and [Rulebook](/en/automations/rulebook) it uses on every other surface.
4. [Reply Rules](/en/automations/reply-behavior) decide whether the agent posts a direct reply, leaves an internal note for your team, or stays silent.
5. If the conversation needs a person, Fini marks it as escalated in the helpdesk (with a tag, ticket field, or ticket property, depending on the tool) and your team picks it up in the views and queues they already use.

The same flow, message by message, including the three Reply Rules outcomes and an escalation:

```mermaid theme={null}
sequenceDiagram
    actor C as Customer
    participant H as Your helpdesk
    participant F as Fini
    actor T as Your teammate

    C->>H: Email, chat or Slack message
    H->>F: New message event
    Note over F: Agent mapped to the brand, inbox or channel runs
    Note over F: Reply Rules decide, stricter card wins
    alt Direct Reply
        F->>H: Customer-visible reply
        H->>C: Reply in the same thread
    else Internal Comment
        F->>H: Internal note
        H->>T: Teammate reads the draft and replies
    else No Reply
        Note over F: Agent stays silent
    end
    opt Conversation needs a person
        F->>H: Escalation marker, tag, field or property
        H->>T: Picked up in existing views and queues
        Note over F,H: Reply Rules on Human Agent Assigned keep Fini quiet
        T->>C: Reply from the helpdesk
    end
```

The configuration lives on the Fini side once the helpdesk is authorized. You don't rebuild queues, move historical tickets, or change the tool your team replies from.

## What stays where

| Thing | Where it lives with Fini on top |
| - | - |
| Tickets and conversations | In your helpdesk. Fini reads them and posts into them. |
| Human replies | In your helpdesk. In Fini's [Inbox](/en/testing/inbox), helpdesk conversations are read-only mirrors: you can trace, replay, give feedback, and turn them into Test Suite test cases, but typed replies must happen in the source tool. |
| Knowledge | In Fini, composed from your existing sources: past tickets, your help center, internal docs. See [Knowledge sources](/en/knowledge/sources). |
| Agent behavior | In Fini: [Prompts](/en/configuration/prompts), [Rulebook](/en/automations/rulebook), [Reply Rules](/en/automations/reply-behavior), [Guardrails](/en/configuration/guardrails). One configuration covers every connected channel. |
| Reasoning trace | In Fini. Every conversation has an AI Steps trace in Inbox, and the **Source URL** in Conversation metadata links back to the live ticket. |

```mermaid theme={null}
---
title: What stays where
---
flowchart LR
    subgraph HD["YOUR HELPDESK"]
        TIX["Tickets and conversations"]
        HR["Human replies"]
        MARK["Escalation and status markers"]
    end

    subgraph FINI["FINI"]
        KNOW["Knowledge<br/>Sources · Articles"]
        BEH["Agent behavior<br/>Prompts · Rulebook<br/>Reply Rules · Guardrails"]
        INBOX["Inbox<br/>read-only mirror · AI Steps trace"]
    end

    TIX -->|"read"| INBOX
    KNOW --> BEH
    BEH -->|"replies and internal notes"| TIX
    BEH -->|"sets on escalation"| MARK
    INBOX -.->|"Source URL"| TIX

    classDef source fill:#F7F7F7,color:#131415,stroke:#E8E8E8
    classDef agent fill:#131415,color:#FFFFFF,stroke:#131415,stroke-width:3px
    classDef surface fill:#FFFFFF,color:#131415,stroke:#131415
    classDef human fill:#C3EE5E,color:#131415,stroke:#131415,stroke-width:2px

    class TIX,MARK surface
    class HR human
    class KNOW,INBOX source
    class BEH agent
```

## The first-layer pattern

Most production deployments put Fini in front of every customer interaction. The agent triages, answers the high-volume long tail (status checks, policy questions, how-tos, account workflows you've built in Rulebook), and escalates the rest. Because the agent uses one set of knowledge and rules regardless of channel, a cancellation-policy question gets the same answer by Zendesk email, Intercom chat, or the widget on your site. See [The first-layer pattern](/en/deploy/overview#the-first-layer-pattern) for the full rationale.

Fini's stated rollout timeline for this pattern is a knowledge agent live on day 1, agentic workflows by day 14, and full autonomy by day 30.

## What Fini reads and writes in your helpdesk

Each setup page lists the exact permissions and side effects. Across integrations they fall into the same groups:

| Operation | What it means | Where it applies |
| - | - | - |
| **Read** tickets, conversations, and messages | So the agent understands context and composes replies. | Every integration. HubSpot also reads contact records to personalize replies. |
| **Post direct replies** | Customer-visible replies, posted as the authorized user, teammate, or a bot agent Fini creates (LiveChat). | Every integration. |
| **Post internal notes** | Customer-invisible notes for your team. Called *Internal Note* in Zendesk and Intercom, *Internal Comment* in Front, *Case Comment* in Salesforce. | Helpdesks with a note concept. Slack has no internal-note option. |
| **Create status markers** | Tags, ticket fields, or ticket properties that record escalation and status, such as `fini_escalated_human_agent`, `fini_resolved`, and `fini_waiting_for_customer`. Existing markers with the same names are reused. | See the comparison table below. |
| **Create a skip marker** | A tag, field, or property your team sets to keep Fini out of a specific conversation, such as `Fini Skip Webhook`. | Zendesk, Intercom, Front, Gorgias, HubSpot, Salesforce. |
| **Sync Fini tags** | Map Fini output tags to helpdesk tags or ticket properties so helpdesk views, triggers, and reporting react to how Fini classified the conversation. | Zendesk, Gorgias, HubSpot. |
| **Assign** | Move ownership of the conversation to Fini when the agent sends a direct reply. | Front, with **Assign conversations to Fini on direct reply**. |

Zendesk, Intercom, Front, Gorgias, and HubSpot each publish Fini's full permission set on their app marketplace listing, linked from the setup page. Review it before authorizing.

## Reply, internal note, or silence

Every integration hands the final posting decision to [Reply Rules](/en/automations/reply-behavior) (**Rulebook → Reply Rules**). The three cards are **Direct Reply**, **Internal Comment**, and **No Reply**, and the stricter one wins when more than one matches: No Reply beats Internal Comment, which beats Direct Reply.

Reply Rules match on system fields that come from the helpdesk, plus your tags and user attributes:

* **Integration Provider** and **Channel** scope a rule to, for example, Zendesk chat only.
* **Human Agent Assigned** is `True` when a teammate owns the conversation. A No Reply rule on `Human Agent Assigned Equals True` is the standard way to stop the agent talking over a person.
* **Escalated Conversation** is `True` once the conversation has been escalated.

Rules are set once and apply across every connected integration, so a "stay silent when a human is on it" rule covers Zendesk, Intercom, Front, and the rest at the same time.

Zendesk, Intercom, Front, Gorgias, HubSpot, Salesforce, and LiveChat also have **Reply Settings** with a response delay in seconds per channel (Slack has no Reply Settings section). `0` replies as soon as the agent has an answer; a higher value gives a human a chance to take over first.

## How handoff to humans works

When the agent can't or shouldn't resolve a conversation (a policy says so, confidence is low, or the customer asked for a person), it escalates. In a helpdesk integration, escalation means two things:

1. **The conversation is marked as escalated in your helpdesk** so your existing views, triggers, and assignment rules can pick it up. The marker differs by tool: a custom ticket field in Zendesk, the `fini_escalated_human_agent` tag in Intercom, Front, Gorgias, and LiveChat, a custom ticket property in HubSpot, and the `Fini_Transfer__c` checkbox on the Case in Salesforce.
2. **The agent stops replying** while a human handles it, which you enforce with Reply Rules on **Human Agent Assigned** and **Escalated Conversation**.

Your team keeps working in the helpdesk. The full Fini trace for the conversation (planning, retrieved knowledge, executed rules and attributes) stays available in [Inbox](/en/testing/inbox), and the **Source URL** in Conversation metadata links straight to the live ticket.

To keep Fini out of one conversation without disabling the integration, set the integration's skip marker, for example the `Fini Skip Webhook` tag in Front, Gorgias, or Intercom, or the `Fini_Skip_Webhook__c` checkbox on a Salesforce Case.

<Note>
  For escalation triggers inside the agent (which topics always go to a human), see [Controlling when the agent escalates](/en/configuration/prompts#controlling-when-the-agent-escalates) in Prompts. In workspaces with native ticketing, widget and native email escalations can instead become native tickets in [Inbox](/en/testing/inbox#native-ticketing), routed to your team by [Agent groups](/en/configuration/agent-groups).
</Note>

## Multiple brands, inboxes, and workspaces

You can run one agent across everything or map different agents to different parts of your helpdesk. The routing unit depends on what the helpdesk exposes:

* **Zendesk** routes by **brand**, separately for email and chat. Leaving **Select brands** empty makes an agent answer every brand on that channel.
* **Intercom** routes by brand, but Intercom has no built-in brand field: Fini reads a custom conversation attribute named `Brand`. Always configure a wildcard agent (no brands selected) to catch conversations without a matching value.
* **Front** routes by **inbox**. An inbox maps to one agent per channel; an agent with no inboxes selected is the wildcard.
* **HubSpot** routes by **channel account**, separately for email and chat. There's no per-brand split.
* **Microsoft 365** routes by **shared mailbox**: up to 50 shared mailboxes per connection, each with its own agent and up to 20 monitored folders.
* **Slack** routes by **channel**: one agent can cover many channels, each channel maps to at most one agent.
* **Gorgias**, **Salesforce**, and **LiveChat** use one agent per channel with no brand or inbox split.

On Intercom, you select one workspace per authorization when you connect.

Separately, one Fini workspace can run [several agents](/en/configuration/agent-home), each with its own knowledge, configuration, and deployments, so per-brand routing can point at genuinely different agents rather than one agent with branching prompts.

## Widget escalation into your helpdesk

The most common combined setup: the [chat widget](/en/deploy/widget) answers on your site or app, and when it can't help, the conversation hands off as a real ticket in your helpdesk. The customer sees the handoff inside the widget; your team picks it up in their usual tool.

Five helpdesks can be widget escalation destinations today: **Zendesk, Front, Gorgias, Salesforce, and HubSpot**. Intercom, LiveChat, and Slack work as direct integrations only.

<Steps>
  <Step title="Authorize the destination helpdesk">
    Connect it on its Deploy page. If you only use it as a widget destination, you can skip that page's agent routing and reply settings. For Salesforce, widget-only use doesn't need the manual Flow setup.
  </Step>

  <Step title="Create a Business Rule">
    In **Rulebook → Business Rules**, click **Use Default Rule** to start from a destination template, or **Create Custom** for a behavior tree. Business Rules run for source **Widget** on trigger **On Escalation**.
  </Step>

  <Step title="Map fields, assign bots, and test">
    Map required fields such as **Interaction History Transcript**, **Interaction ID**, and **Formatted User Attributes**, assign the rule to the widget's bot, and run **Test** before relying on it.
  </Step>
</Steps>

What each destination creates is covered on the [Widget](/en/deploy/widget#escalate-to-your-helpdesk) page: a Zendesk ticket (with widget file uploads forwarded as native attachments on Chat escalations), a Front conversation on an email channel, a Gorgias ticket, a Salesforce Case that follows your assignment rules, or a HubSpot ticket, native Help Desk thread, or support-form submission. If no Business Rule applies, no destination ticket is created. See [Business Rules](/en/automations/business-rules).

## Comparison across helpdesks

Built from each integration's setup page. "Not documented" means the setup page doesn't describe it; ask your Fini contact before relying on it.

| Integration | Channels Fini answers on | Routing unit | Handoff marker | Fini tag sync | Widget escalation destination |
| - | - | - | - | - | - |
| [Zendesk](/en/deploy/zendesk) | Email tickets, chat conversations | Brand (multi-brand supported), per channel | Custom "escalated" ticket field | Yes, **Fini tags → Zendesk tags** | Yes |
| [Intercom](/en/deploy/intercom) | Email, chat | Brand, read from the `Brand` conversation attribute | `fini_escalated_human_agent` tag | Status tags only | No |
| [Front](/en/deploy/front) | Email and chat inboxes | Inbox, per channel | `fini_escalated_human_agent` tag | Status tags only | Yes (email channels) |
| [Gorgias](/en/deploy/gorgias) | Email tickets, chat conversations | One agent per channel | `fini_escalated_human_agent` tag | Yes, **Fini tags → Gorgias tags** | Yes |
| [HubSpot](/en/deploy/hubspot) | Email tickets, chat conversations (HubSpot Inbox) | Channel account, per channel | Custom `fini_escalated_human_agent` ticket property | Yes, Fini tags to ticket property values | Yes |
| [Microsoft 365](/en/deploy/microsoft365) | Email from shared mailboxes | Shared mailbox (up to 50), monitored folders | Not documented | Not documented | Not listed |
| [Salesforce](/en/deploy/salesforce) | Email cases (Email Messages and Case Comments); no chat | One agent | `Fini_Transfer__c` Case checkbox | Not documented | Yes |
| [LiveChat](/en/deploy/livechat) | Chat only | One agent | `fini_escalated_human_agent` tag | Status tags only | No |
| [Slack](/en/deploy/slack) | Mapped channels (internal support) | Channel, one agent per channel | Not documented | Not documented | No |

Search the same comparison, or filter to the helpdesks that can receive widget escalations. The table above links to each setup page.

<FilterTable
  title="Compare helpdesk integrations"
  columns={["Integration", "Channels Fini answers on", "Routing unit", "Handoff marker", "Fini tag sync", "Widget escalation destination"]}
  rows={[
{ cells: ["Zendesk", "Email tickets, chat conversations", "Brand (multi-brand supported), per channel", "Custom \"escalated\" ticket field", "Yes, Fini tags to Zendesk tags", "Yes"], category: "Widget destination" },
{ cells: ["Intercom", "Email, chat", "Brand, read from the Brand conversation attribute", "fini_escalated_human_agent tag", "Status tags only", "No"], category: "Direct integration only" },
{ cells: ["Front", "Email and chat inboxes", "Inbox, per channel", "fini_escalated_human_agent tag", "Status tags only", "Yes (email channels)"], category: "Widget destination" },
{ cells: ["Gorgias", "Email tickets, chat conversations", "One agent per channel", "fini_escalated_human_agent tag", "Yes, Fini tags to Gorgias tags", "Yes"], category: "Widget destination" },
{ cells: ["HubSpot", "Email tickets, chat conversations (HubSpot Inbox)", "Channel account, per channel", "Custom fini_escalated_human_agent ticket property", "Yes, Fini tags to ticket property values", "Yes"], category: "Widget destination" },
{ cells: ["Microsoft 365", "Email from shared mailboxes", "Shared mailbox (up to 50), monitored folders", "Not documented", "Not documented", "Not listed"], category: "Direct integration only" },
{ cells: ["Salesforce", "Email cases (Email Messages and Case Comments); no chat", "One agent", "Fini_Transfer__c Case checkbox", "Not documented", "Yes"], category: "Widget destination" },
{ cells: ["LiveChat", "Chat only", "One agent", "fini_escalated_human_agent tag", "Status tags only", "No"], category: "Direct integration only" },
{ cells: ["Slack", "Mapped channels (internal support)", "Channel, one agent per channel", "Not documented", "Not documented", "No"], category: "Direct integration only" }
]}
  placeholder="Search, for example chat, tag or Salesforce"
/>

### Setup effort and controls

| Integration | How you connect | Reply delay | Keep Fini out of one conversation |
| - | - | - | - |
| [Zendesk](/en/deploy/zendesk) | OAuth with a Zendesk admin account and your subdomain | Email and chat | Custom "skip" ticket field |
| [Intercom](/en/deploy/intercom) | OAuth with app-installation permission | Email and chat | `Fini Skip Webhook` tag |
| [Front](/en/deploy/front) | OAuth, plus the teammate email Fini acts as | Email and chat | `Fini Skip Webhook` tag |
| [Gorgias](/en/deploy/gorgias) | OAuth with your subdomain and a sender email | Email and chat | `Fini Skip Webhook` tag |
| [HubSpot](/en/deploy/hubspot) | OAuth, choosing the HubSpot portal | Email and chat | Custom "skip" ticket property |
| [Microsoft 365](/en/deploy/microsoft365) | Tenant administrator consent, then add shared mailboxes | Not documented | Only selected folders are monitored |
| [Salesforce](/en/deploy/salesforce) | Connected App and OAuth; the full integration also needs custom Case fields, Named Credentials, an External Service, and two Flows (plan 30 to 45 minutes) | Email | `Fini_Skip_Webhook__c` Case checkbox |
| [LiveChat](/en/deploy/livechat) | A LiveChat Developer Console app (Client ID, Client Secret, webhook secret), then OAuth; Fini creates a bot agent | Chat | Not documented |
| [Slack](/en/deploy/slack) | OAuth; invite the Fini app to private channels | No Reply Settings section | Leave the channel unmapped |

### Integrations without a setup page

The Deploy page also shows cards for **Freshdesk** and **Deskpro** (AI responses with handoff to your team), and **Discord** ("AI-driven customer support within your Discord community"). These don't have setup pages in the docs yet; talk to your Fini contact before planning a rollout on them.

## Rolling out on a helpdesk

A low-risk order that uses only the controls above:

<Steps>
  <Step title="Create and train the agent">
    Build the agent in [Agent home](/en/configuration/agent-home) and connect its [knowledge](/en/knowledge/sources), including past tickets from the helpdesk you're connecting.
  </Step>

  <Step title="Authorize the helpdesk and map one slice">
    Map the agent to one brand, inbox, or channel first, and leave the rest unmapped or covered by a No Reply rule.
  </Step>

  <Step title="Start with internal notes">
    An **Internal Comment** rule lets the agent draft notes your team reads before anything reaches a customer. Review them in the helpdesk and in [Inbox](/en/testing/inbox).
  </Step>

  <Step title="Add the safety rules">
    Add a **No Reply** rule on **Human Agent Assigned Equals True** so the agent never talks over a teammate, and Internal Comment rules for sensitive topics.
  </Step>

  <Step title="Switch to direct replies and widen">
    Turn on **Direct Reply** for the slice, lock fixes in with the [Test Suite](/en/testing/test-suite), then extend routing to more brands, inboxes, or channels. Track results in [Analytics](/en/analytics).
  </Step>
</Steps>

## Common questions

<AccordionGroup>
  <Accordion title="Do I have to migrate tickets or change helpdesk?" icon="right-left">
    No. Fini connects to the helpdesk you use and works on its tickets and conversations in place. Your team keeps replying from the same tool.
  </Accordion>

  <Accordion title="Can my team reply to helpdesk conversations from Fini's Inbox?" icon="inbox">
    No. Helpdesk conversations are read-only mirrors in Inbox, used for tracing, replay, feedback, and Test Suite test cases. Replies happen in the helpdesk. Only widget, Inbox-UI, and native email conversations can be answered from Inbox.
  </Accordion>

  <Accordion title="Will the agent reply on top of a human?" icon="user-shield">
    Not if you add the standard No Reply rule on **Human Agent Assigned Equals True** (and, if you want, **Escalated Conversation Equals True**). Response delays in Reply Settings also give teammates a window to take over first.
  </Accordion>

  <Accordion title="Can I connect more than one helpdesk?" icon="plug">
    Yes. Surfaces aren't mutually exclusive, and the same agent (or different agents) can answer on several integrations at once. See [Composing surfaces](/en/deploy/overview#composing-surfaces).
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Channel overview" icon="cloud-arrow-up" href="/en/deploy/overview">
    Every surface Fini deploys to, and how they compose.
  </Card>

  <Card title="Reply Rules" icon="turn-down-right" href="/en/automations/reply-behavior">
    Decide when the agent replies, leaves an internal note, or stays silent.
  </Card>

  <Card title="Business Rules" icon="zap" href="/en/automations/business-rules">
    Build the widget escalation into your helpdesk.
  </Card>

  <Card title="Inbox" icon="inbox" href="/en/testing/inbox">
    Trace every helpdesk conversation, step by step.
  </Card>
</CardGroup>


## Related topics

- [Fini FAQ](/en/faq.md)
- [Fini on voice](/en/deploy/voice.md)
- [What is Fini](/en/what-is-fini.md)


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