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

# Sales Agent

> Capture and qualify leads, book meetings with inline Calendly embeds, and alert your team in Slack the moment a lead comes in.

## What the sales agent does

A **sales agent** is an agent with `type: sales`. It runs on your marketing site through the web widget and is built for pre-sale conversations: answering product and pricing questions, capturing visitor contact details, qualifying leads against your criteria, booking meetings, and handing off to a human rep when it matters.

Everything below is configured on **AI Agents > \[Your Sales Agent] > Configure**.

## Conversation starters

Preset questions visitors can tap when the widget opens (for example "What pricing plans do you offer?"). Each starter takes an optional **page pattern** so it only appears on matching pages: `/pricing*` shows a pricing starter on pricing pages only, while starters without a pattern show everywhere. Patterns support `*` (single path segment) and `**` (across segments).

## Lead capture

Collect visitor contact details with a native form inside the chat. Turn it on under **Lead capture** and choose when the form appears:

| Timing          | Behavior                                                                                                                                                                                                   |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Before chat** | The form gates the conversation. Visitors fill it in before they can send a message.                                                                                                                       |
| **During chat** | The AI decides when to show the form, typically after buying intent appears (pricing questions, demo requests). It can also capture details conversationally without a form when a visitor types them out. |
| **After chat**  | The form appears after a few messages have been exchanged.                                                                                                                                                 |

Email is always required. You can add name, phone, and company as built-in fields, plus custom fields (text, email, phone, or dropdown), and drag them into the order you want. Submissions create a **lead** contact in [Contacts](/contacts/overview) with attribution (landing page, UTM parameters, referrer) attached.

Visitors who already submitted the form in a session are never asked again.

## Qualification

Under **Lead qualification criteria**, describe in plain language what makes a lead a good fit:

```text theme={null}
Qualified: teams of 10+ using HubSpot or Salesforce with an active budget.
Not qualified: students, agencies reselling to clients, companies under 5 people.
```

The AI uses this to decide when to mark a lead qualified or not qualified during conversation. Leave it empty and the AI qualifies on general fit signals. Qualified leads automatically become deals in your sales pipeline when the Sales Suite is enabled.

## Integration embeds

Embeds are scheduling pages and forms the AI can surface directly in the chat at the right moment, for example when a visitor asks to book a demo. No account connection or OAuth is needed. You paste a link, and the AI gets a tool to show it.

<Steps>
  <Step title="Add an embed">
    Under **Integration embeds**, click **Add integration** and pick Calendly, Orbit forms, or Custom link.
  </Step>

  <Step title="Paste the link">
    For Calendly, paste any scheduling link (a single event type like `https://calendly.com/your-team/30-min-demo` works best). For Orbit forms, paste the form's share link (`https://orbitforms.ai/r/team-id/form-slug`).
  </Step>

  <Step title="Give it a label">
    The label ("Book a demo") is shown as the card title in chat and helps the AI pick the right embed when you have several.
  </Step>
</Steps>

How each type renders in the chat:

| Type            | Rendering                                                                                                                                                                                                                                                   |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Calendly**    | A live booking calendar, inline in the chat. The visitor picks a time without leaving the conversation. Their name and email are prefilled when known (from an identify call or a lead form they submitted). When they book, the card shows a confirmation. |
| **Orbit forms** | The form itself, inline in the chat, auto-sized to its content.                                                                                                                                                                                             |
| **Custom link** | A button that opens the URL in a new tab. Used for any other destination, and as the fallback when a Calendly or Orbit link points at an unexpected domain.                                                                                                 |

Every inline embed also has an "Open in new tab" link, so visitors on networks that block embedded content can still get through.

<Tip>
  The AI shows embeds when conversation context calls for them: a visitor asking to book a call gets the Calendly card, one asking to get in touch gets your contact form. You can steer this with agent [instructions](/agents/instructions), for example "always offer to book a demo after qualifying a lead."
</Tip>

## Lead notifications

Under **Notifications**, alert your team the moment a fresh lead is captured. Notifications fire once per lead (no duplicates when a lead is captured incrementally across the same conversation).

### Slack

Pick a channel and every new lead posts a summary there: name, email, phone, company, the page they came from, and their traffic source. Sales handoff requests post to the same channel.

* Slack connects **once for your whole workspace** on the [Slack integration page](/integrations/slack). The same connection powers agent Slack channels; the picker here only controls where lead alerts go. If Slack isn't connected yet, the panel shows a **Connect Slack** button.
* Public channels work immediately (the Halo bot joins automatically). For a **private** channel, invite the bot to the channel first.
* Use **Send test** next to the channel picker to post a test message and confirm the wiring.

### Email

Add any number of recipient addresses. Each gets a plain email per new lead with the captured details and a link to the lead in your dashboard.

### CRM

If [HubSpot](/integrations/hubspot) is connected, captured leads with an email are also created or updated as HubSpot contacts automatically.

## Proactive messaging

Nudge visitors with a teaser bubble before they open the widget. Triggers fire on **time on page**, **scroll depth**, or **exit intent**, each with an optional page pattern so different pages get different messages. A trigger can stack multiple bubbles, and you can customize the teaser's background and text colors. Clicking a teaser opens the chat and sends the message to the AI so the conversation starts immediately.

## Human handoff

The AI hands the conversation to a human when a visitor asks for a person or when the conversation warrants it (enterprise deals, custom requirements). Handoffs create a ticket in your [Inbox](/inbox/overview) with the conversation context and lead details attached, and post to your lead-alert Slack channel when one is configured.
