What the sales agent does
A sales agent is an agent withtype: 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 form inside the chat. Turn it on under Lead capture and choose when the form appears:
Then pick which form to show:
- Built-in form. 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.
- Orbit form. Pick any published form from your connected Orbit account (or paste its share link). The form is embedded in the chat in place of the built-in form, with the visitor’s name and email pre-filled when already known. Use this when your form has logic, more fields, or a design you already maintain in Orbit. See Orbit forms in the chat for how submissions attach to the conversation.
Qualification
Under Lead qualification criteria, describe in plain language what makes a lead a good fit: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. Calendly event types and Orbit forms can be picked straight from your connected accounts; custom links only need a URL.1
Add an embed
Under Integration embeds, click Add integration and pick Calendly, Orbit forms, or Custom link.
2
Pick the event type or form, or paste a link
For Calendly, choose an event type from the list when Calendly is connected, or paste any scheduling link (a single event type like
https://calendly.com/your-team/30-min-demo works best). For Orbit forms, choose a form from the list when Orbit is connected, or paste the form’s share link (https://orbitforms.ai/r/team-id/form-slug).3
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. Picked event types and forms use their own name until you change it.
Every inline embed also has an “Open in new tab” link, so visitors on networks that block embedded content can still get through.
Scheduling routing
With several booking pages (an enterprise AE’s calendar, an SDR round-robin, a regional team), Scheduling routing sends each visitor to the right one based on who they are. Turn it on under Scheduling routing on the sales agent.- Rules use the same contact and company filters as chat routing and segments: company size, plan, country, lead score, any custom attribute, including answers from the lead form or an Orbit form (they are stored as contact attributes). Each rule points at one of your embeds. Rules run top to bottom and the first match wins.
- Default is the page shown when no rule matches, or when the visitor hasn’t shared anything to match on yet. Leave it empty to show nothing until a rule matches.
The rules never leave the server: the widget only learns which page to show.
Orbit forms in the chat
With Orbit connected, the sales agent treats your Orbit forms the way Intercom treats a Typeform: you choose any form from your account, it loads inside the chat, the visitor can keep chatting around it, and each submission reaches your team as a lead with the answers attached. What happens on submit:- A lead contact is created or updated with the form’s answers as contact attributes, and the submission appears on the contact’s timeline.
- Your lead notifications fire (Slack and email), naming the form the lead came in on.
- The submission is attached to the visitor’s conversation, so it opens from the lead’s page and your team sees it next to the chat.
- The AI sees the answers for the rest of the conversation and continues from them instead of asking again. It also qualifies against your criteria using what the form collected.
1
Connect Orbit
Connect your Orbit account under Settings > Integrations > Orbit. This is the same connection that syncs submissions and booked meetings into Contacts.
2
Add the handshake field to the form
In Orbit, add a Hidden Field named
halo_session to any form you embed in the chat. The chat fills it in automatically; without it, submissions still create contacts but are not attached to the conversation. The form picker in Halo shows whether a form has the field and links to the form’s editor.3
Pick the form
Choose it as the lead-capture form, as an integration embed, or both.
The first time you pick a form, Halo may ask you to paste the share link of any form from your Orbit account once. Orbit’s API does not expose the team id that share links are built from, so Halo learns it from that link and builds the links for every other form itself.
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. 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.