# Channels — How Tickets Arrive

Tickets can enter the helpdesk from every channel Karmaflow.ai supports. This article covers how each one works and what to configure. You don't need them all — pick the ones your customers use.

## Email

Email is the fastest channel to launch and the most common way customers reach support.

### How it works

Your tenant has a helpdesk inbound address. Mail sent to it becomes a ticket:

- A **new email** opens a new ticket, with the sender resolved to a CRM contact (created if needed) and their company associated by email domain.
- A **reply** to an existing ticket's notification threads back onto that ticket automatically, matched by the email's `References` / `In-Reply-To` headers, with the ticket number (`[#1042]`) in the subject as a fallback.
- An **AI pre-filter** (the same spam/relevance gate used elsewhere) can drop junk before it becomes a ticket.

### Set it up

1. In **Helpdesk Settings**, set the **support email local part** (the name before the `@`) — e.g. `support` or `help`.
2. Point your public support address at the helpdesk inbound address (typically by forwarding `support@yourcompany.com` to it, or using it directly).
3. Outbound ticket emails set a **Reply-To** back at the inbound address, so any plain email reply the customer sends threads onto the ticket — no portal required.

Group Inboxes are a separate, unrelated feature (a shared team mailbox). The helpdesk email channel is its own thing.

## Customer Portal

Customers who sign in to your portal can open and track tickets directly. This is the richest experience — full history, status, expected response time, and self-service. See **Customer Portal** for setup, and **Getting Started** to enable it.

## Chat, SMS, and Voice Agents

Your existing AI agents can open and update tickets mid-conversation:

- A **chat agent** can create a ticket when a website visitor reports an issue that needs follow-up, and an escalation/handoff can auto-create one.
- An **SMS agent** or **voice agent** can do the same during a text thread or phone call. When a person on your team texts that customer from a ticket, the SMS agent stops answering them while the ticket is open, and their texts go onto the ticket instead — see [Replying by text](/help/helpdesk/tickets).

To enable this, the agent needs the helpdesk ticket tools (`create_ticket`, `update_ticket`, `add_ticket_reply`, `get_ticket`, `list_tickets`) in its tool list. Every ticket an agent opens is stamped with the originating chat session, call, or SMS session, so the ticket links straight back to the conversation.

A common pattern: an orchestration watches for a call or chat that ends **escalated** or **needs human review**, and creates a ticket with the transcript summary so a human can pick it up.

## Web Forms

A [form endpoint](/help/forms/connect-a-website-form) on your website creates or updates the submitting **contact**; it does not open a ticket on its own, and there is no per-form "create ticket" switch in its settings today. To get a ticket from a web form:

- **Through a workflow.** Build an [orchestration](/help/orchestrations/building-workflows) on the **Form Endpoint Submission** trigger, pick the form, and add a **Task Agent** step whose agent holds the helpdesk ticket tools (above). The agent opens the ticket for the submitting contact with the submission's fields in its context.
- **Through the API or MCP.** Your page, or a system behind it, can call `create_ticket` directly (see [API and MCP](#api-and-mcp) below) and post the form to the endpoint as well, so the contact is kept in step.

## API and MCP

- **API** — create and manage tickets programmatically from your own systems.
- **MCP tools** — the same five ticket tools are exposed over the Model Context Protocol, so any connected AI agent (including external ones) can file and update tickets.

## Origin Traceability

Whatever the channel, each ticket records where it came from — the chat session, call, SMS session, email thread, form submission, orchestration, or the staff member who opened it — and surfaces those links in the ticket's **Origin** panel. This is how a ticket stays connected to the conversation that created it.
