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

# Connect Zapier

> Bridge the 8,000+ apps Zapier supports to your agent — recognize callers, take live actions on a call, and log calls back to your tools, all on your own Zapier account.

Zapier is Flowyte's **universal bridge** to the thousands of apps that don't have a built-in Flowyte
connector. If your app is HubSpot, Jobber, Shopify, Google Sheets, or a SQL database, use its
[built-in connector](/integrations/overview) instead — it's faster and deeper. For everything else,
Zapier lets your agent **recognize your customers**, **take live actions during a call**, and **log
calls back into your tools** — all through your own Zapier account.

<Note>
  **You pay Zapier for tasks; Flowyte doesn't charge extra.** Everything here runs on your Zapier plan
  at Zapier's normal task pricing. Flowyte adds no fee for Zapier calls or for storing your synced records.
</Note>

There are three things you can set up — do the one(s) you need:

<CardGroup cols={3}>
  <Card title="Recognize callers" icon="user-check">
    Sync your customers in so the agent greets them by name and looks them up instantly — no per-call cost. **Start here.**
  </Card>

  <Card title="Live actions on a call" icon="bolt">
    Book an appointment or update a ticket mid-call through a Zapier MCP connection.
  </Card>

  <Card title="Call events out" icon="paper-plane">
    Log the call or notify your team the moment a call ends.
  </Card>
</CardGroup>

## Before you start

* A **Zapier account** — any paid plan for real volume; the free plan is fine to test.
* Your Flowyte account with at least one agent.
* For the triggers/actions in sections 1 and 3, the **Flowyte Zapier app**. During the beta it's
  invite-only — use the invite link your Flowyte contact sent you to add "Flowyte" to your Zapier
  account. (Once it's public it'll be in Zapier's app directory.) Section 2 (live actions) needs no
  app — it uses your own MCP endpoint.

## 1. Recognize callers (sync your customers in)

This is the most valuable setup and costs the least. A Zap copies your customer records into Flowyte;
the agent reads them **locally** at call time — instant, and **no Zapier task per call**.

<Steps>
  <Step title="Build the sync Zap">
    In Zapier, create a Zap. **Trigger:** your app (e.g. "New or Updated Contact" in your CRM).
    **Action:** **Flowyte → Create or Update Record**. Connect your Flowyte account when prompted.
  </Step>

  <Step title="Map the fields">
    Pick the **record type** (e.g. `customer`) and map your app's fields onto it — at minimum a **phone
    number** (how the agent matches a caller) and a **name**. Add anything the agent should know (account
    status, last order, …). Turn the Zap on.
  </Step>

  <Step title="Backfill your existing customers — don't skip this">
    A fresh Flowyte store is **empty**, so until you load your *existing* records the agent recognizes
    nobody and looks broken. Load them once with **Zapier Transfer** (bulk-run your existing records
    through the same Create/Update Record action) or a **CSV import** into Flowyte.
  </Step>
</Steps>

**How the agent uses it:** on a call it matches the caller's number and greets them by name. Sensitive
details (balance, address, order history) are only read out **after the caller verifies their
identity** — caller ID alone is spoofable, so Flowyte protects those fields by design. Leave the Zap
on; if you turn it off, the agent works from stale data.

## 2. Take live actions during a call (Zapier MCP)

For things the agent must do **live** — "book me in now", "update my open ticket", "check today's
availability" — connect a **Zapier MCP** endpoint. Flowyte calls your Zapier action mid-call and waits
for the result (about 1–4 seconds; the agent covers the pause naturally).

### Set up your Zapier MCP server

<Steps>
  <Step title="Create the server and enable specific actions">
    At **[mcp.zapier.com](https://mcp.zapier.com)**, create an MCP server and enable the exact actions
    you want the agent to run (e.g. "Create Appointment"). See
    [Zapier's MCP docs](https://docs.zapier.com/mcp) for the current setup steps — their UI evolves. Any
    server works, including the **dynamic-discovery ("agentic")** servers Zapier now creates by default —
    you pick the specific action in Flowyte next, and Flowyte resolves it into a concrete, pinnable
    schema.
  </Step>

  <Step title="Copy the endpoint and token">
    On the server's **Connect** step, copy the **endpoint URL** (it contains a token). Keep it secret —
    it's the credential Flowyte uses; rotating it in Zapier revokes Flowyte's access.
  </Step>
</Steps>

### Connect it in Flowyte, resolve the action, and freeze a skill

<Steps>
  <Step title="Connect the endpoint">
    In Flowyte, open **Integrations → Zapier → Connect** and paste your MCP endpoint URL. Flowyte lists
    the actions you equipped. (API: `POST /integrations/zapier/connect`, then
    `GET /integrations/zapier/tools`.)
  </Step>

  <Step title="Pick the action — Flowyte resolves it to a pinnable schema">
    Pick the specific action you want (e.g. "Create Spreadsheet Row"). Flowyte **resolves** it to a
    concrete, closed schema of typed fields — this works the same whether your server is classic or
    agentic; you never freeze a generic "run any action" tool.
  </Step>

  <Step title="Pin dynamic parents when prompted">
    **Actions with dynamic fields** (a spreadsheet's columns, a CRM's custom fields) only expose their
    concrete fields once their parent is pinned — the specific spreadsheet, then its worksheet, then its
    columns resolve. Flowyte prompts you to pin each parent in turn (spreadsheet → worksheet → column) —
    pick a value and it re-resolves the next level down. Leave a parent unpinned and its dynamic children
    can't be frozen.
  </Step>

  <Step title="Probe the action (reads)">
    For a read action, **Probe** it — Flowyte runs it once against a real record so you can choose
    exactly which response fields the agent may read back (deny-by-default). Write actions skip live
    probing — Flowyte already knows their response shape.
    <Warning>Probing **runs the real action** — it may create or send something. Only probe an action you're comfortable executing once.</Warning>
  </Step>

  <Step title="Author Instructions and Output, then freeze">
    Write the **Instructions** (what the action should do) and the **Output** — the Output must ask for
    the result **as strict JSON**, since that's what Flowyte parses to hand fields back to the agent.
    Then **freeze** the action into a skill. **Every action is treated as a write by default**: the agent
    **confirms with the caller before running it** and runs one at a time. If an action genuinely changes
    nothing, mark it a read — you'll write a short reason, recorded for audit. Or let **Flowyte Assist**
    do the resolve-and-freeze for you — just describe what you want.
  </Step>
</Steps>

<Info>
  **Cost:** each live action is about **2 Zapier tasks** on your plan. Use live actions for things that
  must happen on the call; use the **records sync** (section 1) for anything you can look up.
</Info>

## 3. Send call events to your apps

Log calls or notify your team automatically when a call finishes.

<Steps>
  <Step title="Create a Zap with the Flowyte trigger">
    Choose an event: **Call completed** (fires when the call ends — caller, duration, outcome),
    **Call analyzed** (a few minutes later — outcome, sentiment, and a **summary**), or **Call
    transferred**.
  </Step>

  <Step title="Write it wherever you like">
    A CRM note, a Slack message, a spreadsheet row. Turn the Zap on.
  </Step>
</Steps>

<Warning>
  **Privacy:** these events include the caller's **phone number**, and "Call analyzed" includes a
  **call summary** — personal data. Send it only to apps and people who should see it.
</Warning>

## Which Zapier plan do I need?

Everything runs on your Zapier plan, billed in **tasks**. The driver is usually the live actions:

```
Monthly live-action tasks  ≈  (calls/month) × (live actions/call) × 2
```

**Example:** 1,000 calls/month with \~1 live action each → `~2,000 tasks/month` for live actions; add
your record syncs (\~1 task each) and call-log Zaps (\~1 task per call) → pick a Zapier plan comfortably
above your total. Prefer the **records sync** for lookups (no per-call task) and reserve **live
actions** for what must happen on the call. Zapier's tiers change — check
[zapier.com/pricing](https://zapier.com/pricing).

## Troubleshooting

<AccordionGroup>
  <Accordion title="The agent doesn't recognize my callers">
    Did you **backfill**? A new store is empty until you load existing customers (Zapier Transfer or CSV).
    Is the sync Zap **on**? Check "last synced" in Flowyte — if it's old, the Zap is off or out of tasks.
    It greets by name but won't read a balance/address → *by design*: sensitive fields need the caller to
    verify first.
  </Accordion>

  <Accordion title="A dynamic field won't resolve (spreadsheet columns, custom fields)">
    Pin its parent first — the specific spreadsheet, then its worksheet — and re-resolve the action; its
    columns/fields materialize once the value above them is pinned.
  </Accordion>

  <Accordion title="A live action fails during a call">
    The integration card shows a **degraded/down** reason: **out of tasks** (your Zapier plan ran out —
    the agent says a graceful line; upgrade Zapier), **needs reconnect** (your MCP token rotated —
    reconnect with the fresh URL), or **timed out** (usually transient). Bulk/"send to everyone" actions
    are blocked on purpose — pin the exact recipient in Zapier.
  </Accordion>

  <Accordion title="My 'call ended' Zap doesn't fire">
    If you **rebuilt** the Zap, relink from the new one. If it "just stopped," your catch URL was failing
    and Flowyte disabled it after retries — fix the Zap and re-enable it in Flowyte. If Flowyte shows the
    event **delivered** but nothing happened, check the Zap's history in Zapier.
  </Accordion>
</AccordionGroup>

## Safety model

* **Scoped access** — Flowyte only sees the actions *you* equipped on your server. Your token is the
  credential; revoke it in Zapier and access ends.
* **Frozen skills** — a skill pins its arguments, allow-lists exactly which output fields the agent
  may read (deny-by-default), and treats every action as a **confirm-gated write** unless a human
  attests it's read-only.
* **Your bill, your data** — Zapier calls run on your Zapier plan; Flowyte adds no markup.

See the [Zapier connector reference](/integrations/zapier) for the full endpoint list.
