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

# Integrations overview

> How PyAI integrations work: outbound destinations (Slack, Zapier, CRM, helpdesk) and inbound call imports (JustCall, and more in certification), with signed, retried, visible delivery.

PyAI integrations come in three shapes:

* **Agent frameworks.** Keep LiveKit or Pipecat in charge of transport,
  orchestration, the LLM, and tools while PyAI Hear and Speak provide the
  speech layer. These live in the **Frameworks** nav group
  ([LiveKit](/guides/livekit-agents), [Pipecat](/guides/pipecat)).
* **Outbound destinations.** When a call completes (a Recap summary finishes,
  or AMD classifies the call), PyAI delivers it to your tools: Slack
  messages, Zapier triggers, CRM notes and activities, Zendesk tickets, or a
  Google Sheets row.
* **Inbound call imports.** Completed calls from your phone provider flow
  into PyAI for transcription and any Recap/Trace processing you enabled.
  JustCall is live; Aircall, Dialpad, Twilio, and RingCentral are in live
  certification.

Outbound destinations and inbound call imports are configured in
**Console → Integrations**. Framework adapters run inside your own agent
worker.

## Before you connect

An integration moves an existing product event; it does not create that event
or silently enable paid processing.

1. Enable Recap before subscribing a destination to completed summaries.
2. Enable Trace separately when an eligible call should receive a compliance
   scorecard.
3. Configure AMD before subscribing to answering-machine decisions.
4. Carry a stable `call_id` and any CRM identifiers needed for matching.
5. Confirm the source key has the scopes required by Hear, Recap, Trace, or AMD.

Use the destination's **Test** action to prove credentials and mapping. A sample
delivery proves the destination, not the upstream transcript or analysis path;
run one real test call before launch.

### Carry CRM identifiers into the call

Give every call the stable identifiers the destination will use for matching:

* Omni: send your identifiers in `configure.meta` (for example,
  `meta.external_id` or a CRM record id).
* Hear async jobs: send `call_id` and `crm_fields`.
* Manual Recap submission: send `crm_fields` beside the utterances.
* Managed inbound imports: configure matching in the integration and confirm a
  real imported call resolves to the expected contact/account.

`record.fields` in Recap, agent-specific
[post-call data capture](/guides/post-call-extraction), and destination matching
metadata are separate concepts. Name and store them separately so a CRM mapping
does not depend on parsing a summary.

## Twilio: choose the job

Twilio appears in three guides because the jobs are different:

| Goal | Use now | Guide |
| - | - | - |
| Detect human vs voicemail/IVR/screening during answer | PyAI AMD on a Twilio Media Stream | [Answering-machine detection](/guides/amd-answering-machine-detection) |
| Run a live AI conversation on an existing Twilio call | Your Twilio Media Stream bridge to Omni | [Twilio voice agent](/guides/twilio-voice-agent) |
| Import completed Twilio calls for later transcription/analysis | Twilio inbound import, currently in certification | [Twilio import](/guides/integrations-twilio) |

## What managed destinations and imports give you

* **Signed delivery.** Outbound deliveries carry an HMAC signature
  (`X-PyAI-Signature`) and a deterministic `Idempotency-Key`, so a retried
  delivery can never post twice downstream.
* **Retries with visible errors.** A failing endpoint is retried with backoff
  (eight attempts over about twenty minutes). If it still fails, the exact
  error sits on the integration card in the console — never silently lost.
* **Encrypted credentials.** Tokens, secrets, and webhook URLs are encrypted
  at rest and masked on every read. They never appear in delivery payloads.
* **A Test button.** Every connection can deliver a sample before the first
  real call, so format and credentials are proven up front.
* **Managed destinations.** Their current treatment, along with Recap, AMD,
  Hear, and Speak usage, is listed on the
  [pricing page](https://pyai.com/pricing). Your framework infrastructure and
  LLM remain separate.

## Pick your guide

**Agent frameworks**

| Framework | What PyAI provides | Setup |
| - | - | - |
| [LiveKit Agents](/guides/livekit-agents) | Tested Hear STT and Speak TTS components for `AgentSession` | `pip install livekit-plugins-pyai==0.1.2` |
| [Pipecat](/guides/pipecat) | Tested Hear STT and Speak TTS services for a frame pipeline | `pip install pipecat-pyai==0.1.2` |

**Outbound destinations**

| Integration | What lands | Setup time |
| - | - | - |
| [Slack](/guides/integrations-slack) | Formatted recap/AMD cards in a channel | \~1 min |
| [Zapier](/guides/integrations-zapier) | Signed envelope triggers any Zap | \~2 min |
| [Google Sheets](/guides/integrations-google-sheets) | One row per completed call | \~5 min |
| [HubSpot](/guides/integrations-hubspot) | Note on the matching contact | \~2 min |
| [Salesforce](/guides/integrations-salesforce) | Field-mapped record update + Task | \~10 min |
| [Pipedrive](/guides/integrations-pipedrive) | Completed call activity on the person | \~2 min |
| [Zoho CRM](/guides/integrations-zoho-crm) | Note on the matching contact | \~5 min |
| [Zendesk](/guides/integrations-zendesk) | Ticket with the summary written | \~3 min |
| [Apollo](/guides/integrations-apollo) | Follow-up task with the recap | \~3 min |
| [Clay](/guides/integrations-clay) | Row in your Clay table (webhook source) | \~3 min |

**Inbound call imports**

| Provider | Status | What lands |
| - | - | - |
| [JustCall](/guides/integrations-justcall) | Live | Transcript plus enabled Recap/Trace processing |
| [Aircall](/guides/integrations-aircall) | In certification | Same shape when it opens |
| [Dialpad](/guides/integrations-dialpad) | In certification | Same shape when it opens |
| [Twilio](/guides/integrations-twilio) | In certification | Same shape when it opens |
| [RingCentral](/guides/integrations-ringcentral) | In certification | Same shape, webhook auto-created |

<Note>
  **Debugging a delivery?** Each guide ends with a troubleshooting section
  covering the exact errors you can hit (rejected signatures, unshared
  sheets, unmatched contacts, revoked tokens) and how to fix them.
</Note>


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