# Agents Source: https://docs.conduit.ai/agent-hub/agents Create and configure customer, internal, and voice agents in Conduit V3. Agents are the configurable AI workers in your workspace. In V3, the Agents area is where you create agents, decide what each agent can access, tune how it responds, and publish changes. Open **Agents** from the **Agents** group in the workspace sidebar. ## Agent Types | Type | Faces | Typical trigger | Credit usage | | - | - | - | - | | **Customer agent** | Contacts and customers | An inbox trigger | Does not consume credits | | **Internal agent** | Your team and internal systems | Manual action, Operator, or an internal channel | Consumes credits | | **Voice agent** | Phone callers | A configured phone number | Depends on voice usage | ### Customer Agents Customer agents are customer-facing chat agents. Creating one also creates an inbox, so inbound conversations for that contact type can be routed to the agent. Use customer agents for support, sales, guest messaging, lead intake, vendor communication, and any other workflow where the AI responds to a contact. ### Internal Agents Internal agents run behind the scenes. They do not own an inbox and they do not respond directly to customers unless you connect them to another workflow. Use internal agents for operations work, data lookup, team-facing Slack workflows, enrichment, triage, and other tasks your team wants to automate out of the customer's view. ### Voice Agents Voice agents are configured separately because they need phone-number routing, voice behavior, transfer rules, and call-specific guardrails. ## Create An Agent Go to **Agents**. Click **Add agent** and choose **Create customer agent**, **Create internal agent**, or **Build with Operator**. Use a short, unique name. Agent and inbox names must be unique in the workspace, and names are limited to 20 characters. Open the agent and fill the Persona, Tools, Skills, Behavior, and Settings tabs that apply to that agent type. Use **Build with Operator** when you want Conduit to help create the agent from a plain-language description of the job it should do. ## Chat Agent Tabs Chat agents use these tabs: | Tab | Use it for | | - | - | | **Activity** | Review recent runs, behavior, and outcomes after the agent is published. | | **Persona** | Set the agent's instructions and guardrails. | | **Tools** | Decide which connection tools, custom tools, MCP tools, and built-in tools this agent can use. | | **Skills** | Assign reusable instructions and tool-aware process guidance to the agent. | | **Behavior** | Configure escalation rules, working hours, language, response delay, auto mark-as-done, structured output, and advanced hooks. | | **Settings** | Configure agent identity and personalization settings. | Internal agents do not show every customer-reply behavior setting because they are not inbox-bound response agents. ## Publish And History Agent edits are staged before they affect production behavior. When the save bar appears, review the changes and publish them intentionally. Agents also keep version history so you can inspect previous published configurations. Use Activity after publishing to confirm that the agent is using the expected instructions, tools, skills, and sources. ## Triggers Customer agents can be attached to an inbox trigger. The agent sidebar shows the current inbox trigger and warns if another agent is already listening to that inbox. Internal agents can be connected to team channels. Slack is available in the internal-agent channel area. Other channel trigger rows may appear disabled until they are enabled for your workspace. Internal agents also support these trigger types: | Trigger | Runs when | | - | - | | **Manual** | A teammate or Operator runs the agent directly. | | **Schedule** | A cron-style interval you configure (for example, every morning, or 14 days before an arrival date). | | **Webhook** | An external system calls Conduit's API to start a run. | | **Workflow** | A workspace event happens — the same events that power Workflow automations elsewhere in Conduit. | A **Workflow trigger** doesn't require you to build a companion workflow. Pick the event the agent should react to — a new reservation, a label being added, a PMS reporting that a unit's cleaning status changed, and so on — and the agent runs automatically whenever that event fires, anywhere in the workspace. Workflows and agents share the same underlying events, so the same trigger that starts a Workflow can start an agent instead. **Workflow or agent?** If something should happen the same way every time, build a Workflow — treat it like code, deterministic and consistent. If the right action depends on judgment, or there are too many conditions to enumerate in advance, build an agent instead. A useful test: if a human would be inconsistent deciding what to do (say, right only half the time), that's a sign the task needs an agent's reasoning, not a fixed set of rules. See [Internal Agent Use Cases](/agent-hub/internal-agent-use-cases) for worked examples, including a cleaning-status agent that reacts to a live PMS webhook today. Treat disabled trigger controls as unavailable until the product surface enables them in your workspace. ## Behavior Settings The Behavior tab controls how a customer-facing chat agent operates after it knows what to say. | Section | What it controls | | - | - | | **Escalation rules** | Which messages should be handed to a human instead of answered automatically. | | **Behavior** | Language and other response behavior settings. | | **Hours** | The agent's working hours. | | **Reply preferences** | Response delay and automatic mark-as-done behavior. | | **Output** | Structured output schema for advanced workflows. | | **Hooks** | Advanced pre-run, post-run, error, and tool lifecycle handlers. | Only edit Hooks when you understand the handler you are configuring. Hooks can call tools, HTTP endpoints, LLM handlers, or agents before and after an agent run or tool call. Calling another agent is a Hooks-specific capability. The Skills and Tools composition described elsewhere on this page stays scoped to the agent that owns it — Hooks are the mechanism for one agent's run to trigger another agent. ## Legacy Agents Older agents may show an **Upgrade** action. Upgrade behavior is migration-only context; new V3 setup should use Skills, Tools, and the current Knowledge Base. If your workspace still has legacy agents, complete the Knowledge Base migration before upgrading all chat agents. # Auto-sync Knowledge Sources Source: https://docs.conduit.ai/agent-hub/auto-sync Keep connected Knowledge sources up to date on a schedule. Auto-sync checks an imported source on a schedule and updates its existing Knowledge when the source changes. It does not create a duplicate. Auto-sync is off until you turn it on. ## Before You Start * You need permission to manage the Knowledge Base. * Files uploaded directly from your computer, such as PDFs or CSVs, do not support auto-sync. Import the file from Google Drive if you want Conduit to check it on a schedule. * If Conduit says a Google Drive file or link must be re-imported, re-import it before turning on auto-sync. ## Supported Sources | Source | What Conduit refreshes | | - | - | | **Notion** | Imported pages and databases | | **Airtable** | Imported tables | | **Google Drive** | Imported files | | **Link** | Imported web pages | | **PMS** | Knowledge from the connected PMS | Notion, Airtable, Google Drive, and PMS sources can sync **Daily**, **Weekly**, **Every 2 weeks**, or **Monthly**. Links can sync **Weekly**, **Every 2 weeks**, or **Monthly**. ## Turn On Auto-sync Click **Knowledge** in the main sidebar, then click **Sources** at the bottom of the Knowledge sidebar. Open the page for the source you want to schedule. Open the three-dot menu for the source, choose **Set auto-sync**, then choose an available schedule. For PMS Knowledge, the schedule applies to the whole integration and refreshes Knowledge for listings already imported into Conduit. It does not discover or import properties added to your PMS later. To add those properties, open the same PMS source menu and choose **Check for new listings**. PMS source menu with Set auto-sync open and Weekly selected Auto-sync checks sources at intervals, not at a fixed time. Choosing a schedule does not sync immediately. To check the source immediately, use its manual sync action, such as **Resync**, **Sync now**, or **Sync knowledge**. Connected source rows show when the next sync is expected. ## Set a Schedule for Multiple Sources On a Notion, Airtable, or Google Drive source page, select sources before using **Set auto-sync** to change only those sources. If you do not select any sources, the schedule applies to every eligible source on the page. ## Check Sync Status Notion, Airtable, and Google Drive source rows show the latest result and the next scheduled sync. Click one of these sources to open its sync history. For PMS Knowledge, open the three-dot menu and choose **Sync history**. Sync history showing an up-to-date source, weekly auto-sync, the next sync, reliability, and recent activity | Status | Meaning | | - | - | | **Updated** | Conduit found changes and updated the Knowledge. | | **Checked, no changes** | The sync succeeded, but the source had not changed. | | **Syncing…** | Conduit is checking the source. | | **Paused** | Auto-sync stopped because the source needs attention. | | **Failed** | The latest check did not complete. | If auto-sync is paused, fix or reconnect the source, then click **Resume & sync now**. ## Turn Off Auto-sync Choose **Off** from the same **Set auto-sync** menu. Your imported Knowledge stays in Conduit. # Internal Agent Use Cases Source: https://docs.conduit.ai/agent-hub/internal-agent-use-cases A gallery of internal agents teams have built, organized by what they automate. Internal agents run behind the scenes on your workspace's own data. They don't own a customer inbox, but they can trigger customer-facing actions through configured workflows, tools, or channels. See [Agents](/agent-hub/agents) for how to create one and how triggers work. This page is a gallery of specific internal agents teams have built or scoped, so you can see the pattern before building your own. Most need workspace-specific configuration (property rules, PMS fields, escalation contacts) to do the right thing out of the box. ## Workflow Or Agent? Not sure which to build? See [Agents → Triggers](/agent-hub/agents#triggers) for the rule of thumb. The cleaning status agent below is the clearest example of it in practice: a workflow can receive a "listing status changed" event, but figuring out *which* reservation to notify — is there a guest checking in within the next two days, and should they be messaged at all — is exactly the kind of judgment call a workflow can't make. An agent can just be told what "check in soon" means and reason about it per property. ## Property Readiness & Housekeeping Reacts to a PMS cleaning-status webhook and messages the guest once their unit flips from dirty to clean, if it's a same-day turnover. Guesty is currently the only PMS wired up to send this signal. Cross-references each property's trash schedule with active reservations and reminds current guests the night before or morning of pickup. The same broadcast pattern also covers ad hoc alerts, like a hurricane warning to guests in an affected region. Dispatches the day's properties to cleaners over SMS/WhatsApp and collects completion confirmations. A dedicated WhatsApp line lets a cleaner text a status update that syncs back into your scheduling system and can trigger a backfill notification. Picks up a "not clean" complaint from the guest-facing agent, contacts the assigned cleaner, and falls back to a backup cleaner list if there's no response in time. ## Revenue & Pricing Scans bookings 7–14 days out and offers guests in a cheaper room tier a discounted upgrade, freeing that room for last-minute bookers. Tested at a 1.55% revenue uplift. Scans guest messages to surface upsell opportunities that aren't configured yet — for example, several guests asking for a pack-n-play that isn't a paid add-on. Adjusts minimum length-of-stay and room pricing against configured floor rules. A competitor price-scraping variant is planned. Scans for properties with sparse upcoming availability and fans out a sub-agent per property to re-target past guests with a rebooking offer. ## Finance & Reporting Pulls the folio, generates a PDF invoice, and sends it automatically — useful on PMS platforms like Cloudbeds that don't do this natively. Sends each homeowner a monthly report and separately flags high-risk owners internally — for example a 30%+ booking drop — for proactive outreach. ## Guest Experience & Maintenance Drafts the host's review *of* the guest based on message sentiment and star rating — the reverse direction of the review response agent below. Reads guest messages for a mentioned honeymoon or anniversary and gives the assigned cleaner a heads-up to leave a small celebratory touch. Surfaces recurring issues across a portfolio that a human would otherwise lose track of — the same AC unit ticketed 8 times — and flags it for replacement. Reviews conversations for threads where someone was told "someone will follow up" and nobody did, and pings Slack with who still needs one. Checks the past week's reviews, thanks the positive ones, and deliberately holds off on negative ones. Reach depends on which PMS exposes a review API. Reasons over the actual conversation to decide whether asking for a review makes sense, instead of a rigid CX-score cutoff. Messages the guest directly to check in when a noise-monitoring integration reports a threshold breach, before it becomes a neighbor complaint. ## Hotel Staffing Sends a one-time WhatsApp nudge 14 days before arrival if a reservation is missing an arrival time. Pulls arrival times and concierge notes into a personalized WhatsApp briefing for each staff member. Generates monthly schedules from configured rules — full-time, flex, overtime — and emails each employee their own version. Checks the PMS each morning and sizes the pastry/amenity order to the current guest count. Fans a single guest request out to multiple vendors at once — chef, transfer, restaurant — and tracks state until every vendor replies. The most complex agent here. ## Operations Intelligence These don't act on a single guest or property — they analyze across the whole portfolio and surface findings for a human to act on. Reviews negative feedback across all conversations for recurring patterns rather than one-off complaints — like guests repeatedly getting the wrong door code, pointing at a Knowledge Base gap. Cross-references negative-sentiment conversations against inventory data — tracing a toiletries complaint back to a specific shampoo brand and flagging it for replacement. Clusters the past week's escalations by topic and emails the workspace admin a summary, alongside relevant automation features they haven't turned on. Reviews other agents' performance — diagnosing why an upsell agent's conversion rate is low, for example — and suggests a specific instruction change. ## Devices & Access These agents use connected smart locks and other device data. See [Devices](/devices/overview) for supported locks, available tools, and device policy behavior. Issues a temporary access code through a smart lock integration when a cleaner or guest reports being locked out, instead of a human relaying a code manually. Finds offline and low-battery devices, checks recent activity, and opens a service-recovery task with the affected device and property already linked. ## Maintenance This gallery is maintained by the Conduit team and will be updated as internal-agent patterns evolve. # Knowledge Base Source: https://docs.conduit.ai/agent-hub/knowledge-base Manage pages, folders, documents, links, and synced sources in the V3 Knowledge Base. The Knowledge Base stores facts your agents can retrieve when they answer. Use it for policies, product details, listing details, FAQs, help articles, and imported source material. Knowledge is for facts. Put tone in Persona, reusable process instructions in Skills, escalation boundaries in Behavior or Guardrails, and action instructions in Tools or Skills. ## Knowledge Structure V3 Knowledge is organized as a folder tree. You can create pages and folders, search, sort, move items, rename items, and delete items from the Knowledge sidebar. | Item | Use it for | | - | - | | **Page** | Hand-written knowledge that your team owns and can edit directly. | | **Folder** | Organizing pages and imported source files by topic, region, listing, product, or team. | | **Source file** | Imported document, spreadsheet, text file, or link content. Source-backed files are usually read-only because they are managed by sync. | ## Composable Knowledge Knowledge pages work best as focused, reusable building blocks. Instead of copying the same policy or detail into several places, create one source page and reference it from related pages or Skills. Use references when: * A page depends on another page for definitions, eligibility rules, pricing, or exceptions. * A Skill needs factual context but should not duplicate the underlying policy. * A scoped page extends a global page for one listing, customer group, product, or operational category. For example, keep a global "Cancellation policy" page as the source of truth, then create listing-specific pages that reference it and only add the local exceptions. A refund Skill can then reference the cancellation policy page instead of repeating every cancellation rule. ## Structured Reference Data Knowledge is not limited to policies and help articles. Any structured reference data an agent or Skill needs to look up can live in the Knowledge Base as a general-purpose data repository, not just a place for policy documents. Common examples: | Example | What it captures | | - | - | | Cleaning or maintenance schedule | Which unit gets cleaned or serviced, and when. | | Cleaner or vendor assignment | Which cleaner or vendor is responsible for which properties or listings. | | Vendor directory | Vendor names, services, and contact details for dispatch or escalation. | These pages work the same way as any other Knowledge page: Skills reference them, they can link to and from other Knowledge pages (see [Composable Knowledge](#composable-knowledge) above), and they stay current either through direct edits or through sync from an external source (see [Access And Scoping](#access-and-scoping) for PMS-sourced sync). Structured tabular data is a natural fit for [Documents](#documents) uploads. Import a schedule or vendor list as a CSV, XLS, or XLSX file instead of re-typing it as a page. ## Add Knowledge Go to **Knowledge** in the workspace sidebar. Click the add button and choose **Page**, **Folder**, **Link**, or **Document**. Put the new page or source in the folder where the agent should expect to find that topic. Imported sources show whether they are syncing, synced, failed, or waiting on quota. ## Documents Document uploads support these file types: * PDF * DOCX * CSV * XLS * XLSX * JSON * MD * TXT Each uploaded file can be up to 25MB. Markdown and text files can be imported as inline content. Other file types are uploaded, processed, and attached to source-backed Knowledge nodes. ## Links Links can be imported in two modes: | Mode | Use it for | | - | - | | **Individual URL** | Import one page. | | **Crawl** | Discover pages from a site, choose the pages to import, and place them in a Knowledge folder. | A crawl can import up to 600 pages at a time. Failed link imports can be retried from the source list. ## Sync Status Source-backed Knowledge can show these statuses: | Status | Meaning | | - | - | | **Syncing** | Conduit is processing or reprocessing the source. | | **Synced** | The source has been indexed and is ready for retrieval. | | **Failed to sync** | Processing failed and should be retried or replaced. | | **Waiting on quota** | Processing is queued until quota is available. | Use the file action menu to sync a source again when the source supports manual sync. To keep connected sources current automatically, see [Auto-sync Knowledge Sources](/agent-hub/auto-sync). ## Details, Versions, And Trash The file info panel shows details and version history. Versions help you inspect how a Knowledge page changed over time. Deleting a page or folder from the Knowledge tree moves it through the Knowledge deletion flow so it can be restored from Trash while it is retained. Removing a source from the Sources view is different: it removes the source and its generated nodes. Treat source removal as an irreversible cleanup action. ## Access And Scoping Some workspaces can scope Knowledge to listings, entities, or other business objects. Use scoping when a fact should only apply to a specific property, customer group, product, or operational category. Source-backed content from PMS or other data-source integrations is managed from its source page when that integration supports Knowledge sync. It may be read-only because the integration owns the source of truth. If you need to override or supplement synced content, create a separate manual page with the correction instead of editing the synced source directly. Users need Knowledge management permission to create, move, sync, delete, or permanently remove Knowledge. ## Common Mistakes * Do not put tone instructions in Knowledge. Put tone in the agent Persona or a Skill. * Do not put tool invocation rules only in Knowledge. Put them in Skills or the relevant Tool description. * Do not put escalation thresholds only in a factual page. Put hard boundaries in Guardrails or Behavior. * Do not edit source-backed PMS content directly when the source will overwrite it on the next sync. * Do not duplicate the same policy at global and scoped levels unless the scoped version intentionally overrides the global one. # Marketplace Source: https://docs.conduit.ai/agent-hub/marketplace Install apps, agent templates, skill templates, and workflow templates from the V3 Marketplace. Marketplace is where you add reusable building blocks to a workspace. Open **Agents > Marketplace** from the workspace sidebar. ## Marketplace Areas | Area | Use it for | | - | - | | **Apps** | Install integrations and toolkits. | | **Agents** | Start from an agent template. | | **Skills** | Install reusable Skill templates. | | **Workflows** | Install workflow templates. | | **Manage** | Review installed marketplace items when available. | ## Apps Apps connect Conduit to external systems and can provide data sources, channel connections, or tools. Use Apps when an agent needs live access to another system or when your workspace needs a new integration. If an app is not available, use the request flow so the Conduit team can evaluate it. ## Agent Templates Agent templates give you a starting point for common roles. Installing a template creates or configures an agent with starter behavior that you should review before publishing. After installing a template: 1. Open the new agent in **Agents**. 2. Review Persona, Skills, Tools, Behavior, and Settings. 3. Test in Sandbox. 4. Publish only after the behavior matches your workspace. ## Skill Templates Skill templates install reusable instructions into your workspace Skills area. New workspace Skills are enabled for all agents by default, so review agent assignments after installing a template. Use Skill templates as a starting point. Edit the details so the Skill matches your policies, connected tools, and customer language. ## Workflow Templates Workflow templates install repeatable automations. Workflows can also become tool-like capabilities for agents when they are configured for AI triggering. After installing a workflow template, review the trigger, steps, permissions, and any agent-facing description before relying on it in a Skill or Tool setup. ## After Installing Marketplace items are starting points. After installing an app, agent, Skill, or workflow, review the configuration in the destination surface before relying on it in production. * Apps and toolkits should be reviewed in **Settings > Connections** and agent **Tools**. * Agent templates should be reviewed in **Agents**. * Skill templates should be reviewed in **Agents > Skills** and on each relevant agent. * Workflow templates should be reviewed in **Agents > Workflows**. # Operator Source: https://docs.conduit.ai/agent-hub/operator Use Operator to inspect, edit, and reason about your Conduit workspace. Operator is Conduit's workspace assistant. It helps you create agents, write Skills, inspect data, understand escalations, and manage configuration from the current workspace context. Open **Operator** from the main workspace sidebar. You can also open the Operator sidebar from V3 build pages. ## Operator Versus Agents | Surface | Use it for | | - | - | | **Operator** | Helping your team configure, inspect, and operate the workspace. | | **Customer agent** | Responding to contacts through an inbox. | | **Internal agent** | Running internal work for your team or systems. | | **Voice agent** | Handling phone calls through voice configuration. | Operator is not the same thing as a deployed customer-facing agent. It can help you build and debug agents, but a specific agent's behavior is still controlled by that agent's Persona, Skills, Tools, Behavior, and Settings. ## Full-Page Operator Use the full-page Operator when you want a focused workspace assistant session. Operator can keep thread history so you can return to previous work. Common tasks: * Create a new chat agent from a plain-language description * Draft or revise Skills * Inspect Knowledge gaps or conflicting content * Help reason about escalations * Generate reports or exports when your workspace has the required access * Navigate you toward the right configuration page ## Operator Sidebar The Operator sidebar appears alongside many build surfaces. Use it when you want help while editing the page you are already on. Examples: * Ask Operator to turn a rough policy into a Skill while you are on the Skills page * Ask what an agent needs before you publish it * Ask for a Knowledge article draft while reviewing a source * Ask how a tool should be described before enabling it for an agent ## Operator Settings Open Operator settings from the Operator header. | Setting area | Use it for | | - | - | | **Settings** | Choose model behavior, reasoning level when supported, and Operator instructions. | | **Skills** | Give Operator reusable instructions for how it should help your team. | | **Tools** | Control which connection tools, custom tools, MCP tools, and built-in tools Operator can use. | Operator tool access is separate from agent tool access. If Operator needs to inspect a system, give Operator the right tool. If a deployed agent needs to take an action, give that agent the right tool. ## Good Operator Requests Be explicit about the workspace artifact you want changed or inspected. | Instead of | Ask | | - | - | | "Fix the agent" | "Review the Guest Support agent's escalation behavior and suggest which Skill should change." | | "Add more knowledge" | "Draft a Knowledge page for late checkout policy and scope it to guest support." | | "Make a tool" | "Draft a custom tool description and parameters for checking appointment availability." | ## Safety Operator can help configure your workspace, but you should still review staged changes before publishing agents, enabling tools, deleting sources, or changing automation behavior. # Road to Autopilot Source: https://docs.conduit.ai/agent-hub/road-to-autopilot Use the Connect, Teach, Test, and Deploy loop to move V3 agents from copilot to autopilot. Building an AI agent is like onboarding a new teammate. You connect the systems it needs, teach it how your business works, test the result, and then deploy it with the right level of oversight. In V3, this happens across a few focused surfaces: * **Agents** define who is responding and how that agent is deployed. * **Knowledge** stores facts the agent can retrieve. * **Skills** store reusable process and tool-use instructions. * **Tools** let the agent take actions and access live systems. * **Operator** helps your team configure and inspect the workspace. * **Sandbox** lets you test a specific agent before customers see the result. ## The Loop 1. **Connect** - Add channels, integrations, Knowledge sources, and tools. 2. **Teach** - Write Persona, Skills, Guardrails, Knowledge, and behavior settings. 3. **Test** - Validate the agent in Sandbox, regenerate proposed replies, and inspect Activity. 4. **Deploy** - Publish the agent, choose triggers, and tune automation controls. Repeat the loop whenever you add a new channel, change a policy, add a tool, or see a repeated escalation. ## From Copilot To Autopilot Copilot means the AI drafts replies for human approval. Autopilot means the AI can send confident replies automatically and escalate the rest. Moving toward autopilot is not a single switch. It is a sequence of narrow expansions: * Add the facts the agent needs. * Add the Skills that explain how to handle recurring situations. * Give the agent only the tools it needs. * Test common and edge-case messages. * Publish changes and monitor real activity. Add sources, integrations, and tools. Write Knowledge, Skills, Persona, Guardrails, and Behavior. Validate behavior before publishing. Publish and control automation safely. # Connect Source: https://docs.conduit.ai/agent-hub/road-to-autopilot/connect Connect channels, integrations, Knowledge sources, and tools before teaching a V3 agent. ## Overview Before an agent can work reliably, it needs the right channels, facts, and capabilities. Connect these first so the rest of the setup is grounded in real workspace data. ## Connect Channels Channels bring customer conversations into Conduit. Start with the channels your team already uses: * Email * WhatsApp * Phone and SMS * Chat widget * Slack for internal workflows Use the setup guides in **Connect Channels** for channel-specific instructions. ## Connect Business Systems Business systems give Conduit structured data and sometimes tools. Use **Settings > Connections** or **Agents > Marketplace** to connect PMS, CRM, helpdesk, data-source, and app integrations. Connected systems can provide: * Structured contact or reservation context * Data-source Knowledge imports * Connection tools the agent can call * Workflow trigger data ## Tools Tools let an agent take action or retrieve live data. Configure workspace defaults in **Agents > Tools**, then override access from an individual agent's **Tools** tab. Use tools for actions such as booking an appointment, looking up availability, creating an internal record, calling an integration, or running an AI-triggered workflow. ## Knowledge Sources Sources become retrievable Knowledge for agents. Go to **Agents > Knowledge**. Click the add button and choose **Link** or **Document**. Put the source in the folder where the topic belongs. Review the source status until it is synced or fix any failed imports. Documents and links are imported from the V3 Knowledge Base add menu. Connected data-source imports are managed from their integration source pages when Knowledge sync is available. See [Knowledge Base](/agent-hub/knowledge-base) for source limits, sync states, versions, and deletion behavior. ## Connect Checklist * Channels are receiving conversations in Conduit. * Business systems are connected in Settings or Marketplace. * Knowledge sources are imported and synced. * Required tools are enabled at the workspace level. * Individual agents have only the tool access they need. # Deploy Source: https://docs.conduit.ai/agent-hub/road-to-autopilot/deploy Publish V3 agents, configure triggers, and use safety controls before expanding automation. Deployment is when a tested agent is allowed to operate in a real workflow. In V3, deployment means publishing the agent configuration and confirming its triggers, tools, and behavior controls. ## Publish Changes Agent edits are staged before they affect production behavior. When the save bar appears, review the change and publish intentionally. Before publishing: * Test the agent in Sandbox. * Confirm the right Skills are assigned. * Confirm tool access is narrow and correct. * Confirm Behavior settings match the automation level you want. * Confirm escalation rules are in place. ## Triggers Customer agents deploy through an inbox trigger. Open the agent sidebar and confirm which inbox the agent listens to. Internal agents deploy through internal triggers such as Slack channels when available for your workspace. Disabled trigger rows should not be treated as active automation. ## Automation Levels Teams usually progress through these operating modes: | Mode | What happens | | - | - | | **Off** | The agent is not active for the workflow. | | **Copilot** | The agent drafts or assists, and a human approves the output. | | **Autopilot** | The agent sends confident replies automatically and escalates the rest. | ## Safety Controls Use these controls to expand automation gradually: * **Escalation rules** for cases that must go to a human * **Conversation tags** for categorization and urgent-message handling * **Working hours** for when the agent should operate * **Response delay** so humans have time to review before auto-send * **Auto mark-as-done** for completed conversations * **Tool access** scoped to the agent's actual job * **Activity review** after publishing By repeating the Connect > Teach > Test > Deploy loop, you can expand what the agent handles without losing oversight. # Conversation Tags Source: https://docs.conduit.ai/agent-hub/road-to-autopilot/deploy/conversation-tags Create and manage conversation tags to categorize, prioritize, and escalate customer messages automatically. Conversation tags allow teams to categorize and prioritize customer messages, ensuring that important issues are identified and addressed quickly. Teams use tags for situations like "Billing Inquiry," "Technical Issue," "Refund Request," and "Escalation Needed." By tagging these messages, teams can easily filter, organize, and prioritize conversations based on the nature of the customer message. ## Workflow Tagged messages receive team notifications for critical customer concerns. ### Tagging Messages * **Automatically Tagged Messages:** The AI tags messages automatically when relevant * **Manually Tagged Messages:** Team members can apply tags directly in the conversation sidebar for immediate categorization ## Set Up Conversation tags are configured globally at the workspace level, not per-agent. All agents in your workspace share the same set of tags. ### Configuration Steps 1. **Go to Settings:** Navigate to Settings > Conversation Tags to view default tags including "Payment Issue," "Product Inquiry," and "Technical Issue" 2. **Create a New Tag:** * Click the "Add tag" button * Enter a short, descriptive Tag Name (example: "Maintenance Issue") * Provide a Tag Description explaining usage (see [Writing Tag Descriptions](/agent-hub/what-goes-where/tags) for a guide on writing effective descriptions) 3. **Set Escalation Levels:** Choose escalation levels where "Urgent" tags block AI responses during autopilot and escalate to human team members # Teach Source: https://docs.conduit.ai/agent-hub/road-to-autopilot/teach Teach V3 agents with Knowledge, Skills, Persona, Guardrails, Tools, and Behavior settings. Teaching an agent means putting each instruction in the right place. V3 separates facts, reusable process guidance, tone, restrictions, actions, and deployment behavior so changes are easier to reason about. ## Teaching Surfaces | Surface | Put this there | | - | - | | **Knowledge** | Facts the agent may need to retrieve. | | **Skills** | Reusable process instructions, tool-use instructions, and conditional playbooks. | | **Persona** | The agent's role, tone, and default communication style. | | **Guardrails** | Hard boundaries the agent should not cross. | | **Tools** | Executable capabilities and model-facing descriptions of when to use them. | | **Behavior** | Escalation rules, working hours, delay, auto mark-as-done, structured output, and hooks. | ## How to Teach Use this flow when adding or changing agent behavior: 1. Add or update factual material in **Agents > Knowledge**. 2. Add repeatable process guidance in **Agents > Skills**. 3. Assign the Skill to the right agent from that agent's **Skills** tab. 4. Update the agent's **Persona** if the overall role or tone changed. 5. Update **Tools** if the agent needs an action or live lookup. 6. Update **Behavior** if the change affects escalation, timing, language, or automation. 7. Test before publishing. Keep Knowledge and Skills composable. Knowledge pages can reference related Knowledge pages so facts stay focused and reusable. Skills can reference Knowledge pages for facts and other Skills for reusable sub-processes, so one playbook can build on another without copying the same instructions into multiple places. ## Teaching From Real Conversations Repeated escalations are the best signal that something is missing. When you inspect a failed or escalated case, decide what kind of missing input caused it: * Missing fact: add Knowledge. * Missing process: add or edit a Skill. * Wrong tool call: update tool access or the tool description. * Wrong tone: update Persona or a tone Skill. * Unsafe behavior: add a Guardrail or Behavior rule. * Bad deployment timing: update working hours, delay, or triggers. ## Maintenance Keep Skills and Knowledge narrow. One page or Skill should cover one clear topic. If a policy, tool, or workflow changes, update the related Skill and then run Sandbox tests for common and edge-case messages. Add facts, folders, documents, links, and synced sources. Write reusable process and tool-use instructions. # Test Source: https://docs.conduit.ai/agent-hub/road-to-autopilot/test Verify V3 agent behavior with Sandbox, regenerate, Activity, and source/tool inspection. After changing Knowledge, Skills, Tools, Persona, or Behavior, test the agent before publishing or expanding automation. ## Testing Methods | Method | Use it for | | - | - | | **Sandbox** | Simulate a full conversation with a selected agent and realistic context. | | **Regenerate reply** | Re-run one unsent proposed reply after making a change. | | **Activity** | Inspect real published runs, sources, tool calls, and outcomes. | | **Operator** | Ask for help diagnosing a behavior or choosing the right configuration change. | ## Sandbox Use Sandbox when you want repeatable testing before the agent responds to a real contact. 1. Open **Operator** and switch to **Sandbox** when available. 2. Select the agent to test. 3. Choose the contact, listing, reservation, or custom field context available in your workspace. 4. Send realistic messages, including edge cases and negative examples. 5. Inspect the response, sources, and tool calls. ## Regenerate Reply For an unsent proposed reply, regenerate after updating the agent. This is useful for checking one real conversation quickly. ## Activity Use Activity after publishing. Activity is where you check whether the agent used the expected configuration in real runs. ## What To Inspect * Did the answer use the right Knowledge source? * Did the agent apply the right Skill? * Did it call the right tool? * Did the tool return the expected result? * Did the agent escalate when it should? * Did the tone match Persona? For a deeper testing workflow, see [Testing Agents](/agent-hub/testing-agents). # Skills Source: https://docs.conduit.ai/agent-hub/skills Create reusable instructions that help agents handle specific situations. Skills are reusable instructions that tell agents how to handle a specific situation. Use `@` mentions to connect a Skill to tools, workflows, other Skills, listing groups, listings, and reservation statuses. Open **Agents** from the main sidebar, then select **Skills** from the Agents sidebar. A Skill showing its description, assigned agents, and troubleshooting instructions ## When to Use Skills Use Skills for process knowledge that is more than a static fact: * How to handle a refund request * How to triage an urgent issue * How to use a workflow or custom tool * How to format a specific kind of answer * How to apply a brand or team operating standard Use [Knowledge](/agent-hub/knowledge-base) for facts the agent needs to retrieve. Use Persona for the agent's overall role and tone. Use [Tools](/agent-hub/tools) for executable actions and the model-facing description of when each action should be used. ## Create a Skill Open **Agents** from the main sidebar, then select **Skills** from the Agents sidebar. Click the add button and choose **With Skill Creator** or **Write Manually**. Give the Skill a clear title. In the description, explain what the Skill does and when an agent should load it. Write the scenario, conditions, steps, tool usage, and expected output. Click **Save**. New Skills are enabled and assigned to all current agents by default. Disable the Skill or change its agent assignments if needed. ## Skill Editor The Skill editor supports formatted instructions and `@` mentions. | Feature | Use it for | | - | - | | **Title** | Give teammates and agents a clear name for the Skill. | | **Description** | Explain what the Skill does and when to load it. Agents use this description before they read the instructions. | | **Formatting** | Organize longer instructions with headings, lists, links, and other rich-text formatting. | | **`@` mentions** | Reference tools, workflows, Skills, listing groups, listings, and reservation statuses. | | **Info panel and versions** | Review details, Activity, and previous versions. | Type `@` in the instruction editor to open the mention menu. The Skill mention menu showing tools, Skills, listing groups, listings, and reservation statuses Mentioning a tool tells the agent which tool the instruction refers to. It does not grant access to that tool. Enable the tool from the agent's **Tools** tab first. ## Keep Facts in Knowledge Skills should describe a process, not repeat facts that already live in Knowledge. Agents can retrieve relevant Knowledge while following a Skill. * Keep facts, policies, listing details, and other source-backed information in Knowledge. * Use an `@` mention for another Skill when the current playbook depends on a reusable process, such as escalation handling, refund handling, or appointment rescheduling. * Keep the current Skill focused on the scenario trigger, decision steps, and expected agent behavior. For example, a "VIP guest complaint" Skill can mention the "Escalate urgent property issues" Skill for safety-related complaints, while VIP benefits and property details remain in Knowledge. ## Per-Agent Skills Open an agent and go to **Skills** to control which workspace Skills that agent can use. New, enabled Skills are assigned to all current agents by default. If a Skill should only apply to one agent, remove it from the other agents after creating it. Disabling a Skill prevents assigned agents from using it. Deleting a Skill removes it from every agent. ## Review Skill Activity Use the Activity view to see when agents report using a Skill and review what role it played in each run. 1. Open **Agents** from the main sidebar, then select **Skills** from the Agents sidebar. 2. Select a Skill. 3. Click **Activity** next to **Instructions**. 4. Choose the last 7, 30, or 90 days. The Skill information panel also includes a 30-day summary. Open the panel from the top-right corner of the Skill, select **Activity**, then click **Open full view** to see the run log. Skill Activity showing runs, agents using the Skill, average runs per day, and the daily activity chart The summary shows: * **Runs**: Agent runs attributed to the Skill during the selected period. * **Agents using it**: Active agents with at least one attributed run during the selected period. * **Average per day**: The average number of attributed runs each day. * **Runs per day**: A daily view of attributed runs. Hover over a bar to see the exact count. An **attributed** run means the agent reported using the Skill. Attribution alone does not prove that the Skill changed the response. Click **Explain** to ask Operator to assess its influence. An **in-context** run means the Skill was available from an earlier run in the session, but the agent did not report using it in this run. The summary and chart count attributed runs only; the run log includes both types. ### Filter Activity Select an agent under **Agents running this Skill** to filter the run log. Use the disposition menu above the run log to show runs with a specific result. ### Read the Run Log The run log shows when the run happened, which agent handled it, its related conversation when available, its disposition, and how long the run took. * When a run is linked to an Inbox conversation, click the conversation to open it in a new tab. * Hover over a disposition dot to see what it means. * Click **Explain** on an attributed run to ask Operator how the Skill affected the response. * Use the **Open in inbox** icon from an explanation to review the full conversation when one is available. * Use **Continue in Operator** when you want to ask follow-up questions about the explanation. Operator may describe the Skill's influence as: | Result | Meaning | | - | - | | **Shaped the reply** | The Skill directly influenced what the agent said or decided. | | **Incidental** | The Skill was present, but was not important to the response. | | **Not evident** | Operator could not find clear evidence that the Skill was used. | ### Understand Dispositions A disposition describes what happened at the end of the agent run. | Disposition | Meaning | | - | - | | **Resolved** | The agent fully answered the contact. No follow-up is expected. | | **Unresolved** | The agent replied, but the conversation is still open. | | **Escalated** | No reply was sent. A teammate needs to review the conversation first. | | **Escalation + Answer** | The agent sent a safe reply and asked a teammate to follow up. | | **No op** | No reply was sent because the latest message did not need one. | | **Proactive** | The agent sent a scheduled message without waiting for a new contact message. | ## Examples ### Reusable Brand Voice Use a Skill when the agent needs a repeatable style for a specific situation: > When responding to a VIP customer, acknowledge their status, keep the reply concise, and offer a concrete next step. Do not over-apologize. ### Escalation Process Use a Skill when the agent needs a conditional playbook: > If the customer reports property damage, ask for a photo, collect the reservation ID if available, and escalate to the operations team. Do not promise reimbursement. ### Tool-Use Instruction Use a Skill when the agent needs to call a workflow or custom tool: > If a guest asks to reschedule an appointment, check availability with the appointment tool before offering times. Only confirm after the tool returns an available slot. ## Maintenance Review Skills when escalations repeat, when a tool changes, or when a policy changes. A good Skill is specific enough to trigger in the right scenario and narrow enough that it does not compete with unrelated Skills. # Testing Agents Source: https://docs.conduit.ai/agent-hub/testing-agents Validate V3 agent behavior with Sandbox, Activity, sources, and tool-call inspection. Test agents before you deploy or after you make meaningful changes to Knowledge, Skills, Tools, Persona, or Behavior. ## Testing Surfaces | Surface | Use it for | | - | - | | **Sandbox** | Simulate a conversation with a selected agent and realistic context. | | **Activity** | Inspect actual runs after an agent is published. | | **Inbox regenerate** | Re-run an unsent proposed reply after updating configuration. | | **Operator** | Ask for help diagnosing why an agent responded a certain way. | ## Use Sandbox Open **Operator**, switch to **Sandbox** when available, then choose the agent you want to test. Depending on your workspace, Sandbox settings can include: * Chat or voice agent selection * Impersonated contact * Listing or entity context * Reservation context * Custom field values Send messages that match real customer language. Include edge cases, missing information, negative examples, and messages that should trigger escalation. ## Inspect Sources And Tools When a response includes supporting artifacts, review them: * Sources show which Knowledge was retrieved. * Tool calls show which action the agent attempted. * Tool results show whether the action succeeded, failed, or returned unexpected data. Use this inspection to decide whether the fix belongs in Knowledge, a Skill, a Tool description, Persona, or Behavior. ## Use Activity Activity is the best place to inspect real published behavior. Use it after a publish to confirm that the agent is operating with the expected configuration. Use Activity when: * A customer-facing run behaved unexpectedly * You need to compare the agent's current behavior with previous runs * You want to confirm the agent used the right source or tool * You need evidence before changing a Skill or Tool ## Regenerate From The Inbox For an unsent proposed reply, regenerate after updating configuration to check whether the proposed answer improves. Regenerate is useful for one conversation. Sandbox is better for repeated testing and edge cases. Activity is better for real published runs. ## Test Checklist * The agent answers common questions accurately. * The agent refuses or escalates when it should. * The agent uses the right Knowledge source. * The agent calls tools only when the required information is present. * The agent handles missing tool results without inventing an outcome. * The reply tone matches Persona and relevant Skills. * The behavior still works for negative examples. # Tools Source: https://docs.conduit.ai/agent-hub/tools Configure workspace tool defaults, per-agent tool access, MCP tools, and custom code tools. Tools let agents take actions and retrieve live data. In V3, tools can come from integrations, MCP connections, custom Python or JavaScript code, built-in Conduit capabilities, and AI-triggered workflows. Open **Agents** from the main sidebar, then select **Tools** from the Agents sidebar to manage workspace defaults. Open an individual agent and select **Tools** to override access for that agent. ## Workspace Tool Defaults The workspace Tools page has two tabs: | Tab | Use it for | | - | - | | **Tools** | Review connected apps that expose tools, create custom tools, and enable custom tools by default across the workspace. | | **Runs** | Inspect recent tool runs and results. | Custom tool workspace defaults are not the final word for every agent. Individual agents can override tool access in their own Tools tab. ## Tool Sources | Source | Where it appears | Notes | | - | - | - | | **Connection tools** | Workspace Tools and per-agent Tools | Installed through connected apps and integrations, including PMS wrapper tools that let an agent call PMS actions directly. The workspace page lists connections that expose tools; grant or remove access from an individual agent's Tools tab. | | **Custom tools** | Workspace Tools and per-agent Tools | Written in Python or JavaScript inside Conduit. | | **MCP tools** | Per-agent Tools and Operator Tools | Add MCP from the tool settings when the workspace needs external tool servers. | | **Built-in tools** | Per-agent Tools | Conduit-managed tools for native product capabilities, such as scheduling a follow-up, sleeping and waking the agent, and querying the data lake. See [Built-in Tools](#built-in-tools) below. | | **Workflow tools** | Tool pickers and Skills | Active AI-triggered workflows can be exposed as callable tools. | PMS connections can expose two different things, and enabling one does not enable the other: * **Knowledge sync** imports PMS data into Knowledge so agents can retrieve it. See [Knowledge Base](/agent-hub/knowledge-base). * **Connection tools** wrap PMS APIs so an agent can call PMS actions directly during a conversation, instead of only reading synced data. The workspace Tools page currently shows connections that expose tools and custom tools. Built-in tools are configured from the individual agent's Tools tab when available for that agent. ## Connection Access Every connection has a scope, set when it's created and changeable later from **Settings > Connections**. | Scope | Who can use it | Typical case | | - | - | - | | **Workspace** | Everyone in the workspace | Your PMS, your shared inbox, anything the whole team relies on | | **Personal** | The person who created it, plus anyone they share it with | An account tied to one person, like a personal Google Drive | Personal connections are not shared automatically, because they often carry credentials to someone's own accounts. The owner shares them explicitly from **Settings > Connections**, either with individual teammates or with the whole workspace. ### What You See On An Agent's Tools Tab Every connection in the workspace is listed, including personal ones you don't have access to. Those appear greyed out with the owner's name. | Your access to the connection | Connection is listed | Tool names visible | Open the tool catalog | Turn tools on for the agent | | - | - | - | - | - | | You own it | Yes | Yes | Yes | Yes | | Shared with you | Yes | Yes | Yes | Yes | | Not shared with you | Yes, greyed out | Yes, if the agent already uses it | No | No | | Workspace scope | Yes | Yes | Yes | Yes | Connections you can't access are shown rather than hidden on purpose. If an agent is already using someone's personal connection, you can see that it's there and which of its tools are on, so the agent's behaviour is explainable even when the connection isn't yours. Its description, server address and configuration stay private. To get access, ask the owner to share the connection with you, or to move it to workspace scope. ### Attaching A Personal Connection To An Agent Agents are shared. Anyone in the workspace who uses an agent, and any guest talking to a customer-facing one, runs its tools through whatever connection is attached. That means attaching a personal connection to an agent runs it on the owner's credentials for everyone who uses that agent. Someone who was given access to one person's connection can attach it, and from then on the whole workspace reaches it through that agent. Before attaching a personal connection to an agent, check that you're comfortable with everyone who uses that agent acting through the owner's account. For anything the team relies on day to day, workspace scope is usually the better fit. ### Removing Access Removing someone's access to a personal connection stops them from opening its tool catalog and from attaching it to anything new. It does **not** remove the connection from agents it's already attached to. Those agents keep working through the owner's credentials. To stop that, open the agent's Tools tab and turn the connection off there. ## Per-Agent Overrides Open **Agents**, select an agent, then open **Tools**. Use the agent Tools tab to: * Enable or disable connection tools for that agent * Enable or disable custom tools for that agent * Add MCP access * Review built-in tools available to that agent * Search large tool lists Keep tool access narrow. Agents perform better when they have the tools needed for their job and not every possible action in the workspace. ## Built-in Tools Built-in tools are Conduit-managed capabilities that ship with the product, rather than something a workspace installs or writes. They're reviewed and enabled from an individual agent's Tools tab when available for that agent. | Tool | What it does | | - | - | | **Follow up** | Schedules a future check-in on a conversation instead of requiring the guest to reply right away. The agent can come back to the conversation on its own schedule rather than blocking on an immediate reply. | | **Sleep and wake** | Pauses the agent's own execution and resumes it later, so it can wait on an external event or a time delay without blocking. | | **Data lake query** | Queries the underlying data lake directly, for big-data-style, retroactive analysis across conversations and other workspace data rather than a single live per-conversation lookup. | With the Devices add-on, agents can also inspect and control connected locks, thermostats, sensors, and cameras. This includes access-code management, device telemetry and history, lock and thermostat control, noise thresholds, and fleet health. See [Devices](/devices/overview) for the complete tool reference and device policy behavior. ## Custom Tools Custom tools extend what agents can do with code. Open **Agents > Tools**, then create a new custom tool. ### Tool Fields | Field | Requirement | | - | - | | **Name** | Lowercase letters, numbers, and hyphens only. No spaces, no leading or trailing hyphen, no consecutive hyphens, and no conflict with internal tool names. | | **Description** | Tell the AI when and why to use the tool. This is model-facing instruction, not just a human label. | | **Language** | Python or JavaScript. | | **Parameters** | Add string, number, boolean, or enum inputs. Mark required fields and describe each parameter clearly. | | **Execution message** | The message shown while the tool runs. | | **Code** | Implement the tool logic in the editor. | ### Test A Custom Tool Use **Test** before saving or publishing tool changes. If the tool has parameters, Conduit asks for test values. The test panel shows JSON output, errors, logs, and runtime so you can verify the behavior before any agent depends on the tool. The editor warns before leaving with unsaved changes. Use Save intentionally after the test output matches the contract you want the agent to rely on. ## Tool Descriptions Tool descriptions are part of the agent instruction surface. Good descriptions answer: * What action does the tool perform? * When should the agent use it? * What information must the agent collect first? * What should the agent do if the tool fails? * What should the agent say after the tool succeeds? ## Operator Tool Access Operator has its own tool settings. Giving an agent access to a tool does not automatically give Operator the same access, and changing Operator's tools does not automatically change a customer-facing agent. Open **Operator > Settings > Tools** when you want Operator to use a tool while helping configure the workspace. # What Goes Where Source: https://docs.conduit.ai/agent-hub/what-goes-where Understand where to put facts, process instructions, tone, guardrails, tools, and deployment behavior in V3. V3 separates agent configuration into focused layers. Use the right layer so the agent can retrieve facts, follow processes, use tools, and stay inside safety boundaries without conflicting instructions. ## Layers | Layer | What it stores | When the AI reads it | Why it helps | | - | - | - | - | | **Knowledge** | Factual details about policies, products, listings, customers, or operations | Retrieved when relevant to the question | Gives the AI facts to work with | | **Skills** | Conditional process instructions and tool-use guidance | Applied when the scenario matches | Turns repeated SOPs into reusable behavior | | **Persona** | Role, tone, formatting, and voice | Applied across replies for that agent | Keeps the agent consistent and on brand | | **Guardrails** | Hard boundaries the agent must not cross | Checked against every response | Prevents risky or unauthorized output | | **Tools** | Actions and live data lookups | Called when the agent has permission and enough context | Lets the agent do work, not just answer | | **Behavior** | Escalation, hours, delays, structured output, and hooks | Applied at run time | Controls deployment and safety mechanics | ## Quick Links Decide what belongs in retrievable factual content. Decide what belongs in reusable process instructions. Decide what belongs in tone and formatting guidance. Decide what belongs in hard safety boundaries. # Guardrails Source: https://docs.conduit.ai/agent-hub/what-goes-where/guardrails Set hard safety boundaries that prevent your AI from crossing privacy, legal, or escalation limits. Guardrails function as persistent safety mechanisms that establish boundaries for AI responses. They define what the artificial intelligence **must never say or do**, regardless of user requests, Knowledge, Skills, or tool results. Before transmission, all messages traverse through guardrails. When activated, guardrails either block or escalate communications—without exception. ## What Goes in Guardrails? * Privacy regulations (example: withhold sensitive account details absent confirmed identity) * Legal constraints (example: refrain from price comparisons) * Escalation thresholds (example: avoid promising refunds exceeding 30% without authorization) * Safety procedures (example: never share customer identity with third parties) ## Where to Find Guardrails Open **Agents**, select an agent, then open **Persona**. Put hard response restrictions in the guardrails area. ## Good Guardrail Examples * "Never reveal sensitive account details to anyone without verified identity" * "Never promise compensation above 30% without human approval" Effective guardrails employ absolute language—applying universally rather than conditionally. ## What Not to Include * Product or service information - use **Knowledge** * Conditional directives - use **Skills** * Communication style - use **Style** ## Key Difference: Skill vs. Guardrail **Skill:** Activates when a scenario matches, such as "if the customer asks for account details, explain that identity verification is required." **Guardrail:** Evaluates across replies and prevents sensitive data sharing unconditionally. # Knowledge Source: https://docs.conduit.ai/agent-hub/what-goes-where/knowledge Use Knowledge for factual information that agents should retrieve when needed. Knowledge is the factual layer of your agent system. It stores information the agent may need to retrieve, such as policies, product details, listing details, FAQs, pricing notes, service descriptions, or support articles. For setup steps, see [Knowledge Base](/agent-hub/knowledge-base). ## What Goes In Knowledge * Facts the agent can safely repeat to customers * Policies and exceptions * Product, listing, or service details * Public help content * Internal reference details the agent may need to reason over * Scoped facts for a specific listing, entity, customer group, or category ## What Does Not Belong In Knowledge * Tone and writing style * Conditional process instructions * Tool invocation rules * Automation timing * Escalation thresholds * Hard prohibitions Put those in Persona, Skills, Tools, Behavior, or Guardrails instead. ## Writing Principles 1. **Focused:** One page or section should cover one topic. 2. **Complete:** Include edge cases, exceptions, and related details the agent needs. 3. **Scoped:** Put facts at the level where they apply. Do not make a listing-specific rule global. 4. **Composable:** Reference related Knowledge pages instead of duplicating the same fact in multiple places. 5. **Customer-safe:** Do not include internal-only instructions unless the agent is allowed to use that information. 6. **Current:** Update or remove stale source-backed content when policies change. ## Good Knowledge Examples ### Cancellation Policy **Good:** "Customers can cancel up to 24 hours before the appointment for a full refund. If they cancel within 24 hours, the fee is non-refundable unless the team approves an exception." **Bad:** "If the customer asks to cancel, check the calendar and notify ops." This is process and tool guidance, so it belongs in a Skill or Tool description. ### Wi-Fi Details **Good:** "The North Beach listing uses network `NorthBeachGuest` and password `oceanview2026`. The router is in the hallway closet." **Bad:** "Be friendly when giving Wi-Fi details." This belongs in Persona or a tone Skill. ## V3 Location Open **Agents > Knowledge** to manage pages, folders, documents, links, data-source imports, versions, and Trash. # Skills, formerly Procedures Source: https://docs.conduit.ai/agent-hub/what-goes-where/procedures Use V3 Skills for reusable process instructions, conditional playbooks, and tool-use guidance. V3 Skills replace the older Procedures model. Use Skills when an agent needs conditional process guidance, a repeatable playbook, or instructions for using tools and workflows. For setup steps, see [Skills](/agent-hub/skills). ## What Goes In Skills * If-then instructions for customer scenarios * Step-by-step SOPs * Escalation processes that depend on context * Tool-use instructions * Workflow instructions * Reusable brand or team practices for a specific scenario ## Skill Patterns | Pattern | Use it for | | - | - | | **Single condition** | One clear condition and one response path. | | **Decision tree** | Multiple branches based on customer details or tool results. | | **Workflow-style process** | Step-by-step troubleshooting, intake, or handoff. | | **Tool-aware instruction** | When the agent should call a tool, what data it needs first, and what to do with the result. | | **Response template** | Specific wording that should be reused when conditions are met. | ## Good Skill Examples ### Condition Clarity **Bad:** "If needed, extend the deadline." **Good:** "If a customer requests a deadline extension and no conflicting commitment exists, offer up to 48 hours. If the deadline affects a confirmed appointment, escalate." ### Customer-Facing Outcome **Bad:** "If customer reports an issue, notify the operations manager and create a task." **Good:** "If a customer reports an issue, acknowledge it, ask for any missing details, and confirm that the team will follow up. If the issue is urgent, escalate." ### Tool Use **Bad:** "Book the appointment." **Good:** "If the customer asks to book an appointment, collect the preferred date and time window, check availability with the appointment tool, then confirm only if the tool returns an available slot." ## What Not To Put In Skills * Static facts that belong in Knowledge * Overall tone that belongs in Persona * Hard restrictions that belong in Guardrails * Raw credentials or secrets * Tool implementation details that belong in the tool code ## V3 Location Open **Agents** from the main sidebar, then select **Skills** from the Agents sidebar to manage workspace Skills. Open an individual agent and select **Skills** to decide whether that agent can use a Skill. # Style Source: https://docs.conduit.ai/agent-hub/what-goes-where/style Define your AI agent's tone, voice, formatting, and phrasing to maintain consistent brand communication. Style defines how the AI communicates: tone, voice, formatting, and phrasing. It distinguishes between what the AI says (Knowledge), what process it follows (Skills), and how it delivers messages. Broad style belongs in the agent Persona. Scenario-specific style can live in a Skill. ## What Goes in Style? * Preferred tone (e.g., warm, friendly, concise, professional) * Specific phrasing conventions (e.g., first-person plural: "We'd love to help") * Formatting rules (e.g., bullet points for step-by-step instructions) * Emoji usage or restrictions * Language preferences or regional variants (e.g., "flat" vs. "apartment") ## Where to Find Style Open **Agents**, select an agent, then open **Persona**. Put overall style in the agent's instructions. If a style rule only applies to a specific scenario, put it in a Skill and assign that Skill to the right agents. ## Good Style Examples * Use bullet points for multi-step instructions * Write in warm, professional tone—avoid slang or overly casual language * Use first-person plural: "we" instead of "I" * Add celebratory emojis only for thank-you or celebration messages * Limit message length to 3 short paragraphs maximum These instructions are measurable, specific, and easy for the AI to follow consistently. ## What Not to Include * Facts about stakeholder or contact - use **Knowledge** * Conditional instructions - use **Skills** * Prohibitions or safety restrictions - use **Guardrails** # Tags Source: https://docs.conduit.ai/agent-hub/what-goes-where/tags Write clear, specific tag descriptions so the AI accurately categorizes incoming customer messages. Tags let the AI automatically categorize incoming messages so your team can filter, prioritize, and act on the right conversations. The tag description is what tells the AI when to apply a tag, so writing a clear, specific description is the difference between tags that work and tags that create noise. ## Writing Tag Descriptions A vague description leads to over-tagging (the tag fires on conversations it shouldn't) or under-tagging (it misses conversations it should catch). The goal is a description specific enough that the AI knows exactly when to apply the tag and when not to. ### Be Specific About What Qualifies Describe the exact situation, not a general category. Include the type of message, the context, and the intent behind it. **Bad:** "When a customer has a problem" **Good:** "When a customer reports that a product or service is broken, damaged, or not functioning correctly. Examples: defective item, missing feature, service outage, billing error." ### Include Negatives (What Shouldn't Be Tagged) Adding explicit exclusions prevents the AI from over-applying a tag to similar but unrelated conversations. Think about the most common false positives and call them out. **Bad:** "Customer wants to change their order" **Good:** "When a customer requests to change their order details, delivery date, or quantity on an existing order. Do NOT apply for new purchase inquiries, cancellation requests, or questions about availability." ### Use Concrete Examples Give the AI a few real-world message examples so it understands the language customers actually use, not just the abstract category. **Bad:** "Refund request" **Good:** "When a customer asks for money back or compensation. Examples of customer messages: 'I'd like a refund,' 'Can I get my money back,' 'I think I deserve a discount for the issues.' Do NOT apply when a customer is simply complaining without requesting compensation." ## Good vs Bad Tag Descriptions ### Example 1 - Access Issues **Bad:** "When a customer can't access their account" **Good:** "When a customer reports they cannot log in to their account or access a service. This includes password reset failures, locked accounts, two-factor authentication issues, and expired sessions. Do NOT apply for customers simply asking how to set up their account." ### Example 2 - Early Check-In **Bad:** "Customer wants expedited service" **Good:** "When a customer asks for faster delivery, priority processing, or early access to a service. Do NOT apply when a customer simply asks about standard timelines, or when they confirm the scheduled date works." ### Example 3 - Noise Complaint **Bad:** "Service disruption" **Good:** "When a customer reports a service disruption affecting their experience, such as downtime, degraded performance, or intermittent errors. Do NOT apply when a customer asks about scheduled maintenance windows, or when reporting a one-time minor glitch that self-resolved." ### Example 4 - Payment Issue **Bad:** "Problem with payment" **Good:** "When a customer reports a failed charge, double charge, unexpected charge, or billing discrepancy. Examples: 'My card was charged twice,' 'I see an extra fee I wasn't expecting,' 'My payment didn't go through.' Do NOT apply for refund requests (use the Refund Request tag) or general pricing questions." ## Tips * **Start broad, then narrow down.** Write the tag description, then think about every situation where it might incorrectly apply. Add exclusions for each. * **Think from the customer's perspective.** Customers don't use your internal terminology. Describe the tag using the language customers actually use in messages. * **One tag, one purpose.** If your description covers two distinct situations, split it into two separate tags. * **Test with the Test Tags feature.** After writing a description, use the Test Tags feature to send sample messages and verify the tag applies when it should and doesn't when it shouldn't. Iterate on the description until it's accurate. Use the **Test Tags** feature to validate your tag descriptions. Send sample messages that should trigger the tag and messages that should not. Refine your description until the results match your expectations. Conversation tags are managed at the workspace level under **Settings > Conversation Tags** and apply across agents in your workspace. # Create Agent Source: https://docs.conduit.ai/api-reference/agents/create POST /v1/agents Creates a V2 chat agent and its initial trigger set. Requires a token with write access. # Delete Agent Source: https://docs.conduit.ai/api-reference/agents/delete DELETE /v1/agents/{id} Soft-deletes a V2 chat agent and removes it from its triggers. Requires a token with write access. # Get Agent Source: https://docs.conduit.ai/api-reference/agents/get GET /v1/agents/{id} Returns a single V2 chat agent by id, including its attached skills, triggers, and configuration. # Get Agent Run Source: https://docs.conduit.ai/api-reference/agents/get-run GET /v1/agents/{id}/runs/{run_id} Returns a single agent run with its full trace: status, disposition, tokens, latency, the model reply, reasoning, and tool-call timeline. # List Agents Source: https://docs.conduit.ai/api-reference/agents/list GET /v1/agents Returns cursor-paginated V2 chat agents for a workspace, including their attached skills and triggers. # List Supported Models Source: https://docs.conduit.ai/api-reference/agents/list-models GET /v1/models Lists the LLM models that can be set as an agent's model on create or update. Read from here instead of hardcoding, since the set can change. # List Agent Runs Source: https://docs.conduit.ai/api-reference/agents/list-runs GET /v1/agents/{id}/runs Returns cursor-paginated runs for a V2 chat agent, newest first, each summarizing status, disposition, error, latency, and token usage. # List Agent Tools Source: https://docs.conduit.ai/api-reference/agents/list-tools GET /v1/agents/{id}/tools Lists the built-in and custom tools a V2 chat agent can resolve with per-agent enabled state. Integration/connection tools are not included. # Run Agent Source: https://docs.conduit.ai/api-reference/agents/run POST /v1/agents/{id}/run Manually dispatches a V2 agent as if one of its triggers fired. Supports cron, webhook, and workflow triggers; requires a write-access token. # Toggle Agent Tool Source: https://docs.conduit.ai/api-reference/agents/set-tool PATCH /v1/agents/{id}/tools Enable or disable a single built-in or custom tool for a V2 chat agent, identified by the (tool_name, source) pair. Requires a write-access token. # Update Agent Source: https://docs.conduit.ai/api-reference/agents/update PATCH /v1/agents/{id} Updates mutable V2 chat agent fields. `skill_ids` and `triggers` replace the existing values when provided. # Get Appointment Source: https://docs.conduit.ai/api-reference/appointments/get GET /v1/appointments/{id} Returns a single appointment by its Conduit id. Use `external_id` to look up full appointment details from the booking service. # List Appointments Source: https://docs.conduit.ai/api-reference/appointments/list GET /v1/appointments Returns cursor-paginated appointments backed by the Conduit booking service. # Get Call Source: https://docs.conduit.ai/api-reference/calls/get GET /v1/calls/{id} Retrieve details for a single call by its unique identifier. # List Calls Source: https://docs.conduit.ai/api-reference/calls/list GET /v1/calls Retrieve a paginated list of all calls in your workspace. # List Contact Appointments Source: https://docs.conduit.ai/api-reference/contacts/appointments GET /v1/contacts/{id}/appointments Returns appointments associated with a single contact via the contact's conduit allocations. # List Contact Calls Source: https://docs.conduit.ai/api-reference/contacts/calls GET /v1/contacts/{id}/calls Retrieve all calls associated with a specific contact. # Get Contact Source: https://docs.conduit.ai/api-reference/contacts/get GET /v1/contacts/{id} Retrieve details for a single contact by their unique identifier. # List Contact Helpdesk Tickets Source: https://docs.conduit.ai/api-reference/contacts/helpdesk-tickets GET /v1/contacts/{id}/helpdesk-tickets Returns helpdesk tickets mirrored from external helpdesk systems that are associated with a single contact. # List Contacts Source: https://docs.conduit.ai/api-reference/contacts/list GET /v1/contacts Retrieve a paginated list of all contacts in your workspace. # List Contact Reservations Source: https://docs.conduit.ai/api-reference/contacts/reservations GET /v1/contacts/{id}/reservations Returns reservations associated with a single contact via the contact's reservation allocations, including normalized Airbnb payout amounts when available. # Search Contacts Source: https://docs.conduit.ai/api-reference/contacts/search GET /v1/contacts/search Search for contacts by name, email, phone number, or other attributes. # Send Contact Message Source: https://docs.conduit.ai/api-reference/contacts/send-message POST /v1/contacts/{id}/messages Delivers a new outbound message through the exact `channel_node_id` chosen for the contact. # List Contact Tickets Source: https://docs.conduit.ai/api-reference/contacts/tickets GET /v1/contacts/{id}/tickets Retrieve all tickets associated with a specific contact. # Get Conversation Source: https://docs.conduit.ai/api-reference/conversations/get GET /v1/conversations/{id} Retrieve details for a single conversation by its unique identifier. # List Conversations Source: https://docs.conduit.ai/api-reference/conversations/list GET /v1/conversations Retrieve a paginated list of all conversations in your workspace. # List Conversation Messages Source: https://docs.conduit.ai/api-reference/conversations/messages GET /v1/conversations/{id}/messages Retrieve all messages within a specific conversation. # Search Conversations Source: https://docs.conduit.ai/api-reference/conversations/search GET /v1/conversations/search Search for conversations by keyword, contact, status, or other filters. # Send Conversation Message Source: https://docs.conduit.ai/api-reference/conversations/send-message POST /v1/conversations/{id}/messages Send a new message within an existing conversation. # Get Contact Custom Attributes Source: https://docs.conduit.ai/api-reference/custom-attributes/get-contact GET /v1/contacts/{id}/custom-attributes Retrieve all custom attribute values assigned to a specific contact. # List Custom Attribute Definitions Source: https://docs.conduit.ai/api-reference/custom-attributes/list GET /v1/custom-attributes Retrieve all custom attribute definitions configured in your workspace. # Update Contact Custom Attributes Source: https://docs.conduit.ai/api-reference/custom-attributes/update-contact PATCH /v1/contacts/{id}/custom-attributes Update one or more custom attribute values for a specific contact. # Create Custom Tool Source: https://docs.conduit.ai/api-reference/custom-tools/create POST /v1/custom-tools Creates a custom code tool from Python or JavaScript source. Requires a token with write access. See List Custom Tool Runtimes for the code contract. # Delete Custom Tool Source: https://docs.conduit.ai/api-reference/custom-tools/delete DELETE /v1/custom-tools/{id} Deletes a custom code tool and its access-control records. Requires a token with write access. # Get Custom Tool Source: https://docs.conduit.ai/api-reference/custom-tools/get GET /v1/custom-tools/{id} Returns a single custom code tool, including its source code and parameter schema. # List Custom Tools Source: https://docs.conduit.ai/api-reference/custom-tools/list GET /v1/custom-tools Returns cursor-paginated custom code tools for a workspace. # Custom Tools Overview Source: https://docs.conduit.ai/api-reference/custom-tools/overview Author Python or JavaScript tools your agents can call. Covers the function signature, return shape, parameters, and available dependencies. Custom tools are functions you write in **Python** or **JavaScript** that run in a sandbox whenever an agent decides to call them. You can manage them from the dashboard, over the [REST API](/api-reference/custom-tools/list), or through the [MCP server](/mcp/overview) (the `*_custom_tool` tools). Before you write code, call [List Custom Tool Runtimes](/api-reference/custom-tools/runtimes) (`GET /v1/custom-tools/runtimes`). It returns the exact signature, return contract, starter template, built-in modules, and installable packages for each language, straight from the runtime, so you never have to guess. ## The function signature Every tool defines a single entrypoint named `main`. The parameters you declare on the tool are passed in to it. ```python Python theme={null} def main(**params): # params are passed as keyword arguments order_id = params["order_id"] ... return {"message": "..."} ``` ```javascript JavaScript theme={null} async function main(params) { // params arrive as a single object const { order_id } = params ... return { message: "..." } } ``` | Language | Entrypoint | Parameters arrive as | | - | - | - | | Python | `def main(**params)` | keyword arguments (`params` dict) | | JavaScript | `async function main(params)` | a single `params` object | ## The return shape `main` **must** return an object/dict containing a string `message` key. The `message` is what the agent reads back. Optionally include a `rawData` key with structured data for the agent to reason over. ```python Python theme={null} return { "message": f"Order {order_id} is shipped", "rawData": {"status": "shipped", "carrier": "UPS"}, } ``` ```javascript JavaScript theme={null} return { message: `Order ${order_id} is shipped`, rawData: { status: "shipped", carrier: "UPS" }, } ``` Writes perform a static check for the required `main` entrypoint and a return statement. When the tool runs, a return value without a string `message` key will fail runtime validation. ## Parameters Declare each parameter your tool accepts in the `parameters` map. The keys become the fields available inside `main`. ```json theme={null} { "order_id": { "type": "string", "required": true, "description": "The order id to look up." }, "include_history": { "type": "boolean", "required": false, "description": "Whether to include the full status history." } } ``` | Field | Required | Meaning | | - | - | - | | `type` | yes | `string`, `number`, `boolean`, `object`, or `array`. | | `required` | yes | Whether the agent must supply the value. | | `description` | yes | Shown to the model so it fills the value correctly. | | `enum_values` | no | A closed set of allowed string values. | | `execution_message_description` | no | Per-parameter note shown while the tool runs. | ## Available dependencies The full, authoritative list per language is returned by [`GET /v1/custom-tools/runtimes`](/api-reference/custom-tools/runtimes). In short: * **Standard library** modules are always importable with no install step (Python: `json`, `math`, `datetime`, `re`, `urllib`, ...; JavaScript: `fs`, `path`, `crypto`, `https`, ...). * A curated set of **third-party packages** installs automatically the first time you import it. For Python this includes `requests`, `httpx`, `numpy`, `pandas`, and more. JavaScript tools run on Bun with its built-in modules. ## Naming rules Tool names are lowercase **kebab-case**: letters, numbers, and single hyphens only (for example `lookup-order-status`). No spaces, no uppercase, no leading, trailing, or consecutive hyphens. The name is how the agent references the tool, and it must be unique within the workspace. ## Lifecycle 1. `POST /v1/custom-tools` (or `create_custom_tool`) creates the tool. 2. `PATCH /v1/custom-tools/{id}` updates it. Changing `code` bumps the tool's `version`. 3. Set `enable_globally: true` to make the tool available to every agent in the workspace without per-agent enablement. 4. `DELETE /v1/custom-tools/{id}` removes the tool and its access-control rows. ## Turning a tool on for an agent Creating a custom tool does not automatically expose it to your agents. Chat agents are **opt-in**: a tool is disabled until you turn it on for that agent. * [`GET /v1/agents/{id}/tools`](/api-reference/agents/list-tools) lists the built-in and custom tools an agent can resolve, each with its `enabled` state. * [`PATCH /v1/agents/{id}/tools`](/api-reference/agents/set-tool) toggles one tool for that agent. Identify it by the `(tool_name, source)` pair, where `source` is `builtin` or `custom`. Over MCP these are the `list_agent_tools` and `set_agent_tool_access` tools. # Run Custom Tool Source: https://docs.conduit.ai/api-reference/custom-tools/run POST /v1/custom-tools/{id}/run Executes a custom code tool in the sandbox with the given parameters. Tool code failures return 200 with success: false. Requires write access. # List Custom Tool Runtimes Source: https://docs.conduit.ai/api-reference/custom-tools/runtimes GET /v1/custom-tools/runtimes Returns the supported runtimes (Python, JavaScript) with entrypoint signature, return shape, starter template, built-ins, and installable packages. # Update Custom Tool Source: https://docs.conduit.ai/api-reference/custom-tools/update PATCH /v1/custom-tools/{id} Updates mutable custom tool fields. Only supplied fields change; changing the code bumps the version. Requires a token with write access. # Assign Escalation Source: https://docs.conduit.ai/api-reference/escalations/assign POST /v1/escalations/{id}/assign Assign a chat escalation to a workspace user for the human-handoff path. # List Escalations Source: https://docs.conduit.ai/api-reference/escalations/list GET /v1/escalations Retrieve a paginated list of all escalations in your workspace. # Resolve Escalation Source: https://docs.conduit.ai/api-reference/escalations/resolve POST /v1/escalations/{id}/resolve Move a chat escalation into a terminal reviewed state and record the reviewer. # Get Helpdesk Ticket Source: https://docs.conduit.ai/api-reference/helpdesk-tickets/get GET /v1/helpdesk-tickets/{id} Returns a single helpdesk ticket by its Conduit id, including requester identity and upstream helpdesk-system metadata. # List Helpdesk Tickets Source: https://docs.conduit.ai/api-reference/helpdesk-tickets/list GET /v1/helpdesk-tickets Returns cursor-paginated helpdesk tickets mirrored from the workspace's helpdesk integrations (Zendesk, Pylon, Plain). # List Inbox Types Source: https://docs.conduit.ai/api-reference/inbox-types/list GET /v1/inbox-types Lists the workspace's inbox types (id + name). Ids are stable and usable as message trigger inbox_type_id or the inbox_type_id conversation filter. # Get Automation Rate Source: https://docs.conduit.ai/api-reference/insights/automation-rate GET /v1/insights/automation_rate Returns the automation-rate metric (human vs AI-handled contact split) over a date range, with a zero-filled per-day series for the Insights chart. The response preserves the headline numerator, denominator, decimal rate, range, formula version, and dense daily series. It also includes aggregate and daily `breakdown` objects. * `decisions` reconciles sent and not-sent decisions to the denominator. * `by_disposition` separates resolved, unresolved, answer-and-escalate, escalated, proactive, and unknown decisions. * `message_mapping` reports decision batches, referenced inbound messages, and decisions without inbound references. References are counted per decision batch, not globally deduplicated. Answer-and-escalate is a successful AI send in the automation numerator. It does not imply that a teammate was avoided. # Conduit API Source: https://docs.conduit.ai/api-reference/introduction Programmatic access to your Conduit workspace data. The Conduit API is only available on the **v3 plan**. Contact [support@conduit.ai](mailto:support@conduit.ai) to enable API access for your workspace. ## Overview The Conduit API gives you programmatic access to contacts, conversations, tickets, calls, escalations, custom attributes, knowledge base, and workspace metadata. Read and write endpoints are available depending on your token's access level. All endpoints are REST-based and return JSON. **Base URL** ``` https://api.conduit.ai/v1 ``` ## Authentication All requests require a **Bearer token** in the `Authorization` header. Generate API tokens from **Settings > API & MCP**. The setting is personal, so tokens can grant access to one or more workspaces where you are an admin. ```bash theme={null} curl https://api.conduit.ai/v1/workspaces \ -H "Authorization: Bearer YOUR_API_TOKEN" ``` Tokens are scoped to one or more workspaces. Use the [List Workspaces](/api-reference/workspaces/list) endpoint to discover which workspaces your token can access. ## Pagination List endpoints return paginated results. Use `limit` (1-100, default 20) and `cursor` to page through results. ```json theme={null} { "data": [...], "next_cursor": "page-token", "has_more": true } ``` Pass `next_cursor` as the `cursor` query parameter in your next request to fetch the next page. When `has_more` is `false`, you've reached the end. ## Polling for new activity Cursors page through a result set once. Keeping an external system in sync needs the opposite: only what has changed since you last looked. Two timestamp filters cover that. Call [List Conversations](/api-reference/conversations/list) with `updated_after` set to the highest `updated_at` you have already stored. ``` GET /v1/conversations?workspace_id=WS&updated_after=2026-04-03T03:15:04.000Z ``` For each conversation returned, call [List Conversation Messages](/api-reference/conversations/messages) with `created_after` set to the highest `created_at` you have stored for that thread. This replaces re-paging the whole transcript. ``` GET /v1/conversations/{id}/messages?created_after=2026-04-03T03:15:04.000Z ``` Both filters are inclusive (at or after), and `created_at` is truncated to the millisecond, so the message on the boundary is normally returned again. Deduplicate on the message `id` rather than assuming every result is new. `created_after` filters on `created_at` (when Conduit recorded the message), not `sent_at` (when the channel says it was sent). Those differ for messages imported from a connected channel, and only `created_at` moves forward as Conduit observes messages, so it is the safe watermark. Using `sent_at` as your cursor will eventually skip a backdated import. ### Telling AI replies from operator replies Every message carries `is_sent_by_autopilot`. It is `true` only when Conduit's AI agent generated and sent the message, and `false` for operator replies, workflow sends, and messages ingested from a connected channel's own UI. Use the flag directly. Do not infer automation from `sender.user_id`: AI sends usually leave it `null`, but so do host replies typed in an OTA's own UI and messages sent by workflows, and a small number of AI sends do carry a user id. ## Rate Limits By default, API requests are limited to **120 requests per minute per workspace**. If you exceed the limit, the API returns `429 Too Many Requests` with a `Retry-After` header indicating when you can retry. Some workspaces may have higher limits based on plan or entitlement. See [Rate Limits](/rate-limits) for details. ## Errors All errors return a JSON object with an `error` field: ```json theme={null} { "error": "Invalid workspace id" } ``` | Status | Meaning | | - | - | | 400 | Invalid request parameters | | 401 | Missing or invalid API token | | 403 | Token does not have access to the requested workspace | | 404 | Resource not found | | 429 | Rate limit exceeded | # Create Knowledge Node Source: https://docs.conduit.ai/api-reference/knowledge/create-node POST /v1/kb/nodes Create a new node in your knowledge base with the specified content. # Delete Knowledge Node Source: https://docs.conduit.ai/api-reference/knowledge/delete-node DELETE /v1/kb/nodes/{node_id} Permanently remove a node from your knowledge base by its identifier. # Get Knowledge Node Source: https://docs.conduit.ai/api-reference/knowledge/get-node GET /v1/kb/nodes/{node_id} Retrieve details for a single knowledge base node by its identifier. # List Knowledge Nodes Source: https://docs.conduit.ai/api-reference/knowledge/list-nodes GET /v1/kb/nodes Retrieve a paginated list of all nodes in your knowledge base. # Search Knowledge Base Source: https://docs.conduit.ai/api-reference/knowledge/search POST /v1/kb/search Perform a semantic search across your entire knowledge base. # Search Knowledge Nodes Source: https://docs.conduit.ai/api-reference/knowledge/search-nodes POST /v1/kb/nodes/search Search for knowledge base nodes by title, content, or other attributes. # Update Knowledge Node Source: https://docs.conduit.ai/api-reference/knowledge/update-node PATCH /v1/kb/nodes/{node_id} Update the content or metadata of an existing knowledge base node. # Portals Source: https://docs.conduit.ai/api-reference/portals/overview Build portal verification rules, offers, guides, and templates through the Conduit API. Portal API methods require the **Portals** add-on. Without it, each method returns `403 Forbidden`. Contact [support@conduit.ai](mailto:support@conduit.ai) to enable it. ## Overview A portal is the page that a guest opens before a stay. Its content comes from workspace configuration that you manage through API methods: What has to be collected or signed before check-in. Deposits, agreements, arrival details, questions. The things that can be bought or requested. Late checkout, mid-stay clean, airport pickup. The page itself: branding, layout blocks, and which offers appear where. Published guest information that can appear in matching portals. Workspace branding defaults for future portal sessions. Guest progress, submitted check-in fields, orders, tickets, and stored assets. These resources are independent. You can use verification rules without a template. Offers appear only after a template layout references them. ## Before you start | Requirement | Detail | | - | - | | Token | Read/write for any create, patch, delete, or reorder. Read-only tokens can list and get. | | Permission | `Access Portals` to read; `Manage Portals` to create, patch, delete, or reorder. | | Path | Every method uses `workspace_id`. | | Concurrency | Update and lifecycle methods take `expected_updated_at` or `expected_version`. Reorder items include their current timestamps. | All timestamps are epoch milliseconds. All money is whole cents (`25000` is \$250.00) paired with a lowercase currency code. ## End to end Build a portal with a deposit for long stays: Use [Create Portal Offer](/api-reference/portals/offers/create) for each item. Keep each returned `id`. Use [Create Verification Rule](/api-reference/portals/verification-rules/create) for the deposit and arrival details. New rules are enabled and appended. Use [Reorder Verification Rules](/api-reference/portals/verification-rules/reorder). Put specific rules above general rules. Use [Create Portal Template](/api-reference/portals/templates/create). Reference the offer IDs from step 1 in `layout`. Use [Update Portal Template](/api-reference/portals/templates/update) with `status: "active"` and the current `expected_version`. ## API methods | Resource | Read methods | Write methods | | - | - | - | | Verification rules | [List](/api-reference/portals/verification-rules/list), [Get](/api-reference/portals/verification-rules/get) | [Create](/api-reference/portals/verification-rules/create), [Update](/api-reference/portals/verification-rules/update), [Delete](/api-reference/portals/verification-rules/delete), [Reorder](/api-reference/portals/verification-rules/reorder) | | Offers | [List](/api-reference/portals/offers/list), [Get](/api-reference/portals/offers/get) | [Create](/api-reference/portals/offers/create), [Update](/api-reference/portals/offers/update), [Archive](/api-reference/portals/offers/archive), [Restore](/api-reference/portals/offers/restore) | | Templates | [List](/api-reference/portals/templates/list), [Get](/api-reference/portals/templates/get) | [Create](/api-reference/portals/templates/create), [Update](/api-reference/portals/templates/update), [Duplicate](/api-reference/portals/templates/duplicate), [Archive](/api-reference/portals/templates/archive), [Restore](/api-reference/portals/templates/restore), [Delete](/api-reference/portals/templates/delete) | | Guides | [List](/api-reference/portals/guides/list), [Get](/api-reference/portals/guides/get) | [Create](/api-reference/portals/guides/create), [Update](/api-reference/portals/guides/update), [Duplicate](/api-reference/portals/guides/duplicate), [Archive](/api-reference/portals/guides/archive), [Restore](/api-reference/portals/guides/restore), [Reorder](/api-reference/portals/guides/reorder) | | Brand kit | [Get](/api-reference/portals/brand-kit/get) | [Update](/api-reference/portals/brand-kit/update) | | Sessions | [List](/api-reference/portals/sessions/list), [Get](/api-reference/portals/sessions/get) | None | ## Errors | Status | Cause | | - | - | | `400` | The request or configuration is invalid. | | `401` | The API token is missing or invalid. | | `403` | Portals are not enabled, or the token user lacks permission. | | `404` | The resource is not in this workspace. | | `409` | `expected_updated_at` or `expected_version` is stale. | | `429` | The request exceeded a rate limit. | Read the current value before you retry a `409` response. A retry with the same lock value fails again. # Get Portal Session Source: https://docs.conduit.ai/api-reference/portals/sessions/get GET /v1/workspaces/{workspace_id}/portal-sessions/{session_id} Get a portal session with submitted fields, progress, orders, tickets, and stored assets. # List Portal Sessions Source: https://docs.conduit.ai/api-reference/portals/sessions/list GET /v1/workspaces/{workspace_id}/portal-sessions List reservations with nullable portal sessions and check-in progress. # Portal Sessions Source: https://docs.conduit.ai/api-reference/portals/sessions/overview Discover portal sessions and retrieve their check-in progress, submitted fields, orders, tickets, and stored assets. Portal session reads are available to platform operators through REST and MCP. | Operation | REST | MCP | Permission | | - | - | - | - | | List sessions | `GET /v1/workspaces/{workspace_id}/portal-sessions` | `list_portal_sessions` | `Access Portals` | | Get session detail | `GET /v1/workspaces/{workspace_id}/portal-sessions/{session_id}` | `get_portal_session` | `Access Portals` | The list operation selects reservations by date, listing, contact, or external reservation identifiers. Each reservation includes one reservation-scoped session or `null`. The session includes check-in progress counts. Use `submission_id` to determine whether the session has a check-in submission. The detail response includes configured steps, submitted values, safe order summaries, related tickets, and a flattened `assets` array. Check-in progress is reservation-scoped. When multiple sessions belong to the same reservation, `submission.origin_session_id` identifies the session that originally collected the submission. ## Uploaded files Conduit-stored files are returned as download URLs rather than inline bytes. Assets identify their step, kind, subject, document type, and configured field. Provider-hosted ID images that Conduit does not store have a `null` download URL and `unavailable_reason: "provider_hosted"`. The detail operation can expose government ID, selfie, signature, and guest information. Keep its output within systems authorized to handle that data. # Get Reservation Source: https://docs.conduit.ai/api-reference/reservations/get GET /v1/reservations/{id} Retrieve a reservation by Conduit id, including guest identity, payment summary, normalized Airbnb payouts, and PMS metadata. # List Reservations Source: https://docs.conduit.ai/api-reference/reservations/list GET /v1/reservations Returns cursor-paginated PMS reservations for a workspace, including normalized Airbnb payout amounts when available. # Create Skill Source: https://docs.conduit.ai/api-reference/skills/create POST /v1/skills Creates a workspace agent skill. Requires a token with write access. # Delete Skill Source: https://docs.conduit.ai/api-reference/skills/delete DELETE /v1/skills/{id} Deletes a workspace agent skill. Requires a token with write access. # Get Skill Source: https://docs.conduit.ai/api-reference/skills/get GET /v1/skills/{id} Returns a single workspace agent skill by id, including its instructions, tools, and configuration. # List Skills Source: https://docs.conduit.ai/api-reference/skills/list GET /v1/skills Returns cursor-paginated workspace agent skills. Sidebar/global-assistant skills are not included in this API. # Update Skill Source: https://docs.conduit.ai/api-reference/skills/update PATCH /v1/skills/{id} Updates mutable workspace agent skill fields. Requires a token with write access. # Close Ticket Source: https://docs.conduit.ai/api-reference/tickets/close POST /v1/tickets/{id}/close Close a resolved ticket to remove it from the active queue while preserving the conversation history. # Create Ticket Note Source: https://docs.conduit.ai/api-reference/tickets/create-note POST /v1/tickets/{id}/notes Create an internal note on a ticket to share context with teammates without sending a message to the contact. # Delete Ticket Note Source: https://docs.conduit.ai/api-reference/tickets/delete-note DELETE /v1/tickets/{id}/notes/{note_id} Delete an internal note that you authored on a ticket. You can only delete notes that you created yourself. # Get Ticket Source: https://docs.conduit.ai/api-reference/tickets/get GET /v1/tickets/{id} Retrieve details for a single ticket by its unique identifier. # Get Ticket Note Source: https://docs.conduit.ai/api-reference/tickets/get-note GET /v1/tickets/{id}/notes/{note_id} Retrieve a single internal note attached to a ticket. # List Tickets Source: https://docs.conduit.ai/api-reference/tickets/list GET /v1/tickets Retrieve a paginated list of all tickets in your workspace. # List Ticket Notes Source: https://docs.conduit.ai/api-reference/tickets/list-notes GET /v1/tickets/{id}/notes Retrieve all internal notes attached to a specific ticket, ordered by creation time with author metadata. # List Ticket Messages Source: https://docs.conduit.ai/api-reference/tickets/messages GET /v1/tickets/{id}/messages Retrieve all messages within a specific ticket thread. # Reopen Ticket Source: https://docs.conduit.ai/api-reference/tickets/reopen POST /v1/tickets/{id}/reopen Reopen a resolved ticket and move the contact back to todo if needed. # Resolve Ticket Source: https://docs.conduit.ai/api-reference/tickets/resolve POST /v1/tickets/{id}/resolve Resolve a ticket and mark the contact done when no active tickets remain. # Search Tickets Source: https://docs.conduit.ai/api-reference/tickets/search GET /v1/tickets/search Search for tickets by keyword, status, assignee, or other filters. # Send Ticket Message Source: https://docs.conduit.ai/api-reference/tickets/send-message POST /v1/tickets/{id}/messages Send a new message within an existing ticket thread. # Update Ticket Note Source: https://docs.conduit.ai/api-reference/tickets/update-note PATCH /v1/tickets/{id}/notes/{note_id} Update the content of an internal note that you authored on a ticket. You can only edit notes you created. # Create Workflow Source: https://docs.conduit.ai/api-reference/workflows/create POST /v1/workflows Creates a new workflow (master + version 1) from a full definition. Created as DRAFT unless activate is true. # Create Workflow Folder Source: https://docs.conduit.ai/api-reference/workflows/create-folder POST /v1/workspaces/{workspace_id}/workflow-folders Creates a workflow folder in a workspace for organizing related workflows. # Get Workflow Source: https://docs.conduit.ai/api-reference/workflows/get GET /v1/workflows/{id} Returns a single workflow's full definition: metadata, trigger, and the step graph as the Workflows editor stores it. Embedded credential material is redacted. # List Workflows Source: https://docs.conduit.ai/api-reference/workflows/list GET /v1/workspaces/{id}/workflows Returns paginated workflow summaries for a workspace. Defaults to the latest version per workflow; pass all_versions=true to include version history. # List Workflow Execution Events Source: https://docs.conduit.ai/api-reference/workflows/list-execution-events GET /v1/workflow-executions/{id}/events Returns the paginated, step-level event log for a workflow execution, ascending by timestamp. Credentials and raw-request material are redacted. # List Workflow Executions Source: https://docs.conduit.ai/api-reference/workflows/list-executions GET /v1/workflows/{id}/executions Returns the paginated run history for a workflow, newest first. Filter by status and by started_after / started_before. # List Workflow Folders Source: https://docs.conduit.ai/api-reference/workflows/list-folders GET /v1/workspaces/{workspace_id}/workflow-folders Returns paginated workflow folders for a workspace. # Move Workflow To Folder Source: https://docs.conduit.ai/api-reference/workflows/move-to-folder PATCH /v1/workflows/{id}/folder Moves a workflow into a folder or removes its current folder assignment. # Get Workflow Schema Source: https://docs.conduit.ai/api-reference/workflows/schema GET /v1/workflows/schema Returns a JSON Schema for a valid workflow definition: every step and trigger type with its config schema and graph rules. Read before create/update. # Update Workflow Source: https://docs.conduit.ai/api-reference/workflows/update PUT /v1/workflows/{id} Replaces a workflow definition by creating a new version under the same workflow. The new version is DRAFT unless activate is true. # List Workspaces Source: https://docs.conduit.ai/api-reference/workspaces/list GET /v1/workspaces Retrieve a list of all workspaces accessible with your API token. # List Workspace Users Source: https://docs.conduit.ai/api-reference/workspaces/list-users GET /v1/workspaces/{id}/users List all members of a workspace, including their user IDs and associated metadata, via the Conduit API. # List Workspace Roles Source: https://docs.conduit.ai/api-reference/workspaces/roles GET /v1/workspaces/{id}/roles Returns the workspace's roles with the permission names each role grants. # Search Workspace Users Source: https://docs.conduit.ai/api-reference/workspaces/search-users GET /v1/workspaces/{id}/users/search Find workspace members by partial name or email and return user IDs. # List Workspace Senders Source: https://docs.conduit.ai/api-reference/workspaces/senders GET /v1/workspaces/{id}/senders Returns the workspace's configured outbound email, SMS, and WhatsApp senders. Use these `sender_id` values with proactive sends. # Get Workspace Settings Source: https://docs.conduit.ai/api-reference/workspaces/settings GET /v1/workspaces/{id}/settings Returns general workspace settings: company profile, timezone, date format, default phone country code, and business hours. # List Workspace WhatsApp Templates Source: https://docs.conduit.ai/api-reference/workspaces/whatsapp-templates GET /v1/workspaces/{id}/whatsapp-templates Returns the workspace's stored WhatsApp templates, including Content SIDs, approval status, body, and variable keys. # Queue Report Source: https://docs.conduit.ai/call-center/queue-report What every number on the queue report means, and how the totals fit together The queue report answers one question: of every call that came in, where did it end up? ## Where to find this data For one workspace, open Conduit and go to **Insights → Queue report**. Everything on this page is on that one screen. For the organization-wide view, go to **Workforce**. The same report is split across three tabs, each rolling up every workspace you have access to: | Tab | What it shows | | - | - | | Overview | The headline totals, the inbound-path breakdown, volume over time, and a **By workspace** table with a row per workspace. | | Team | The per-member table, across workspaces. | | Misses | A **Missed calls by workspace** table you can click into for the individual calls, then the missed-call headline, recovery metrics, why calls were missed, and the time-of-week heatmap. | The Live and Availability tabs are real-time views, not part of the report. On Availability, the business unit dropdown defaults to **All business units** and narrows the timeline to one workspace. The selection is stored in the URL, so you can share or bookmark the filtered view. ## How the totals fit together Total inbound, answered by team, missed, and service level tiles **Total inbound** counts every call that reached you, whether a person picked it up or the AI agent handled it on its own. **Answered by team**, **Missed**, and **Abandoned** only count calls that reached the human queue. Together they account for all queue calls, not all inbound calls: calls the AI resolved without involving anyone never entered the queue. Every inbound call lands in exactly one of four paths, and those four always sum back to total inbound: | Path | Meaning | | - | - | | Resolved by AI | The AI agent handled the call start to finish. Nobody was rung. | | AI to team | The AI answered, then transferred the caller to a person. | | Ended at AI | The call reached the AI and ended there without a transfer or a resolution. Usually the caller hung up. | | Direct to team | The call went straight to the queue without the AI answering first. | Answered, Missed, and Abandoned describe the *outcome* of a queue call, so they cut across those paths rather than adding to them. A transferred call can be answered, missed, or abandoned, and so can a direct one. Breakdown of where inbound calls went A call the AI transferred is counted once, under its transfer outcome. It is not counted again as a new inbound call. ### By workspace columns On **Workforce → Overview**, the **By workspace** table uses the same definitions for every row. Workforce tables on Live, Overview, Team and Misses show every row without pagination. Click a numeric column header once to sort descending and again to sort ascending; the active column shows an arrow. Sorting uses the underlying value, so **SLA**, **ASA**, **Longest wait**, **Avg talk** and **Available** sort correctly rather than alphabetically. | Column | Meaning | | - | - | | Workspace | The Conduit workspace the row reports on. | | Inbound | All inbound calls received by the workspace. Each call is counted once, and this number always equals **Resolved by AI + AI to team + Ended at AI + Direct to team**. | | Missed | Calls that reached the team but nobody answered, excluding abandoned calls. Includes both AI transfers and calls that went directly to the team. Calls that **Ended at AI** are not included. | | Answered | Calls the team answered, including both AI transfers and calls that went directly to the team. Calls resolved by the AI are not included. | | SLA | Service level: the share of answered team calls picked up within 20 seconds. Missed calls are not included in the denominator. | | ASA | Average speed of answer: the mean wait before a team member answered, across answered calls only. | | Resolved by AI | Inbound calls the AI handled from start to finish without transferring to the team. | | AI to team | Inbound calls the AI transferred to the team. Each call appears here once whether answered, missed, or abandoned. | | Ended at AI | Inbound calls that ended with the AI without being resolved or transferred to the team, usually because the caller hung up. These are not team misses because the calls never entered the human queue. | | Direct to team | Inbound calls that went straight to the human queue without the AI answering first. Each call appears here once whether answered, missed, or abandoned. | | Longest wait | The longest time a caller waited for the team before the call was answered, missed, or abandoned. | | Recovered | Missed calls where the caller later got through or someone called them back through Conduit. Calls team members make back from a mobile are not visible here. | ## Service level, SLA and ASA **Service level** is the share of answered calls picked up within 20 seconds. The denominator is answered calls, not all calls, so a workspace that misses a lot can still show a high service level. Read it alongside the miss rate, never on its own. **ASA** is average speed of answer: the mean wait before someone picked up, across answered calls only. **Longest wait** is the single worst wait in the range, with the time it happened. Useful for finding the moment a queue fell over rather than the average day. ## Missed calls Missed calls headline tile with ring-out rate, never reconnected, we called back and caller retried tiles **Missed calls** on the Workforce Misses tab counts queue calls that were not answered because nobody was available, ringing timed out, or everyone declined. It excludes abandoned calls. The rate underneath divides missed calls by all queue calls in the selected workspaces and date range, including answered, missed, and abandoned calls. **Abandoned call rate** appears beside Missed calls. It counts calls classified as caller hangups while waiting for the team, divided by all queue calls, with the raw count and denominator underneath. Calls that end at the AI without reaching the queue are not included. The report uses the recorded routing outcome to separate caller hangups from nobody available, ring-out, and declined, so the counts do not overlap. For example, 132 previously reported misses containing 37 abandoned calls become **95 missed calls (28.2% of 337 queue calls)** and an **11.0% abandoned call rate (37 of 337 queue calls)**. This definition applies whenever a date range is computed, including historical ranges. No stored call records are changed. Previously saved CSVs keep their old totals; re-exporting the same range excludes abandoned calls from missed totals, recovery metrics, and missed-call buckets. The four tiles under it are the recovery metrics, explained further down. On the workspace report the same four tiles sit in a row with speed of answer, longest wait, outbound calls and AI resolutions. ## Missed calls by workspace Missed calls by workspace table on the Workforce Misses tab At the top of the Misses tab, above the tiles, this table has one row per workspace so you can see which one is missing calls instead of reading a blended total. Every number in it is an actual call, not an average or a rate across team members. | Column | Meaning | | - | - | | Queue calls | Calls that reached the human queue in that workspace: answered plus missed plus abandoned. | | Missed | Queue calls nobody answered, excluding abandoned calls. | | Miss rate | Missed as a share of queue calls. | | Nobody available, Ring-out, Declined | The missed count split by reason, using the same definitions as [Why calls were missed](#why-calls-were-missed). | | Abandoned | Caller hangups while waiting for the team, counted separately from missed. | | Recovered | Missed calls where the caller later got through, by either path described under [Recovery metrics](#recovery-metrics). | By default, rows are sorted by missed calls, highest first. Any numeric column header re-sorts the table. The table follows the same date range and workspace filter as the rest of the tab. Scroll sideways to see the later columns on a narrow window. Nobody available, Ring-out, and Declined sum to Missed. Abandoned is a separate outcome and must not be added to the missed total. ### Viewing the calls behind a row Missed calls for one workspace, filtered to ring-outs, showing caller, call group, reason, wait, who was rung and whether the caller reconnected Click any workspace row to open its missed calls for the same range. The list stays inside Workforce, so the date range and timezone at the top still apply, and the back arrow returns you to the table. Each row is one missed call: | Column | Meaning | | - | - | | When | Call start time, in the timezone shown in the header. | | Caller | The number that called. | | Call group | The queue the call was routed to. | | Reason | Nobody available, Ring-out, or Declined. Abandoned calls are excluded from this list. A **voicemail** note underneath means the call carried on to voicemail after the miss rather than ending with a hang-up. | | Waited | How long the caller held before the call ended. | | Routed to | Who the call was offered to, with a tooltip on each person showing whether they timed out or declined. If nobody could be offered the call, it shows **No one available** and hovering explains why (away, on a call, unavailable). | | Reconnected | **Called back** means someone on your team later reached that number through Conduit. **Caller retried** means the same number rang again and got through. A dash means neither happened. | Use the reason dropdown in the header to narrow the list to one reason, for example only ring-outs when you are checking responsiveness. The list shows the newest 500 missed calls in the range; shorten the range if you need to see everything. ## Why calls were missed Why calls were missed breakdown These three reasons are mutually exclusive, and every missed call falls into exactly one. Abandoned calls are shown separately in the Abandoned call rate tile and the per-workspace Abandoned column. | Reason | Meaning | | - | - | | Nobody available | No one could be offered the call at all. Everyone was away, on a call, or in wrap-up. | | Ring-out | It rang at least one person and nobody picked up before the ring timer expired. | | Declined | Everyone who was offered the call actively rejected it. | The split matters because the fixes are different. Ring-out is a responsiveness problem. Nobody available is a staffing problem. Abandoned is usually a wait-time problem. ## Recovery metrics **Ring-out rate** is ring-outs divided by calls that were actually offered to somebody. It deliberately excludes calls where nobody was available to ring and calls the guest abandoned, so it measures only this: when we rang a person, how often did nobody pick up. This is the number to watch for staffing and responsiveness. **We called back** is the share of missed calls where someone on your team later rang that number back. This only counts callbacks placed through Conduit. If your team members return calls from a mobile or a property landline, those are invisible to the report, so your real callback rate is higher than the number shown. **Caller retried** is the share of missed calls where the guest rang back themselves and that later call was answered. A high number is not reassurance. It means guests are getting through, but only because they did the chasing, and each of those guests is counted as two inbound calls. **Never reconnected** is missed calls where the guest never reached anyone, by either path. If you want one number to act on, this is it. It is the closest thing the report has to lost business. ## Missed calls by time of week Heatmap of missed calls by hour and day of week Each cell is a two-hour block in the report's timezone, shaded by how many calls were missed in it. Use it to find the recurring gaps, the shift change, the lunch hour, the Sunday evening nobody is rostered for. ## Choosing a date range Workforce date range picker with Last 24 hours, Last 7 days and Last 30 days presets Workforce opens on **Last 24 hours**: a rolling window from exactly 24 hours ago to now, bucketed by the hour. It is not "yesterday and today", so a call at 9am yesterday drops out of the report at 9am today. The other two presets are calendar ranges in your organization's timezone: **Last 7 days** is today plus the six days before it, and **Last 30 days** is today plus the previous 29. Picking dates on the calendar and applying them replaces the preset with a custom range. The workspace report defaults to the last 14 days and offers Today, Last 7, 14, 30 and 90 days. Times follow the workspace timezone, so the report reads the same for everyone regardless of where they are viewing it from. At the organization level, the report uses the timezone shared by most of your workspaces and shows which one it is next to the date picker. ## Reading the team table The per-member table (**Workforce → Team** at the organization level) shows calls **offered**, **accepted**, **declined** and **timed out**, plus an answer rate. Offered counts every time the queue rang that person, so one call can be offered to several people. Declined means they actively rejected it; timed out means it rang and went unanswered. A high timed-out count next to a low declined count usually means the person was away from their desk rather than refusing calls. Treat this table as a starting point for a conversation, not a verdict. It cannot tell the difference between someone ignoring a call and someone who stepped away without setting themselves to away. ## Exporting **Export CSV** produces the same numbers as the screen: headline metrics (including queue calls, missed calls excluding abandoned, abandoned count, and abandoned call rate), the per-member table, and per-bucket volumes. At the organization level it also includes a row per workspace with queue calls, answered, missed, the three missed reasons, and abandoned as a separate column, so the workspace table above can be reproduced in a spreadsheet. # AI Automation Dashboard Source: https://docs.conduit.ai/dashboard/ai-automation-dashboard Spot patterns, fix gaps, and boost automation with Insights ## Overview The Insights page provides high-level visibility into how frequently the AI fulfills requests versus requiring human escalation. Users can leverage this data to identify optimization opportunities for the AI system. Key metrics include automation rate, frequent escalation types, and escalation topics. Open **Insights** directly from the workspace sidebar, above the **Agents** group. ## AI Automation Rate This metric displays the percentage of messages automatically handled by AI, compared against the previous period. Users can customize both the displayed data range and comparison period via the Overview tab. ## Escalations Escalations represent situations where the AI cannot respond independently. Users can identify which escalation types occur most frequently and review specific conversation examples by clicking rows. ### Four Escalation Types 1. **Urgent tagged:** Topics marked urgent prevent AI action. Tags can be managed under Settings > Conversation Tags. 2. **AI needs your help:** AI requires human confirmation or authorization to complete an action. 3. **AI missing info:** Insufficient information prevents the AI from providing an adequate response. 4. **Message has attachments:** System supports photo and file attachments only; video attachments cannot be processed. ## Escalations By Message Topic This visualization reveals which topics generate the most escalations and their associated types. Clicking each bar displays example conversations demonstrating why escalation occurred. # Calls Dashboard Source: https://docs.conduit.ai/dashboard/calls-dashboard Spot patterns, fix gaps, and boost automation with Insights ## Overview The calls dashboard enables users to view data about calls made by both AI systems and team members. Users can compare metrics across different time periods and filter results by individual team members. ## Calls By Member This section allows comparison of call volumes made by each team member or AI Agent. Users can click team member names to access call transcripts. The interface displays: * Total call counts * Breakdown by communication channel * Separate tracking for outgoing and incoming calls ## Manager Dashboard This dashboard provides team performance statistics including: * Median response time metrics * Messages sent counts * Tickets resolved numbers * Performance data for both team members and AI Agents ### Messages Sent by User Users can click on specific team members or AI Agents to view sent messages, providing insights into AI response patterns and message volume comparisons with human team members. Users can click messages to view full conversation context within the Inbox. # Metrics Source: https://docs.conduit.ai/dashboard/metrics Understanding how Conduit calculates your team's performance metrics ## Overview Conduit tracks key performance metrics to help you understand how your team and AI are handling customer conversations. This guide explains how these metrics are calculated. Every metric card on the dashboard has an info icon (ℹ) that shows the formula when you hover over it. ## Response Time The **Median response time by user** chart measures the time between a customer's message and a human reply that directly follows it. It does not measure time from an AI hand-off. ### How It's Calculated * **Attribution:** Response time is attributed to whoever sends the reply, not who the conversation is assigned to * **Median calculation:** The chart shows a separate median for each person across their qualifying replies in the selected time period * **Exclusions:** Response times over 48 hours are excluded from the calculation to prevent outliers from skewing results * **AI replies:** If the AI has already replied to the customer, a later human follow-up is not recorded in this chart * **AI Agent bar:** This bar is an estimate derived from the configured AI response delay plus a fixed buffer, not a measured median of AI replies ### Common Scenarios | Scenario | Who gets the response time? | | - | - | | Staff A replies to Staff B's conversation | Staff A's response time is counted | | Multiple people reply to an unassigned conversation | Only the person whose reply directly follows the customer message gets a response time recorded | ### Things to Keep in Mind * **Quick responders:** Someone who frequently jumps in to quickly handle others' conversations will naturally have a lower median response time * **Complex conversations:** Team members who handle more complex conversations requiring research or investigation may have a higher median response time This chart describes replies directly after customer messages. Use the separate hand-off card to assess how quickly the team answers escalated conversations. ### Human Hand-off Response Time The **Human hand-off response time** card measures wall-clock time from when a chat conversation is escalated to the first customer-visible human reply to that contact, in any conversation. An AI reply does not stop this clock, so a human reply after an AI answer is included. Escalations for the same contact before the first human reply count as one hand-off, even across conversations. Messages sent from the PMS (`issentfromplatform = false`) do not stop the clock because the available data cannot distinguish staff replies from PMS automations. The card shows the average across all answered hand-offs for the team, the team median, and an average for each first responder. The team average is calculated from all answered hand-offs together, not from an average of the per-person figures. It also shows answered hand-offs and hand-offs with no human reply. The latter have no response time and are excluded from the averages, even if an escalation was reviewed or dismissed. The selected date range is based on when the hand-off happened; a hand-off without a reply can later become answered in that same period. This metric does not apply the 48-hour exclusion used by the older median chart. The report considers earlier escalations and human replies before applying the selected date range to each hand-off's first escalation. A later escalation cannot restart an unanswered hand-off from an earlier period. The export includes one row per hand-off with its escalation time, first human reply time if present, responder, elapsed minutes, and answered or no-human-reply status. Only chat escalations with a reliable conversation link are included. ## Automation Rate Automation rate measures the percentage of countable agent decisions that produced an AI send. ### Formula ``` Automation Rate = (Sent agent decisions / Total countable agent decisions) × 100 ``` Answer-and-escalate decisions count as successful AI sends in this headline metric. Use the disposition breakdown to distinguish fully answered decisions from sends that also escalated. ### What Counts as an Escalation The AI escalates a conversation when: * A topic is marked as urgent * The AI needs confirmation or authorization to complete an action * There isn't enough information to provide an adequate response * The message contains attachments the AI can't process ### Improving Your Automation Rate To increase your automation rate: * Add more knowledge to your AI agent about common questions * Create skills for repetitive tasks * Review escalation patterns to identify gaps in AI training For more details on escalation types and how to address them, see the [AI Automation Dashboard](/dashboard/ai-automation-dashboard). ## Resolution Rate Resolution rate measures the share of eligible conversation threads resolved with a sent agent response during the selected period. The overall rate includes threads with human-in-the-loop involvement or escalation; it is not the fully autonomous rate. ### Formula ``` Resolution Rate = (Resolved and sent threads / Threads with an actual autopilot decision) × 100 ``` For each real provider conversation thread, Conduit deterministically selects the latest qualifying actual-autopilot decision. The thread counts toward resolution when the final disposition is `resolved` and the final response was sent. The secondary **Fully autonomous** series uses the same denominator and shows the stricter subset with no known teammate outbound and no escalation or answer-and-escalate during the selected date range. The difference between the overall and fully autonomous rates is the share resolved with a teammate outbound message or escalation (human-in-the-loop or escalated). An escalation does not necessarily mean a teammate replied. ### What Counts * **Included:** Completed, inbound-triggered, non-proactive actual-autopilot decisions linked to a real conversation thread * **Excluded:** Sandbox, copilot, inactive, proactive-only, `no_op`, and unlinked runs * **Inbox filters:** When an inbox type is selected, only conversations in that inbox type are included * **Comparison periods:** The same formula is applied to the comparison date range, then aligned with the selected period on the chart ### Chart Buckets vs. Headline Number The line chart groups conversations by the time of each conversation's latest qualifying AI run. Depending on the selected range, buckets are hourly or daily in the workspace timezone. The headline percentage is calculated from the full selected period: ``` Headline Resolution Rate = Total resolved conversations / Total qualifying conversations × 100 ``` It is not an average of the visible chart buckets. ## Hours Saved Hours saved estimates the total time your AI agent has saved your team by handling messages and calls autonomously. ### Formula ``` Hours Saved = Message Hours + Call Hours Message Hours = (AI messages × Minutes per response) / 60 Call Hours = Total connected call duration (minutes) / 60 ``` * **Minutes per response** defaults to 3 minutes but can be customized in dashboard settings * **Call duration** includes only connected calls (answered or transferred), not missed calls ## Est. Labor Saved Estimated labor saved converts the hours saved into a dollar value based on your configured hourly wage. ### Formula ``` Est. Labor Saved = Hours Saved × Hourly Wage ``` * **Hourly wage** defaults to \$25/hr and can be customized in dashboard settings ## Triage & Context Switch Savings This metric estimates the cost savings from AI handling your inbox, eliminating the overhead of reading, categorizing, and switching between conversations. ### Formula ``` Triage Hours = (Total incoming messages × 1 min per message) / 60 Context Switch Hours = (AI-handled messages × 2 min per switch) / 60 Total Hours = Triage Hours + Context Switch Hours Triage & Context Switch Savings = Total Hours × Hourly Wage ``` * **1 min per message** represents the estimated time to read, categorize, and route an incoming message * **2 min per switch** represents the cognitive overhead of switching between conversations ## Booking Conversion Booking conversion measures the percentage of contacts that resulted in a booked appointment or meeting. ### Formula ``` Booking Conversion = (Contacts with bookings / Total contacts) × 100 ``` ## Booking & Transfer Rate When no custom aggregation attributes are configured, the headline metric on the Capture tab shows the combined booking and transfer rate. ### Formula ``` Booking & Transfer Rate = Booking Conversion Rate + Transfer Rate ``` ## Phone Connection Rate Phone connection rate measures how effectively your outbound calling efforts are reaching contacts. ### Formula ``` Phone Connection Rate = (Contacts who answered or called back / Total contacts called) × 100 ``` A contact is considered "connected" if they answered an outbound call, were transferred, or called back after receiving an outbound call. ## Text Connection Rate Text connection rate measures how effectively your outbound messaging efforts are generating responses. ### Formula ``` Text Connection Rate = (Contacts who responded / Total contacts messaged) × 100 ``` A contact is considered "connected" if they sent at least one incoming message after receiving an outbound message during the selected period. ## Transfer Rate Transfer rate measures the percentage of calls that were escalated to a human agent. ### Formula ``` Transfer Rate = (Calls transferred to humans / Total calls) × 100 ``` ## After-Hours Coverage After-hours coverage measures the percentage of conversations (calls and messages) that occurred outside your configured business hours. ### Formula ``` After-Hours Coverage = (Conversations outside business hours / Total conversations) × 100 ``` * Conversations include both incoming calls and incoming messages * Business hours are configured in your workspace settings * If business hours are not configured, this metric will not be available ## AI Responses A simple count of all outbound messages sent by AI agents (autopilot) during the selected period. ## Escalations Total count of conversations escalated to human agents during the selected period. Escalations include: * Topics marked as urgent * AI needs confirmation or authorization * Insufficient information to respond * Messages with unprocessable attachments *** ## Conversation Insights The conversation insights tab shows per-user and per-conversation metrics. These are the formulas behind each column. ### Positive Conversation Rate Measures the percentage of conversations where the customer had a positive experience. ``` Positive Conversation Rate = (Conversations with CX score ≥ 3.0 / Total conversations with CX scores) × 100 ``` ### CX Score An AI-generated customer experience score on a 1-5 scale, based on conversation sentiment analysis. * **Green (≥ 4.0):** Positive experience * **Amber (≥ 3.0, \< 4.0):** Neutral experience * **Red (\< 3.0):** Negative experience ### AI % The percentage of outgoing messages in a conversation that were sent by AI. ``` AI % = (AI messages / Total outgoing messages) × 100 ``` ### Escalations (per conversation) Count of AI escalation events within a single conversation. Escalations are triggered by: * Topics marked as urgent * AI needs confirmation or authorization * Insufficient information to respond * Messages with unprocessable attachments ### Messages (per conversation) Total count of all messages (incoming + outgoing) in a conversation during the selected period. *** ## Configurable Settings Several metrics depend on configurable values that you can adjust in the dashboard settings: | Setting | Default | Affects | | - | - | - | | Hourly wage | \$25/hr | Est. Labor Saved, Triage & Context Switch Savings | | Minutes per response | 3 min | Hours Saved, Est. Labor Saved | | After-hours multiplier | 1.5× | After-hours calculations | # Devices Source: https://docs.conduit.ai/devices/overview Connect smart locks, thermostats, sensors, and cameras, then manage them with Conduit agents, workflows, Operator, or MCP. Conduit brings connected devices into the same workspace as your properties, reservations, contacts, and operations. Your team can manage devices in the app, let Conduit agents act on them, trigger workflows from device events, or use the device tools through Conduit's MCP server. Supported device types include: * Smart locks and connected access systems * Thermostats * Noise and environmental sensors * Motion and occupancy sensors * Cameras and video doorbells Devices is an add-on. Open **Operations > Devices** to add it to your plan, connect a device account, and sync its devices. You can connect more than one device account to the same workspace. ## Supported Smart Locks Conduit supports connected locks from the following brands: | | | | | - | - | - | | 33 Lock | 4SUITES | Akiles | | Alfred | ASSA ABLOY | August | | dormakaba | Dusaw | Genie | | Hotek | igloohome | KEYINCODE | | KeyNest | Kwikset | Latch | | Lockly | Nuki | SALTO | | Omnitec | Schlage | Sciener | | Sifely | SMONET | Tedee | | Tock Lock | TTLock | Ultraloq | | WELOCK | Wyze | Yacan | | Yale | | | Available actions vary by model and setup. For example, some locks require a compatible bridge or keypad before they can be controlled remotely or accept access codes. If you use RemoteLock today, Conduit generally replaces it. Tell our team which physical lock models you have; in most cases, you can disconnect those locks from RemoteLock and reconnect them directly in Conduit, eliminating the separate RemoteLock subscription. [Contact our team](mailto:support@conduit.ai) to plan the move. Have another device or access system in mind? [Contact our team](mailto:support@conduit.ai) to explore it. We have additional device integrations available beyond this public list and can confirm the right setup for your model. ## Commercial Access Control Systems Conduit also supports commercial access control systems. Compatibility and available credentials depend on the exact controllers, readers, lock hardware, firmware, and licenses installed at your property. [Contact our team](mailto:support@conduit.ai) with your exact hardware specifications so we can confirm the setup. ### Access Grants Access Grants provide time-bound access across one or more doors. They are not limited to access codes. Depending on your hardware, an Access Grant can also issue: * **Cloud keys** for authenticated web or API-based unlocking * **Plastic key cards** for hotel, office, and other card-based systems * **Mobile keys** for Bluetooth-based access * [**Instant Keys**](https://docs.seam.co/use-cases/granting-access/using-instant-keys), shareable unlock links that work without requiring an app download You can combine multiple credential types in the same Access Grant. For example, a guest can receive both an access code and a mobile key for the same stay. Instant Keys require compatible Bluetooth-capable hardware and the appropriate mobile-key licenses. Many commercial access systems are effectively offline at the door and require a Bluetooth credential to unlock. Instead of asking a guest to download and set up a full mobile app, you can send an Instant Key link. Opening the link launches an iOS App Clip or Android Instant App with the Bluetooth key, so the guest can unlock the door immediately. ## What You Can Do ### Manage The Device Fleet * Sync devices from one or more connected accounts * Search and filter by device type, property, and status * Map a device to one or several properties, including shared building entrances * Monitor online status, battery level, lock state, and current readings * Review activity across the workspace or open a single device's history * See a fleet-wide health summary of offline and low-battery devices ### Control Access * Lock or remotely unlock a compatible door * Create ongoing, time-bound, or one-time access codes * Read a newly created code after the lock confirms it * Find the active and past codes on a lock * Revoke a code when a stay ends, a code is exposed, or a vendor's access window closes * Automatically generate a door code for each reservation and publish it to the guest portal ### Backup Codes Backup codes give a guest a second way in when their main door code does not work. Set the default number of backup codes per lock in **Settings > Operations > Devices**. Each lock can use that default or its own number, from **Off** to 10. Manage a lock's backup codes in the **Backup codes** section of its device page. How backup codes work depends on how the lock receives codes: * **Online locks** keep a pool of unused backup codes ready. The **Backup codes** section shows each code's value and status. If the lock is offline, Conduit prepares more codes when it reconnects. * **Offline (algorithmic) locks** do not keep a pool. Offline codes are tied to a time window, so a code is generated only when you assign a backup to a guest. The **Backup codes** section shows no codes for these locks. To give a guest a backup, select **Assign backup**, choose their current reservation, and enter a reason. The code then appears in the lock's access code list, marked **Backup**, with its value. An offline code stays **Pending** until the lock's provider issues it. Conduit removes the backup at checkout, but an offline lock can delay the removal. Guests can also swap to a backup code themselves from the portal, once per lock for each reservation. This is on by default. Turn it off with **Let contacts swap to a backup code from the portal** in **Settings > Operations > Devices**. ### Manage Climate And Sensors * Read temperature, humidity, noise, motion, and occupancy data reported by a device * Read a thermostat's current temperature, target temperature, and HVAC mode * Set a thermostat to heat, cool, `heat_cool` (auto), or off, with a target between 10°C and 32°C * Configure daily quiet hours and a decibel or Noise Risk Score threshold * React to noise, temperature, humidity, smoke, motion, and other sensor events ### Automate Operations Device events can start workflows. Common examples include creating a security task after a noise threshold breach, notifying the team when a lock goes offline or reports a low battery, and checking device conditions before a guest arrives. Agents can also open a high-priority service-recovery task from a device incident and link the relevant device and property automatically. ## Use Devices With Agents Device tools are available to Conduit chat agents, voice agents, workflows, and Operator. Once Devices is enabled, Operator can use device tools. Enable them explicitly for each customer-facing agent that should have access. When an agent is helping a contact, Conduit limits device access to the contact's active stay. Access-code reads are also restricted to that guest's own codes, including when a building entrance is shared by several properties. Common agent jobs include: * Checking whether a lock is online before troubleshooting a lockout * Giving a guest their confirmed door code * Creating temporary access for a guest, housekeeper, or inspector * Locking a door after checkout * Pre-heating or pre-cooling a property before arrival * Checking a noise complaint against live sensor readings * Summarizing offline devices and low batteries for the operations team Remote unlock is off by default and must be allowed by the workspace's device policy. Other device writes also follow your configured agent policies. A newly created access code is not ready until the lock reports it as set; agents never guess or share a code that has not been confirmed. ## Device Tool Reference The following device tools are available to agents and through the full [Conduit MCP server](/mcp/overview). Write tools require a read/write token when called over MCP. | Tool | Type | What it does | | - | - | - | | `list_devices` | Read | Lists locks, thermostats, sensors, and cameras with their property, online status, battery, lock state, and capabilities. | | `get_device_telemetry` | Read | Reads live conditions, sensing capabilities, battery and connectivity, plus recent events. | | `get_device_history` | Read | Reads the timestamped audit trail for lock actions, codes, connectivity, battery, sensor events, thermostat changes, and doorbell rings. | | `create_access_code` | Write | Creates an ongoing, time-bound, or one-time lock code for a guest, housekeeper, or inspector. | | `get_access_code` | Read | Reads one newly created code by ID after the lock confirms it. | | `list_access_codes` | Read | Lists active and past codes on a lock. Contact-facing agents only receive the current guest's own codes. | | `delete_access_code` | Write | Revokes a lock code. | | `set_lock_state` | Write | Locks or remotely unlocks a compatible lock, subject to device policy. | | `set_thermostat` | Write | Changes HVAC mode and, optionally, the target temperature. | | `set_noise_threshold` | Write | Sets a daily quiet-hours window and a decibel or Noise Risk Score threshold. | | `assign_device_property` | Write | Adds a property mapping to a device, or clears all of its mappings. This changes Conduit metadata, not the physical device. | Conduit agents also have the `get-device-health-summary` tool, which returns total devices, counts by type, offline and low-battery lists, and average indoor temperature in one call. Tool names may appear as human-readable titles in the agent builder. MCP uses the exact underscore-separated names shown above. Use `list_devices` first to get the device ID required by the other tools. ## Connect Devices 1. Open **Operations > Devices**. 2. Select **Add Devices** if the add-on is not enabled yet. 3. Select **Connect a device account** and complete the authorization flow. 4. Wait for the authorized devices to sync into the list. 5. Map each device to the property or properties it serves. 6. Enable the required tools on each agent, then review device policies before allowing write actions. To confirm a specific model, discuss a device category not shown here, or plan a larger rollout, [contact support](mailto:support@conduit.ai). # Conduit Start Guide Source: https://docs.conduit.ai/index Set up your Conduit workspace, connect channels, build V3 agents, and move from copilot to autopilot. Looking to get started with Conduit? [Book a demo](https://forms.default.com/717549) or contact us at [support@conduit.ai](mailto:support@conduit.ai) for personalized guidance. ## Overview Conduit gives your team one workspace for customer conversations, AI agents, workflow automation, and operational records. Start by setting up the workspace and channels, then build the V3 agent surfaces that control what the AI knows, how it behaves, and what actions it can take. Invite teammates, configure roles, and set the workspace basics. Bring email, WhatsApp, phone, SMS, widget, and other channels into Conduit. Configure external, internal, and voice agents from the V3 Agents area. ## Set Up The Workspace Everything in Conduit happens in your team's workspace. A workspace contains your members, inboxes, connected channels, Knowledge Base, agents, tools, workflows, records, and settings. Configure the workspace, invite teammates, and decide who can manage agent settings. Organize conversations by inbox, contact type, routing, and custom fields. Admins can invite new members and manage roles from **Settings > Members**. ## Connect Channels And Integrations Connect your communication channels to centralize all customer interactions in one place. Link your support email to centralize all communication in Conduit. Manage WhatsApp inquiries directly in Conduit. Handle calls and SMS alongside other channels. Add a custom chat widget to your company website. Connect business systems and data sources after your channels are working. Sync structured business data that agents can use in conversations. Install apps, agent templates, skill templates, and workflow templates. ## Build The V3 Agent System V3 separates the agent system into focused surfaces. Use each one for the right kind of configuration. Create customer, internal, and voice agents, then configure persona, behavior, triggers, and publish state. Add pages, folders, documents, links, and synced data sources that agents can retrieve as facts. Write reusable instructions that combine policy, process, variables, and tool-use guidance. Enable connection tools, custom Python or JavaScript tools, MCP tools, and per-agent overrides. ## Test And Deploy Validate changes before you let the AI act on its own. Use Conduit's workspace assistant to help inspect, edit, and reason about agent configuration. Test a specific agent with realistic customer, listing, and reservation context. Follow the Connect, Teach, Test, and Deploy loop to expand automation safely. Review what changed for teams moving from the older interface to V3. ## Using the Inbox A clean inbox is still the daily operating surface. Conversations flow through Todo, Follow-Up, and Done, while agent activity, sources, and tool calls give your team visibility into how each response was produced. Learn about the different levels of AI automation and how to progress through them. # MCP Server Source: https://docs.conduit.ai/mcp/overview Connect ChatGPT, Codex, Claude, Cursor, VS Code, or any Model Context Protocol client to your Conduit workspace. Conduit's MCP server is available on the **v3 plan**. Contact [support@conduit.ai](mailto:support@conduit.ai) to enable it for your workspace. ## Overview The [Model Context Protocol](https://modelcontextprotocol.io) is an open standard that lets AI assistants connect to external systems. Conduit's MCP server exposes your contacts, conversations, tickets, calls, knowledge base, and agents as tools any MCP-compatible client can call. Once connected, your AI client can: * Look up contacts, conversations, tickets, calls, reservations, and appointments * Search the knowledge base and read knowledge nodes * Send messages on a conversation or ticket, or to a contact on a specific channel * Inspect and control connected locks, thermostats, sensors, and cameras when the Devices add-on is enabled * Create and manage agents, skills, custom code tools, and contact custom attributes * Manage the Operator's skills (`operatorSettings.skills`), separate from regular agent skills * List workspaces your token has access to The server implements the MCP specification revision `2025-06-18` over **streamable HTTP**. ## MCP Endpoint ```text theme={null} https://api.conduit.ai/v1/mcp ``` Every request includes an `Authorization: Bearer ` header. Workspace-scoped tools (most of them) also require a `workspace_id` argument. ## Authentication Two token types are accepted. Pick the one that matches the client. Interactive clients that want a user-consent flow, for example Claude Desktop, Cursor, VS Code, Claude Code, or Codex. Supports Dynamic Client Registration, so no pre-provisioning is needed. Server-to-server, CI, or CLI use. Generate a `capi_...` token under **Settings > API & MCP** and paste it into the client's bearer-token field. ### OAuth 2.1 Conduit's MCP server advertises itself as an OAuth 2.1 protected resource per [RFC 9728](https://datatracker.ietf.org/doc/html/rfc9728). When a client first POSTs to the MCP endpoint without a token, the server responds with `401` and a `WWW-Authenticate` header pointing at the resource metadata document. Any spec-compliant client will discover the rest automatically. | Metadata | URL | | - | - | | Protected resource metadata | `https://api.conduit.ai/.well-known/oauth-protected-resource/v1/mcp` | | Authorization server | `https://base.conduit.ai/oauth/mcp` | | Authorization server metadata | `https://base.conduit.ai/.well-known/oauth-authorization-server/oauth/mcp` | | Scopes | `mcp:read`, `mcp:write`, `offline_access` | Dynamic Client Registration ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)) is enabled, so clients register themselves on first connect. You sign in with your Conduit account in the browser window the client opens, pick which workspaces to grant access to, and the client caches the resulting access and refresh tokens. ### API tokens API tokens start with the `capi_` prefix and carry either **read-only** or **read/write** access. Write tools (`send_conversation_message`, `patch_contact`, `create_agent`, etc.) require a read/write token. Rotate or revoke tokens under **Settings > API & MCP** at any time. ```bash theme={null} curl -X POST https://api.conduit.ai/v1/mcp \ -H "Authorization: Bearer capi_YOUR_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' ``` ## Connect a Client For the quickest setup in ChatGPT or Codex, [add the Conduit ChatGPT plugin](https://chatgpt.com/plugins/plugin_asdk_app_6a695f24399c819190e2f3b413ff6052). Follow the prompts to sign in to Conduit and choose which workspaces the plugin can access. Once added, the plugin provides five focused, read-only Conduit tools in both ChatGPT and Codex. It does not include the full MCP tool catalog or any write tools. Configure a direct MCP connection to send messages, update records, or use the other tools in the [Tool Reference](#tool-reference). Connect directly from the [Conduit listing in Claude's connector directory](https://claude.ai/directory/connectors/conduit), then complete the OAuth flow in your browser. To add Conduit manually as a custom connector instead: 1. Open **Settings > Connectors** in Claude Desktop 2. Click **Add custom connector** 3. Name: `Conduit`, URL: `https://api.conduit.ai/v1/mcp` 4. Click **Connect** and complete the OAuth flow in your browser Once connected, the Conduit tools show up under the plug icon in any chat. Add the server from the CLI: ```bash theme={null} claude mcp add --transport http conduit https://api.conduit.ai/v1/mcp ``` The first tool call opens a browser for OAuth. Run `/mcp` in any session to see status, reconnect, or list available tools. **Scope.** `claude mcp add` writes to your local config by default. Use `--scope user` to make Conduit available across every project, or `--scope project` to commit a `.mcp.json` your teammates share (each teammate still goes through their own OAuth): ```bash theme={null} claude mcp add --transport http --scope project conduit https://api.conduit.ai/v1/mcp ``` **API token instead of OAuth.** For headless agents or CI, pass the token as a header: ```bash theme={null} claude mcp add --transport http conduit https://api.conduit.ai/v1/mcp \ --header "Authorization: Bearer capi_YOUR_TOKEN" ``` **Pre-approve read-only tools.** Approval prompts on every read get noisy. Allow-list the safe ones in `~/.claude/settings.json` (or `.claude/settings.json` in the project): ```json theme={null} { "permissions": { "allow": [ "mcp__conduit__list_workspaces", "mcp__conduit__list_contacts", "mcp__conduit__get_contact", "mcp__conduit__search_contacts", "mcp__conduit__list_conversations", "mcp__conduit__list_conversation_messages", "mcp__conduit__list_tickets", "mcp__conduit__get_ticket", "mcp__conduit__list_ticket_messages", "mcp__conduit__search_knowledge", "mcp__conduit__get_knowledge_node" ] } } ``` Never allow-list write tools (`send_*`, `patch_*`, `create_*`, `update_*`, `delete_*`). Keep approval prompts on for those. For quick read-only access, [add the Conduit ChatGPT plugin](https://chatgpt.com/plugins/plugin_asdk_app_6a695f24399c819190e2f3b413ff6052). Its five focused tools are also available in Codex. To access the full tool catalog, including write tools, configure Conduit directly through MCP from the CLI: ```bash theme={null} codex mcp add conduit --url https://api.conduit.ai/v1/mcp codex mcp login --scopes mcp:read,mcp:write,offline_access conduit ``` `codex mcp login` opens a browser for OAuth and caches the tokens locally. Restart Codex after adding the server if the tools do not appear in your current session. For API-token auth, point Codex at an environment variable that contains your token: ```bash theme={null} export CONDUIT_API_TOKEN=capi_YOUR_TOKEN codex mcp add conduit --url https://api.conduit.ai/v1/mcp --bearer-token-env-var CONDUIT_API_TOKEN ``` Edit `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project) and add: ```json theme={null} { "mcpServers": { "conduit": { "url": "https://api.conduit.ai/v1/mcp" } } } ``` Restart Cursor. The first tool call opens the OAuth flow in a browser window. For API-token auth, use the `headers` field instead of going through OAuth: ```json theme={null} { "mcpServers": { "conduit": { "url": "https://api.conduit.ai/v1/mcp", "headers": { "Authorization": "Bearer capi_YOUR_TOKEN" } } } } ``` Press `Cmd+Shift+P` (or `Ctrl+Shift+P` on Windows/Linux) and run **MCP: Add server**. Pick **HTTP**, enter `https://api.conduit.ai/v1/mcp`, and name it `conduit`. VS Code writes the entry to `mcp.json`: ```json theme={null} { "servers": { "conduit": { "type": "http", "url": "https://api.conduit.ai/v1/mcp" } } } ``` Sign in through the browser prompt on first use. Invoke tools with `#` in Copilot Chat. Any client that supports MCP streamable HTTP works. Point it at `https://api.conduit.ai/v1/mcp` and either let it walk the OAuth discovery chain or configure an `Authorization: Bearer capi_...` header. For stdio-only clients, use `npx -y mcp-remote https://api.conduit.ai/v1/mcp` as the command. ## Production Setup Four practices that keep MCP usage safe and predictable in real workflows. ### Pin a workspace at the start of each session Almost every tool requires a `workspace_id`. Open each session by anchoring the model to one workspace: ```text theme={null} Use list_workspaces and operate on the "acme-hotels" workspace for the rest of this conversation. ``` The model holds onto that ID in context. Subsequent prompts don't need to repeat it. Without this anchor, the model may guess at workspace IDs or call `list_workspaces` repeatedly. ### Keep approvals on for write tools Read tools are safe to pre-approve in clients that support it. Write tools — anything starting with `send_`, `patch_`, `create_`, `update_`, or `delete_` — should always prompt. Each Conduit tool advertises a `destructiveHint` annotation; well-behaved clients surface it on the approval dialog. A misfired model decision against an allow-listed `send_conversation_message` ships a real message to a real customer. Don't allow-list it. ### Pass an idempotency key on every send Every write tool accepts an `idempotency_key` input (or `Idempotency-Key` HTTP header). Pass a stable UUID per logical send. Clients retry on transient failures, and without a key a retry double-sends. ```json theme={null} { "name": "send_conversation_message", "arguments": { "workspace_id": "wp_...", "conversation_id": "cv_...", "body": "Hi! Quick update on your booking.", "idempotency_key": "9f2c3d1a-..." } } ``` Either tell the model to generate one per send, or set it as a project rule that gets injected into every session. ### Use least-privilege API tokens For non-interactive use cases (CI, server-to-server, scripts), generate a **read-only** `capi_` token and use it everywhere reads are sufficient. Only generate a `read_write` token for the specific session that needs writes, and rotate it after. Tokens are revoked under **Settings > API & MCP** and take effect immediately. ## Example Prompts Generic starting points that work in any MCP-enabled client. Swap names and IDs for your own. ```text theme={null} For the acme-hotels workspace, list every open helpdesk ticket touched in the last 24 hours, group them by inferred topic, and tell me the three most urgent ones with the customer name and a one-line summary. ``` Uses `list_helpdesk_tickets`, `get_helpdesk_ticket`, `list_ticket_messages`. All read-only — no approval prompts if those tools are pre-approved. ```text theme={null} Search the acme-hotels workspace for any conversation where the contact mentioned "double charge" in the last week. Pull the full message thread for the most recent one and show me the timestamps. ``` Useful in terminal-based clients (Claude Code, Codex) where you can immediately jump from the conversation into the relevant code path. ```text theme={null} Pull conversation cv_abc on the acme-hotels workspace. Read the last twenty messages. Draft a reply that addresses the refund question, matches the tone of our previous responses, and cites our refund policy from the knowledge base. Don't send it — just print it. ``` The "don't send" constraint is the safety belt while iterating. Drop it when you're ready and the model will call `send_conversation_message`, which prompts for approval before anything ships. ```text theme={null} Search the knowledge base for any node that mentions our old cancellation policy ("48 hours"). For each match, show me the node title, the path, and the sentence that contains the phrase. ``` Pair with a follow-up that calls `update_knowledge_node` (write tool, prompts for approval) once you've reviewed the list. ## Rate Limits and Errors By default, MCP tool calls are limited to **120 requests per minute per workspace** and share the same workspace-level budget as REST API requests. A `429` response includes a `Retry-After` header. Error responses follow the MCP spec: `content[0].text` holds the error message and `isError: true` is set on tool results. See [Rate Limits](/rate-limits) for details. | Status | Meaning | | - | - | | 401 | Missing, expired, or revoked token | | 403 | Token does not have access to the requested workspace, or lacks `read_write` for a write tool | | 404 | Resource not found in the given workspace | | 429 | Rate limit exceeded | ## Tool Reference The tool list is authoritative inside the server itself. A client that has completed `initialize` and `tools/list` will receive every tool, its input schema, and its annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`). Common tools, grouped by surface: | Surface | Examples | | - | - | | Workspaces | `list_workspaces`, `list_workspace_users`, `search_workspace_users`, `list_workspace_senders`, `list_workspace_whatsapp_templates` | | Contacts | `list_contacts`, `get_contact`, `search_contacts`, `patch_contact`, `create_contact`, `send_contact_message` | | Custom attributes | `list_custom_attributes`, `get_contact_custom_attributes`, `patch_contact_custom_attributes` | | Conversations | `list_conversations`, `get_conversation`, `search_conversations`, `list_conversation_messages`, `send_conversation_message` | | Tickets | `list_tickets`, `get_ticket`, `search_tickets`, `list_ticket_messages`, `send_ticket_message` | | Calls & appointments | `list_calls`, `get_call`, `list_appointments`, `get_appointment` | | Knowledge | `search_knowledge`, `search_knowledge_nodes`, `list_knowledge_nodes`, `get_knowledge_node`, `create_knowledge_node`, `update_knowledge_node`, `delete_knowledge_node` | | Agents & skills | `list_agents`, `get_agent`, `create_agent`, `patch_agent`, `delete_agent`, `run_agent`, `list_skills`, `create_skill`, `patch_skill`, `delete_skill` | | Operator | `list_operator_skills`, `create_operator_skill`, `patch_operator_skill`, `delete_operator_skill` | | Custom tools | `list_custom_tool_runtimes`, `list_custom_tools`, `get_custom_tool`, `create_custom_tool`, `update_custom_tool`, `delete_custom_tool` | | Per-agent tools | `list_agent_tools`, `set_agent_tool_access` | | Per-agent connections | `list_agent_connections` | | Inbox types | `list_inbox_types` | | Workflows | `list_workflows`, `get_workflow`, `get_workflow_schema`, `create_workflow`, `update_workflow`, `list_workflow_executions`, `list_workflow_execution_events` | | Insights | `get_automation_rate`, `get_resolution_rate` | | Portals | `list_portal_sessions`, `get_portal_session`, `list_verification_rules`, `create_verification_rule`, `reorder_verification_rules`, `list_portal_offer_catalog`, `create_portal_offer`, `list_portal_template_catalog`, `create_portal_template`, `patch_portal_template` | | Devices | `list_devices`, `get_device_telemetry`, `get_device_history`, `create_access_code`, `get_access_code`, `list_access_codes`, `delete_access_code`, `set_lock_state`, `set_thermostat`, `set_noise_threshold`, `assign_device_property` | The `operator_*` tools manage the **Operator's** skills (the knowledge cards the Operator assistant uses), which are separate from the regular agent skills managed by `*_skill`. They read and write `operatorSettings.skills` with the same workspace scoping and `Manage Agents` permission as the Operator settings screen in the app, and they are MCP-only (there is no matching REST route). Every `operator_*` tool takes a required `workspace_id`; writes need a read/write token and the `Manage Agents` permission. The portal tools read guest sessions and build verification rules, offers, and page templates for the Portals add-on. They need the add-on enabled plus `Access Portals` for reads and `Manage Portals` for writes. See the [Portals API reference](/api-reference/portals/overview) for session submissions, step types, layout blocks, and worked examples. The device tools require the Devices add-on. Read tools can inspect device state and history; write tools can manage access codes, locks, thermostats, noise thresholds, and property mappings. Device actions also follow workspace policy and contact scope. See [Devices](/devices/overview) for supported locks, agent behavior, and the full tool guide. See the [REST API reference](/api-reference/introduction) for the underlying resource shapes. MCP tools share the same schemas. To author a custom tool over MCP, call `list_custom_tool_runtimes` first. It returns the entrypoint signature, required return shape, and available dependencies for Python and JavaScript, so the model writes `code` that passes validation on the first try. See the [Custom Tools overview](/api-reference/custom-tools/overview) for the full contract. ## Troubleshooting On a Claude Team plan, members without permission to enable connectors see a **Request** button for Conduit instead of **Connect**. Click **Request** to send the connector to your organization's admins for review. The button changes to **Requested** while approval is pending. An admin must approve the connector before you can connect it. See Claude's [guide to requesting a connector on a Team plan](https://claude.com/docs/connectors/directory#requesting-a-connector-on-a-team-plan) for more details. The OAuth access token expired and the client does not have a refresh token. Disconnect and reconnect the server. If you're using an API token, it may have been rotated or revoked. Check **Settings > API & MCP**. The token is valid but not scoped to any workspace. For OAuth, remove the Conduit connector in your client and reconnect, making sure to grant at least one workspace during consent. For API tokens, confirm the token is attached to the right workspace. API tokens default to read-only. Create a new token with read/write access, or use an OAuth client where you consented to the `mcp:write` scope. Some clients do not support Dynamic Client Registration or do not follow the `WWW-Authenticate` resource metadata pointer. In that case, use an API token instead, or point the client directly at the authorization server URLs in the [Authentication](#authentication) section. The connection succeeded but the client hasn't refreshed its tool list. Disconnect and reconnect, or restart the client. In Claude Code, run `/mcp` to force a reconnect. ## Related * [Conduit ChatGPT plugin](https://chatgpt.com/plugins/plugin_asdk_app_6a695f24399c819190e2f3b413ff6052) * [Model Context Protocol specification](https://modelcontextprotocol.io) * [REST API reference](/api-reference/introduction) * [Authorization flow (MCP docs)](https://modelcontextprotocol.io/docs/tutorials/security/authorization) # Tool Permissions Source: https://docs.conduit.ai/mcp/tool-permissions Which Conduit MCP tools read data, which change it, and which take consequential actions that need approval every time. Every Conduit MCP tool falls into one of three classes. Use them to decide which tools a client may run without asking. | Class | What it does | Recommended approval | | - | - | - | | **Read** | Retrieves information. No data, account state, or permissions change. | Safe to always allow. | | **Write** | Creates or changes data in your Conduit workspace. Can be undone or edited afterwards. | Ask on first use; always allow is acceptable. | | **Sensitive write** | Sends a message or email to someone outside your team, changes physical access to a property, accepts or declines a guest's reservation change, books or changes an appointment with a contact, runs or schedules an agent or custom code that can act on its own, or permanently deletes data. | Ask every time. Never always allow. | The `readOnlyHint` annotation on each tool matches its class: `true` for Read, `false` for both write classes. A tool that both reads and writes is classified as a write. ## Connection permissions The OAuth consent screen lets you choose **Read only** even when the client asks for write access. A read-only connection can call Read tools only; every write tool returns an error result (`isError: true`) with code `forbidden`. API tokens follow the same rule: a read-only `capi_` token rejects every write tool. ## Search mode OAuth and API-token connections list two tools, `search_tools` and `call_tool`, and reach every tool below through them. | Tool | Class | | - | - | | `search_tools` | Read | | `call_tool` | Takes the class of the tool it calls. A client that approves per tool name should treat `call_tool` as a sensitive write. | ## Sensitive write These tools act on people or property outside Conduit, or cannot be undone. `send_conversation_message` and `send_ticket_message` accept an `idempotency_key`, but most channels do not yet use it to block a duplicate. Do not retry a send that may have succeeded. | Area | Tools | | - | - | | Agents | `delete_agent`, `delete_agent_guardrail`, `delete_agent_trigger`, `run_agent` | | Contacts | `delete_custom_attribute` | | Conversation tags | `delete_conversation_tag` | | Conversations | `send_conversation_message`, `send_message`, `send_system_email` | | Custom tools | `delete_custom_tool`, `run_custom_tool` | | Devices | `assign_backup_access_code`, `create_access_code`, `delete_access_code`, `set_lock_state`, `update_access_code` | | Listings | `delete_listing_group` | | Operator skills | `delete_operator_skill` | | Portals | `delete_portal_template`, `delete_verification_rule` | | Reservations and appointments | `respond_to_reservation_alteration` | | Schedules | `schedule_cron`, `schedule_wake` | | Skills | `delete_skill` | | Tasks | `task_automation_delete`, `task_delete`, `task_property_remove_template`, `task_template_delete` | | Tickets | `delete_ticket_note`, `send_ticket_message` | | Voice agents | `delete_voice_agent` | ## Write | Area | Tools | | - | - | | Agents | `create_agent`, `create_agent_guardrail`, `create_agent_trigger`, `patch_agent`, `patch_agent_guardrail`, `patch_agent_trigger`, `set_agent_skill_access`, `set_agent_tool_access`, `simulate_conversation` | | Call groups | `create_call_group`, `patch_call_group` | | Contacts | `contact_update_custom_field`, `create_contact`, `create_custom_attribute`, `create_custom_attribute_section`, `patch_contact`, `patch_contact_custom_attributes`, `patch_custom_attribute`, `patch_custom_attribute_section`, `pause_contact_ai`, `resume_contact_ai` | | Conversation tags | `create_conversation_tag`, `patch_conversation_tag` | | Conversations | `assign_conversation`, `leave_note` | | Custom tools | `create_custom_tool`, `update_custom_tool` | | Devices | `assign_device_property`, `set_noise_threshold`, `set_thermostat` | | Escalations | `assign_escalation`, `resolve_escalation` | | Google Drive | `import_drive_file`, `set_drive_split_mapping` | | Insights | `generate_pdf`, `query_insights` | | Knowledge sources | `cancel_knowledge_source_sync`, `set_knowledge_source_sync` | | Listings | `add_listings_to_listing_group`, `create_listing_group`, `set_listing_active` | | Operator skills | `create_operator_skill`, `patch_operator_skill` | | Portals | `archive_portal_guide`, `archive_portal_offer`, `archive_portal_template`, `create_portal_guide`, `create_portal_offer`, `create_portal_template`, `create_verification_rule`, `duplicate_portal_guide`, `duplicate_portal_template`, `get_portal`, `patch_portal_brand_kit`, `patch_portal_guide`, `patch_portal_offer`, `patch_portal_template`, `patch_verification_rule`, `reorder_portal_guides`, `reorder_verification_rules`, `restore_portal_guide`, `restore_portal_offer`, `restore_portal_template`, `update_portal` | | Schedules | `schedule_cancel` | | Skills | `create_skill`, `patch_skill` | | Tasks | `task_add_comment`, `task_add_requirements`, `task_attach_image`, `task_attach_message_media`, `task_create`, `task_finalize_image_upload`, `task_prepare_image_upload`, `task_set_assignee`, `task_set_custom_fields`, `task_set_due_at`, `task_set_requirement`, `task_update`, `task_update_status`, `task_automation_create`, `task_automation_set_enabled`, `task_automation_update`, `task_property_apply_template`, `task_property_create_area`, `task_property_set_category_assignee`, `task_property_set_checklist_assignee`, `task_property_set_checklist_estimated_time`, `task_property_update_checklist`, `task_recurring_automation_create`, `task_recurring_automation_set_enabled`, `task_recurring_automation_update`, `task_template_create`, `task_template_create_area`, `task_template_update` | | Tickets | `add_ticket_tag`, `assign_ticket`, `close_ticket`, `create_ticket_note`, `remove_ticket_tag`, `reopen_ticket`, `resolve_ticket`, `update_ticket_note` | | Voice agents | `create_voice_agent`, `patch_voice_agent` | | Workflows | `apply_workflow_edits`, `clone_workflow`, `create_workflow`, `create_workflow_folder`, `move_workflow_to_folder`, `update_workflow` | ## Read | Area | Tools | | - | - | | Agent runs | `get_agent_run`, `get_agent_runs_by_session_id`, `get_agent_trace`, `list_agent_runs`, `list_agent_sessions` | | Agent triggers | `get_trigger_event` | | Agents | `get_agent`, `list_agent_connections`, `list_agent_guardrails`, `list_agent_tools`, `list_agent_triggers`, `list_agents` | | Analytics | `describe_bigquery_tables`, `execute_bigquery_query` | | Billing | `get_billing_usage` | | Calls | `get_call`, `list_airbnb_transactions`, `list_calls` | | Contacts | `contact_list_custom_fields`, `get_contact`, `get_contact_allocation`, `get_contact_custom_attributes`, `list_contact_appointments`, `list_contact_calls`, `list_contact_helpdesk_tickets`, `list_contact_reservations`, `list_contact_tickets`, `list_contacts`, `list_custom_attribute_sections`, `list_custom_attributes`, `search_contacts` | | Conversation tags | `get_conversation_tag`, `list_conversation_tags` | | Conversations | `get_channels_for_contact`, `get_chat_history_by_channel`, `get_chat_history_by_contact`, `get_conversation`, `get_message_templates`, `list_conversation_assignment_events`, `list_conversation_messages`, `list_conversations`, `list_message_senders`, `search_conversations` | | Custom tools | `get_custom_tool`, `list_custom_tool_runtimes`, `list_custom_tools` | | Devices | `get_access_code`, `get_device_history`, `get_device_telemetry`, `list_access_codes`, `list_devices` | | Escalations | `list_escalations` | | Google Drive | `get_drive_file`, `list_drive_connections`, `list_drive_files`, `propose_drive_split_mapping`, `search_drive_files` | | Helpdesk | `get_helpdesk_ticket`, `list_helpdesk_tickets` | | Insights | `get_automation_rate`, `get_resolution_rate` | | Knowledge sources | `list_knowledge_sources` | | Listings | `check_listing_availability`, `get_listing`, `list_listing_cities`, `list_listing_group_listings`, `list_listing_groups`, `list_listings`, `search_listing_availability` | | Local recommendations | `get_directions`, `google_places_recommendations` | | Operator skills | `list_operator_skills` | | Portals | `get_checkin_status`, `get_customer_portals`, `get_portal_brand_kit`, `get_portal_guide`, `get_portal_offer`, `get_portal_session`, `get_portal_template`, `get_verification_rule`, `list_portal_guides`, `list_portal_offer_catalog`, `list_portal_offers`, `list_portal_sessions`, `list_portal_template_catalog`, `list_verification_rules` | | Reservations and appointments | `get_appointment`, `get_reservation`, `list_appointments`, `list_reservation_alterations`, `list_reservations`, `present_booking_checkout` | | Schedules | `schedule_list` | | Skills | `get_skill`, `list_skills` | | Tasks | `task_get`, `task_list`, `task_list_categories`, `task_list_custom_fields`, `task_list_statuses`, `task_resolve_send_target`, `task_automation_list`, `task_property_list_category_assignees`, `task_property_list_checklists`, `task_template_list`, `task_template_list_areas` | | Tickets | `get_chat_history_by_ticket_id`, `get_ticket`, `get_ticket_detail`, `get_ticket_note`, `list_ticket_events`, `list_ticket_messages`, `list_ticket_notes`, `list_tickets`, `search_tickets` | | Voice agents | `get_voice_agent`, `list_voice_agents` | | Workflows | `get_workflow`, `get_workflow_outline`, `get_workflow_resource_references`, `get_workflow_schema`, `get_workflow_step`, `get_workflow_step_references`, `get_workflow_step_schema`, `list_workflow_execution_events`, `list_workflow_executions`, `list_workflow_folders`, `list_workflows`, `preview_workflow_clone`, `preview_workflow_edits` | | Workspaces | `list_inbox_types`, `list_inboxes`, `list_workspace_senders`, `list_workspace_users`, `list_workspace_whatsapp_templates`, `list_workspaces`, `search_workspace_users` | ## Knowledge, booking, and web tools These tools come from Conduit's knowledge service and appear in `search_tools` alongside the tools above. | Class | Tools | | - | - | | Sensitive write | `book_appointment`, `cancel_appointment`, `confirm_booking`, `delete_knowledge`, `delete_source`, `reschedule_appointment` | | Write | `bulk_set_knowledge_scope`, `create_booking_link`, `create_directory`, `create_knowledge`, `edit_knowledge`, `ingest_file`, `ingest_link`, `ingest_structured`, `move_directory_contents`, `move_knowledge`, `rename_directory`, `set_knowledge_scope` | | Read | `find_similar_pages`, `get_appointments`, `get_booking_calendar_availability`, `get_knowledge`, `get_knowledge_scope_job`, `get_schedule`, `health_check`, `knowledge_search`, `list_knowledge`, `semantic_knowledge_search`, `web_answer`, `web_search` | # How Conduit Agents Work Source: https://docs.conduit.ai/overview/how-conduit-agents-work Conduit is a customer service agent company that operates fully horizontally - transparent, trainable, and fully controllable. Conduit is a customer service agent company that operates fully horizontally, serving teams across every industry. The platform is designed to be transparent, trainable, and fully controllable, addressing a key limitation of typical AI tools by being the opposite of a "black box"—users can inspect reasoning, see sources, and make reliable updates to agent behavior. ## Four Core System Components ### 1. Inbox — The Mouth * Unified conversation threads per contact across all channels (email, SMS, WhatsApp, voice, Airbnb, live-chat) * AI responses are transparent, showing reasoning and sources * Users can approve, edit, or teach the agent directly inline ### 2. Build Surfaces — The Brain * **Agents** define the worker, its persona, tool access, skills, behavior, triggers, and publish state * **Knowledge** stores factual pages, folders, documents, links, and synced sources * **Skills** store reusable process instructions and tool-use guidance * **Tools** let agents take actions and access live systems * **Operator** helps teams inspect and update workspace configuration * **Sandbox** tests agent behavior before deployment ### 3. Workflows — The Arms & Legs Three workflow types automate communication: * **Proactive workflows**: Scheduled or triggered outreach * **Routing workflows**: Direct details to appropriate systems or team members * **Triage workflows**: Escalate to humans when needed, then auto-close ### 4. Dashboards — The Nervous System * Live metrics on automation rates, escalation reasons, and sentiment * All charts connect to raw conversations for quick adjustments ## Deployment Model The system works across any industry, launching with customizable playbooks and intents. Most teams go live within a week and can customize brand voice, policies, enable/disable workflows, and write custom API functions. Configure external, internal, and voice agents in V3. Manage the facts your agents can retrieve. Write reusable process and tool-use instructions. Control what actions agents can take. ## Key Differentiators Full visibility into AI decision-making Users set rules, knowledge, and escalation paths One agent across all channels All automations tracked to real conversations # Inside the AI Engine Source: https://docs.conduit.ai/overview/inside-the-ai-engine A technical walkthrough of how a Conduit agent turns an incoming message into a response - retrieval, Skill matching, tool calls, and Guardrails. [How Conduit Agents Work](/overview/how-conduit-agents-work) explains the four system components: Inbox, Build Surfaces, Workflows, and Dashboards. This page goes one level deeper and follows a single message through the engine, showing how the pieces you configure under **Agents** - [Knowledge](/agent-hub/knowledge-base), [Skills](/agent-hub/skills), [Tools](/agent-hub/tools), Persona, Guardrails, and Behavior - actually get used at response time. This is the "how it works" companion to How Conduit Agents Work. If you haven't read that page yet, start there for the product-level picture before coming back here for the mechanics. ## The Response Flow Every reply starts the same way: something triggers the agent, and the agent works through its configuration in order before a message goes out. A customer agent picks up a new inbox message. An internal agent picks up a manual action, an Operator request, or an internal channel event. A voice agent picks up a call on its configured phone number. See [Triggers](/agent-hub/agents#triggers) for how agents get attached to a source. The agent looks at the conversation and pulls in the [Knowledge](/agent-hub/knowledge-base) pages, folders, and synced sources relevant to what's being asked - scoped to the listing, entity, or business object the conversation is about when your workspace uses scoping. If the situation matches a conditional playbook, the agent applies that [Skill](/agent-hub/skills): the trigger condition, the decision steps, and the expected behavior for that scenario. A Skill can itself reference other Skills and Knowledge pages instead of repeating them. When the matched Skill calls for an action, the agent uses one of its assigned [Tools](/agent-hub/tools) - a connection tool, a custom tool, an MCP tool, a built-in tool, or an AI-triggered workflow exposed as a tool. Before a draft becomes a reply, it's checked against the agent's Guardrails - the hard boundaries it must not cross - and shaped by its Persona for role, tone, and formatting. The agent applies its Behavior settings - working hours, response delay, escalation rules - and either sends the message or hands the conversation to a human. ## Retrieval: Where Facts Come From Knowledge is organized as a folder tree of pages, folders, and source-backed files. When a message comes in, the agent isn't searching your entire workspace blindly - it's pulling in the pages relevant to the question, including any Knowledge that a matched Skill references directly. Composable Knowledge keeps this retrieval clean: a global page (like a cancellation policy) stays the source of truth, and scoped pages reference it and add only local exceptions, instead of duplicating the whole policy per listing or product. That means retrieval surfaces one coherent answer instead of several conflicting copies of the same fact. Source-backed Knowledge (documents, links, synced integrations) goes through the same retrieval path once it's indexed. Content still in a **Syncing** or **Waiting on quota** state isn't available to retrieve yet - see [Sync Status](/agent-hub/knowledge-base#sync-status). ## Matching The Right Skill Skills are conditional: they apply when the current scenario matches their trigger, not on every message. An agent only draws from the Skills assigned to it in its Skills tab, so narrowing what's assigned to an agent is part of narrowing what it can match against. A good Skill is specific enough to trigger in the right scenario and narrow enough that it doesn't compete with unrelated Skills - see [Maintenance](/agent-hub/skills#maintenance). When a Skill's scenario depends on a reusable sub-process (escalation, refunds, rescheduling), it references that Skill by name rather than re-describing it, and the agent follows the chain at match time. ## Calling Tools Inside A Skill A matched Skill tells the agent when to act, and the assigned [Tools](/agent-hub/tools) tell it how. Each tool's description is part of the instruction surface the agent reads at call time - what the tool does, when to use it, what information to collect first, and what to do if the call fails or succeeds. That's why tool descriptions in Conduit are written for the model, not just for a human reading a settings page. Tool access is scoped per agent: granting a tool to one agent doesn't grant it to another, and Operator has its own separate tool settings from any customer-facing agent. Keeping tool access narrow keeps this step focused - an agent performs better calling from a short, relevant list of tools than from every tool available in the workspace. ## Guardrails And Behavior Before Sending Guardrails and Behavior do different jobs at this stage: * **Guardrails** are hard boundaries, checked against every response regardless of which Skill or tool produced it. * **Persona** shapes tone, role, and formatting so the reply sounds like your agent. * **Behavior** controls the deployment mechanics around the reply - escalation rules, working hours, response delay, structured output, and hooks that can call tools, HTTP endpoints, LLM handlers, or other agents before and after a run. Escalation rules decide which messages get handed to a human instead of answered automatically, and Hours sets the agent's working hours - see [Behavior Settings](/agent-hub/agents#behavior-settings). ## Why This Is Transparent Because retrieval, Skill matching, tool calls, and Guardrail checks are discrete steps rather than one opaque pass, Conduit can show you which Knowledge pages it pulled in, which Skill it matched, and which tools it called for any given reply. That's what "transparent, showing reasoning and sources" means in practice: you can inspect the path a response took, and approve, edit, or teach the agent directly from the Inbox when it should have taken a different one. The product-level picture: Inbox, Build Surfaces, Workflows, and Dashboards. Manage the facts your agents retrieve. Write reusable process and tool-use instructions. Control what actions agents can take. # The 5 Levels of AI Automation Source: https://docs.conduit.ai/overview/the-5-levels-of-ai-automation Conduit's framework for understanding AI's transformative role in customer service - from assistant to strategist, from task execution to system design. The current conversation around AI in the workplace is broken. We're told AI exists to "automate repetitive tasks so humans can focus on more important work," but this framing is shallow—it treats AI as just another productivity tool. History tells a different story. Every major leap in automation (printing press, steam engine, internet) hasn't just replaced work; it has elevated people into new roles, transforming *what* we do, *how* we do it, and what we value. AI represents the next leap. At Conduit, a customer service agent company that operates fully horizontally, AI's role in customer service isn't merely about saving time—it fundamentally changes the nature of work itself. The framework used to map this transformation is **The 5 Levels of AI Automation**: a progression from assistant to strategist, from task execution to system design. *** ## Level 0: The Co-Pilot Where most businesses begin. The AI supports you while you maintain full control. It drafts responses, finds information, translates messages, and suggests actions—making workflows faster and smoother while you handle every conversation. You remain in the driver's seat; the AI is a skilled assistant, not yet a partner. Most AI software today operates at this level, though Conduit positions this as only the starting point toward full automation. *** ## Level 1: The Teacher The first real shift occurs here. You begin letting the AI handle simple, repetitive conversations end-to-end. Your role transforms from replying to teaching. You correct mistakes, approve good work, and provide examples. Performance is measured less by conversation volume and more by how well you develop your AI "employee"—your first step into management, moving from executor to mentor. *** ## Level 2: The Builder From teaching to designing. The AI handles most conversations while performing actions: updating systems, triggering workflows, booking appointments, filing requests. Your role becomes **design and expand** these capabilities. You create workflows, establish procedures, and connect tools and data sources so the AI acts confidently. You're building the operational foundation the AI operates on. *** ## Level 3: The AI Orchestrator Full-scale transformation. The AI manages most conversational operations—routing messages, answering and making calls, resolving requests, escalating only when needed, driving multi-step workflows across channels. Your job shifts from direct execution to orchestration. Like a maestro, you don't play individual notes; you coordinate agents, tools, and processes in harmony. You hire and train people to design, monitor, and improve flows—not answer every message. *** ## Level 4: The AI Director (The Future) The interface disappears. You speak to your AI as you would a trusted executive. It manages its own growth, monitors performance, and surfaces only insights and decisions requiring your input. It reports where the system excels, where it falls short, recommends changes, and implements them. You've delegated an entire business function to an autonomous operator. *** ## The Journey Moving from Level 0 to Level 4 redefines work itself: * From **task-doers** to **teachers** * From **teachers** to **builders** * From **builders** to **orchestrators** * And ultimately, to **strategists** working alongside autonomous AI leaders Conduit is designed to guide teams in any industry through each stage, providing tools, visibility, and control to evolve your role and business as AI becomes an integral, trusted team member. # PII Redaction Source: https://docs.conduit.ai/privacy/pii-redaction Automatically detect and redact personally identifiable information from conversations before they reach AI models. ## Overview Conduit's PII redaction system automatically detects and masks sensitive personal information in customer conversations before they are processed by AI models. This ensures that private data like phone numbers, email addresses, and social security numbers are never exposed to external AI services. When enabled, PII values are replaced with tokens (e.g., `[REDACTED_EMAIL_1]`) before being sent to AI, and then restored in the final response—maintaining conversation context while protecting sensitive data. ## How It Works The PII redaction system uses a three-step process: 1. **Detection** - Scans incoming messages for PII patterns using regex-based matching 2. **Redaction** - Replaces detected PII with unique tokens (e.g., `[REDACTED_PHONE_1]`) 3. **Restoration** - After AI processing, restores original values in the response This approach ensures AI models never see actual customer data while maintaining natural conversation flow. ## Supported PII Types Conduit detects and redacts the following categories of personal information: | Category | Examples | What's Detected | | - | - | - | | **Contact Information** | Emails, phone numbers, addresses, URLs | `john@example.com`, `+1 (555) 123-4567`, `123 Main Street` | | **Government Identifiers** | Social Security Numbers | `123-45-6789` | | **Financial Information** | Credit/debit card numbers | `4111-1111-1111-1111` | | **Person Name** | Individual names | Configurable per workspace | | **Date of Birth** | Birth dates | Configurable per workspace | | **Customer Account Number** | Account identifiers | Configurable per workspace | | **Security Credentials** | Passwords, PINs | Configurable per workspace | | **Health Information** | Medical IDs, healthcare data | Configurable per workspace | ## Enabling PII Redaction ### Workspace-Level Configuration 1. Navigate to **Settings** > **Privacy** 2. Toggle **PII Redaction** to enable 3. Click **Configure** to customize which PII categories to redact When enabling or disabling PII redaction, the change applies to all AI-powered features in your workspace, including: * AI-assisted message responses * Phone call transcripts and summaries * Workflow automations * Knowledge base queries ### Selecting PII Categories You can choose exactly which types of PII to redact: 1. Click **Configure PII Types** in the privacy settings 2. Select or deselect individual categories 3. Use **Select All** or **Deselect All** for bulk changes 4. Save your preferences By default, all PII categories are enabled when you turn on PII redaction. You can then customize which types to exclude based on your needs. ## Detection Patterns ### Contact Information **Email Addresses** * Standard format: `user@domain.com` * Obfuscated format: `user[dot]name[at]example[dot]com` **Phone Numbers** * International format: `+1 555-123-4567` * Various separators: `(555) 123-4567`, `555.123.4567` * Minimum 6 digits with optional country code **Street Addresses** * US-style addresses: `123 Main Street`, `456 Oak Ave` * Recognizes common suffixes: Street, St, Road, Rd, Avenue, Ave, Boulevard, Blvd, Drive, Dr, Lane, Ln, Court, Ct ### Government Identifiers **Social Security Numbers** * Standard format: `XXX-XX-XXXX` ### Financial Information **Credit/Debit Cards** * 13-16 digit card numbers * Various formats with spaces or dashes ## Token Format Redacted values are replaced with descriptive tokens that indicate the type and sequence: ``` [REDACTED_EMAIL_1] [REDACTED_PHONE_2] [REDACTED_SSN_1] [REDACTED_CARD_1] [REDACTED_ADDRESS_1] ``` **Token Consistency**: The same PII value always produces the same token within a conversation. If a customer mentions their email twice, both instances become `[REDACTED_EMAIL_1]`, helping AI understand the relationship. ## Integration Points PII redaction is automatically applied across all AI-powered features: ### AI Message Responses Messages are redacted before being sent to AI models for generating responses. The AI sees tokens instead of actual values, then responses are restored with original data. ### Phone Transcripts Call transcripts, summaries, and metadata are processed through PII redaction before storage and AI analysis. ### Workflows Any workflow step that involves AI processing respects your PII redaction settings. ### Knowledge Base Queries to your knowledge base are redacted before processing. ## Best Practices Begin with comprehensive protection, then selectively disable categories only if needed for your specific use case. Before going live, test PII redaction with various message formats to ensure detection works as expected for your customer communication patterns. Periodically review AI-generated responses to verify that PII is being properly restored and conversations remain natural. Match your PII category selections to your industry's regulatory requirements (HIPAA, PCI-DSS, GDPR, etc.). ## Limitations * **Language support**: Detection patterns are optimized for English language formats * **Custom patterns**: Currently, custom PII patterns cannot be added—only the built-in categories are available * **Person names**: Names require explicit category enablement and may not be automatically detected without additional context ## Frequently Asked Questions No. The AI receives contextual tokens that indicate relationships (same email referenced twice = same token), and original values are restored in the final response. Most customers see no difference in response quality. Token mappings are stored temporarily for response restoration, then discarded. Original PII values are never stored by AI processing systems. PII redaction is a workspace-wide setting. Individual conversations cannot bypass redaction when it's enabled. While the system catches most common PII formats, edge cases may occur. For highly sensitive environments, consider combining PII redaction with additional data handling policies. # Rate Limits Source: https://docs.conduit.ai/rate-limits Request limits for the Conduit API and MCP server. Conduit rate-limits API and MCP usage to keep workspace data access predictable for every customer. ## Default Limit By default, Conduit allows **120 requests per minute per workspace** across REST API requests and workspace-scoped MCP tool calls. Some workspaces may have higher limits based on plan or entitlement. Contact [support@conduit.ai](mailto:support@conduit.ai) if your integration needs sustained higher throughput. ## Shared API and MCP Budget REST API requests and MCP tool calls share the same workspace-level rate limit. For example, calls to `GET /v1/reservations` and MCP tools that read reservations count toward the same workspace budget. Requests that do not target a workspace yet, such as listing accessible workspaces or MCP initialization, are limited separately per token at the same default rate. ## Handling 429 Responses When a request exceeds the limit, Conduit returns `429 Too Many Requests` and includes a `Retry-After` header with the number of seconds to wait before retrying. Use exponential backoff with jitter for automated retries, and avoid retrying write requests unless you provide an idempotency key. # Airbnb messaging Source: https://docs.conduit.ai/setting-up-conduit/airbnb-messaging Understand why Airbnb rejects messages containing contact details, external links, or off-platform booking and payment language. ## Why Airbnb may reject a message If a send fails with an error like **"You cannot send this message at this time. Please remove..."**, Airbnb rejected the message before delivery. Conduit shows the reason returned by Airbnb, but cannot override Airbnb's filter. Messages sent from Conduit are subject to Airbnb's [Off-Platform and Fee Transparency Policy](https://www.airbnb.com/help/article/2799). Among other requirements, Airbnb keeps pre-booking communication on Airbnb and restricts requests to book, pay, or continue the conversation outside its platform. A rejected message is not partially delivered. Rewrite it and send it again. ## Common content Airbnb asks you to remove Airbnb may identify a specific item or reject the full message based on its wording and context. Common triggers include: | Content | Generalized examples | | - | - | | Contact details | Phone numbers, email addresses, and mailing or street addresses | | External websites and apps | Website addresses, map links, guest portals, direct-booking sites, and payment links | | Other communication channels | WhatsApp, Instagram, Facebook, SMS, or instructions to contact the host elsewhere | | Off-platform booking or payment | Direct-booking offers, bank transfers, PayPal, fees paid on another site, or discounts for booking outside Airbnb | | Redirect language | "We'll email you," "we'll follow up through another channel," "find us online," or "we'll send the link by SMS" | Airbnb can reject the entire message even when it does not quote a single phone number, address, or website. This often happens when the message implies that the guest should move the conversation, booking, or payment elsewhere. ## Rewrite and resend the message 1. Remove every item named in the error and the sentence that directs the guest away from Airbnb. 2. Keep pre-booking questions and communication in the Airbnb conversation. 3. Keep reservation payments and changes in Airbnb's supported payment and reservation tools. 4. For information that Airbnb permits after booking, follow Airbnb's current policy and use its supported arrival and reservation fields where possible. 5. Send the revised message again from Conduit. Do not disguise contact details by adding spaces or replacing symbols with words. Airbnb may still detect them, and changing the formatting does not make off-platform communication or payment compliant with its policy. ## Rewrite examples | Avoid | Use instead | | - | - | | "Message us on WhatsApp at our phone number." | "Please continue messaging us here on Airbnb." | | "Pay the fee by bank transfer or on our website." | "Please use Airbnb's payment and reservation tools. We can help you here if you have questions." | | "Visit our website for the details." | "Tell us what information you need, and we'll help you here on Airbnb." | | "We'll email or text you the link." | "We'll provide the information we can through Airbnb." | If Airbnb names the full message instead of one item, shorten the reply and remove any wording about another channel, external website, direct booking, or off-platform payment. If policy-compliant content continues to be rejected, contact Airbnb Support because Airbnb controls the filter and its exceptions. # Billing Source: https://docs.conduit.ai/setting-up-conduit/billing Manage your Conduit subscription, view usage, and download invoices. To understand how usage is calculated, see [How credits work](/setting-up-conduit/credits). ## Viewing and downloading invoices You can access your billing history and download past invoices directly from the Conduit settings. 1. Navigate to **Settings > Billing**. 2. Find the invoice you want to view. 3. Click **View invoice** to open it. 4. From the invoice page, you can download a PDF copy for your records. If you have questions about a charge or need help with your billing, contact [support@conduit.ai](mailto:support@conduit.ai). # Connect Airbnb Source: https://docs.conduit.ai/setting-up-conduit/connect-airbnb Connect the correct Airbnb host account to Conduit for reservation syncing and guest messaging. Conduit supports two connection models: * **Airbnb as your PMS:** connect each Airbnb host account as a primary account. Conduit syncs its listings, reservations, and guest messages. You can connect as many primary Airbnb accounts as you need. * **Another PMS with Airbnb messaging:** keep Guesty, Streamline, or another PMS as the workspace's primary property system, then connect as many Airbnb messaging accounts as you need. ## Choose a connection model | Workspace setup | Airbnb primary accounts | Airbnb messaging accounts | | - | -: | -: | | Guesty, Streamline, or another non-Airbnb PMS | None | Unlimited | | Airbnb as the PMS | One per Airbnb host account, unlimited | None | Primary and messaging accounts cannot be mixed in the same workspace. This ensures every Airbnb conversation uses the credentials for the account that owns it and that inbound guest messages follow the same connection model. Manage both kinds of connection under **Settings > Connections > Airbnb**. The account list identifies each primary account. You can also start your first Airbnb PMS connection from **Settings > Connections > PMS** by clicking **Add PMS** and selecting Airbnb. Before starting the connection in Conduit, open Airbnb in the same browser and confirm that you are signed in to the Airbnb account you want to connect. Airbnb may reuse your active session and authorize that account without showing an account picker or asking you to sign in again. If the wrong account is open, sign out of Airbnb and sign in to the correct account before continuing in Conduit. ## Use Airbnb as your PMS You can use Airbnb as your PMS when the workspace does not already have another PMS or Airbnb messaging accounts. After the first connection, use **Connect another primary account** to add each additional Airbnb host account. Go to [Airbnb](https://www.airbnb.com) in the browser where you use Conduit and verify that you are signed in to the intended host account. In Conduit, go to **Settings > Connections > Airbnb**. For the first account, click **Use Airbnb as your PMS**. For later accounts, click **Connect another primary account**. You can also start the first connection from **Settings > Connections > PMS** by clicking **Add PMS** and selecting Airbnb. Complete the Airbnb authorization. Airbnb returns you to Conduit, where the account appears with **Primary** next to its Airbnb ID. Follow the prompts to import your listings. ## Connect a messaging account Messaging accounts are available only when Airbnb is not the workspace's PMS. First switch to the intended account on Airbnb. Then go to **Settings > Connections > Airbnb** and click **Connect a messaging account**. If you later make Airbnb the workspace's PMS, reconnect the same account as the primary. Conduit promotes that account instead of keeping duplicate credentials. Disconnect any other Airbnb messaging accounts first; Conduit will not remove or convert those accounts automatically. After connecting, check the account name, email, or Airbnb ID shown in Conduit to confirm that you authorized the intended account. ## Reconnect an account If an account shows **Needs reconnect**, click **Reconnect** on that row. Before authorizing Conduit, sign in to Airbnb as the account named on the row. Airbnb may reuse the account already open in your browser, and authorizing a different host account will not repair the connection. If the wrong account is open, sign out of Airbnb and sign in as the account named on the row before clicking **Reconnect** again. ## Remove an account Click **Remove** on an account row and confirm the removal. Conduit stops syncing reservations and messages for that account. Existing listings, reservations, and conversations stay in Conduit, but they stop updating. ## Airbnb messaging rules Messages sent from Conduit still pass through Airbnb's messaging filters. If Airbnb rejects a message and asks you to remove part of it, see [Airbnb messaging](/setting-up-conduit/airbnb-messaging) for the common causes and how to rewrite the message. # Connect Email Source: https://docs.conduit.ai/setting-up-conduit/connect-email Bring your company email domain into your Conduit inbox ## Overview The platform enables teams to: * Send and receive emails using company domain addresses * Centralize all email communication within a single workspace * Support multiple email addresses from the same domain (support@, billing@, sales@) * Integrate with Outlook, Gmail, and company email providers ## Requirements ### Email domain connection **Allowed:** * Multiple emails from the same domain * Company domain-based addresses only **Limitations:** * One domain per workspace maximum * Up to 20 emails per domain * Public email providers (@gmail.com, @yahoo.com, @icloud.com, @hotmail.com) are not supported These limits apply when connecting an email domain. To connect an individual Gmail or Google Workspace account directly, use [Gmail OAuth](/setting-up-conduit/connect-email/connect-gmail-with-oauth). This method does not require email forwarding or DNS records. If you receive Booking.com guest messages by email, use an email domain connection and forward those messages to your Conduit inbound address. Do not use a connected Gmail mailbox for Booking.com messages. Gmail OAuth does not match Booking.com relay emails to reservations, so they may appear as separate contacts in the Unmapped inbox instead of in the guest conversation. Follow the [Booking.com setup steps](#bookingcom-guest-messages) below. ## Setup Process Choose the setup method that matches your email provider: ### Gmail or Google Workspace Connect the account directly with OAuth: 1. [Connect Gmail with OAuth](/setting-up-conduit/connect-email/connect-gmail-with-oauth) This option is not supported for Booking.com guest messages. If the mailbox receiving Booking.com messages is hosted by Google Workspace, use the email domain connection below and configure forwarding instead. ### Email domain connection Use email forwarding and domain authentication with any provider, including Google Workspace: 1. [Receiving Emails in Conduit](/setting-up-conduit/connect-email/receiving-emails-in-conduit) 2. [Sending Emails from Conduit](/setting-up-conduit/connect-email/sending-emails-from-conduit) ## Booking.com Guest Messages The Booking.com email integration processes guest messages through Conduit's inbound email path, powered by Postmark. It does not process these messages through a connected Gmail mailbox. ### How Processing Works When a guest writes through Booking.com: 1. Booking.com sends a relay email from an address ending in `@guest.booking.com` or `@mchat.booking.com` to your selected company email address. 2. Your email provider forwards the message to your Conduit inbound address, which ends in `@inbound.postmark.app`. 3. Conduit reads the Booking.com confirmation code from the relay address, matches it to a reservation from your connected PMS, and adds the message to the guest's Booking.com conversation. ### Setup Steps [Connect the PMS](/setting-up-conduit/connect-pms) that contains your Booking.com reservations. Conduit uses its reservation data to match each incoming message to the correct guest conversation. Go to **Settings > Connected Channels > Email** and add the company domain address that receives your Booking.com notifications. Do not connect this address with Gmail OAuth for Booking.com processing. Copy the workspace inbound address ending in `@inbound.postmark.app`, then [configure your email provider to forward messages](/setting-up-conduit/connect-email/receiving-emails-in-conduit) from the company address to it. If you use Google Workspace, create an admin routing rule instead of relying on the connected Gmail mailbox. Go to **Settings > Connections > Booking.com** and select the same company email address. Make sure Booking.com sends guest message notifications to this address. Send a Booking.com guest message for a reservation already synced from your PMS. Confirm that it appears in the guest's Booking.com conversation, not as a separate contact in the Unmapped inbox. ## Prerequisites Users need: * **For Gmail OAuth:** permission to manage channels in Conduit and access to the Google account being connected * **For an email domain:** a Conduit workspace inbound address (ends with `@inbound.postmark.app`), admin access to DNS settings, and admin access to the email provider ## Email Address Recommendations Recommended formats: help@, support@, contact@, hello@ Personal addresses like cole@ or flor@ are discouraged but may work depending on organizational needs. ## Plus-addressing Support Conduit supports email plus-addressing (also called subaddressing). Emails sent to `support+tag@yourdomain.com` will be routed to the same inbox as `support@yourdomain.com`. The full address including the `+tag` is preserved on the message for your reference. This is useful for tracking where inbound emails originate from, filtering, or testing. ## Email Title Format When you start sending emails from Conduit, the title of the email in the recipient's inbox will be: "Your Name + From \[Workspace Name]" For receiving email copies in company inboxes, contact [support@conduit.ai](mailto:support@conduit.ai) for custom solutions. # Alternate Email Addresses Source: https://docs.conduit.ai/setting-up-conduit/connect-email/alternate-email-addresses Manage multiple company email addresses within a single inbox in Conduit. ## Overview Conduit enables teams to manage multiple company email addresses within a single inbox. This feature facilitates handling various inquiry types while maintaining unified support workflows. Teams can reply using the appropriate alternate address, and the system defaults to matching the customer's original contact email. ## Setup Instructions **Configuration limit:** Up to 10 alternate email addresses per workspace **Location:** Settings > Email page ### Requirements Alternate email addresses must satisfy two conditions: 1. **Domain matching:** Must share the same domain as the primary support email * Example: If primary is [help@yourcompany.com](mailto:help@yourcompany.com), you may add [hello@yourcompany.com](mailto:hello@yourcompany.com) but not [sales@otherdomain.com](mailto:sales@otherdomain.com) 2. **Email forwarding:** Must be forwarded identically to your main help email address, using Conduit's provided forwarding destination ## Functionality Once configured, team members can select which alternate address to use when composing responses. The system intelligently defaults to replying from the address the customer originally contacted. # Connect Gmail with OAuth Source: https://docs.conduit.ai/setting-up-conduit/connect-email/connect-gmail-with-oauth Connect a Gmail or Google Workspace account directly to Conduit Connect a Gmail or Google Workspace account with OAuth to send and receive email through Conduit. This direct connection does not require email forwarding or DNS records. Do not use Gmail OAuth to receive Booking.com guest messages. Booking.com relay emails received through a connected Gmail mailbox are not matched to the guest's reservation and may appear as separate contacts in the Unmapped inbox. Instead, follow the [Booking.com inbound email setup steps](/setting-up-conduit/connect-email#bookingcom-guest-messages). ## Before You Start You need: * Permission to manage channels in your Conduit workspace * Access to the Gmail or Google Workspace account you want to connect * Pop-ups enabled for Conduit A Google Workspace administrator may need to approve Conduit as a trusted app if your organization restricts third-party app access. ## Connect Your Gmail Account In Conduit, go to **Settings > Connected Channels > Email**. Click **Add Gmail account**. A Google authorization window opens. Sign in to the Gmail or Google Workspace account you want Conduit to use. If several Google accounts are signed in, confirm that you select the intended address. Review Google's consent screen and allow the requested Gmail permissions. Conduit uses these permissions to sync email, send replies, and identify the connected address. The authorization window closes automatically. The connected address appears under **Gmail accounts** in Conduit. To connect another address, repeat these steps. Use the menu next to an account and select **Set as default** if it should be the default sender for email from Conduit. ## Permissions Used by Conduit The OAuth connection lets Conduit: * Read and sync messages from the connected mailbox * Update messages as needed to keep the Conduit inbox in sync * Send email from the connected address * Identify the connected Google account's email address Conduit retains access until you disconnect the account in Conduit or revoke access from your Google account. ## Reconnect an Account If an account displays **Needs To Be Reauthenticated**: 1. For a managed Google Workspace account, follow [Google's reauthentication policy instructions](https://support.google.com/a/answer/9368756). Your administrator can mark Conduit as a trusted app and exempt trusted apps from reauthentication, or change the session policy. 2. In Conduit, open the menu next to the account and click **Reconnect**. You can also click **Add Gmail account**. 3. Sign in to the same Google account and grant access again. ## Disconnect an Account Open the menu next to the Gmail account, click **Delete**, and confirm **Remove account**. Conduit stops processing email from that account. Disconnecting an account does not delete messages from Gmail or existing conversations from Conduit. ## Troubleshooting Allow pop-ups for Conduit, then click **Add Gmail account** again. Ask your Google Workspace administrator to allow Conduit as a trusted third-party app, then retry the connection. Delete the account in Conduit, click **Add Gmail account**, and select the correct Google account on the consent screen. Wait a few seconds and refresh the Email settings page. If the account still does not appear, repeat the connection and make sure you complete the Google consent screen. # Receiving Emails in Conduit Source: https://docs.conduit.ai/setting-up-conduit/connect-email/receiving-emails-in-conduit Set up email forwarding to receive your company emails directly in your Conduit inbox ## Overview Email forwarding allows you to receive all your company emails within Conduit. By forwarding emails from your company's email addresses (e.g., [support@yourcompany.com](mailto:support@yourcompany.com), [sales@yourcompany.com](mailto:sales@yourcompany.com), [hello@yourcompany.com](mailto:hello@yourcompany.com)) to your Conduit inbound address, you centralize conversations for easier tracking, tagging, and response handling. Whether you use Google Workspace, Microsoft 365, or another provider, Conduit ensures your team is always connected and able to respond efficiently. To receive emails, you need to set up email forwarding from your company's support email address (e.g. `help@yourcompany.com`) to your Conduit workspace's inbound email address. Your workspace's inbound email address ends with `@inbound.postmark.app` and can be found in under **Settings** > **Email**. This forwarding setup is required for Booking.com guest messages, even when your company mailbox is hosted by Gmail or Google Workspace. Forwarding the messages to the `@inbound.postmark.app` address lets Conduit match them to the reservation and place them in the guest conversation. A connected Gmail mailbox does not support this Booking.com routing. See [Booking.com guest messages](/setting-up-conduit/connect-email#bookingcom-guest-messages) for the complete processing flow and setup. ## Google Workspace (Gmail) This assumes you use Google Workspace (formerly called Google Apps) to manage your domain's emails. If your email provider is not Google, you can still set up email forwarding in different ways, such as with your domain registrar (e.g. [DNSimple](https://support.dnsimple.com/articles/email-forwarding/)) or your email provider (e.g. [Microsoft 365](https://learn.microsoft.com/en-us/microsoft-365/admin/email/configure-email-forwarding)) 1. Navigate to **Settings** > **Connected Channels** >> **Email** 2. Add your email with a business domain 3. Go to your Gmail routing configuration * You can find this here: **admin.google.com** 4. Add a new rule * Under Default routing select **Configure** or **Add Another Rule** 5. Set the recipient * In the dropdown, select **Single recipient** and type your support email address under **Email address** 6. Check the box **Change envelope recipient** 7. Choose either "Replace recipient"\` or "Also deliver to" (Scroll down to learn which option best fits your needs) Choosing "Replace recipient" will result in your Conduit inbox being the only place where inbound emails come to whereas choosing "Also deliver to" will result in your Conduit inbox being one of the multiple places where inbound emails come to (ie your existing Gmail inbox + your Conduit inbox) 8. Set the members the rule will apply to a. Scroll further down, and choose **Perform this action on non-recognised and recognised addresses** 9. Click Save If you have existing email routing rules they can sometimes conflict with ones you add for Conduit. For optimal reliability always reorder the Conduit ones to apply first. ## Microsoft Outlook / Office 365 ### Option 1: Admin Center Mail Flow Rules (Recommended for Organizations) This method allows admins to set up forwarding for shared mailboxes or any user in the organization. 1. Go to the **Microsoft 365 Admin Center** at [admin.microsoft.com](https://admin.microsoft.com) 2. Navigate to **Admin centers** > **Exchange** 3. Select **Mail flow** > **Rules** 4. Click **+ Add a rule** > **Create a new rule** 5. Name your rule (e.g., "Forward to Conduit") 6. Under **Apply this rule if**, select **The recipient is** and choose your support mailbox 7. Under **Do the following**, select **Redirect the message to** and enter your Conduit inbound address (ending in @inbound.postmark.app) 8. Optionally, to keep a copy in the original mailbox: * Click **+** to add another action * Select **Bcc the message to** and enter the original mailbox address 9. Click **Next**, configure any exceptions if needed 10. Click **Next**, then **Finish** to create the rule ### Option 2: Outlook Web App (Individual Users) For individual users who want to forward their own mailbox: 1. Go to [outlook.office.com](https://outlook.office.com) and sign in 2. Click the **Settings** gear icon in the top right 3. Select **View all Outlook settings** 4. Go to **Mail** > **Forwarding** 5. Check **Enable forwarding** 6. Enter your Conduit inbound address (ending in @inbound.postmark.app) 7. Optionally check **Keep a copy of forwarded messages** to retain emails in Outlook 8. Click **Save** Some organizations disable user-controlled forwarding for security reasons. If you don't see the forwarding option, contact your IT administrator to set up forwarding via mail flow rules. ### Option 3: Outlook Desktop App (Personal Rules) 1. Open Outlook and go to **File** > **Manage Rules & Alerts** 2. Click **New Rule** 3. Select **Apply rule on messages I receive** and click **Next** 4. Set conditions (or leave blank to forward all messages) and click **Next** 5. Check **redirect it to people or public group** 6. Click **people or public group** and enter your Conduit inbound address 7. Click **Next**, add any exceptions if needed 8. Name the rule and click **Finish** Desktop rules only run when Outlook is open. For reliable forwarding, use the Admin Center or Outlook Web App methods instead. # Sending Emails from Conduit Source: https://docs.conduit.ai/setting-up-conduit/connect-email/sending-emails-from-conduit Set up email sending to respond using official company email addresses within Conduit's unified inbox. ## Overview Setting up email sending allows your support team to respond using official company email addresses within Conduit's unified inbox. This centralizes communication across multiple channels including SMS, WhatsApp, email, and chat in one location. The setup involves adding DNS records for authentication. DKIM records verify you as the legitimate sender, while return path records handle bounced emails. Together, these ensure messages reach inboxes rather than spam folders. ## Set Up Instructions Go to **Settings > Email**, click **Configure** next to your domain, and open section 4, **Sending emails**. Each record shows its **Type**, **Hostname**, and **Value**, with copy buttons, plus a **Status** that reads as configured once verification succeeds. DNS providers label these two fields differently, so the names will not always match what Conduit shows. The **Hostname** goes into the field your provider calls **Name**, **Host**, **Hostname**, or **Host name**. The **Value** goes into the field your provider calls **Value**, **Content**, **Data**, or **Points to**. If you are unsure which field is which, the **Hostname** is the short prefix that sits in front of your domain, and the **Value** is the longer string you paste in. 1. The first record is the “DKIM”. It is part of the available mechanisms that exist to authenticate emails: verifying that you’re the actual sender of the email. 2. The second record sets the return path for emails sent from Conduit using your domain. Return paths are used if an email bounces (fails to reach an inbox). Both of them make sure that your emails reach your users’ email inboxes and do not end up in the spam folder. Adding these to your DNS records varies slightly among different providers. Here is how to do so for some common hosting providers: ## Supported Providers Instructions are provided for: 1. Go to [https://dnsimple.com/dashboard](https://dnsimple.com/dashboard). 2. Click on the domain you need to update. If your support address is `help@example.com` you must pick `example.com`. 3. On the left menu, click on “DNS”. 4. Under “DNS records” click “Manage”. 5. Click “Add record” Choose TXT. Add the following: * **Name**: paste “Hostname” * **Type**: TXT * **Content**: paste “Value” 6. Click “Add record” to save. 7. Click “Add record” again. Choose “CNAME” Add the following: * **Name**: paste “Hostname” * **Type**: CNAME * **Content**: paste “Value” 8. Click “Add record” to save. 1. Go to [https://domains.google.com/registrar/](https://domains.google.com/registrar/). 2. Choose the domain you need to update. If your support address is `help@example.com` you must pick `example.com`. Click on “Manage”. 3. On the left menu, click on “DNS”. 4. Click on “Manage custom records” Scroll down and click on “Create new record”. 5. Add the following: * **Host name**: paste “Hostname” * **Type**: TXT * **Data**: paste “Value” 6. Click on “Create new record” again. 7. Add the following: * **Host name**: paste “Hostname” * **Type**: CNAME * **Data**: paste “Value” 8. Click “Save”. 1. Go to [https://ap.www.namecheap.com/domains/list/](https://ap.www.namecheap.com/domains/list/). 2. Pick your domain and click on “Manage”. 3. Click on the “Advanced DNS” tab. 4. Under “Host records” click on “Add new record” and set the following: * **Type**: TXT * **Host**: paste “Hostname” * **Value**: paste “Value” 5. Click on “Add new record” again and add the following: * **Type**: CNAME * **Host**: paste “Hostname” * **Value**: paste “Value” 6. Click on “Save all changes” to save. 1. Go to [https://account.godaddy.com/products​](https://account.godaddy.com/products​) 2. Pick your domain and click on “DNS”. 3. Click on “Add” and add the following: * **Name**: paste “Hostname” * **Type**: TXT * **Content**: paste “Value” 4. Click on “Add entry” Confirm details and wait. 5. Click on “Add” again and add the following: * **Name**: paste “Hostname” * **Type**: CNAME * **Content**: paste “Value” 6. Click on “Add entry” to save and wait. # Connect LINE Source: https://docs.conduit.ai/setting-up-conduit/connect-line Receive and send LINE Official Account messages in your Conduit inbox ## Overview The LINE integration connects a **LINE Official Account (LINE OA)** to Conduit so messages from LINE land in your unified inbox, AI agents can reply automatically, and operators can respond just like on any other channel. You can connect multiple LINE Official Accounts to one workspace (for example, one per property or brand). Each account gets its own webhook URL. A single LINE Official Account can only be connected to one Conduit workspace. LINE allows just one webhook URL per account, so connecting the same account to a second workspace would redirect its incoming messages. If you see "already connected to another workspace," disconnect it there first. ## Prerequisites * Conduit v3 * A LINE Official Account ([create one here](https://help.line.me/official_account/web/categoryId/20010172/?contentId=20013134)) * Access to the [LINE Developers Console](https://developers.line.biz/console/) for that account * The **Manage Channels** permission in your Conduit workspace ## Connection Steps 1. In **[LINE Official Account Manager](https://manager.line.biz/) → Settings → Messaging API**, enable the Messaging API. 2. In the **LINE Developers Console**, open your channel: * Copy the **Channel ID** and **Channel Secret** from the **Basic settings** tab. * Issue a **Channel Access Token** (long-lived) on the **Messaging API** tab. 3. In Conduit, go to **Settings → Channels → LINE**, paste all three values, and click **Connect**. Conduit validates the token and shows your account's name and avatar. 4. Copy the **webhook URL** shown on the connected account and paste it into the **Webhook URL** field on the Developers Console's **Messaging API** tab, then turn **Use webhook** ON. 5. In LINE Official Account Manager → Settings → Response settings, **disable auto-response messages and greeting message** so LINE doesn't answer alongside Conduit. Turn on **webhooks**. 6. Back in Conduit, click **Verify connection** to confirm LINE can reach your webhook. If you leave LINE's built-in **auto-reply** or **greeting messages** on, LINE answers your customers before Conduit does. Turn both off in LINE Official Account Manager so Conduit is the only thing replying. ## How replies are sent LINE has two outbound APIs, and Conduit always picks the cheaper one automatically: * **Reply API (free)**: usable for a short window after each inbound message. The chat input shows a **Reply window open** indicator with a live countdown while it's available. * **Push API (metered)**: used once the reply window has passed. Push messages count against your LINE plan's monthly quota. You don't choose between them. Conduit uses the free reply if the window is still open and falls back to push otherwise. ## Media support | Direction | Supported | | - | - | | Receiving | Photos, videos, voice messages, and files are downloaded and shown in the inbox. Stickers and locations appear as text descriptions. | | Sending | JPEG/PNG images, MP4 video, and MP3/M4A audio are delivered natively. Other files (and media outside LINE's size limits) are delivered as a download link. | LINE has no "file" message type, so PDFs, documents, and any media outside LINE's accepted formats or size limits are sent as a download link appended to your message instead of an inline preview. ## Using LINE with agents and workflows Once connected, LINE behaves like any other channel: * **AI agents** reply to LINE conversations automatically, following the same triggers, routing, and approval rules as your other channels. * **Workflows** can send LINE messages through the **Send Message** step. * **Tickets** can be answered over LINE from the ticket reply box. ## Troubleshooting * **Token expired** — if someone regenerates the channel access token in the LINE console, the channel stops working and Conduit marks it **Token expired** (you'll also get an in-app notification and an email). Click **Reconnect** on the account and paste only the new token. Your Channel ID and Secret stay the same, and Conduit checks that the new token belongs to the same account. * **Webhook verification fails** — double-check the webhook URL was pasted exactly, **Use webhook** is ON, and the Channel Secret you connected matches the channel the webhook URL belongs to. * **Contact unfollowed** — if a contact blocks or unfollows your account, LINE can't deliver messages to them. The chat input shows a **Contact unfollowed** indicator until they add your account again. # Connect Microsoft Teams Source: https://docs.conduit.ai/setting-up-conduit/connect-microsoft-teams Receive Conduit notifications in a Microsoft Teams chat or channel ## Overview The Microsoft Teams integration delivers Conduit notifications into a Teams chat or channel. Once connected, Conduit posts as a bot to keep your team informed about autopilot replies and escalations without leaving Teams. Each workspace can connect one Teams target at a time, and only a workspace owner or a member with connection management permissions can set it up. ## Prerequisites The Conduit Teams app must be available in your Teams environment. You can either upload it yourself or have your IT admin publish it to your org's app catalog. 1. Navigate to **Settings > Integrations > Microsoft Teams** 2. Under **Teams App**, click **Download** to get the Conduit app package 3. In Teams, go to **Apps > Manage your apps > Upload an app** and upload the package, or hand it to your IT admin to publish it to the org catalog ## Connection Steps 1. In **Settings > Integrations > Microsoft Teams**, find the **Connection Code** section and click **Create code**. The code is short-lived and expires 15 minutes after it is generated. Note the code, you will type it into Teams in the next step. 2. Open the Teams chat or channel where you want notifications to appear and start a new message. 3. Type `@Conduit` and select **Conduit** from the mention dropdown that appears. This has to be a real mention picked from the dropdown, not pasted text, otherwise the bot will not receive your message. 4. After the mention, type ` connect ` (replacing `` with the code from step 1), so the full message reads `@Conduit connect `, then hit enter to send it. 5. Conduit confirms the connection in the chat and the target appears under **Notification Target** in settings. If the code expires before you use it, just generate a new one and repeat the steps with the new code. ## Notification Settings Once a target is connected, choose which automated notifications Conduit sends. These settings only apply to automated notifications, not to your own messages. * **Autopilot Notifications**: alerts when autopilot sends a reply on your behalf * **Escalation Notifications**: escalations, proposed replies awaiting approval, and urgent tags ## Test and Manage the Connection * **Test**: from the **Notification Target** section, click **Test** to send a sample notification to the connected Teams chat or channel and confirm everything is wired up. * **Disconnect**: click **Disconnect** to stop sending notifications to that target. You can reconnect later by generating a new code. If a notification fails to send, the target shows an error state in settings along with the latest error message, so you can spot and fix delivery problems quickly. # Connect Phone and SMS Source: https://docs.conduit.ai/setting-up-conduit/connect-phone-and-sms Integrate VoIP services to manage calls, two-way SMS messaging, and VoiceAI all in one place. ## Overview Conduit integrates VoIP services into your account, enabling teams to manage calls, two-way SMS messaging, and VoiceAI all in one place. By centralizing communication channels, your team can respond quickly, track conversations, review transcripts, and maintain context across platforms. ## Setup Instructions To connect your phone and SMS service: 1. Navigate to **Settings** > **Channels** > **Phone** 2. Select **Request or port a number** or **Request A2P** if you already have a number in Conduit 3. Complete the Conduit Phone Line Registration form with your information: * Choose **No** to request a new number * Choose **Yes** to port an existing number from your current VoIP provider 4. Submit the form; a Conduit team member will contact you with next steps ## Call Groups Call groups route inbound calls on specific Conduit numbers to selected teammates. To create a call group: 1. Navigate to **Settings** > **Inbound** > **Call groups** 2. Click **Add call group** 3. Name the group, choose a ringing behavior, add members, and attach phone numbers 4. Click **Create call group** Ringing behaviors: * **Simultaneous**: Rings every available member at the same time. The first person to answer takes the call. * **Longest idle**: Rings the available member who has gone longest without an inbound call attempt. Members marked away or already on another call are skipped automatically. If nobody answers, all routed members decline, or no member is eligible, Conduit tries the number's fallback phone number if one is set, then sends the caller to voicemail. A phone number can belong to only one call group. For numbers attached to a call group, call group routing takes priority over VoiceAI routing and call forwarding. ## Audio Settings and Noise Cancellation Reduce background noise during calls handled in the Conduit web app: 1. Open a call in the Inbox or in-app call widget. 2. Click **Audio settings** in the call controls. 3. Enable either or both noise cancellation options: * **Microphone noise cancellation**: Remove background noise from your microphone. * **Incoming noise cancellation**: Reduce background noise from the caller. The two options work independently. Both are off by default, and your selections are saved in your browser for future web calls. Noise cancellation runs on the web call in your browser. It does not apply to property noise-sensor alerts, WhatsApp voice messages, or VoiceAI calls. ## Call Transfers While you are on a live call, you can hand it off to someone else without hanging up. Conduit supports two destinations: * **Internal transfer** sends the call to a teammate in your workspace. * **External transfer** sends the call to any phone number (a contact or a number you type in). Each destination can be done in two ways: * **Warm transfer**: the caller is placed on hold while Conduit rings your transfer target. Once they answer, you stay on the line with them (the caller still on hold) so you can brief them on the call. When you are ready, you complete the transfer and drop off, leaving the target connected to the caller. * **Transfer (blind)**: the caller is placed on hold and you drop off immediately. Conduit connects the caller to your target as soon as they answer. There is no chance to brief them first. ### Where the transfer button is The transfer button lives in the call controls of the in-call window (the call widget) that appears once a call is active and you are on it. It is the **phone-with-a-plus** icon, sitting between the **Hold** and **Audio settings** buttons in the control row, next to **Mute**, the **dialpad**, and **End**. Click it to open the **Transfer call** panel. The transfer button only appears on a call you are actively connected to. It is not shown while a call is still ringing or connecting, or on calls you are only observing. ### Transferring the call On the active call, click the phone-with-a-plus **Transfer call** button in the call controls. The panel has up to two tabs: Search for a teammate by name and select them. Teammates who are already on another call are marked **On another call**, so you can avoid handing the caller to someone who is busy. Then choose **Warm transfer** to brief them first, or **Transfer** for an immediate handoff. The **Team** tab appears for outbound calls you started and for inbound calls on a [call group](#call-groups) (see [How internal transfers work](#how-internal-transfers-work) below). Search your contacts by name or number, or type any phone number on the dialpad. Then choose **Warm transfer** to brief the destination first, or **Transfer** for an immediate handoff. For a warm transfer, the caller is held while your target rings (**Ringing…**). When the target answers, you are **Connected** with them and can explain the call. Click **Complete transfer** to drop off and connect them to the caller, or **Cancel** to pull the caller back to you. For a blind transfer there is nothing more to do, you are disconnected as soon as the transfer starts and the caller is bridged to the target when they answer. ### What the teammate sees (internal transfers) When you transfer to a teammate, an incoming-transfer prompt appears in their call widget showing who is sending the call and which caller is coming over (for example, *"A teammate wants to transfer this call to you"*). They can **Accept** or **Decline**. * If the teammate is already on another call, accepting will leave that call, so Conduit asks them to confirm first. * If the teammate declines, does not answer, or no one is available, a warm transfer returns the caller to you, and a blind transfer falls back to the number's fallback phone number or voicemail. ### How internal transfers work Internal transfers are available for outbound calls you started and for inbound calls tied to [call groups](#call-groups). For inbound calls, the **Team** tab only shows up when the active call arrived on a number that belongs to a call group: * A call comes in on a call group number and rings the group members. Whoever answers is on the call. * That person can transfer the call to **any other teammate** in the workspace from the **Team** tab, not just other members of the same call group. * If an inbound call did **not** come in through a call group, the **Team** tab is hidden and the transfer panel opens straight to the **Number** tab. You can still transfer externally to any phone number. External transfers do not require a call group. The **Number** tab is always available on a live call, regardless of how the call was routed. ## Group Messaging Conduit supports group messaging for conversations including your Conduit phone number. WhatsApp group chats are not supported in Conduit. To start a group message, send an outbound text to all intended recipients. Phone numbers must include country codes and be separated by commas. To assign a name to your group chat, create a new contact with your chosen group name and add the same comma-separated phone numbers. ## Mobile Call Bridge Mobile Call Bridge allows team members to place outbound calls from their mobile devices using their Conduit workspace phone numbers. Calls appear to recipients as coming from your Conduit business number rather than a personal mobile number. This feature applies only to mobile devices and does not affect desktop calling behavior. 1. Navigate to **Settings > Connected Channels > Phone** 2. Locate the **Mobile Call Bridge** toggle and enable it. Once enabled, the feature is automatically applied when outbound calls are initiated from a mobile device. The user may select the number to display to the recipient. No additional configuration is required. ## Supported Call Types The Mobile Call Bridge works for all outbound calls initiated from: * The dialpad * Call transcripts, when returning a call * The inbox, when placing an outbound call ## Call forwarding When using a Conduit number for call forwarding, you can control what phone number the receiving party sees when a call is forwarded to them. ### Original Caller ID The **Original Caller ID** toggle determines which number is displayed to the forwarded destination: * **Toggled ON**: The original caller's phone number is passed through to the forwarded destination. The recipient sees the number of the person who originally called. * **Toggled OFF**: The Conduit number is shown to the forwarded destination. The recipient sees your Conduit business number instead. This setting helps recipients identify whether an incoming call is being forwarded through your Conduit system or is a direct call. To configure this setting, navigate to **Settings** > **Connected Channels** > **Phone** and locate the **Original Caller ID** toggle under your call forwarding configuration. ## Start of call announcement The start of call announcement is a message spoken to callers when an inbound call connects, before it rings your team or is forwarded. Use it for greetings or notices such as call recording disclosures. ### Workspace announcement You need at least one regular Conduit phone number for this setting to appear. To set the default announcement for every number in your workspace: 1. Navigate to **Settings** > **Channels** > **Phone** 2. Enter your message under **Start of call announcement** 3. Save your changes ### Per-number announcement You can give an individual number its own greeting, for example a different welcome for a reservations line and a front desk line: 1. Navigate to **Settings** > **Channels** > **Phone** 2. Find the number and expand the **Advanced** section underneath it 3. Enter your message in **Start of call announcement** 4. Save your changes A per-number announcement replaces the workspace announcement for calls to that number. Leave the field empty to use the workspace announcement. Per-number announcements apply to regular Conduit phone numbers only. To change how a VoiceAI agent greets callers, edit its welcome message instead. See [Connect VoiceAI / AI Number](/setting-up-conduit/connect-voiceai-ai-number). ## Plain-text messaging SMS is a plain-text channel. Formatted hyperlinks (e.g. `[text](url)`) and internal URL shortening are not supported and will appear as raw text in the recipient's message. To share a link, include the full URL directly in your message: ``` Visit us at https://example.com for more information. ``` Most devices and messaging apps automatically render full URLs as clickable links for the recipient. ## Phone FAQ **What if I confirmed a number port before it appeared in Conduit?** Once Twilio finishes the port: 1. Go to **Settings** > **Channels** > **Phone**. 2. Click **Refresh numbers**, then **Enable number** beside the ported number. 3. Open **Configure**, connect the number if prompted, then click **Enable SMS** once A2P is approved. If the number is missing, wait for Twilio to finish the port and refresh again. **How long does the process take?** The process takes approximately one week to collect and verify compliance information. **Will I be able to send SMS?** SMS is supported in most countries. A Conduit team member will inform you if SMS support is available for your business. **Is noise cancellation turned on automatically?** No. Microphone and incoming noise cancellation are off by default. Enable each option separately in **Audio settings**. Your selections are saved in your browser for future web calls. **Does noise cancellation apply to VoiceAI or WhatsApp voice messages?** No. Noise cancellation applies only to calls handled in the Conduit web app. It does not affect VoiceAI calls, WhatsApp voice messages, or property noise-sensor alerts. # Connect PMS Source: https://docs.conduit.ai/setting-up-conduit/connect-pms Connect your property management system to Conduit to sync booking data, create contacts, and power AI responses. ## Overview Conduit operates fully horizontally across industries. For hospitality and property management teams, connecting your Property Management System brings property and booking data into the platform. The system automatically creates contacts from reservations and facilitates communication. Conduit integrates with over 15 different PMS systems to populate listing information. ## Setup Steps The initial configuration process involves four main steps: Airbnb can be the workspace's primary PMS or an additional messaging connection. To use it as your PMS, select Airbnb from **Add PMS** or choose **Use Airbnb as your PMS** under **Settings > Connections > Airbnb**. See [Connect Airbnb](/setting-up-conduit/connect-airbnb) for both connection types. 1. Navigate to **Settings > Connections > PMS** If PMS isn't visible, create a new workspace and select either **Short Term Rental** or **Long Term Rental** under Advanced settings 2. Select your business's PMS provider 3. Complete the provider's authentication steps. Airbnb uses an authorization window instead of an account ID and API key. 4. Your listings and PMS-backed content will appear in **Agents > Knowledge** after sync completes. ## Schedule PMS Knowledge Sync After importing listings, turn on auto-sync to keep their PMS-backed Knowledge current: 1. Open **Knowledge** from the main sidebar. 2. Click **Sources** at the bottom of the Knowledge sidebar. 3. Open your PMS source. 4. Open the three-dot menu, choose **Set auto-sync**, then select **Daily**, **Weekly**, **Every 2 weeks**, or **Monthly**. The schedule applies to the whole PMS integration. It refreshes Knowledge for listings already imported into Conduit. To find and import a property added to your PMS later, use **Check for new listings** from the same PMS source menu. Choosing a schedule does not run a sync immediately. Use **Sync knowledge** for an immediate refresh, and open **Sync history** to review past and upcoming syncs. See [Auto-sync Knowledge Sources](/agent-hub/auto-sync) for screenshots, status meanings, paused-sync recovery, and how to turn auto-sync off. ## Connection Rules Conduit prevents connection combinations that could create duplicate guest conversations. * You can connect multiple PMS accounts when they use the same messaging setup. PMS providers that deliver guest messages cannot share a workspace with providers that only supply property and reservation data. * When you choose another PMS, incompatible providers are disabled. Use a separate workspace if you need both types. * If Airbnb is your primary property management connection, you cannot connect another PMS. * You can connect Airbnb directly alongside a PMS. If the PMS handles guest messages, those messages continue through the PMS. If it does not, Conduit can receive Airbnb messages directly and match them to PMS reservations. See [Connect Airbnb](/setting-up-conduit/connect-airbnb) for setup instructions. If your workspace already has both PMS types, you can reconnect an existing account to refresh its credentials, but you cannot add another PMS until the conflict is resolved. ## Messaging Support by PMS Conduit classifies each PMS connection by whether it sends guest messages to Conduit. This describes the Conduit integration, not every messaging feature the PMS vendor may offer. "Non-messaging" does not mean that guest messaging is unsupported in Conduit. It means messaging is not supported natively through that PMS connection. Conduit supports messaging for those PMS providers through auxiliary channel connections, such as direct Airbnb and Expedia connections. | Connection type | PMS providers | How guest messages reach Conduit | | - | - | - | | **Messaging** | Beds24, Guesty, Hospitable, Hostaway, Hostfully, Hostify, Lodgify, OwnerRez, PassTheKeys, Resly, Smily | The PMS sends guest messages to Conduit. Keep OTA messaging routed through the PMS. Connecting the same OTA directly can create duplicate conversations. | | **Non-messaging** | Apaleo, CiiRUS, Cloudbeds, Escapia, Homhero, Kross Booking, Mews, Opera Cloud, RMS, Streamline, Track | The PMS supplies property and reservation data but does not send guest messages to Conduit natively. Messaging is supported through auxiliary connections, so connect each OTA messaging channel directly to Conduit. | For example, Cloudbeds syncs Expedia reservations but does not send Expedia messages to Conduit. To receive those messages in the Conduit inbox, contact Conduit support to connect the Expedia properties directly. Expedia messaging uses a shared connection managed by Conduit, so there are no workspace credentials to enter. Connecting Expedia messaging to Conduit does not disconnect Expedia from Cloudbeds. Cloudbeds continues to manage inventory, rates, availability, and reservation sync. Only Expedia guest messaging is routed directly to Conduit. Do not keep messaging enabled through both Cloudbeds and Conduit, because the same conversation could arrive twice. Airbnb is handled separately from these PMS groups. Follow [Connect Airbnb](/setting-up-conduit/connect-airbnb) to use Airbnb as your PMS, manage the primary account, or add direct Airbnb messaging accounts. ## Opera Cloud Connection Instructions Oracle OPERA Cloud connects through the Oracle Hospitality Integration Platform (OHIP) and needs five values from the OHIP Developer Portal rather than a single API key. It has its own page: [Connect Opera Cloud](/setting-up-conduit/connect-pms/opera-cloud). ## Lodgify Connection Instructions Lodgify connects with a single **API key**. There's no OAuth redirect and no account ID, paste the key, Conduit pulls in your properties, and you pick which listings to import. ### Part 1: Get your Lodgify API key 1. Log in to [Lodgify](https://www.lodgify.com) and open the **Menu** in the top right, then click **Settings**. 2. Select **Public API** in the settings menu. 3. Click the copy button next to your API key. That key is your access token, it has both read and write permissions. Keep it private. If the Public API page doesn't show a key, your plan may not include API access yet. Request access from that page or contact Lodgify support. ### Part 2: Connect Lodgify in Conduit In Conduit, go to **Settings > Connections > PMS** and click **Connect PMS**. The PMS settings page in Conduit with the Connect PMS button If PMS isn't visible, your workspace needs to be a **Short Term Rental** or **Hotel** type. Set the industry under the workspace's company settings, or create a new workspace of that type. Search for **Lodgify** and click it. The Connect PMS provider list filtered to Lodgify Paste the API key you copied from Lodgify into the **API Key** field and click **Connect**. The Connect Lodgify dialog with the API Key field Conduit fetches your Lodgify properties and shows how many it found. Click **Import** to bring them in (or **Skip** to connect without importing yet). The import runs in the background and can take a few minutes. Once the sync finishes, your listings and PMS-backed content appear under **Agents > Knowledge**, and new reservations start creating contacts automatically. ## Beds24 Connection Instructions ### Part 1: Authentication 1. Open **Settings > Connections > PMS** in Conduit and click the Beds24 logo to reach the authentication screen 2. Select "Select all" on all three checkboxes, then click "Generate Invite Code" 3. Copy the invite code and paste it back on the authentication screen 4. Click "Connect" and wait for the success confirmation message ### Part 2: Messaging Setup 1. In Conduit, open your completed Beds24 connection and copy the **Webhook URL** field 2. Open the Beds24 app and navigate to Settings > Properties > Access 3. In the Booking Webhooks section, select "2 - with personal data" as the webhook version 4. Paste the Conduit Webhook URL into the URL field 5. Leave the Custom Header empty and click "Save" 6. Repeat this process for each property in your Beds24 account # Connect Opera Cloud Source: https://docs.conduit.ai/setting-up-conduit/connect-pms/opera-cloud Connect Oracle OPERA Cloud to Conduit using OHIP credentials so property, reservation, and guest data sync automatically. ## Overview Conduit connects to Oracle OPERA Cloud through the **Oracle Hospitality Integration Platform (OHIP)**. Unlike most PMS integrations, OPERA Cloud does not use a single API key. You collect five values from the OHIP Developer Portal, paste them into Conduit, and Conduit starts syncing that property. Every value comes from the Developer Portal except the Hotel ID, which is your OPERA property code. You connect **one property at a time**. A chain with six hotels means six connections in Conduit, all sharing the same Gateway URL, Client ID, Client Secret, and Enterprise ID, and each with its own Hotel ID. ## What you need | Field in Conduit | Where it comes from | Example | | - | - | - | | **Gateway URL** | Developer Portal, Environments tab | `https://xxx.hospitality-api.us-ashburn-1.ocs.oraclecloud.com` | | **Hotel ID** | Your OPERA property (resort) code | `SANDPT` | | **Client ID** | Developer Portal, Environments tab | `a1b2c3d4-...` | | **Client Secret** | Developer Portal, Environments tab | (secret) | | **Enterprise ID** | Developer Portal, Environments tab | `ABCD` | | **App Key** (optional) | Developer Portal, Applications tab | `e4f7a2b1-...` | ## Before you start The person collecting the credentials needs the **DEVELOPERPORTALACCESS** role on their OPERA Cloud user. Without it, the Oracle Hospitality Developer Portal link will not appear in the OPERA Cloud menu. If the role is missing, request it through OPERA Cloud Identity Management, or ask whoever administers your OPERA Cloud tenant. See Oracle's [Accessing the OHIP Developer Portal](https://docs.oracle.com/en/industries/hospitality/opera-cloud/23.4/ocsuh/c_getting_started_accessing_the_ohip_developer_portal.htm). ## Part 1: Collect your OHIP credentials In OPERA Cloud, open the side menu and select **Oracle Hospitality Developer Portal**. You can also sign in directly using the portal URL from your OHIP welcome email. There are separate portals for UAT and PROD, so make sure you are in the one matching the environment you want to connect. Conduit should normally be pointed at **PROD**. Click the **Environments** tab at the top of the portal, then click **View Details** on your environment card. The details panel shows: * **Gateway URL**, copy it exactly, with no trailing slash and no spaces * **Client ID** and **Client Secret** * **Enterprise ID** * The list of properties approved for integration If no Client ID and Secret are shown, click **Create Client Credentials** to generate them. The Gateway URL is an API host, not the address you use to log in to OPERA Cloud. It looks like `https://xxx.hospitality-api..ocs.oraclecloud.com`. If the URL you copied contains `/operacloud/faces/` or `adf.task-flow`, you copied the OPERA Cloud web UI address and the connection will not work. The Client Secret is only fully visible when it is created. If nobody saved it, generate a new one from the same panel. Open the **Applications** tab and register a new application for Conduit (or open the existing one if your team already created it). When creating the application, **subscribe it to all the APIs that appear**. Conduit calls reservations, guest profiles, property configuration, availability, folios, and housekeeping, so a partial subscription will make parts of the integration fail silently. Once the application is registered, copy its **Application Key**. This is the value you paste into Conduit's **App Key** field. An application key belongs to one chain. If you operate multiple chains, create one application per chain and use the matching key for each connection. The Hotel ID is your OPERA property code, the same short code you use to select a property inside OPERA Cloud. It is usually 5 to 6 uppercase characters, for example `SANDPT` or `BLUBAY`. It is not a number and it is not the hotel's display name. The properties approved for integration are listed in the environment details panel from step 2. In the environment details panel, check that the property you want to connect appears in the **Properties** list. Only your team can approve properties for integration. If a hotel is missing from that list, no credentials will make it work until it is added. ## Part 2: Connect Opera Cloud in Conduit In Conduit, go to **Settings > Connections > PMS** and click **Connect PMS**. If PMS is not visible, your workspace needs to be a **Short Term Rental** or **Hotel** type. Set the industry in the workspace's company settings, or create a new workspace of that type. Search for **Opera** and click it. Paste the values you collected in Part 1: * **Gateway URL** * **Hotel ID** * **Client ID** * **Client Secret** * **Enterprise ID** * **App Key**, optional Then click **Connect**. Leave **Username** and **Password** empty. Those fields are only used for the older SSD (Resource Owner) authentication scheme. Almost every OPERA Cloud tenant uses client credentials, which is what the Client ID, Client Secret and Enterprise ID combination above enables. Conduit calls OPERA Cloud and shows the property it found. Click **Import** to bring it in, or **Skip** to connect without importing yet. The property becomes a listing in Conduit, carrying its address, timezone, currency, check-in and check-out times, room types, and amenities. For a second hotel, run through **Connect PMS > Opera** again with the same Gateway URL, Client ID, Client Secret, Enterprise ID, and App Key, changing only the **Hotel ID**. ## What syncs Conduit imports the property once, then polls OPERA Cloud every few minutes to keep reservations current. | Data | Notes | | - | - | | Property details | Imported when you import the property: name, address, timezone, currency, check-in and check-out times, amenities, room types | | Reservations | Kept current in a rolling window of roughly 30 days in the past and 180 days ahead | | Guest profile fields | Names and contact details attached to synced reservations | Reservations create contacts automatically, so guest conversations land in the inbox already linked to the right booking. Property information appears under **Agents > Knowledge** after the first sync completes. ### Tools available to agents Connecting Opera Cloud registers a set of tools on the connection. An agent can use them once you assign the connection to that agent, and each tool can be switched off on the connection. Read-only lookups: * Check availability for a date range, room type, and rate plan * Get a reservation * Get a guest profile, and search guests by name, email, phone, or membership number * Read stay history and folios * Read the housekeeping overview Actions that write back to OPERA: * Create, update, and cancel a reservation * Update room status * Post a routing instruction The write actions change live PMS data. Try them against a test property, or keep the agent in copilot mode so a person approves each one, before letting an agent run them unattended on a production property. See [Integrations: capabilities](/setting-up-conduit/integrations/capabilities) for how connections and tools reach an agent. ## Troubleshooting This is the usual symptom of a credential problem, since Conduit saves what you paste and then immediately tries to read the property. Check, in this order: 1. The **Gateway URL** is the API host and has no trailing slash, no leading or trailing spaces, and no `/operacloud/faces/` path. 2. The **Hotel ID** matches the property code exactly, including case. 3. The **Enterprise ID** is present. Client credentials authentication fails without it. 4. The **App Key** belongs to the same chain as the environment. 5. The property appears in the **Properties** list in the environment details panel. Regenerate the Client Secret from **Environments > View Details > Create Client Credentials** and reconnect. A secret that was partially copied, or was rotated in the portal after Conduit was connected, produces the same failure as a wrong one. Also confirm you are using PROD portal credentials against a PROD environment. UAT credentials will not authenticate against production. Open the application in the **Applications** tab and confirm it is subscribed to every available API. If your environment uses module level access control, the client also needs access to the OPERA modules behind the data you are missing, such as reservations, profiles, cashiering for folios, and housekeeping. Conduit syncs a rolling window of roughly 180 days ahead. A reservation past that window arrives once the window slides forward. If you regularly take bookings further out, tell us and we can widen the window for your deployment. ## Reference * [Accessing the OHIP Developer Portal](https://docs.oracle.com/en/industries/hospitality/opera-cloud/23.4/ocsuh/c_getting_started_accessing_the_ohip_developer_portal.htm) * [Viewing Environment Details](https://docs.oracle.com/en/industries/hospitality/integration-platform/ohipu/t_viewing_environment_details.htm) * [Quick Start for Hoteliers](https://docs.oracle.com/en/industries/hospitality/integration-platform/ohipu/t_quick_start_for_hoteliers.htm) # Connect Slack Source: https://docs.conduit.ai/setting-up-conduit/connect-slack Get Conduit notifications and respond to customers from Slack ## Overview The Slack integration enables users to manage customer communication within their existing Slack workspace. It streamlines communication and simplifies message approval, editing, and response processes. ## Connection Steps 1. Navigate to **Settings > Integrations > Connect Slack account** 2. Select the Slack channel for receiving Conduit messages 3. Configure Settings and Notifications: * **Customer messages**: Receive alerts when customers send messages * **Opportunities**: Get notifications about potential opportunities * **Tasks**: Stay informed about task updates and deadlines ## Sending Messages from Slack Customer messages funnel into the selected Slack account with options to Approve, Dismiss, or Edit Messages. Users can navigate to conversations in the Conduit inbox by clicking the "Go to Conversation" link. ## Clear the Slack Channel To declutter a Conduit channel, use the keyboard shortcut `/clear_channel` to remove all messages. # Connect VoiceAI / AI Number Source: https://docs.conduit.ai/setting-up-conduit/connect-voiceai-ai-number Enable businesses to call customers using a custom VoiceAI phone number with AI agent capabilities. ## Overview Conduit enables businesses to call customers using a custom VoiceAI phone number. The AI agent can send and receive messages through this number. ### Setup Instructions 1. Navigate to **Settings > Channels > Phone** 2. Click Get VoiceAI number 3. Select desired area code and claim a phone number 4. Click Configure and Create agent next to your new number 5. Customize your VoiceAI agent and provide instructions * Voice provider options: Retell and ElevenLabs (includes community voices and voice cloning) 6. Optional: Route numbers to VoiceAI for agent answering * Click Configure > Enable Route calls to VoiceAI * Select the number to route * VoiceAI can run 24/7 or on a set schedule ## Configure VoiceAI Numbers Each VoiceAI number has its own customizations and instructions. **To configure your agent:** 1. Navigate to **Settings > Channels > Phone > Configure > Edit Agent** * **Agent Name**: Name the agent uses when addressing callers * **Select a Voice**: Choose voice for agent (with multilanguage support enabled, select voices by customer country code) * **Interruption Sensitivity**: Adjust how quickly agent pauses to avoid interrupting customers 2. **Welcome Message Configuration**: How AI initially responds * Add context-based instructions or static message * Recommendation: Use dynamic greeting for contextual, natural responses 3. **Escalation Settings**: Instructions for transferring calls to humans * **Static escalations**: Transfer to specific number based on conditions * **Dynamic escalations**: Context-based routing to different numbers * **Warm transfer**: Provides conversation context to human agent ## Supported Languages * English (US, UK, India, Australia, New Zealand) * Spanish (Spain, Latin America) * Portuguese (Brazil, Portugal) * French, German, Italian * Dutch, Dutch (Belgium) * Russian, Chinese, Japanese, Korean * Hindi, Vietnamese, Romanian * Danish, Finnish, Greek, Indonesian * Norwegian, Slovak, Swedish * Bulgarian, Hungarian, Malay * Catalan, Turkish, Polish * More coming soon ## Receiving SMS with a bring-your-own Twilio number If your Voice Agent uses a number from your own Twilio account ("Bring Your Own Twilio"), the following configuration is required for the agent to receive inbound SMS messages. ### 1. Configure the Twilio SMS webhook In your Twilio console, set the SMS webhook for your number to: ``` https://api.conduit.ai/twilio/messaging ``` This routes inbound SMS to your Conduit Voice Agent. ### 2. Complete A2P 10DLC registration A2P (Application-to-Person) registration is required in Twilio to prevent carriers from filtering outbound messages. Without it, SMS messages sent from your number may be blocked or silently dropped. Register your number for A2P 10DLC in the Twilio console under **Messaging > Regulatory Compliance**. ### 3. Enable SMS reception in Twilio account settings SMS reception must be explicitly enabled within your Twilio account settings. Verify that SMS is enabled for the phone number being used before testing. All three steps above are required. Missing any one of them — the webhook URL, A2P registration, or SMS reception setting — will prevent the agent from reliably sending or receiving SMS. ## Setting a Schedule for Voice AI When team members are unavailable, set up VoiceAI to answer calls during off-hours. **To schedule VoiceAI:** 1. Navigate to **Settings > Channels > Phone > Configure** next to the VoiceAI number, then click **Configure** 2. Enable incoming calls to Route to VoiceAI * Select the number that should route to this VoiceAI 3. Set a schedule or enable VoiceAI to run 24/7 # Connect WhatsApp Source: https://docs.conduit.ai/setting-up-conduit/connect-whatsapp Communicate with customers over WhatsApp in Conduit ## Overview Conduit integrates with WhatsApp to manage all communications from your WhatsApp Business account directly within your Conduit inbox. This integration streamlines communication by allowing you to respond to all messages, automate responses, and manage conversations in a unified platform. To use this feature, you must have a WhatsApp Business account. Conduit offers two main options for integrating WhatsApp: 1. **Connect an Existing Business Account**: If your WhatsApp Business account already has registered phone numbers, Conduit will automatically sync and pull those numbers. 2. **Use a Conduit Number**: If your account does not have any registered numbers, you can generate a new WhatsApp business number through Conduit's Business Phone Number service. Please refer to Meta's documentation for self-serve setup or fill out their form if you need Conduit's assistance. ## Setup Instructions 1. Navigate to **Settings > WhatsApp** to begin the integration process. 2. Click on **Connect existing business account** and follow the prompts to link your WhatsApp Business account. 3. If your account has existing phone numbers, they will be displayed and you can sync them to Conduit. If you don't have one yet, continue through the connect flow to create and register a new **Conduit number** for WhatsApp — you don't need to set anything up separately in the Meta Business app. 4. **Verification**: * **Using an Existing Number**: A verification code is sent via WhatsApp to the registered number. Enter this code in Conduit to complete setup. * **Using a Conduit Number**: Meta verifies the number with a **phone call** that reads out the code. Two things matter here. **The number has to be a regular (non-AI) number to verify.** A person answers the verification call, so the number can't be running a voice agent at verification time. A freshly created Conduit number is already a regular number, so verify it **first**, then convert it to a voice agent afterward if you want one. If the number is **already a voice agent**, you can convert it back to a regular phone number from the dashboard: go to **Agents**, open the voice agent, select the **…** menu next to the agent name, and choose **Convert to regular number**. This self-serve action requires the **Manage Agents** permission and clears the agent configuration, escalation settings, voice, and SIP trunk data. **The call rings inside Conduit.** Because a Conduit number is hosted by Conduit (there is no physical handset for it), the verification call comes in on the Conduit dashboard, not a personal phone. To receive it: 1. Turn **off call forwarding** for that number in **Settings > Channels > Phone**. If forwarding is on, the call is routed away before you can answer it. 2. Choose the **Call** verification option and stay on the Conduit dashboard. When the call comes in you'll see an **incoming-call banner with an Answer button** — make sure your browser has microphone permission. Click **Answer** and enter the code. 3. After the number is verified, press **Register** on it. You can then re-enable call forwarding, or convert the number to a voice agent, if you want either. * Once the number is verified, it will be connected to your Conduit inbox. If you don't see the incoming-call banner when the verification call arrives, contact support — in-browser call answering may need to be enabled for your workspace first. 5. **Template Sync**: You can sync and manage message templates for automating replies. Once approved, these templates will be available for use in WhatsApp conversations managed via Conduit. WhatsApp group chats are not supported in Conduit. ## Plain-text messaging WhatsApp messages sent through Conduit are plain-text only. Formatted hyperlinks (e.g. `[text](url)`) and internal URL shortening are not supported and will appear as raw text to the recipient. To share a link, include the full URL directly in your message: ``` Visit us at https://example.com for more information. ``` Most devices and messaging apps automatically render full URLs as clickable links for the recipient. # Calls Source: https://docs.conduit.ai/setting-up-conduit/connect-whatsapp/calls Enable and receive inbound WhatsApp voice calls in Conduit through Meta Business settings. ## Overview WhatsApp Business with Conduit enables users to **receive calls** in the web application. **Making outbound calls is not currently supported.** Calling is switched off by default on every WhatsApp number, and it is turned on at Meta, not in Conduit. Until it is on, guests who tap the call button see "This business is not accepting calls" and no call reaches Conduit. ## Before you start Meta only allows calling on numbers with a **messaging limit of 2,000 or higher**. New numbers start at 250, and the calls option stays unavailable until the limit is raised. To raise the limit, complete **Meta Business Verification** in Meta Business Settings under **Security Center**. Meta can also raise it once you've sent enough high-quality template messages; see [Meta's messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits). You can see your current limit in WhatsApp Manager under **Account tools > Phone numbers**. ## Meta Business Setup Start receiving calls by following these steps: ### 1. Go to Meta Business Visit the Meta Business settings page at business.facebook.com ### 2. Visit "WhatsApp accounts" Navigate to the WhatsApp accounts section in your Meta Business settings. ### 3. Visit WhatsApp Manager Locate your WhatsApp Business Account and access WhatsApp Manager. ### 4. Enable Calls In WhatsApp Manager: * Go to **Account tools > Phone numbers** * Click the gear icon next to your number * Open the **Calls** tab and turn on calling The call button and your calling hours are set in the same tab. The calls option only appears once your messaging limit is 2,000 or higher, and the number must already be connected to Conduit. ## Route WhatsApp calls in Conduit Once calling is on at Meta, WhatsApp calls ring in the Conduit web app through the incoming call banner. To control who they ring, add your WhatsApp number to a call group in **Settings > Call groups**. WhatsApp calls to that number then ring the group's members. # WhatsApp templates Source: https://docs.conduit.ai/setting-up-conduit/connect-whatsapp/templates Understand template categories and best practices for WhatsApp message templates in Conduit WhatsApp message templates must be approved by Meta before use. Choosing the correct category ensures better deliverability and accurate pricing. ## Template categories Meta requires every template to be assigned one of three categories: Promotions, offers, informational updates, or invitations to engage with your business. Specific, agreed-upon transactions, account updates, or alerts (e.g., booking confirmations, order status). One-time passwords (OTPs) used for account verification or multi-factor authentication. ## Category guidelines ### Marketing Use the **Marketing** category for messages that promote your business, products, or services, including: * Special offers, discounts, or promotions * Product announcements or launches * Newsletters or informational updates * Invitations to events or surveys ### Utility Use the **Utility** category for transactional messages sent in response to a user action or an agreed-upon communication, including: * Booking or reservation confirmations * Order or delivery status updates * Account activity alerts (e.g., payment received, subscription renewal) * Appointment reminders ### Authentication Use the **Authentication** category exclusively for sending one-time passwords or verification codes to users who have explicitly requested them, such as: * Login verification codes * Password reset OTPs * Two-factor authentication codes ## Best practices * **Choose the right category.** Meta may re-categorize templates that do not match the intended use. Mismatched templates may be rejected or charged at a higher rate. * **Avoid marketing framing in transactional templates.** If a template is purely transactional (e.g., a booking confirmation), do not include promotional language. Transactional templates (Utility) typically have lower costs and higher deliverability than Marketing templates. * **Templates require Meta approval.** New templates are reviewed by Meta before they can be used. Approval times vary. Plan ahead when introducing new templates. * **Keep content compliant.** Templates must comply with [WhatsApp's Business Messaging Policy](https://whatsappbusiness.com/policy/). Content that violates this policy will be rejected. ## Managing templates in Conduit Your templates are listed in **Settings > Channels > WhatsApp > Templates**. Select **Sync** to pull in changes made at Meta. * If you see a **Create** button, use it to submit a new template to Meta. Templates created in Conduit are always submitted as **Utility**. If you need a Marketing or Authentication template, contact Conduit support. * If there is no **Create** button, your number is connected directly to Meta. Create and edit templates in WhatsApp Manager, then select **Sync**. ## Messaging guests first You can start a WhatsApp conversation without waiting for the guest to write in, as long as you send an approved template. Send one from the inbox message box, or from a workflow step to send it automatically (for example, a pre-arrival message a few days before check-in). * **24-hour window.** After a guest messages you, you can reply freely for 24 hours. Outside that window, only templates can be sent. * **Daily limit.** Meta caps how many new conversations you can start per rolling 24 hours. New numbers start at 250, and the limit rises after Meta Business Verification. See [Meta's messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits). Only templates with **Approved** status in Meta's template manager are available for sending. Templates pending review or rejected by Meta cannot be used until resolved. # Connect Widget Source: https://docs.conduit.ai/setting-up-conduit/connect-widget Enable real-time communication with website visitors through an embeddable chat interface. ## Overview Widgets allow Conduit to communicate with visitors on your website in real-time, with all messages flowing directly into the Conduit inbox. This customizable chat interface can be embedded on any webpage to provide immediate support, answer inquiries, and capture leads without leaving the Conduit platform. ## Workflow When site visitors engage with the widget, conversations are routed directly to your inbox's connected channels section. The system supports: * **Real-Time Conversations**: Direct interaction between visitors and support team members * **Automated Messaging**: Set up greetings or responses for initial inquiries and after-hours situations * **Inbox Integration**: Widget conversations seamlessly integrate with Conduit's inbox, allowing agents to respond like any other customer inquiry * **Conversation History**: Once the chat ends, the conversation remains in your Conduit inbox for future reference and follow-up ## Setup Instructions ### 1. Configure Widget Settings Navigate to **Settings > Widget** in Conduit to: * Customize the header and greeting message * Set the assistant name * Modify post-form messaging (e.g., "We'll get back to you as soon as possible!") ### 2. Add the Widget to Your Website * Copy the code snippet from Widget Settings * Paste it into the `` tag of your webpage ### 3. Add Trusted Domains (Optional) Restrict widget appearance by listing your company's domains in the Trusted Domains section. Once deployed, the widget goes live on your website, providing visitors direct access to your support team. # Contact Inbox vs Ticket Inbox Source: https://docs.conduit.ai/setting-up-conduit/contact-vs-ticket-inbox Understand the difference between contact-based and ticket-based inboxes, and choose the right model for your team. ## Overview Conduit supports two common inbox models: * **Contact-based inbox**: one ongoing thread per person (or guest) * **Ticket-based inbox**: one separate issue record per request Both can work well. The best choice depends on whether your team primarily manages **relationships** or **individual tasks**. ## Contact-based inbox A contact-based inbox keeps communication centered on the person. Messages from the same contact are grouped into an ongoing conversation, even when the topic changes over time. ### How it behaves * New messages from a contact continue the same thread * Context stays in one place (history, preferences, prior resolutions) * Agents and teammates reply in a continuous conversation flow * Follow-up questions are naturally handled in the same thread ### Best for * Hospitality and property operations * Guest communication across the full stay lifecycle * Teams that want full relationship context before replying ## Ticket-based inbox A ticket-based inbox treats each request as a separate work item. One contact can have multiple open tickets at the same time, each with its own status and lifecycle. ### How it behaves * Every new issue creates (or is assigned to) a distinct ticket * Each ticket has clear ownership, status, and resolution tracking * Work can be routed by issue type or priority * Reporting focuses on queue performance (SLA, time to resolution, backlog) ### Best for * IT and internal support desks * Product or technical support teams * Operations with strict SLA and queue management requirements ## Side-by-side comparison | Area | Contact-based inbox | Ticket-based inbox | | - | - | - | | Primary unit of work | Person/conversation | Issue/ticket | | Thread model | Persistent, relationship-first thread | Separate thread per problem | | Context | Rich contact history in one view | Detailed issue history per ticket | | Ownership | Often shared by relationship owner/team | Explicit assignee per ticket | | Reporting focus | Contact outcomes, response quality | SLA, backlog, resolution metrics | | Works best when | You need continuity with the same people | You need strict process per issue | ## Practical examples ### Example 1: Hospitality guest messaging (contact-based) A guest asks about check-in, then later requests early checkout, then asks for parking help. In a contact-based inbox, your team keeps one continuous thread and sees the full context instantly. ### Example 2: Internal IT support (ticket-based) An employee reports a VPN problem, a laptop battery issue, and a password reset request. In a ticket-based inbox, each issue is tracked separately, assigned to the right specialist, and measured against SLA targets. ## Pros and tradeoffs ### Contact-based inbox **Pros** * Strong relationship continuity * Faster replies with full context visible * Cleaner experience for teams handling repeat interactions **Tradeoffs** * Harder to measure separate issues in the same conversation * Complex multi-issue threads can become noisy ### Ticket-based inbox **Pros** * Clear ownership and accountability per issue * Better queue prioritization and SLA reporting * Easier to manage high-volume support operations **Tradeoffs** * Context can fragment across multiple tickets * Agents may need to jump between tickets for one person ## Which should you choose? Use a **contact-based inbox** when your team’s success depends on relationship continuity and conversational context. Use a **ticket-based inbox** when your team’s success depends on issue-level accountability, queue management, and SLA performance. ## Change your inbox model A workspace Admin can enable or disable Ticket Inbox under **Settings → General → Ticket Inbox**. This setting applies to the entire workspace and takes effect immediately for every user. When Ticket Inbox is disabled, anyone viewing it is redirected to Contact Inbox. Coordinate the change with your team, especially during active support shifts. Disabling Ticket Inbox does not delete existing ticket records. They become accessible again when Ticket Inbox is re-enabled. If your operation has both needs, many teams run a hybrid approach: * Contact-based inbox for guest/customer conversations * Ticket workflows for complex or technical escalations That gives your front-line team a relationship-first experience while preserving strict operational tracking for issue resolution. # Custom Fields Source: https://docs.conduit.ai/setting-up-conduit/custom-fields Add tailored attributes to contact types for better organization and display of relevant information in the inbox sidebar. ## Overview Custom Fields enable users to add tailored attributes to contact types, facilitating better organization and display of relevant information in the inbox sidebar. Whether tracking deal statuses or identifying assigned support representatives, these fields streamline communication and provide essential context for conversations. By defining attributes in Conduit, users can customize the sidebar layout, ensuring critical information remains prominently accessible. ## Setup Setting up Custom Fields involves straightforward steps: ### Navigate to Custom Fields Settings * Go to **Settings** > **Workspace** > **Custom Fields** from your sidebar ### Add a Section Sections group related custom fields together, so they stay organized and easy to scan. * Click **Add section** * Give the section a descriptive **Name** (e.g., "Deal Info" or "Support Details") * Click **Create section** to save it ### Add a Field Once you have a section, add custom fields to it. * Click **Add field** within the section * Choose a field type and provide a descriptive **Name** reflecting its purpose (e.g., "Deal Stage" or "Assigned Support Rep") * Click **Create field** to save it Available field types include: * **Text** - for custom notes or URLs * **Number** - for quantitative values like ratings * **Checkbox** - for yes/no answers * **Date** - for tracking specific dates or follow-ups * **Phone Number** - for adding contact numbers * **Member** - to assign workspace members * **Select/Multi-Select** - for dropdown options ### Customize the Sidebar Once attributes are created: * Navigate to the **Customize Sidebar** section * Drag and drop attributes to arrange them * Add them to specific sections like **At a Glance** or **Details** * Save changes to reflect updates in the inbox sidebar immediately ## Workflow ### Automatically Populate Fields Many fields are automatically filled when syncing contacts from integrated channels like WhatsApp, Email, or Text. ### Manual Updates Directly update fields from the contact's sidebar by clicking on the attribute and entering information (e.g., phone numbers, deal statuses). ### Use Cases for Custom Fields * Track lead status with "Deal Stage" attribute * Assign and display Customer Support Rep for conversation visibility * Monitor key contact dates like "Last Contacted Date" for timely follow-ups * Flag specific contacts with checkboxes for VIP customers or urgent inquiries Custom Fields enable tailored Conduit experiences that ensure all relevant information remains readily accessible and current. # Connect iMessage Source: https://docs.conduit.ai/setting-up-conduit/imessage-pricing Connect your Linq or Sendblue numbers to send and receive iMessage and SMS in Conduit. ## Overview iMessage is a communication channel in Conduit. Connect iMessage-enabled numbers through **Linq** or **Sendblue** so incoming messages appear in your unified inbox and your AI agents and team can reply from Conduit. You can bring your own provider account or ask Conduit to provision a number for you. ## Connection options | Option | What you provide | Cost through Conduit | | - | - | - | | Connect your own Linq account | A Linq partner API token and at least one registered number | Your Linq service remains under your existing provider account | | Connect your own Sendblue account | A Sendblue API key ID, API secret key, and at least one number | Your Sendblue service remains under your existing provider account | | Conduit-provisioned number | Contact Conduit to request a number | **$300 per month per number, paid annually ($3,600 per year)** | The Conduit-provisioned option is a passthrough fee and requires annual payment. To request a number, contact [support@conduit.ai](mailto:support@conduit.ai). ## Connect your own Linq numbers Before you begin, make sure you have permission to manage connections in Conduit and have your **Linq partner API token** ready. Your Linq account must already contain the numbers you want to use. 1. In Conduit, go to **Settings > Connections**. 2. Click **Add connection**, then select **Linq**. 3. Enter your **Partner API token** and click **Continue**. 4. Select the Linq numbers you want Conduit to manage. 5. Click **Connect**. Conduit validates the token, loads the registered numbers from your Linq account, and configures message delivery for the numbers you select. ## Connect your own Sendblue numbers Before you begin, make sure you have permission to manage connections in Conduit and copy your **API key ID** and **API secret key** from your Sendblue dashboard. Your Sendblue account must already contain the numbers you want to use. 1. In Conduit, go to **Settings > Connections**. 2. Click **Add connection**, then select **Sendblue**. 3. Enter your **API key ID** and **API secret key**, then click **Continue**. 4. Select the Sendblue numbers you want Conduit to manage. 5. Click **Connect**. Conduit validates the credentials, loads the numbers from your Sendblue account, and configures message delivery for the numbers you select. Provider credentials are encrypted and used to connect your account, manage message delivery, and send messages on your behalf. ## After connecting Send a test message to one of your connected numbers and confirm that the conversation appears in the Conduit inbox. Then reply from Conduit to verify outbound delivery. Set up [inbox routing rules](/setting-up-conduit/inbox-routing) if messages for different numbers should go to different inboxes or AI agents. ## Troubleshooting * **No numbers appear:** Confirm that the number is active in the Linq or Sendblue account associated with the credentials you entered. * **Credentials are rejected:** Generate or copy the provider credentials again, then reconnect the account. * **Messages do not arrive:** Confirm the connection is active in **Settings > Connections**, then contact [support@conduit.ai](mailto:support@conduit.ai) if delivery still fails. # Inbox Contacts Source: https://docs.conduit.ai/setting-up-conduit/inbox-contacts Consolidate and organize your inboxes with Conduit ## Overview Each inbox in Conduit centers around a specific contact type. By establishing dedicated inboxes, teams can tailor tools and workflows to match unique contact type requirements. This organizational approach promotes: * Efficient communication management * Streamlined response workflows * Controlled team member access to relevant conversations ### Adding Inboxes To create additional inboxes: 1. Navigate to Settings > Inboxes 2. Select "+ Add Inbox" from the existing inboxes list 3. Complete setup by defining the contact type and default settings ## Inbox Settings Customize each inbox to match specific contact type needs and configure relevant inbox settings. ## Navigating the Inbox The Inbox acts as the mouth of the body, communicating with your customers and team. It ensures every conversation is responded to and every request is handled. ## Filter and Sort By The right sidebar enables filtering responses by status, escalation level, and contact type. Adjacent sorting controls allow ascending or descending order organization. **Message Status Categories:** 1. **Todo** - Pending messages requiring attention 2. **Follow up** - Messages for later response or handling 3. **Done** - Responded messages; moves back to Todo when contact replies ## Delete Inbox Inboxes no longer in use can be removed from the General tab. Note: this action is irreversible. ## Troubleshooting ### Team members can't see conversations in an inbox Team members only see conversations for inboxes where they are explicitly added as members. If someone reports missing conversations, verify they are a member of the relevant inbox. To add members to an inbox: 1. Go to **Settings > Inboxes** 2. Select the inbox by name 3. Open the **Members** tab 4. Add the team member(s) who need access Once added, members will see conversations in that inbox immediately. # Inbox Routing Source: https://docs.conduit.ai/setting-up-conduit/inbox-routing Automatically route incoming messages and calls to the right inbox ## What is inbox routing? When a new contact reaches out via SMS, WhatsApp, email, voice, or any other channel, Conduit needs to know which inbox to put them in. Inbox routing lets you set rules that automatically assign contacts to a specific inbox based on the channel they came from. Without routing rules, new contacts land in the **Unmapped** inbox, where your team would need to manually move them to the correct inbox. ## How it works 1. A new message or call comes in from a channel (e.g., an SMS to your Twilio number) 2. Conduit checks if there's a routing rule for that channel 3. **If a rule matches**, the contact is automatically placed in the target inbox 4. **If no rule matches**, the contact stays in the Unmapped inbox Routing only applies to **new, unmapped contacts**. If a contact is already assigned to an inbox (from a reservation, manual assignment, etc.), routing rules won't change their inbox. ## Supported channels You can create routing rules for any connected channel: | Channel | Routed by | | - | - | | SMS | Phone number | | WhatsApp | Phone number | | Email | Email address or account | | Voice | Phone number | | Messenger | Facebook page | | Instagram | Instagram account | | Helpdesk | Third-party connection | | Slack | Slack channel | | Widget | Chat widget | ## Setting up a routing rule Navigate to **Settings > Inbox Routing** in your workspace. Click the **Add rule** button to create a new routing rule. Choose the channel you want to route from the dropdown. Only channels that don't already have a routing rule will appear. Choose which inbox contacts from this channel should be routed to. Save the rule. It takes effect immediately for new incoming contacts. When you create a rule for a phone number, Conduit automatically applies the rule to all channel types on that number (SMS, voice, WhatsApp). You don't need to create separate rules for each. ## Editing and deleting rules * To **edit** a rule, click the edit button on the rule and change the target inbox. The channel itself can't be changed after creation. * To **delete** a rule, click the delete button. Contacts already routed by that rule stay in their current inbox. ## The Unmapped inbox The Unmapped inbox is a catch-all for contacts that don't match any routing rule. You can: * View and manage unmapped contacts like any other inbox * Manually move contacts to the correct inbox * Create routing rules to prevent contacts from landing here in the future ## Routing and workflows **Routing rules run before workflow triggers.** When a message or call comes in, Conduit routes the contact to the correct inbox first, then evaluates workflow triggers. This means your workflow triggers should target the **routed inbox**, not the Unmapped inbox. For example, if you have a routing rule that sends voice calls to the "Customer" inbox, a "Call completed" workflow trigger should be configured for the "Customer" inbox. # Tools & Capabilities Source: https://docs.conduit.ai/setting-up-conduit/integrations/capabilities Give your AI agent the ability to take actions, from booking appointments to updating records. ## Overview Capabilities are the tools and actions your AI agent can execute during conversations and workflows. While [context integrations](/setting-up-conduit/integrations/context) give your agent knowledge, capabilities let it actually do things: book appointments, update CRM records, send notifications, trigger workflows, and more. ## Tool Types V3 tools can come from several places: | Tool type | What it does | | - | - | | **Built-in tools** | Native Conduit capabilities available to specific agents. | | **Connection tools** | Actions exposed by connected apps and integrations. | | **Custom tools** | Python or JavaScript tools your team writes in Conduit. | | **MCP tools** | Tools exposed by an MCP server you connect. | | **Workflow tools** | AI-triggered workflows that can be called as a capability when configured. | ## Managing Tool Access Use two levels of access: 1. Open **Agents > Tools** to manage workspace defaults for connection tools and custom tools. 2. Open an individual agent and select **Tools** to configure that agent's overrides, built-in tools, connection tools, custom tools, and MCP tools. Learn how to manage workspace defaults, per-agent access, custom tools, MCP tools, and Operator tool access. ## Marketplace Apps Marketplace apps extend what your AI agents and workflows can do without custom development. ### Categories include: Create contacts, update deals, log activities, and sync records with your CRM. Look up orders, process returns, check inventory, and manage customer accounts. Create tasks, update tickets, assign work, and sync project status. Send emails, SMS, and notifications through additional platforms. Push data to analytics platforms, update spreadsheets, and sync records. Book meetings, check availability, and manage calendar events. ### Connecting Marketplace Tools 1. Open **Agents > Marketplace** 2. Browse categories or search for a specific tool 3. Select the tool and follow the authentication prompts 4. Review the connection and tool access before enabling it for agents Marketplace tools can be used by AI agents during conversations when the agent has access and determines the tool is relevant. They can also be used as workflow steps when supported. ## Workflow Actions [Workflows](/workflows/getting-started) extend your AI agent's capabilities with automated sequences of actions triggered by events. Workflow action nodes can: | Action Category | Examples | | - | - | | **Messaging** | Send SMS, email, WhatsApp messages, or Slack notifications | | **AI** | Run AI prompts, inject an AI agent into a conversation, generate responses | | **Workspace** | Assign conversations, attach labels, update contact fields | | **Controls** | Add delays, branch on conditions, wait for events | | **HTTP** | Send webhooks to external systems | | **Business Tools** | Create or update records in connected CRM and business platforms | Learn how to build automated workflows with triggers, actions, and conditional logic. ## Custom Tools For workflows and processes specific to your business, you can build custom tools that your AI agent can use during conversations. Custom tools let you define: * **When** the tool should be used (trigger conditions) * **What** data to collect from the conversation * **What action** to perform (API call, record update, notification, etc.) Custom tools can be enabled as workspace defaults and overridden per agent, giving you fine-grained control over which agents have access to which capabilities. ## Credit Usage Some tool actions consume credits. Lightweight actions (like updating a contact field) use fewer or no credits, while advanced actions (like AI message generation or voice calls) use more. For detailed credit costs per action, see [Workflow Usage](/workflows/workflow-usage). # Communication Channels Source: https://docs.conduit.ai/setting-up-conduit/integrations/channels All the communication channels your AI agent can use to interact with contacts. ## Overview Conduit supports communication channels across text, voice, email, and social messaging, all funneling into a single unified inbox. Your AI agent can send and receive messages across every connected channel, and contacts see a single continuous conversation regardless of which channel they use. Each channel needs to be connected before your AI agent can use it. Some channels (like phone and WhatsApp) require verification steps. See the dedicated setup guides below. ## Phone & SMS Connect business phone numbers for two-way SMS, outbound and inbound calling, and group messaging. Numbers can be new (provisioned by Conduit) or ported from an existing VoIP provider. Key features: * Two-way SMS messaging * Inbound and outbound voice calls * Call groups for routing inbound calls to selected teammates * Group messaging with multiple recipients * Mobile Call Bridge (place calls from mobile using your business number) Request or port a number, configure SMS, set up call groups, and enable Mobile Call Bridge. ## iMessage Connect iMessage-enabled numbers from your Linq or Sendblue account so your AI agents and team can send and receive iMessage and SMS from the Conduit inbox. If you do not have a provider account, Conduit can provision a number for **$300 per month, paid annually ($3,600 per year)**. Connect your own Linq or Sendblue numbers, or request a Conduit-provisioned number. ## VoiceAI Dedicated AI-powered phone numbers where an AI agent answers calls, handles conversations, and escalates to humans when needed. Supports custom voices, multilingual conversations, scheduled availability, and warm transfers. Key features: * AI agent answers calls with configurable voice and personality * Warm transfer with conversation context to human agents * Scheduled availability (24/7 or business hours only) * Route existing phone numbers to VoiceAI for after-hours coverage Claim a VoiceAI number, configure your agent's voice and behavior, and set up call routing. ## Email Connect your company domain email addresses to send and receive emails through Conduit. Supports Google Workspace, Microsoft 365, and any email provider that supports forwarding. Key features: * Send from your company email addresses (e.g., [support@yourcompany.com](mailto:support@yourcompany.com)) * DKIM and return path authentication for deliverability * Up to 20 email addresses per domain * Automatic reply-from matching (replies come from the address the contact originally emailed) * Alternate email address management Set up email forwarding, DNS records, and alternate addresses. ## WhatsApp Business Connect your WhatsApp Business account to manage all WhatsApp conversations in Conduit. Supports both text messaging and incoming voice calls. Key features: * Full WhatsApp Business API integration * Message template management and sync * Incoming WhatsApp voice calls (via Meta Business setup) * Use existing numbers or provision new ones through Conduit Connect your WhatsApp Business account and configure messaging templates. ## Facebook Messenger Connect your Facebook Business page to manage Messenger conversations in Conduit. Messages from your Facebook page flow directly into the unified inbox. **Setup**: Navigate to **Settings > Channels > Messenger** and connect your Facebook page. ## Instagram DMs Connect your Instagram Business or Creator account to manage Instagram direct messages in Conduit. **Setup**: Navigate to **Settings > Channels > Instagram** and connect your Instagram account. Facebook Messenger and Instagram connections require a Meta Business account. Both channels use Meta's Business API for message delivery. ## Chat Widget An embeddable chat interface for your website. Visitors can start conversations that flow directly into your Conduit inbox, with full AI agent support. Key features: * Customizable header, greeting, and assistant name * Real-time conversations with AI or human agents * Trusted domain restrictions * Conversation history preserved in inbox Configure your widget appearance and embed it on your website. ## Booking Platform Messaging For teams using property management or booking systems, Conduit receives messages from connected booking platforms as a dedicated channel. Messages appear in the inbox alongside all other channels. This channel is activated automatically when you [connect a PMS](/setting-up-conduit/connect-pms). ## Slack Connect Slack for team notifications and message management. Approve, dismiss, or edit AI-generated responses directly from Slack without opening Conduit. Key features: * Customer message alerts in your chosen Slack channel * Approve, edit, or dismiss AI responses from Slack * Navigate to full conversation context with one click * Channel cleanup with `/clear_channel` Connect your Slack workspace and configure notification preferences. ## Helpdesk Connectors Connect third-party helpdesk systems to route their tickets and messages into Conduit. This allows your AI agent to handle helpdesk conversations alongside other channels. **Setup**: Navigate to **Settings > Channels** or **Settings > Connections** to connect your helpdesk system. ## CRM Messaging Connect CRM systems to receive and respond to messages routed through your CRM platform. **Setup**: Navigate to **Settings > Channels** or **Settings > Connections** to configure your CRM messaging integration. *** ## Channel Routing When a new contact reaches out on any channel, [inbox routing rules](/setting-up-conduit/inbox-routing) determine which inbox they land in. Without routing rules, contacts go to the Unmapped inbox. Set up routing rules for every connected channel to ensure contacts land in the right inbox automatically. This also ensures the correct AI agent handles each conversation. # Knowledge & Context Integrations Source: https://docs.conduit.ai/setting-up-conduit/integrations/context Connect data sources and documents so your AI agent has the context it needs to respond accurately. ## Overview Context integrations give your AI agent access to data, documents, and business systems. The more relevant context your agent has, the fewer escalations it needs to make and the higher your automation rate climbs. Context sources fall into three categories: **business system integrations** that sync structured data automatically, **document integrations** that import files and pages, and **direct imports** for one-off uploads. ## Business System Integrations ### Property Management Systems For hospitality and property management teams, connecting a PMS brings property data, reservation details, amenities, pricing, and check-in instructions into Conduit. The system automatically creates contacts from reservations and keeps data synced. Conduit integrates with 15+ PMS providers through a unified connection layer. Key features: * Automatic listing and reservation data sync * Knowledge generated from property details * Contact creation from incoming reservations * Periodic re-sync to keep information current Connect your PMS and start syncing property data. PMS-synced Knowledge is managed by the sync process. Edits you make directly to synced content can be overwritten on the next sync. To add or override information, [create a manual Knowledge page](/setting-up-conduit/pms-knowledge) instead. ### CRM Platforms Connect your CRM to sync contact records, deal stages, and account history. Your AI agent can reference CRM data when responding to contacts and update records through workflow actions. **Setup**: Open **Agents > Marketplace** or **Settings > Connections**, then select your CRM provider. ### E-commerce Platforms Connect e-commerce platforms to give your AI agent access to order data, product catalogs, and customer purchase history. This enables the agent to answer order status questions, process returns, and handle product inquiries. **Setup**: Open **Agents > Marketplace** or **Settings > Connections**, then select your e-commerce provider. ### Booking Platforms Connect online travel agency (OTA) and booking platforms to receive messages and reservation data directly in Conduit. **Setup**: Open **Settings > Connections** or the relevant channel setup page, then select your booking platform. ## Document Integrations ### Google Drive Connect Google Drive to import documents, spreadsheets, and files into your AI's Knowledge Base. Imported content becomes searchable Knowledge. **Setup**: 1. Open **Agents > Marketplace** or **Settings > Connections** 2. Select Google Drive and authorize access 3. Import the files or folders into **Agents > Knowledge** ### Notion Connect Notion to import pages and databases into your AI's Knowledge Base. Content from Notion pages becomes searchable Knowledge that your agent can reference in conversations. **Setup**: 1. Open **Agents > Marketplace** or **Settings > Connections** 2. Select Notion and authorize access 3. Import the pages into **Agents > Knowledge** Both Google Drive and Notion integrations support scheduled syncing, so your AI's knowledge stays up to date as documents change. ## Direct Imports You can also import knowledge directly without an integration: | Source | How to Import | | - | - | | **PDFs** | Upload from **Agents > Knowledge > Document** | | **CSVs** | Upload from **Agents > Knowledge > Document** | | **Web Pages** | Add from **Agents > Knowledge > Link** | | **Hosted Documents** | Link to publicly accessible documents | ### Import Process 1. Open **Agents > Knowledge** 2. Click the add button and choose **Link** or **Document** 3. Choose the folder where the source belongs 4. Start the import and wait for the source to sync Imported content becomes searchable Knowledge that your AI agent can retrieve when answering questions. Keep pages and source folders focused on clear topics for the best retrieval accuracy. See [Knowledge writing principles](/agent-hub/what-goes-where/knowledge) for guidance. ## How Context Powers Your AI When a contact sends a message, the AI engine: 1. Analyzes the question and identifies what information is needed 2. Searches across connected context sources such as Knowledge, PMS data, CRM records, and imported documents 3. Retrieves the most relevant information 4. Uses that context to generate an accurate response The more complete and well-organized your context sources are, the more confidently your AI agent can respond without escalating to a human. For details on how the AI engine processes information, see [Inside the AI Engine](/overview/inside-the-ai-engine). # Integrations Source: https://docs.conduit.ai/setting-up-conduit/integrations/index Connect external platforms, channels, and tools to give your AI agent the context and capabilities it needs. ## Overview Conduit integrates with a wide range of platforms to power your AI agents. Integrations fall into three categories: **Channels** for communication, **Context** for knowledge and data, and **Capabilities** for tools and actions. Communication channels your AI agent uses to send and receive messages, emails, and calls. Knowledge and data sources that give your AI the information it needs to respond accurately. Tools and actions your AI can execute, from booking appointments to updating CRMs. ## Integration Guides Give Operator access to HOPR rooms, tasks, inventory, messages, and task creation. ## Channels Channels are the communication surfaces where your AI agent interacts with contacts. Conduit supports channels across text, voice, email, and social messaging. | Category | Channels | | - | - | | **Phone & SMS** | Business phone numbers, VoiceAI numbers, SMS, call groups, group messaging | | **iMessage** | Linq and Sendblue numbers, including customer-owned and Conduit-provisioned numbers | | **Email** | Company domain email (Gmail, Outlook, any provider) with DKIM authentication | | **Messaging Apps** | WhatsApp Business, Facebook Messenger, Instagram DMs | | **Live Chat** | Embeddable website chat widget | | **Booking Platforms** | Direct messaging from connected booking platforms | | **Team Collaboration** | Slack (approve, edit, and respond to messages from Slack) | | **Helpdesk** | Third-party helpdesk system connectors | Each channel funnels into your unified inbox, where your AI agent handles conversations alongside your team. Already have channels connected? Jump to [Context integrations](/setting-up-conduit/integrations/context) to give your AI the knowledge it needs, or [Capabilities](/setting-up-conduit/integrations/capabilities) to let it take actions. ## Context Context integrations give your AI agent access to the data and documents it needs to answer questions accurately. The more relevant context your agent has, the higher your automation rate. | Source Type | What It Provides | | - | - | | **Property Management Systems** | Listings, reservations, check-in details, amenities, and pricing (auto-synced) | | **Documents** | Google Drive files, Notion pages, PDFs, CSVs, and web pages | | **CRM Data** | Contact records, deal stages, and account history | | **Knowledge Base** | Factual pages, folders, documents, links, and synced sources | ## Capabilities Capabilities are the tools and actions your AI agent can execute during conversations or workflows. | Capability Type | Examples | | - | - | | **Built-in Tools** | Calendar booking, availability checks, internet search | | **Workflow Actions** | Send messages, update contacts, trigger notifications, run AI prompts | | **CRM & Business Tools** | Create and update records in connected CRM and business platforms | | **Custom Tools** | Build your own tools with custom logic for your specific workflows | | **Marketplace Apps** | Install app and tool integrations across categories like CRM, e-commerce, project management, and more | Marketplace apps are available under **Agents > Marketplace**. Browse categories or search for specific tools to extend what your AI agent can do. ## Setting Up Integrations Most integrations are configured in **Agents > Marketplace**, **Settings > Connections**, or **Settings > Channels**, depending on the type. For detailed setup guides: * [HOPR by RoomChecking](/setting-up-conduit/integrations/hopr-roomchecking) covers credentials, setup, available tools, and Operator access * [Channels](/setting-up-conduit/integrations/channels) covers all communication channel setup * [Context](/setting-up-conduit/integrations/context) covers knowledge and data source connections * [Capabilities](/setting-up-conduit/integrations/capabilities) covers tools and action configuration # Manage spam Source: https://docs.conduit.ai/setting-up-conduit/manage-spam Keep unwanted email addresses and phone numbers out of your Conduit inbox. ## Add a phone number to spam Mark an unwanted caller as spam to keep conversations from that number out of your Conduit inbox. 1. Go to **Settings** > **Spam**. 2. In the **Phone** section, select **Add phone rule**. 3. Enter the full phone number, including the country code (for example, `+14155552671`). 4. Optionally add a display name to help your team recognize the rule. 5. Select **Create rule**. A phone spam rule suppresses the caller in Conduit, but it does not currently reject the call at the phone provider. Depending on your phone routing setup, a call can still reach Voice AI, a forwarded number, or a call group. ## Add an email address to spam Email spam rules keep matching conversations out of the inbox, prevent AI responses, and prevent matching contacts from being merged. 1. Go to **Settings** > **Spam**. 2. In the **Email** section, select **Add email rule**. 3. Enter the sender's email address and, if needed, choose a matching condition. 4. Optionally add a display name. 5. Select **Create rule**. ## Remove a spam rule 1. Go to **Settings** > **Spam**. 2. Open the actions menu beside the rule. 3. Select **Delete**, then confirm. Future conversations from that sender can appear in your inbox again. # Mobile app Source: https://docs.conduit.ai/setting-up-conduit/mobile Push notifications and phone calls in the Conduit mobile app Clean Shot 2026 06 30 At 13 45 12@2x The Conduit mobile app puts your inbox, the Operator, and phone calls on your iPhone or Android device. It uses the same account and settings as the web app, so most things carry over once you sign in. ## Download the app Get Conduit Mobile from the App Store. Get Conduit Mobile from Google Play. ## Push notifications Sheet Push notifications alert you on your phone when something needs your attention, even when the app is closed. ### Turn them on When you first sign in, the app asks permission to send push notifications. You can change this any time: 1. Open the app and go to the **Profile** tab. 2. Toggle **Push notifications** on or off If you denied the permission earlier, the toggle sends you to your phone's system settings to turn it on. Your mobile notifications mirror what you've already set on the web. Whatever notification types you have enabled under **Settings → Notifications** on web are exactly what you'll be notified about on your phone. There's no separate per-type setup in the app. ### Mute a specific workspace If you belong to more than one workspace, you can silence individual ones without turning everything off: 1. In the **Profile** tab, tap the **Notifications on for X workspaces** row (it shows how many of your workspaces have notifications on). 2. In the list that opens, toggle any workspace off to stop its notifications (push, in-app, and calls) everywhere. This is the same per-workspace setting as **Settings → Notifications** on web, so muting here mutes it on the web too. ## Phone calls Call You can place and receive Conduit phone calls directly from the app. ### To receive calls, you must be in a call group For calls to ring your phone through the app, your user has to be a member of a **call group**. If you're not in one, calls won't reach your device, even with the app installed and notifications on. You add yourself (or get added) to a call group on the web: 1. On web, go to **Settings → Connected Channels → Phone**, then open **Call groups**. 2. Open the relevant call group and add your user as a member. Once you're in a call group, calls routed to that group ring your phone in the app. Keep push notifications on, since that's how an incoming call reaches the app when it's backgrounded or closed. ### Transferring a call While on a call, tap **Transfer** to hand it off to a teammate or another phone number. You'll be asked to pick between two kinds of transfer: Puts the caller on hold and rings the person you're transferring to. When they pick up, you're talking with them privately — the caller still hears hold music. Brief them on the call, then tap **Complete** to bridge them together and drop yourself off. If they don't answer or you change your mind, tap **Cancel transfer** and the caller comes back to you. Hands the caller off immediately and ends the call on your end. If the target doesn't pick up, the caller flows to the fallback number on that Twilio line, or to voicemail if none is set. Use this when you don't need to talk to the person you're transferring to first. # Notifications Source: https://docs.conduit.ai/setting-up-conduit/notifications Stay updated on important events and messages without needing to monitor the platform constantly. ## Overview Notifications in Conduit allow you to stay updated on important events and messages without needing to monitor the platform constantly. The system enables email-based alerts tailored to user priorities, ensuring critical updates aren't missed while allowing customization of what triggers notifications. ## Setup Instructions To configure notifications, users should: 1. Access **Settings** > **Notifications** 2. Enable the notification feature 3. Select which activities trigger alerts (connected channel activity, specific inbox messages, billing updates) ## Configuring notifications for specific phone numbers Each user can independently configure which phone numbers they receive notifications for. These settings are personal and must be configured by each user individually — changes made by one user do not affect other users' notification preferences. To set up phone number notifications: 1. Navigate to **Settings** > **Notifications**. 2. Scroll down to the **Phone Numbers** section. 3. Select the specific phone numbers you want to receive notifications for. Each user must configure these settings individually. Notification preferences are not shared across accounts. ## Ringer settings By default, Conduit plays a ringer alert for incoming phone calls. You can silence these alerts at any time. To disable phone call ringer notifications: 1. Navigate to **Settings** > **Notifications**. 2. Uncheck **Phone call notifications**. Once unchecked, you will no longer hear ringer alerts for incoming calls. ## Inbox-level ringer and notifications Inbox membership directly controls which call ringers and notifications you receive. If you are not a member of a specific inbox, you will not receive ringer alerts or notifications for calls coming from customers within that inbox. This means that adding or removing yourself from an inbox is another way to control which rings you hear — without changing your global notification settings. **To add or remove yourself from an inbox:** 1. Navigate to **Settings** > **Inboxes**. 2. Select the inbox you want to update. 3. Add or remove yourself as a member. Use inbox membership to fine-tune which call notifications you receive. If you're hearing rings from calls that aren't relevant to you, check whether you're a member of the corresponding inbox and remove yourself if needed. ## Spam management Use spam rules to keep unwanted email addresses and phone numbers out of your Conduit inbox. See [Manage spam](/setting-up-conduit/manage-spam) for setup instructions and current phone-call limitations. # Managing PMS Knowledge Source: https://docs.conduit.ai/setting-up-conduit/pms-knowledge How to add custom Knowledge without fighting PMS-synced listing content. When you connect a Property Management System, Conduit syncs property and reservation data into the workspace. Some listing content is source-backed by the PMS, so understanding what the PMS owns helps you avoid duplicates and lost edits. ## How PMS Knowledge Works Once your PMS is connected, Conduit periodically syncs data such as listing descriptions, amenities, check-in instructions, and reservation context. PMS-backed content may appear in Knowledge as source-backed listing content. PMS-synced content is managed by the sync process. Direct edits to PMS-backed content can be overwritten the next time the PMS syncs. ## Creating New Knowledge for PMS Listings To add custom knowledge that will not be overwritten by PMS syncs, create a new manual Knowledge page instead of editing the PMS-backed content directly. Go to **Agents > Knowledge**, then find or create the folder for the relevant listing or listing group. Click the add button and choose **Page**. Add your custom information following the [Knowledge writing principles](/agent-hub/what-goes-where/knowledge). Keep each page focused on one topic. Apply listing or entity scope when your workspace exposes those controls, so the page only applies where it should. Manual pages persist across PMS syncs because they are separate from the PMS-managed source. ## Editing PMS Knowledge There are two common kinds of listing Knowledge: 1. **PMS-synced content** — Automatically created and updated by the PMS sync. This is managed by the integration. 2. **Manual pages** — Content your team creates directly in Knowledge. These pages are under your control. Do not edit PMS-synced content directly unless you are intentionally changing a manual copy. If you need to override or supplement PMS information, create a separate manual page. ### How to Override PMS Information If PMS-synced data is incorrect or incomplete, create a manual page with the corrected information and scope it to the affected listing. The AI will retrieve the most relevant Knowledge for the conversation. ## Avoiding Duplicates Duplicate Knowledge can appear when PMS-synced content and a manual page cover the same topic, such as two amenity descriptions or two Wi-Fi instructions. This can also happen when the same topic exists globally and at the listing level. To resolve duplicates: 1. Identify which content is PMS-synced and which content is manual. 2. Remove manual content that duplicates PMS-synced content, or keep the manual page only if it intentionally overrides the PMS source. 3. If you see both global and listing-level content for the same topic, keep the scope that matches the real policy. To prevent duplicates from reappearing, create manual pages for distinct corrections or additions instead of recreating content the PMS already syncs. ## Best Practices * **Avoid direct edits to PMS-synced content** when the PMS is the source of truth. * **Create manual pages** to add or override information. * **Use clear page titles** so manual content does not look like a duplicate of synced content. * **Review Knowledge periodically** after PMS changes, migration work, or listing updates. # Set up your workspace Source: https://docs.conduit.ai/setting-up-conduit/set-up-your-workspace Create workspaces, invite team members, and manage roles to organize your team's customer communication. ## Overview Conduit employs workspaces to organize team collaboration while keeping operations structured. These spaces enable separate accounts for different clients or departments while preserving real-time teamwork capabilities. For example, businesses managing multiple brands can maintain distinct workspaces without requiring separate accounts. ## General Setting Setup involves three core actions: 1. **Create a Workspace** - Upon account creation, Conduit automatically generates an initial workspace serving as the central hub for company messaging and customer interactions. 2. **Add Members** - Navigate to Settings > Members > + Add, select the member's role, and proceed. 3. **Switch Between Workspaces** - Click the workspace name in the top left corner, hover over it, then select your desired workspace or create a new one. ## Managing Member Roles Two primary roles exist: * **Admin**: Full access to settings, user management, billing, and workspace configuration with authority to invite, promote, or demote members. * **Member**: Limited access restricted to day-to-day functions like customer interaction and conversation management; cannot access billing or administrative features. ### Inviting Members 1. Go to Settings > Members 2. Click the Add button 3. Enter the member's email address 4. Select Admin or Member role 5. Click Send Invite New members receive an email with joining instructions. Members can switch between multiple workspaces via the app's navigation menu. ### Managing Current Members In Settings > Members, administrators see active members and pending invites. The three-dot menu beside each name allows role editing or member removal. Member details like names cannot be edited directly from the member list. Each member can update their own profile by clicking the button in the bottom left of the dashboard, then selecting **Profile Settings** > **Update Profile**. ## Member Invitations Invited members receive email prompts to create accounts and join workspaces. Check spam folders if emails don't appear immediately. Administrators retain full flexibility to manage permissions and roles across multiple workspaces. # Single Sign-On (SSO) & Directory Sync Source: https://docs.conduit.ai/setting-up-conduit/sso Connect your identity provider to Conduit for centralized authentication (SAML/OIDC) and automated user provisioning (SCIM). ## Overview Conduit supports enterprise Single Sign-On (SSO) so your team can log in with their existing corporate credentials. Instead of managing separate Conduit passwords, members authenticate through your identity provider (IdP), giving you centralized control over who can access your workspace. SSO is available on enterprise plans. Contact [support@conduit.ai](mailto:support@conduit.ai) to enable it for your organization. ## Supported Protocols | Protocol | Description | | - | - | | **SAML 2.0** | Industry-standard protocol supported by most enterprise IdPs | | **OIDC** | OpenID Connect for IdPs that support OAuth 2.0-based authentication | | **SCIM 2.0** | Automated user provisioning and deprovisioning via Directory Sync | ## Supported Identity Providers Conduit works with any SAML 2.0 or OIDC-compliant identity provider, including: * **Okta** * **Microsoft Entra ID** (formerly Azure AD) * **Google Workspace** * **OneLogin** * **JumpCloud** * **PingFederate** * **Custom SAML/OIDC providers** ## Setting Up SSO ### Prerequisites * An enterprise Conduit plan * Admin access to both Conduit and your identity provider * Your IdP's SAML metadata URL or OIDC discovery endpoint ### Step 1: Contact Conduit Reach out to your account manager or email [support@conduit.ai](mailto:support@conduit.ai) to request SSO enablement for your workspace. We'll provision the SSO connection and provide you with: * **ACS URL** (Assertion Consumer Service) for SAML * **Entity ID** / **Audience URI** * **Redirect URI** for OIDC ### Step 2: Configure Your Identity Provider Using the details from Step 1, create a new application in your IdP: 1. In Okta Admin, go to **Applications** > **Create App Integration** 2. Select **SAML 2.0** 3. Enter the ACS URL and Entity ID provided by Conduit 4. Set **Name ID format** to `EmailAddress` 5. Map the user's email as the primary attribute 6. Assign users or groups who should have access 1. In Azure Portal, go to **Enterprise Applications** > **New Application** 2. Select **Create your own application** > **Non-gallery** 3. Under **Single sign-on**, select **SAML** 4. Enter the ACS URL as the **Reply URL** and Entity ID as the **Identifier** 5. Set **Name ID format** to `EmailAddress` 6. Assign users or groups 1. In Google Admin, go to **Apps** > **Web and mobile apps** > **Add custom SAML app** 2. Enter the ACS URL and Entity ID 3. Set **Name ID format** to `EMAIL` 4. Map `Primary email` to `email` 5. Enable for the relevant organizational units ### Step 3: Share IdP Metadata Send your IdP's SAML metadata URL (or XML file) back to Conduit support. For OIDC, provide your discovery endpoint and client credentials. We'll complete the connection on our end. ### Step 4: Test the Connection Once configured, test the SSO flow: 1. Open an incognito/private browser window 2. Navigate to your Conduit workspace login 3. Select **Sign in with SSO** 4. Authenticate through your IdP 5. Verify you land in the correct workspace with the expected role ## How SSO Authentication Works Once SSO is enabled for your workspace: 1. **Member visits Conduit** and selects SSO login 2. **Conduit redirects** to your identity provider 3. **Member authenticates** with their corporate credentials (and MFA if configured) 4. **IdP sends assertion** back to Conduit confirming the member's identity 5. **Conduit grants access** based on the authenticated email matching a workspace member ## Directory Sync (SCIM) Directory Sync automates user provisioning and deprovisioning through the SCIM 2.0 protocol. When you add or remove someone in your identity provider, the change automatically propagates to Conduit. ### Supported Providers for Directory Sync | Provider | Provisioning | Deprovisioning | Attribute Sync | | - | :-: | :-: | :-: | | **Okta** | Yes | Yes | Yes | | **Microsoft Entra ID** | Yes | Yes | Yes | Directory Sync requires an existing SAML or OIDC enterprise SSO connection. Set up SSO first, then enable Directory Sync on top of it. ### What Gets Synced When Directory Sync is active, the following user lifecycle events are handled automatically: * **User created in IdP** — a corresponding Conduit account is provisioned and the member is added to the workspace * **User updated in IdP** — changes to name or email propagate to Conduit automatically * **User removed or disabled in IdP** — the member is deactivated in Conduit and all active sessions are revoked immediately ### Synced Attributes | Attribute | Description | | - | - | | Email address | Primary identifier, used to match workspace membership | | First name | Synced from IdP profile | | Last name | Synced from IdP profile | | Enabled/disabled status | Controls whether the user can access Conduit | ### Setting Up Directory Sync #### Step 1: Enable Directory Sync Contact [support@conduit.ai](mailto:support@conduit.ai) to enable Directory Sync on your existing SSO connection. We'll provide you with: * **SCIM Base URL** — the endpoint your IdP will push changes to * **Bearer Token** — the authentication token for SCIM requests #### Step 2: Configure Your Identity Provider 1. In Okta Admin, go to your Conduit application 2. Open the **Provisioning** tab and click **Configure API Integration** 3. Enter the **SCIM Base URL** and **Bearer Token** provided by Conduit 4. Test the connection 5. Under **To App**, enable: **Create Users**, **Update User Attributes**, **Deactivate Users** 6. Set the unique identifier to `userName` 7. Assign users or groups to provision 1. In Azure Portal, go to your Conduit enterprise application 2. Navigate to **Provisioning** > **Get started** 3. Set **Provisioning Mode** to **Automatic** 4. Enter the **SCIM Base URL** as the **Tenant URL** and **Bearer Token** as the **Secret Token** 5. Click **Test Connection** to verify 6. Review the default attribute mappings (email, first name, last name) 7. Set the provisioning scope and start provisioning #### Step 3: Verify After configuration, test the sync: 1. Assign a test user to the Conduit application in your IdP 2. Wait for the provisioning cycle (or trigger a manual sync) 3. Verify the user appears in **Settings** > **Members** in Conduit 4. Unassign the test user from the IdP 5. Verify the user is deactivated in Conduit ### Current Limitations * **Group sync** is not yet supported. Users are provisioned individually, not by group membership. * **Custom attribute mapping** is not available. Only the standard attributes listed above are synced. * **Role mapping** is not synced from IdP. Roles (Admin, Member) are still managed within Conduit. * Synced attributes are read-only in Conduit. Changes must be made in the IdP. ## Member Management with SSO ### Without Directory Sync If you're using SSO without Directory Sync, members must still be invited manually: 1. Go to **Settings** > **Members** 2. Click **Add** and enter the member's corporate email 3. Assign their role (Admin or Member) 4. When they log in via SSO, they'll automatically join the workspace To revoke access without Directory Sync: * **Remove from Conduit**: Go to **Settings** > **Members** and remove the user * **Remove from IdP**: Unassign the user from the Conduit application in your IdP Without Directory Sync, removing a user from your IdP prevents future logins but does not automatically remove them from the Conduit workspace. Remove them from both places to fully revoke access. ### With Directory Sync When Directory Sync is enabled, user lifecycle is managed from your IdP: * **Adding members**: Assign the user in your IdP, they're automatically provisioned in Conduit * **Removing members**: Unassign or disable the user in your IdP, they're automatically deactivated in Conduit with sessions revoked ### Role Mapping Roles (Admin, Member) are managed within Conduit, not synced from your IdP. After a user is provisioned or authenticates via SSO, their Conduit role determines what they can access. ## Enforcing SSO Once SSO is configured and tested, you can request SSO enforcement for your workspace. When enforced: * All members must authenticate through your IdP * Email/password login is disabled for the workspace * Social login (Google, GitHub) is disabled for the workspace Contact [support@conduit.ai](mailto:support@conduit.ai) to enable SSO enforcement. We recommend testing SSO with a few members before enforcing it workspace-wide. Keep at least one admin with backup access during the transition. ## Frequently Asked Questions Yes. If your organization has multiple Conduit workspaces, SSO can be configured for each one. Members authenticate once through your IdP and can access any workspace they've been invited to. MFA is handled by your identity provider. If your IdP requires MFA, members will complete the MFA challenge during SSO login. Conduit respects whatever authentication policies your IdP enforces. If your IdP is unreachable, members won't be able to log in via SSO. Contact Conduit support to temporarily enable backup authentication methods during an IdP outage. Yes. Conduit supports automated user provisioning and deprovisioning via SCIM 2.0 (Directory Sync). Currently supported with Okta and Microsoft Entra ID. See the Directory Sync section above for setup instructions. Yes. SSO connections can be scoped to specific email domains, ensuring only members with matching corporate email addresses can authenticate. # A Lens in the AI's Brain Source: https://docs.conduit.ai/using-the-inbox/a-lens-in-the-ais-brain Inspect the reasoning, sources, and actions behind every AI-generated message directly in the conversation thread. Conduit provides explainability for every AI-generated message. You can observe the agent's reasoning process, source materials, and next steps without leaving the conversation thread. ## Message Types Four message types appear in the system: 1. **Sent message** - The AI had high confidence and sent the reply automatically (only on autopilot) 2. **Proposed reply (Co-Pilot)** - The AI drafted a response for your approval 3. **Held reply** - The AI drafted a response and did not send it, because someone had already replied to the contact. The card says who: a teammate, a workflow, or a reply sent outside Conduit (in your PMS or on the OTA). This happens on autopilot too, and does not mean autopilot is switched off. 4. **Urgent message** - Escalated based on predefined conversation tags ## Inspecting AI Thinking ### AI Reflection Press `i` to view how the AI analyzed conversation context and formulated its response plan. ### Sources Expand to see referenced documents, knowledge base entries, and data points. You can edit sources directly from this view. ## Acting from the Inbox ### Teach (Command + K) Create or edit Knowledge entries and establish or modify Guardrails (policies/rules). Updates immediately improve future replies. ### Draft (Command + J) Generate draft replies in the composer for both proposed responses and escalations where a starting point helps. ## Testing the AI After taking action (teaching or editing sources), verify learning through: * **Regenerate the message** - For unsent Proposed replies or AI Missing Info messages * **Recreate in Sandbox** - For sent messages or exact scenario simulation ## Calls A centralized view displays inbound and outbound calls handled by team members or AI, with full transcripts and AI-generated conversation summaries available per call. # Inbox Zero Philosophy Source: https://docs.conduit.ai/using-the-inbox/inbox-zero-philosophy Manage your inbox with an actionable task-based approach inspired by Superhuman to reduce distractions and boost productivity. The inbox management approach in Conduit is inspired by Superhuman and emphasizes removing distractions and converting your inbox into an actionable task list. The core objective centers on achieving "Inbox Zero" - maintaining a Todo count of zero. ## Key Benefits * Reduces team workload * Enables focused message handling without distractions * Prioritizes meaningful tasks * Boosts overall productivity * Supports important analytics tracking * Maintains organized inbox structure ## Workflow Features ### Mark Done (E key shortcut) Completed conversations move to the Done tab for searchability. If contacts respond, conversations automatically return to Todo status. ### Follow-Up/Snooze (Z key shortcut) Users can set reminders for later action. This feature suits scenarios requiring investigation time - technical issues, scheduling, payment confirmations. Conversations transfer from the Follow-Up tab back to Todo when the timer expires. ### Notes & Mentions Team members add notes via the conversation panel's "Add a note" option. Typing `@` followed by a name mentions specific team members, triggering notifications. The Mentions sidebar provides complete mention history. ### Filters Organize inboxes by categories, conversation tags, and escalation status. ### Custom Views Saved filter configurations shareable across team accounts. ## Conversation-Level Actions | Action | Shortcut | Description | | - | - | - | | Reply | R | Multi-channel response capability (Email, Text, WhatsApp, Widget) | | Assign | A | Direct team member assignment with notifications | | Follow-up | Z | Message-level reminders | | Mark Done | E | Task completion | | Translate | - | Multi-language support (11+ languages) | ## At a Glance The sidebar panel provides a contact information overview, open task summaries, and call history. ## Recreate in Sandbox This feature allows you to simulate conversations and teach the AI within the inbox environment. # V3 Migration Overview Source: https://docs.conduit.ai/v3-migration Everything you need to know about upgrading to Conduit V3