
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
- 1Sign in to your Quo account at app.quo.app.
- 2Click your workspace name in the bottom-left → **Settings**.
- 3In the left sidebar, click **API**.
- 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
- 1In Closr, go to **Settings → Integrations** → **Quo** (or just click the Quo tile).
- 2Paste your Quo API key into the **Quo API key** field.
- 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).
- 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.