All guides
Connecting Quo (formerly OpenPhone)

Connecting Quo (formerly OpenPhone)

~3 min read

Quo (the company formerly known as OpenPhone) is a modern business phone. If you already dial leads through Quo, this integration brings every Quo call — recording, transcript, AI summary, contact threading — into your CoolBeans contact timeline alongside the calls you make through CoolBeans's built-in Twilio dialer. Same activity feed, same AI follow-up tools, same `CALL_COMPLETED` automation trigger.

Quo vs. CoolBeans's built-in dialer — when to use which

  • **CoolBeans's built-in dialer** (the Power Dialer at `/app/dialer`) runs through Twilio. It's there day one, no extra subscription, no extra app to open. Use it for cold-calling, list-dialing, and most outbound. It logs the call directly without an integration.
  • **Quo** is a separate phone-system subscription. If you're already on it for inbound business line / customer-facing number / team-shared inbox, this integration brings those calls into CoolBeans instead of leaving them stuck in a separate app.
  • **You can use both at once.** Calls from CoolBeans's dialer and calls from Quo land in the same timeline, distinguishable by a small chip (`CALL · COOLBEANS · 4M12S` vs `CALL · QUO · 4M12S`).

Getting your Quo API key

  1. 1Sign in to your Quo account at app.quo.app.
  2. 2Click your workspace name in the bottom-left → **Settings**.
  3. 3In the left sidebar, click **API**.
  4. 4Click **Generate new key**, give it a label (e.g. "CoolBeans integration"), and copy the full key. Quo shows it once.

Quo's API keys are workspace-level — anyone with the key can read your Quo workspace's data. Treat it like a password. CoolBeans stores it encrypted (AES-256-GCM) and uses it only to register webhooks and fetch call recordings.

The exact click-through

  1. 1In CoolBeans, go to **Settings → Integrations** → **Quo** (or just click the Quo tile).
  2. 2Paste your Quo API key into the **Quo API key** field.
  3. 3Click **Connect**. CoolBeans validates the key by calling Quo's `/v1/me` endpoint, then registers four webhook subscriptions in your Quo workspace (call.completed, recording.completed, transcript.completed, summary.completed).
  4. 4On success, the page flips to "Connected to Quo." If Quo refuses one of the webhook registrations (rare — usually a permission issue on the key), CoolBeans surfaces a partial-success message naming which ones got through.

What lands in CoolBeans once connected

  • Every call in Quo (inbound and outbound) creates a `CallRecord` row in CoolBeans within ~30 seconds, attributed to the matching contact by phone number.
  • When the recording finishes processing in Quo, CoolBeans downloads the MP3 to private storage (`recordings/<teamId>/<callRecordId>.mp3`) — no Quo subscription needed to play it back later.
  • When Quo's transcript completes, it lands on `CallRecord.transcript` and shows in the call detail panel.
  • When Quo's AI summary completes (typically last), it lands on `CallRecord.aiSummary` and CoolBeans fires the `CALL_COMPLETED` automation trigger. Any user-defined automation listening for that trigger runs against the Quo call too.
  • Contact timeline rows show a `CALL · QUO · MmSSs` chip so you can tell at a glance which system the call came through.

What this integration does NOT do (v1 cutouts)

  • **No click-to-call from CoolBeans into Quo.** Quo's REST API doesn't expose a way to programmatically start a call. The dial happens in Quo's app. From CoolBeans you can tap a contact's phone number which the Quo app intercepts on iOS/Android — that's the bridge today.
  • **No real-time "Quo is ringing" indicator** in your open CoolBeans tab. Quo emits a `call.ringing` event but pushing it to your browser needs realtime infrastructure CoolBeans doesn't have for dialer presence yet.
  • **No SMS via Quo (v1).** Quo's API exposes message events; this integration is dialer-only for now. SMS arrives in a follow-up.
  • **No outbound calling through Quo as a SIP trunk.** Different vendor model entirely.
  • **One CoolBeans team = one Quo workspace.** If you have multiple Quo workspaces, only one can connect at a time.

Troubleshooting

  • **"Quo rejected that API key."** Double-check it under Quo Settings → API. If you regenerated the key recently, the old one was revoked — paste the new one.
  • **"Connected" but no calls appearing.** Verify the contact's phone number in CoolBeans matches the format Quo sends (E.164 with a `+` prefix, e.g. `+14165550123`). If they differ, the call still lands but isn't auto-threaded to the contact — it appears as an unattributed call until you tag it.
  • **Webhook delivery failing.** Quo's dashboard shows webhook delivery status under Settings → Webhooks. If you see failed deliveries pointed at `www.coolbeanscrm.com/api/webhooks/quo/<teamId>`, the receiver may have been temporarily down; Quo retries with exponential backoff for ~24h.
  • **Disconnect.** Settings → Quo → Disconnect. CoolBeans removes the four webhook subscriptions from your Quo workspace and flips the integration to inactive. Your historical CallRecord rows stay; only the live webhook handoff stops.