> ## 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.

# Zapier

> Start Zaps the moment a ticket opens, a conversation escalates, a lead is captured or a deal moves, and create tickets, contacts, companies, deals, tasks and issues from thousands of apps.

## What Zapier adds to Halo

The **Halo Agents** app for Zapier connects your workspace to thousands of apps without code.

| Kind | What it does |
| - | - |
| **Triggers** | Start a Zap the moment something happens in Halo: a ticket is opened or escalated to a human, a contact or lead is created, a deal moves or is won, a customer leaves a thumbs-down, a health score drops. Halo sends the event to Zapier; nothing polls. |
| **Actions** | Write to Halo from any other app: create a ticket, reply to it, add an internal note, change its status or assignee, create or update contacts and companies, create deals, tasks and issues, enroll a record in a workflow. |
| **Searches** | Find a contact by email, a company by domain, a ticket by its message, a deal by name, and *Find or Create* a contact or company when none matches. |

Zapier is available on plans that include **API access** (Pro and up).

## Connect Halo

**1. Add a Halo Agents step**

In Zapier, create a Zap and search for **Halo Agents**. Pick a trigger (such as **Ticket Escalated**) or an action (such as **Create Ticket**).

**2. Sign in and approve**

Click **Sign in**. Halo asks you to sign in and approve what Zapier may do. Read access is pre-selected; tick the write scopes (inbox, contacts and companies, CS suite, workflows) you want your Zaps to use. The connection is named after your workspace.

**3. Test and turn on**

Map fields, test the step and publish the Zap. Turning a Zap with a Halo trigger on registers a webhook in Halo; turning it off removes it.

> [!NOTE]
>
> A connection acts as the person who connected it: actions can only do what that person can do in the dashboard, and revoking the connection in Halo (Settings → Integrations) stops its Zaps.

## Triggers

| Object | Triggers |
| - | - |
| Tickets | **New Ticket**, **Ticket Escalated** (an AI agent handed off, or a visitor asked for a human), **Ticket Status Changed** (optionally for one status) |
| Contacts | **New Contact**, **New Lead** |
| Companies | **New Company**, **Health Score Dropped**, **Renewal at Risk** |
| Deals | **New Deal**, **Deal Stage Changed**, **Deal Won** |
| Issues | **New Issue** |
| Feedback | **Negative Feedback** (a thumbs-down on an AI reply) |
| Events | **Event Tracked** (a custom event from the SDK, optionally one event name) |

Every trigger delivers the event as Halo sends it: `event`, `occurred_at`, `actor` and `data`, where `data` holds the record under its object name (for example `data.ticket.status`, `data.contact.email`, `data.deal.stage.name`) and the event's own fields beside it (`data.old_status` and `data.new_status` on a status change, `data.escalation_reason` on an escalation, `data.from_stage` and `data.to_stage` on a stage change). While you set up a Zap, **Test trigger** loads your three newest records of that kind so you can map their fields.

> [!TIP]
>
> **Ticket Escalated** is the trigger for paging: connect it to Slack, PagerDuty, Opsgenie or SMS and the on-call person hears about a hand-off the second it happens, with the customer, the company and the reason in the payload.

## Actions and searches

| Object | Actions | Searches |
| - | - | - |
| Tickets | Create Ticket, Reply to Ticket (chat or email), Add Internal Note, Update Ticket Status, Assign Ticket, Move Ticket to Inbox | Find Ticket |
| Contacts | Create Contact, Update Contact | Find Contact, Find or Create Contact |
| Companies | Create Company, Update Company | Find Company, Find or Create Company |
| Deals | Create Deal, Update Deal, Move Deal Stage | Find Deal |
| Tasks | Create Task | |
| Issues | Create Issue | |
| Workflows | Enroll in Workflow | |
| Team | | Find Team Member |

* **Team members, agents, inboxes, pipelines and stages, workflows and statuses** are dropdowns filled from your workspace. Choosing a pipeline narrows the stages to its own.
* **Updates change only the fields you fill in.** An empty field never clears a value in Halo. The one exception is **Assign Ticket**: leave *Assign to* empty to unassign the ticket.
* **Custom fields** take the field's name and a value; on an update they merge into the stored values.
* **Records**: map a ticket, contact, company or deal ID from a trigger or an earlier step, or let Zapier look it up with the matching Find.

Actions run the same tools the [Halo MCP connector](https://docs.haloagents.ai/mcp/overview.md) exposes, with the same validation, permission checks and audit log.

## What Zapier can access

| Scope | Used for |
| - | - |
| `data:read` | Ticket, contact, company, feedback and event triggers; Find Contact, Find Company, Find Ticket; the team, agent and inbox dropdowns |
| `cs:read` | Deal and issue triggers, Renewal at Risk; Find Deal; the pipeline and stage dropdowns |
| `data:write` | Create and update contacts and companies |
| `inbox:write` | Create, reply to, note, re-status, assign and move tickets |
| `cs:write` | Create and update deals, move stages, create tasks and issues |
| `workflows:read`, `workflows:write` | The workflow dropdown and Enroll in Workflow |

Write scopes are unticked by default on the consent screen. A connection without them can still run every trigger and search.

## Building your own integration

The Zapier app is built on Halo's [REST API and webhooks](https://docs.haloagents.ai/api-reference/rest-api.md), which any OAuth client can use the same way.


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