Actions and Integrations
What the agent does beyond replying — capturing leads, booking meetings, sending links, calling your systems, and firing webhooks.
An agent that only talks is a very expensive FAQ page. CoPhrase agents take actions: they write to your CRM, book time, hand off to a human, and call into your systems mid-conversation.
Actions are tools the model can choose to call while it is composing a reply. It decides when to use them; you decide which ones exist.
Built-in tools
| Tool | What it does | Availability |
|---|---|---|
search_knowledge | Looks something up in your knowledge base beyond what was already retrieved for the turn | Now |
capture_lead | Creates or advances a deal: qualification fields (intent, budget, timeline), contact details, lifecycle stage | Now |
update_contact | Sets fields and tags on the contact record | Now |
request_handoff | Flips the conversation to human control and notifies your team | Now |
book_meeting | Books time on a connected calendar and creates an appointment | Roadmap |
send_media | Sends an asset from your media library | Roadmap |
web_search | Searches the live web, plus URLs you list as always-fresh; reads links the customer pastes | Roadmap |
| Custom HTTP functions | Your own endpoints, called synchronously mid-turn | Roadmap |
| MCP servers | Bring your own tools over MCP — no third-party connector middleman | Roadmap |
Retries never duplicate your data
Every tool execution is journalled against the turn and the specific call. If a turn is retried after a transient failure, the tool handler recognises the replay and skips it. A deal is advanced once, not twice.
Capturing and qualifying leads
capture_lead is the sales spine. The agent asks the qualification questions you configured in the agent's playbook, and writes the answers onto a deal attached to the contact.
Two design decisions worth knowing:
- A contact can have several deals. Someone who bought last quarter and is asking about a second product does not have their history overwritten. Each deal is advanced by an explicit key, never by "the one open deal on this contact".
- Tags never destroy a deal. Tags can create or advance a deal. They cannot silently delete one. There is no undo button you will need, because there is nothing to undo.
Qualification accumulates on the contact regardless of channel. A lead who starts on Instagram and continues on WhatsApp is one contact with one qualification history — see inbox for how that cross-channel view works.
Booking meetings
book_meeting connects the agent to a calendar (Cal.com or Google Calendar), so a qualified lead can be booked inside the conversation rather than sent away to a scheduling page and lost. The booking becomes an appointment record linked to the contact and the conversation.
Sending payment and checkout links
The agent can send a link as part of a reply — a checkout URL, a payment link, a plan page — as your configured conversion action or from your knowledge.
No native commerce integration yet
Today the link is something you supply: a static payment link, or a URL returned by one of your own endpoints via a custom HTTP function. CoPhrase does not yet ship a first-party Stripe or Shopify integration that mints checkout sessions or reads order data by itself. Those integrations are on the roadmap. Until then, anything commerce-shaped goes through a custom function, an MCP server, or the API.
Looking up orders and calling your systems
Order lookup, subscription status, ticket status, licence checks — anything that requires reading your system live — is done with a tool you define:
- Custom HTTP functions — you register an endpoint with a schema. The agent calls it mid-turn, gets JSON back, and answers from it.
- MCP servers — you connect an MCP server and choose which of its tools the agent may use. Tools are namespaced per server so two servers can expose the same tool name without colliding.
Both are gated. Untrusted text from a conversation never lands in a URL or an auth header, requests to private and internal addresses are refused, and credentials live in the encrypted vault rather than in the tool config. See security.
Updating the CRM
CoPhrase carries its own CRM spine — contacts, companies, deals, pipeline stages, tags, typed custom fields, notes, tasks — and the agent writes to it directly. That is not an integration; it is the product.
To sync that into an external CRM, use webhooks or the API. Native two-way CRM sync is roadmap.
Webhooks
Anything that happens in CoPhrase can be pushed to your systems. Webhooks fire from a durable event stream, so an event exists if and only if the thing that caused it actually committed.
| Event | Fires when |
|---|---|
conversation.created | A new thread opens on any channel |
message.received | An inbound message lands |
contact.created | A new contact is identified |
deal.stage_changed | The agent or a human moves a deal |
handoff.requested | The agent escalates to a human |
appointment.booked | A meeting is booked |
credits.spent | Usage is metered |
Delivery properties:
- Every payload is HMAC-signed. Verify the signature before you trust it.
- Retries with a visible delivery log — status, attempts, response code, and the error, per delivery.
- Auto-disable after repeated failures, and re-enabling is a deliberate act. Re-saving a dead endpoint does not silently re-arm it.
- Only public HTTPS endpoints. Localhost and private-range targets are rejected at configuration time, not at fire time.
This is the surface Zapier, Make, and n8n plug into. For pulling data out rather than being pushed, see the API.