
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/phone) 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 · 4M12SvsCALL · 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/meendpoint, 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
CallRecordrow 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.transcriptand shows in the call detail panel. - •When Quo's AI summary completes (typically last), it lands on
CallRecord.aiSummaryand Closr fires theCALL_COMPLETEDautomation trigger. Any user-defined automation listening for that trigger runs against the Quo call too. - •Contact timeline rows show a
CALL · QUO · MmSSschip 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.ringingevent 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.