Quincer AI Docs Home Support Start free

Connect

Integrations

Every integration gives the agent new tools. Not just a notification channel, but actual capabilities — create a deal, book a meeting, enrich a contact, post to Slack. This page walks through each one.

Plan slots

PlanIntegration slots
Free0
Starter1
Growth3
ScaleUnlimited
Website + Widget1

Apollo.io and ZoomInfo are Growth+. All others are Starter+.

Page layout

The Integrations page is split into six top-level views. It lands on Categories — your connected tools grouped by what they do for the agent, with the order Quincer uses them in (next section). All tools is the visual rail of every connected integration; the rest are the developer-facing surfaces that used to live under Developer APIs.

In the panel below, the top row is that view switcher — Categories, then All tools (active), Custom REST, Webhooks, API keys, and MCP servers. On the All tools view the left Connected rail lists each service with a coloured status dot (green = live and recently synced), and clicking a row opens the detail pane on the right. That pane has its own five sub-tabs — Overview, Tools, Account, Activity, and Settings — with the connection state shown as a Connected pill and each granted tool sitting behind an on/off switch on the Tools sub-tab.

CategoriesAll toolsCustom RESTWebhooksAPI keysMCP servers
H
HubSpot
acme.hubspot.com
• live
S
Slack
#sales-alerts
• live
Overview · HubSpot • Connected
OverviewToolsAccountActivitySettings
Create ContactOn
Create DealOn
Log ConversationOff
+ Browse marketplace

The six top-level views, the Connected rail with status dots, and a detail pane whose Tools sub-tab toggles each agent capability.

TabWhat it is
CategoriesThe landing view. Connected tools grouped by capability — Calendar, CRM, Email, and so on — each group showing the numbered order Quincer uses them in, with Make default to change it. See below.
All toolsConnect / configure off-the-shelf integrations (HubSpot, Slack, Gmail, Calendly, Meta, etc.). Each one lives as a row in the left rail with a status dot; clicking opens a detail pane with Overview, Tools, Account, Activity, and Settings tabs.
Custom RESTPoint the AI at any HTTP endpoint you own. See below. Scale plan + Custom Tools add-on required.
WebhooksSubscribe an HTTPS endpoint to Quincer events (new conversations, leads, tool calls). Signed payloads. Moved here from the old Developer APIs page.
API keysProgrammatic access tokens for the Quincer AI REST API. Scope each key to the minimum it needs. Moved here from the old Developer APIs page.
MCP serversConnect any remote MCP (Model Context Protocol) server — your own, or a vendor’s hosted server (Jira, GitHub, etc.). Quincer imports the tools it exposes and your AI personas can call them; toggle which tools are enabled per server. See below.

Each view is URL-driven (?view=custom, ?view=webhooks, etc.; Categories is the default and carries no ?view), so deep-links and browser back/forward work the way you'd expect.

Categories

The Categories view answers the question the flat list can’t: when two of your tools can do the same job, which one does Quincer actually use? Instead of a rail of product names, your connected tools are grouped by what they do for the agent, and each group shows — and lets you change — the order Quincer walks them in.

There are seven capability groups:

CategoryWhat it buys you
CalendarCheck availability and put meetings on a real calendar.
CRMWrite contacts, deals and notes where your team already works.
EmailSend follow-ups and replies from your own domain.
File storageRead and cite the documents Quincer answers from.
Team messagingWhere escalations, live pings and summaries land.
SocialDMs and comments Quincer picks up outside your website.
AI agentsOther agents Quincer can delegate research and long tasks to.

One connection can appear in several groups — Gmail holds a calendar and a mailbox, HubSpot is a CRM and a scheduler — and its rank in each group is independent: Gmail can be first for Calendar and second for Email at the same time.

The order is the feature

Inside a category every connected tool is a numbered row. The row ranked 1 carries a Default badge; every other row shows a Make default link that moves it straight to the top, and hovering a row reveals up/down chevrons for one-step moves. Clicking the row itself opens that tool’s detail pane. Under the list, a plain sentence states the consequence of the current order — for example:

“Quincer tries Gmail, then Calendly, then HubSpot.”

That sentence is generated from the same order the engine reads, never written by hand, so it cannot drift from what actually happens. It also adapts to what the category really does:

i

Nothing changes until you reorder. Until you touch a category’s order, Quincer keeps the behaviour it has always had — the oldest connection is preferred first. Ordering is opt-in, not a migration.

Integrations
Acme · Categories
CategoriesAll toolsCustom RESTWebhooksAPI keysMCP servers
6
tools connected
5 / 7
categories covered
2
categories with nothing connected
0
needs attention
Calendar 3 connected

Check availability and put meetings on a real calendar.

1M
Gmail Default
dana@acme.com
• Live▲▼
2C
Calendly
acme/discovery-call
Make default • Live▲▼
3H
HubSpot
acme.hubspot.com
Make default • Live▲▼

↻ Quincer tries Gmail, then Calendly, then HubSpot.

File storage 1 connected
1D
Google Drive Default
drive@acme.com
• Live

↻ Only Google Drive is connected — if it’s down, Quincer can’t do this. Connect a backup.

Things Quincer can’t do yet: Social · AI agents · Payments · E-signature+ Connect

The Categories view — four stat tiles, then one card per capability. Each row is numbered, the top row carries the Default badge, and the sentence under the list is generated from the order the engine actually walks.

Categories with nothing connected collect at the bottom under Things Quincer can’t do yet — Quincer will say it can’t help rather than taking the action. Each empty category is a one-click path into the marketplace, alongside suggested capabilities we don’t serve yet (Payments, E-signature) and a Suggest a category tile that opens a support request.

Custom REST

Scale + Custom Tools add-on

Custom REST lets the AI call any HTTP endpoint you control. The model sees the tool by name and description; when it decides the conversation needs that action it invokes the endpoint with the inputs you've defined, and you've got per-call logging + rate limiting + SSRF guardrails for free.

i

Full guide: Custom REST tools — the seven fields, the Create with AI builder, placeholders, and worked examples (create a persona, query Postgres, open a Jira ticket).

Use it for anything you can hit over HTTP: an internal CRM, an inventory lookup, an order-tracking service, a custom enrichment vendor, a Zapier webhook, a self-hosted endpoint behind a token. Anything.

Anatomy of a custom tool

Each tool is a row in the dashboard with these fields:

FieldWhat it does
NameModel-facing function name. Lowercase, underscores, max 64 chars. Examples: track_shipment, check_inventory, look_up_warranty.
DescriptionWhat the model reads to decide WHEN to call this tool. Be specific. "Look up a shipment by tracking number. Returns the latest status, location, and ETA."
Method + EndpointThe HTTP method (GET / POST / PUT / PATCH / DELETE) and the absolute URL. Must use https:// in production. Private IPs (127.0.0.1, 10.x, 192.168.x, AWS metadata 169.254.169.254) are blocked by the SSRF guard.
Input schemaJSONSchema describing the arguments the model will produce. Example: { "type": "object", "properties": { "tracking_id": { "type": "string", "description": "Carrier tracking number" } }, "required": ["tracking_id"] }
HeadersJSON object of static headers — Authorization, custom keys, anything. Use template placeholders (below) for per-call values.
Body templateFor POST/PUT/PATCH only. JSON object that's rendered with input + identity placeholders before the call.
Response JSONPathOptional. A dotted path like data.shipment.status that narrows the response so you don't leak unrelated data back to the model.
Timeout (ms)Per-call timeout. Default 10000, max 30000.
Visitor authIf enabled, the tool only runs when the chat session has a verified visitor token. The verified claims can be injected into the request (next section). Without it the model gets auth-required and tells the visitor to sign in.

Template placeholders

Three substitution patterns work in headers, body template, and endpoint URL:

Substitution is deep: a body template like { "user": { "id": "{{identity.sub}}" } } works. Missing values resolve to empty string, except when a tool marks required claims (in which case the call is refused before any HTTP fires).

Claim injection: the model can't lie about who's asking

On a tool with Visitor auth enabled, you can map verified-identity claims directly into input fields. Example: a get_my_orders tool with claims_to_inject: { "user_email": "email" } will overwrite whatever the model put in input.user_email with the verified email claim. The model can't spoof who it's looking up; the backend always sees the real signed-in user.

Walking through a real example

Tool: track_shipment

When a visitor asks "where's my order?", the model collects the tracking number, calls track_shipment({tracking_id: "1Z…"}), which becomes GET https://shipping.example.com/api/v1/track/1Z…, and the bot summarizes the data.status field back to the visitor.

Auditing

Every tool call writes a row to CustomToolCallLog: the sanitized request (rendered secrets are not persisted), response status, response size, latency, error, and the visitor identity at call time. Rows are kept for 30 days then purged. Logs are exportable from the tool's row in the Custom REST tab.

MCP servers

Bring your own server

MCP (Model Context Protocol) is an open standard for exposing tools to AI agents. If a service you use — Jira, GitHub, an internal system, anything — runs a remote MCP server, you can plug it straight into Quincer and your personas pick up its tools, even when we don’t have a built-in integration for it.

Connect a server

Open Integrations → MCP servers (?view=mcp) and click Add MCP server. That opens the dialog below: a Name field for how the server shows up in your dashboard, a Server URL (the remote MCP endpoint over Streamable HTTP, which must be public https), and an Access token / API key paired with an Auth header that defaults to Authorization. The hint under the row explains that Authorization sends Bearer <token> while any other header sends the raw token — leave the token blank for an open server. Connect & list tools stays disabled until Name and Server URL are filled in.

Add an MCP server
×
Name
Jira
Server URL
https://mcp.example.com/v1
The remote MCP endpoint (Streamable HTTP). Must be public https.
Access token / API key
••••••••••
Auth header
Authorization

Authorization sends Bearer <token>; any other header (e.g. X-API-Key) sends the raw token. Leave blank for an open server.

CancelConnect & list tools

The Add an MCP server dialog — on save Quincer connects, lists the server’s tools, and enables them all by default.

  1. Name — how it shows up in your dashboard (e.g. “Jira”).
  2. Server URL — the remote MCP endpoint (Streamable HTTP). Must be a public https:// URL.
  3. Access token / API key — optional. Sent as Authorization: Bearer <token> by default; set the Auth header field (e.g. X-API-Key) to send the raw token instead. Leave blank for an open server.

On save, Quincer connects to the server, lists the tools it exposes, and enables them all by default. Untick any tool you don’t want your agents to call, hit Refresh to re-pull the list after the server changes what it offers, or Disconnect to remove it. Connect as many servers as you need — each one’s tools flow to your personas alongside the built-in integrations.

Per-server settings

Each connected server has three toggles beyond its tool list. They do not all default the same way, on purpose:

SettingDefaultWhat it does
Use on voice calls On Whether this server’s tools are offered to the agent during a phone call as well as in chat. On by default so a server you connected before this setting existed keeps working on the phone. Turn it off for tools that are too slow for a live call, or that return output nobody wants read aloud.
Send who the visitor is Off Whether Quincer tells your server who it is talking to — see below. Off by default: sending your customers’ phone numbers and email addresses to a third-party server is a decision you make, not one we make for you.
Allow anonymous visitors Off Whether an unidentified web visitor can trigger this server’s tools at all. Off by default, so tools stay behind sign-in unless you open them up.

Passing the caller’s identity

With Send who the visitor is switched on, every tool call carries a few extra HTTP headers so your server can look the person up — match a caller to an account by phone number, pull an order history by email, and answer with their own data instead of a generic reply.

HeaderExample
Quincer-Visitor-Identity-Typephone, email, or the social network’s id type
Quincer-Visitor-Identity+14155550123 — phone numbers are always sent in full E.164 form
Quincer-Visitor-Identity-Verifiedtrue / false — see the warning below
Quincer-Visitor-Identity-Sourcewhere it came from, e.g. voice_caller_id or web_identity
Quincer-Channelvoice, web, and so on — the same vocabulary as the channel on a conversation
!

Caller ID is not proof of identity. On a phone call the number comes from the carrier and can be spoofed, so it is sent with Quincer-Visitor-Identity-Verified: false. Treat it as a lookup hint — fine for “find this account”, not enough on its own to release private details or authorise a change. A signed-in web visitor is sent as true. If your server ignores that header, it is trusting whoever is on the line.

i

Security: every request to your MCP server is DNS-resolved and blocked from reaching private or internal addresses, and cross-host redirects are refused — so a server URL can’t be used to probe internal infrastructure. Your token is stored encrypted.

Using an MCP server as a persona’s CRM

An MCP server can be more than a bag of extra tools — it can be the CRM a persona writes to. In the Add an MCP server dialog, the Server type field decides this. It defaults to General tools (no special handling); choose one of the CRM types instead — CRM — HubSpot, CRM — Salesforce, CRM — GoHighLevel, or CRM — other / generic — and, as the dialog puts it, marking a server as a CRM lets Quincer look up callers, log call notes, and build campaigns across it alongside your other CRMs.

The type is how Quincer knows which of the server’s tools is “create contact”, “log note”, “create deal” and so on: the named types map that CRM’s standard MCP tool names, while other / generic matches on tool names and descriptions (create_contact, add_note, …). Two things gate every call: the server must expose a tool for the action, and that tool must be switched on in the server’s tool list — an action with no enabled tool is simply skipped, never guessed.

Picking it for a persona

Once a typed CRM server is connected, it appears by name in the Which system this persona uses card on Personas → [Persona] → Persona tab, right alongside HubSpot and Pipeline CRM. Choose Only Acme CRM in the CRM select and everything this persona writes — contacts, deals, notes, conversation summaries — goes there and nowhere else. The line under the select shows the outcome before you save: “Writes to Acme CRM — pinned on this persona.” Leave it on Any connected CRM (default) and your brand’s order on the Integrations page decides instead. (The card only renders when there is actually something to choose between — two or more systems of a kind, or an existing pick that needs attention.)

Which system this persona uses
Personas → Dana Ruiz → Persona tab
CRM
Only Acme CRM

Writes to Acme CRM — pinned on this persona.

Where contacts, deals and notes are written. Everything this persona writes goes there and nowhere else. If it stops being connected, this persona simply has no CRM — it will not fall back to another one.

A typed CRM MCP server (“Acme CRM”) pinned as a persona’s only CRM. The resolution line under the select is computed by the same code the engine runs, so it updates as you change the pick — before you save.

!

The pin fails closed. If the pinned server is later disconnected, re-typed away from CRM, or has all of its tools switched off, this persona has no CRM at all — Quincer will not quietly write your customers’ records into another system you didn’t choose. The persona page warns you directly above the control: “Acme CRM isn’t connected any more. Rather than quietly switching to another one, this persona has no CRM at all right now. Reconnect it, or choose a different one below.”

HubSpot

CRM · Starter+

Sync every conversation as a contact and a deal. Log messages as conversation records, create follow-up tasks, and track the full lifecycle in HubSpot.

Connect

  1. Open Integrations, click Connect next to HubSpot.
  2. Sign in to HubSpot and authorize the Quincer AI app. Required scopes: CRM objects read/write, conversations read/write, tasks read/write.
  3. Pick the pipeline and deal stage for new Quincer AI deals. You can change this later.
  4. Done. Every new conversation auto-creates a HubSpot contact (deduped by email) and associates it with a deal.

Tools the agent gets

Pipeline CRM

CRM · Starter+

Full parity with HubSpot against an agency-focused CRM — contacts, opportunities (deals), appointments, conversations, and support tickets. Install is one click from the CRM marketplace; agency-level installs pick a single sub-account to wire to this widget (connect a second widget if you need another sub-account).

Connect

  1. Open Integrations, click Connect next to Pipeline CRM (or install from the CRM marketplace).
  2. Sign in and choose the sub-account. Location-level installs skip the picker.
  3. Authorize the requested scopes (contacts, opportunities, appointments, conversations, businesses, users).
  4. Done. Every new conversation can create contacts and opportunities in this sub-account, and changes in the CRM flow back into Quincer AI leads via webhooks.

Tools the agent gets

Webhook events synced back

Slack

Team messaging · Starter+

Escalate questions to your team in real time, post summaries, and DM specific reps when a Hot lead lands.

Connect

  1. In Integrations, click Connect next to Slack.
  2. Authorize the app in your Slack workspace. No channel is picked during OAuth — you choose channels afterwards.
  3. Set your Conversation history channel under Integrations → Slack → Settings, then give each persona its own channels in the Slack row under Personas → [Persona] → Channels.

One-click install: Add to Slack — starts OAuth with the correct state/CSRF token set for your Quincer AI session, then comes back attached to your org. (If you click the raw slack.com install URL, the callback rejects with missing_state because there’s no Quincer AI session tied to the install.)

Recommended channel setup

Most teams end up with three purpose-built channels so signals don't drown each other out. Create these in Slack and invite the Quincer AI bot to each (/invite @Quincer AI):

Why three channels? Mixing escalations with new-conversation pings trains your team to ignore the channel — and that's the one channel where ignoring a message costs you a deal.

Tools the agent gets

Live takeover from Slack

Slack is an escalation surface, not a mirror of every conversation. Messages only appear in your channel when the AI calls slack_escalate_question — i.e., a visitor asks for a human or the AI can't answer. Conversations driven from the Quincer AI portal don't post here.

When an escalation lands, the message has Take over and Open in Quincer AI buttons. After clicking Take over the buttons change to:

During takeover, visitor follow-ups appear in the thread as 💬 {visitor}: {message} so you can see the whole conversation, not just the first escalated question.

Interactivity, slash commands, and event subscriptions are all pre-configured in Quincer AI's Slack app — there is nothing to wire up on your side. Once you click Connect Slack and approve the OAuth prompt, Take over, Hand back, and /quincer all work immediately.

Commands in Slack

Type these in any channel the bot is in — or DM the Quincer AI bot with the same terms (skip the leading /quincer):

Proactive notifications (per-persona)

Open the Slack row under Personas → [Persona] → Channels and tick the chips under Send these to your team:

New conversations and qualified leads both fall back to the escalation channel if no Live activity goes to channel is set, and both are off by default — turn them on only for personas where proactive visibility is worth the channel noise. The conversation summary is the exception, and its default is decided on the server rather than by the chip: Quincer AI posts a summary for every persona as soon as the Slack integration has a Conversation history channel. The chip can’t see that integration-level setting — it only reflects the persona’s own Slack channels — so a persona with no Escalations go to and no Live activity goes to channel of its own shows the chip unticked while its summaries are still being posted.

Saving is what settles it. Whatever state the chip is in when you click Save changes gets written to the persona and wins over the default from then on. So to stop summaries for one persona, open its Slack row, leave the chip unticked, and save; to guarantee them, tick it and save. The flip side is worth knowing: a persona that was relying on the default also has the chip’s current state written on any save, so an unrelated edit can quietly switch its summaries off.

Chat with a persona in a channel

Everything above treats Slack as an escalation surface — the AI only posts when it needs a human. This is the opposite: bind a persona to a channel and your team can talk to that persona directly in Slack. A message in the channel — a plain post or @mentioning the Quincer AI bot — is answered in-thread by that persona, using its knowledge base and tools, posted under the persona’s own name and avatar. Think of it as an internal help desk: ask “what’s our refund policy?” or “draft a reply to this lead” and the persona answers where your team already works.

These count as conversations. Every persona answer in a bound channel is metered as a conversation against your plan, exactly like a chat on your website, WhatsApp, or SMS — and shows up in your engagement analytics and monthly report.

Set it up
  1. Reconnect Slack once for the posting-as-persona permission (chat:write.customize). Open Integrations → Slack and click Connect again to approve it. Until you do, the persona still answers — it just prefixes its name into the text (Riley: …) instead of posting under its own name and avatar.
  2. Invite the bot to the channel/invite @Quincer AI in the channel you want the persona to live in. The bot only sees messages in channels it’s a member of.
  3. Bind the persona to the channel. Go to Personas → [Persona] → Channels → Slack → Assistant channel and pick the channel. Leave it on None — disabled to switch it off. One persona per channel. Slack is the only platform with an assistant channel.
How it behaves

Bind a dedicated channel (e.g. #ask-riley) rather than a busy one — every human message there is answered and metered as a conversation.

Chat with a persona in a DM

Prefer a private one-on-one? You can also DM a persona directly. Run /quincer chat to see your AI teammates, then /quincer chat <name> (e.g. /quincer chat Riley) to point your direct messages at that persona. From then on, anything you DM the Quincer AI app is answered by Riley — using its knowledge base and tools, under its own name and avatar — until you run /quincer chat off.

Like the channel version, every DM answer is metered as a conversation and appears in your engagement analytics and monthly report.

How it behaves
Tailor how it talks to your team

Both the DM and the bound-channel chats above are treated as internal. By default the persona keeps its full identity and knowledge but drops the customer-facing pitch for teammates. To customize that, open Personas → [Persona] → Internal instructions and add guidance used only for internal chats — e.g. “you can speak candidly about internal pricing and help draft replies.” It is appended to the persona’s system prompt (never replaces it), so a persona built purely for internal use (say an HR assistant) keeps its detailed prompt intact. Leave it blank to use the default internal-teammate behavior.

Telegram

Team messaging · Starter+

Run escalations through a Telegram group. Tap Take over on any escalation to go live with the visitor — perfect for teams that already live in Telegram.

Connect

  1. Message @BotFather on Telegram, run /newbot, and save the bot token it gives you.
  2. Run /setprivacy in BotFather and choose Disable so the bot can read replies to its messages in group chats.
  3. Add the new bot to the Telegram group you want to use for escalations.
  4. In Quincer AI, open Integrations → Telegram, paste the bot token, and click Test & Connect.
  5. Set the group chat ID per persona under Personas → [Persona] → Channels → Telegram → Escalation chat ID. The easiest way to grab the ID: send a test message in the group, then check /api/integrations/telegram/webhook/... logs — or use a bot like @getidsbot.

The per-persona Telegram row is escalation-only. Unlike Slack, Teams, and Google Chat it has no separate live target and no “Send these to your team” chips — the escalation chat ID is its only field. There are no new-conversation or qualified-lead pings on Telegram, and no per-persona conversation-summary toggle; Telegram summaries exist only as the agent-invoked tool below.

Tools the agent gets

Live takeover from Telegram

Telegram is an escalation surface, not a mirror of every conversation. Messages only appear in your group when the AI calls telegram_escalate_question — i.e., a visitor asks for a human or the AI can't answer. Conversations driven from the Quincer AI portal don't post here.

When an escalation lands, the message has 🎧 Take over and Open in Quincer AI buttons. Tap Take over and reply to the escalation message (or the “X is now live” confirmation posted right below it — either anchor works) — every reply goes straight to the visitor as you.

During takeover, the inline keyboard shows:

Visitor follow-ups appear in the group threaded under the escalation as 💬 {visitor}: {message}, so you see the whole conversation.

Microsoft Teams

Team messaging · Starter+

Escalate questions to a Teams channel, DM specific teammates when a Hot lead lands, sync conversation summaries, and take over live chats from Teams — the same workflow as Slack, built on the Microsoft Teams bot.

Connect

Teams isn’t a one-click OAuth like Slack — your Teams admin installs the Quincer AI app, then you link it with a one-time code. Clicking Connect next to Microsoft Teams opens the dialog below: a Download Quincer AI Teams app button for the install package and Your linking code — a 6-character code that expires in 30 minutes. The numbered steps under it walk your admin through uploading the app and pasting @Quincer AI connect <CODE> in the channel; the dialog stays open and flips to connected the instant the bot links, so there’s nothing to refresh.

Connect Microsoft Teams
×
↓ Download Quincer AI Teams app
Your linking code
7K2QX9
Expires in 30 minutes
1Upload the app in the Teams admin center 2Add the bot to your escalation channel 3Type @Quincer AI connect 7K2QX9
Done

The Teams connect dialog — download the app, then paste the 6-character linking code to the bot in your channel.

  1. In Integrations, click Connect next to Microsoft Teams. A dialog shows a Download Quincer AI Teams app button and a 6-character linking code (valid 30 minutes). The same package is always available at /teams-app/quincer-teams-app.zip.
  2. Your Teams admin uploads the downloaded zip: Microsoft Teams admin center → Manage apps → Upload custom app (or via the Teams app store once we publish it there). Then add the Quincer AI bot to the team and channel you’ll use for escalations.
  3. In that channel, type @Quincer AI and pick it from the autocomplete popup so it highlights, then add the code: @Quincer AI connect <CODE>. The bot replies “Connected to Quincer AI” and the integration goes live. Posting the code from a channel (not a private chat) is what lets Quincer load your team’s channels into the persona pickers automatically — Teams only delivers a channel message to a bot when it’s @mentioned.
  4. Set Escalations go to, Live activity goes to, and [Persona] can DM in the Microsoft Teams row under Personas → [Persona] → Channels → Where your team gets notified. If the channel list comes back empty, post or @mention Quincer AI in a channel you added the bot to and reload — a connection made from a 1:1 chat never lists channels.

Updating to a new version of the app

Teams copies the app package into your tenant when you first upload it, so it never re-fetches /teams-app/quincer-teams-app.zip on its own. When we ship a new version (a new icon, a new capability), grab the current package with the Download app button on the Microsoft Teams card in Integrations. It’s always there once you’re connected, so you never have to disconnect or re-link just to get the latest zip.

Then your Teams admin uploads it: Teams admin center → Teams apps → Manage apps → Quincer AI → Upload file. Existing app policies carry over, nobody has to re-approve or re-consent, and your connection stays live. Allow a few hours (up to 24) for the update to reach every Teams client — signing out of Teams and back in forces it sooner.

Tools the agent gets

Live takeover from Teams

Like Slack, Teams is an escalation surface — messages appear only when the AI escalates (a visitor asks for a human or the AI can't answer). Each escalation card has Take over and Open in Quincer AI buttons. Tap Take over and every message you post in that thread goes straight to the visitor; the AI stops driving until you hand back. Visitor follow-ups appear in the thread as 💬 {visitor}: {message}.

You can also @mention the bot or DM it with leads, lead <email>, or stats to query your pipeline, and react to an escalation card to mark its follow-up task done.

Chat with a persona in a DM

Beyond ops queries, you can chat with one of your AI teammates one-on-one in a 1:1 chat with the Quincer AI app. Type chat to list your personas, then chat <name> (for example chat Riley) and everything you send is answered by that persona — using its knowledge base and tools. Because the chat is internal, the persona greets you by name and behaves as a colleague rather than an external-facing agent (and you’re never captured as a lead). Type chat off to go back to commands.

Teams shows every bot message under the app name, so each reply arrives as a card headed with the persona’s own name and avatar — that’s the Teams way to show who’s speaking. Every answer is metered as a conversation, just like a chat on your website, Slack, or WhatsApp.

Proactive notifications (per-persona)

Open the Microsoft Teams row under Personas → [Persona] → Channels and tick the chips under Send these to your team — the same three as Slack:

New conversations and qualified leads both fall back to the escalation channel if no Live activity goes to channel is set, and both are off by default. The conversation summary is on by default once the persona has a Teams channel set, so untick the chip on any persona you don’t want mirrored.

Google Chat

Team messaging · Starter+

Post conversation summaries to a Google Chat space, escalate live conversations to your team, and chat with your AI teammates directly in Google Chat — the same workflow as Slack and Teams, built on a Google Chat app. Requires a Google Workspace (Business/Enterprise) account.

Connect

Google Chat isn’t a one-click OAuth — you connect a space with a short connect code, the same way Microsoft Teams works. A Google Chat message doesn’t say which of your brands it belongs to, so the code carries that: you generate it for a specific brand, and pasting it in a space links that space to that brand.

  1. In Integrations → Google Chat, pick the brand this space is for and click Connect. Quincer shows a 6-character code (valid 30 minutes).
  2. In Google Chat, open the space, click the space name → Apps & integrationsAdd apps, search Quincer, and add it.
  3. In that space, type @Quincer connect YOURCODE. Quincer confirms which brand the space is now linked to.

Each brand has one Google Chat space, so repeat this per brand to keep them separate. Running Connect again for a brand that’s already linked moves it to the new space rather than adding a second one — the dialog warns you first. A space belongs to exactly one brand and can’t be claimed by another until it’s disconnected, so nobody can re-point your space by removing and re-adding the app. (Your Workspace admin may need to allow the Quincer app.)

i

Add the app from the space menu — don’t just @mention it. Typing @Quincer in a space you haven’t added the app to looks like it works (the name autocompletes) but does not install it, and the app will never respond. Use Apps & integrations → Add apps.

One space per brand

Because a space is connected with a brand’s code, it already belongs to that brand: its conversation summaries post there, and messages sent in it are answered by that brand’s personas. There’s nothing extra to configure. Connect a second space using a second brand’s code to keep them separate — one space per brand.

i

Direct messages are different. A 1:1 chat with the Quincer app isn’t a brand’s space, so it’s never used for conversation summaries — those belong somewhere your team can read them.

Conversation summaries

When a conversation closes, Quincer posts a summary card — visitor, caller ID (for phone calls), lead score, sentiment, CSAT, message count, date/time (in the location’s timezone), and a View full conversation link — to the space set as Conversation history space under Integrations → Google Chat → Settings. This is on by default once a space is connected; to turn it off for one persona, untick the Conversation summary chip in its Google Chat row (Personas → [Persona] → Channels).

Escalations and pings

Google Chat is a full team-notification destination, configured in the Google Chat row under Personas → [Persona] → Channels → Where your team gets notified. Only spaces you’ve added the Quincer app to appear in the pickers.

The row has no DM-recipient list and no assistant channel: per-persona DM alerts are Slack and Teams only, and the assistant channel is Slack only. Your team can still chat with a persona in a Google Chat DM or space — that’s the next section.

Chat with a persona

Your AI teammates answer inside Google Chat, the same way they do in Slack and Teams.

Replies arrive as cards headed with the persona’s name and avatar, because Google Chat doesn’t let an app post under a different sender. Which brand’s personas answer is simply the brand that space was connected with.

OpenClaw

External AI assistant · All plans

Give an OpenClaw agent a first-class seat in your Quincer AI inbox. It can take over live chats, reply as a human, look up leads, and log activity through the Quincer AI API — with its own team-member identity and audit trail, not as an anonymous bot.

Connect

  1. In Integrations → OpenClaw, click Connect OpenClaw. This creates a dedicated “OpenClaw” team member in your workspace and issues an API token bound to it.
  2. Download SKILL.md and drop it in ~/.openclaw/workspace/skills/quincer/.
  3. Add the token to ~/.openclaw/openclaw.json under skills.entries.quincer.env.QUINCER_API_KEY.
  4. Restart the OpenClaw gateway. The quincer tool is now available.

What OpenClaw can do

For the full API surface (takeover, reply, handback, webhook events), see API & webhooks → External agents.

Perplexity Computer

External AI assistant · All plans

Manage leads and live chats from inside Perplexity Computer using plain English. Ask “show me my hot leads” or “take over the chat on my pricing page” and Perplexity calls the Quincer AI API on your behalf, attributed to its own team-member identity in your inbox.

Connect

  1. In Integrations → Perplexity Computer, click Connect Perplexity Computer. This creates a dedicated “Perplexity Computer” team member in your workspace and issues an API token bound to it. The token is shown once — copy it.
  2. Download SKILL.md and upload it to Perplexity Computer under Skills → Add Skill.
  3. When Perplexity prompts for the QUINCER_API_KEY environment variable, paste the token from step 1.
  4. Try asking: “Show me my hot leads from today.”

What Perplexity Computer can do

Real-time: point a conversation.message_received webhook at your Perplexity Computer endpoint (Integrations → Webhooks) if you want Perplexity to react to new visitor messages without polling.

Calendly

Scheduling · Starter+

Let qualified leads book directly inside the chat. Quincer AI lists available times, and a one-click link closes the booking without leaving the widget.

Connect

  1. In Integrations, click Connect next to Calendly.
  2. Sign in with your Calendly account and approve access.
  3. Choose which event type is offered by default (e.g. Discovery Call, 30 min). You can override per persona on the Persona tab: Personas → [Persona] → Persona tab → Tools → Calendly link. Among links, a persona’s own link is consulted first, then a location’s own link, then this brand-level one — and every link is a fallback behind a connected calendar (see below). The Tools card appears once the persona has its own Gmail or Microsoft 365 inbox connected — it is where Book meetings on, Always include attendees, Meeting platform, and Share documents from live too, and the page’s single Save writes all of them.

Tools the agent gets

This is the brand-level rule the booker follows whenever both are configured: a connected calendar wins, and a pasted scheduling link is the fallback. When a visitor asks to book, Quincer first looks for a real calendar to put the meeting on, in this order:

  1. The persona’s own calendar — its connected Gmail / Microsoft 365 inbox with calendar access.
  2. A matching territory’s owner and their calendar.
  3. Your brand’s default calendar — whichever provider is ranked first in the Calendar category on Integrations → Categories.
⚠️
A matching territory is decisive. If a territory matches but its owner has no usable calendar, Quincer does not fall through to your brand default — a booking link answers instead. Give territory owners a connected calendar, or leave the territory unset for the brand default to apply.

Only when none of those resolves does a link answer: the persona’s Calendly link first, then the location’s, then the brand-level Calendly link. So a Calendly URL pasted on a persona a year ago no longer diverts callers to a second, unmanaged calendar while Google Calendar sits connected — the link steps in exactly when there is no calendar to book on. (When a visitor declines links and asks for a time directly, the link tiers are skipped entirely.)

Make default on the Calendar category decides which provider wins — and all four calendar providers rank there: Gmail, Microsoft 365, Calendly, and HubSpot. Putting Gmail or Microsoft 365 first means meetings are booked directly on that calendar. Putting Calendly or HubSpot first means “don’t book on the connected calendar — hand out the scheduling page instead,” and the link answers.

A persona can override the brand rule in the Which system this persona uses card (Personas → [Persona] → Persona tab): pinning Only Gmail or Only Microsoft 365 always books directly on that calendar and never offers a link, while pinning Only Calendly or Only HubSpot makes the live-calendar tiers stand down for that persona so its link answers.

Which system this persona uses
Personas → Dana Ruiz → Persona tab
Calendar
Any connected calendar (default)

Books via Gmail — inherited from your brand’s order on the Integrations page.

Where meetings are booked and availability is read. With no choice made, your brand’s order on the Integrations page decides — not the assistant.

The persona’s Calendar pick left on the default: the resolution line shows the booking landing on Gmail because it is ranked first (Make default) in the brand’s Calendar category.

Google Calendar

Scheduling · Starter+

An alternative to Calendly for teams that prefer to book directly on the rep's Google Calendar. Attendees receive standard calendar invites.

Connect

  1. In Integrations, click Connect next to Google Calendar.
  2. Sign in to the Google account that owns the calendar reps use. Approve free/busy read and event creation.

Tools the agent gets

i

Connected calendars outrank pasted links. Once Google Calendar is connected and ranked first in the Calendar category, meetings are booked directly on it — any Calendly URL becomes the fallback for when no calendar resolves. How the booker decides.

Gmail

Email · Starter+

Send follow-up emails from your own Gmail address. Supports draft-for-review mode so you can edit before sending.

Connect

  1. In Integrations, click Connect next to Gmail.
  2. Sign in with Google and approve send + draft scopes.
  3. Pick which sender address to use (if you have aliases).

Tools the agent gets

Microsoft 365

Email & calendar · Starter+

Outlook email and Microsoft calendar combined. Meetings include Teams links by default.

Connect

  1. In Integrations, click Connect next to Microsoft 365.
  2. Sign in with your work Microsoft account. Approve Mail.Send, Calendars.ReadWrite, OnlineMeetings.ReadWrite.

Tools the agent gets

Email inbox monitoring

Automation · Scale+

Point a persona at a Gmail or Microsoft 365 inbox and Quincer AI will watch it for new messages, read the thread, search the persona’s knowledge base, and either auto-reply or save a draft for your review — using the same tools, personas, and KB the chat widget uses. Perfect for info@, sales@, support@ aliases you want the AI to triage first.

How it works

  1. Connect a Gmail or Microsoft 365 integration (see sections above). The persona authors the follow-ups under that connected mailbox, so replies land in the right sender’s Sent folder and thread correctly.
  2. Go to Personas → [Persona] → Channels. Until this persona has a mailbox, Email inbox sits in the dashed Not set up yet group with a single Connect button; once connected it becomes a row under Where visitors reach [Persona]. Open that row and, under What [Persona] does with this inbox, tick Auto-reply to emails to send automatically — leave it off and every response is saved as a draft for you to review. Context-aware follow-ups (one nudge per thread when the sender goes quiet) needs auto-reply on. Daily send limit caps responses per day (1–500).
  3. Send email as (Gmail): if the connected Gmail account has verified send-as aliases, pick which address this persona sends from — e.g. reply as sales@company.com from a mailbox connected as support@company.com. Leave it on Account default to send from the connected address. Only verified Gmail aliases are offered (add them in Gmail’s “Send mail as” settings); replies still arrive in the connected inbox. Microsoft 365 sends from the connected address only, since alias-send there is controlled by your tenant admin.
  4. A background cron polls the inbox every few minutes, matches each new message to a Lead (by email), runs the same persona flow Quincer AI uses for chats, and produces a reply. Quincer AI threads correctly via In-Reply-To / References headers so the exchange stays tidy in the inbox.

What the agent can do per email

Email the conversation summary

The Email inbox row also owns the emailed end-of-conversation summary. Tick Email the conversation summary in the same chip row and a summary goes out when a conversation ends — chat or phone call, and phone calls include the caller ID and date/time. It is sent from the connected Gmail / Microsoft 365 mailbox when there is one, otherwise from Quincer. Ticking the chip reveals Send the summary to: a comma-separated recipient list, or leave it blank to send to your team members. Because both controls live in this row, the persona needs a connected mailbox before you can set them.

!

Scale plan only. Monitoring is off by default on every persona, even after Scale is active — you pick which personas watch which inbox. Click Disconnect in the Email inbox row to stop one persona reading its mailbox; the brand-level Gmail / MS 365 integration stays connected.

The Bulk tab — mail the agent chose not to answer

Not everything that lands in a monitored inbox deserves a reply. Newsletters, no-reply notifications, and auto-responders are recognised on arrival and kept out of the reply pipeline — the persona doesn’t answer them and no AI tokens are spent on them. Instead of vanishing, they land in the Bulk tab on Inbox → Tasks, so the call is always reviewable and a misclassified real email is recoverable instead of silently gone.

The tab shows the 50 most recent set-aside messages as previews — sender, subject, a short excerpt, when it arrived, and which persona’s inbox it hit — each with a badge naming why it was filtered (noreply-sender, bulk-mail, auto-reply). Other reasons the agent stood down land here too, badged the same way: the daily send limit was reached, the sender asked to unsubscribe, the recipient opted out, or a human teammate was already active on the thread. Rows clear automatically after 30 days.

If something in the list does deserve an answer, press Compose response. That single click puts the message back on the normal pipeline: it is composed with the persona’s knowledge and tools, threads into the existing exchange, creates the lead, and replies exactly as any inbound mail does — drafted or auto-sent per that persona’s settings, on the next inbox check. The row’s button becomes a Queued for reply badge, and this is the moment the AI cost is actually incurred — nothing was spent while the message sat in the tab.

Inbox for Acme
Tasks
ChatsLiveSocialTasks
AllQueueRunningCompletedFailedBulk

Mail the agent judged automated, so it didn’t reply and didn’t spend tokens on it. Press Compose response on anything that deserves one. Cleared automatically after 30 days.

Your invoice for July noreply-sender
Acme Billing — no-reply@billing.example.com -> Dana Ruiz · Aug 19
✨ Compose response
Quick question about your pricing bulk-mail
Priya Patel — priya@example.com -> Dana Ruiz · Aug 18
Queued for reply

The Bulk tab on Inbox → Tasks. The first row is a genuine notification; the second was a real prospect caught by a bulk-mail header — one click on Compose response put it back on the reply pipeline.

Apollo.io

Lead enrichment · Growth+

Enrich leads on the fly. If a visitor gives you an email, Apollo fills in job title, company, employee count, tech stack, and LinkedIn URL. All in under a second.

Connect

  1. Get your Apollo.io API key from Settings → Integrations → API Keys in Apollo.
  2. In Quincer AI's Integrations, click Connect next to Apollo.io and paste the key.

Tools the agent gets

ZoomInfo

Enterprise enrichment · Growth+

Enterprise-grade enrichment plus buying intent signals. Identify companies actively researching your category even before they reach out.

Connect

  1. Generate a ZoomInfo PKI key (or have your admin provide username + password auth).
  2. In Integrations, click Connect next to ZoomInfo. Choose auth method and enter credentials.

Tools the agent gets

Managing connections

From Integrations, each connected service has a menu for: Reconnect (refresh OAuth), Test (run a health check), Logs (recent tool calls and responses), and Disconnect (revoke and delete tokens).

!

Disconnecting an integration immediately removes the corresponding tools from every persona. Any in-flight conversation mid-tool-call will gracefully fall back to a “can't do that right now” response.