Overview
How to get from a fresh Pact account to a live voice line and a connected CRM, and where each getting-started guide fits.
Pact is a consent-native CRM with a built-in voice AI layer. This section takes you from zero to a working setup in the order the product expects: create your account, add your phone number, connect your existing CRM data, and place your first voice call.
The fast path
If you just want to hear the voice AI before setting anything up, call the public demo line at +1 424 722 8627 (424-PACT-MCP) and talk to it. No account required. The full walkthrough is in Make your first voice call.
The four steps
- 1
Create your account
Self-serve signup provisions your tenant, owner user, and billing customer in a single call to
POST /v1/signup. You land on the dashboard with a session token already issued. See Create your account. - 2
Add a phone number
Verify your own mobile number (SMS one-time code) so Pact recognizes you by caller ID for voice auth and can text you fallbacks. This is the shipped
/settings/phoneflow. See Add a phone number. - 3
Connect your CRM
Bring in existing accounts and contacts — Salesforce (OAuth), HubSpot, Pipedrive, or a plain CSV upload. All import paths are tenant-scoped and dedup on ingest. See Connect your CRM.
- 4
Make your first voice call
Call the demo line to experience the inbound assistant, or run a simulated test call against a voice agent you build. See Make your first voice call.
What "consent-native" means for setup
Every contact you import carries a consent status, and Pact checks that record before any outbound email, SMS, or voice message goes out. Two consequences during setup:
- Importing contacts does not automatically grant you permission to message them. New records land with a default consent status derived from your tenant's privacy policy — you gate sending on it, not on the import succeeding.
- Your own phone number is added under an explicit, un-pre-checked consent disclosure and a durable TCPA consent record. Removing it is treated as a GDPR erasure, not a soft toggle.
Where things run
Browser (Next.js 14, app.pact.place)
→ FastAPI backend (multi-tenant, RBAC, /v1/*)
→ Postgres (tenant-scoped)
→ Voice webhooks (/v1/voice-mcp/*) ← Twilio inbound/outbound
→ Workers (enrichment, ETL, delivery)
Your account, phone, CRM connections, and voice config all live behind the same tenant boundary — a user in one tenant can never see another tenant's data.