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 Closr contact timeline alongside the calls you make through Closr's built-in Twilio dialer. Same activity feed, same AI follow-up tools, same `CALL_COMPLETED` automation trigger.

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

  • **Closr'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 Closr instead of leaving them stuck in a separate app.
  • **You can use both at once.** Calls from Closr's dialer and calls from Quo land in the same timeline, distinguishable by a small chip (`CALL · CLOSR · 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. "Closr 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. Closr stores it encrypted (AES-256-GCM) and uses it only to register webhooks and fetch call recordings.

The exact click-through

  1. 1In Closr, 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**. Closr 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), Closr surfaces a partial-success message naming which ones got through.

What lands in Closr once connected

  • Every call in Quo (inbound and outbound) creates a `CallRecord` row in Closr within ~30 seconds, attributed to the matching contact by phone number.
  • When the recording finishes processing in Quo, Closr 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 Closr 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 Closr into Quo.** Quo's REST API doesn't expose a way to programmatically start a call. The dial happens in Quo's app. From Closr 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 Closr tab. Quo emits a `call.ringing` event but pushing it to your browser needs realtime infrastructure Closr 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 Closr 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 Closr 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 `getclosr.app/api/webhooks/quo/<teamId>`, the receiver may have been temporarily down; Quo retries with exponential backoff for ~24h.
  • **Disconnect.** Settings → Quo → Disconnect. Closr 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.