Contacts
Contacts are the people you call. Each contact belongs to your organization and has a phone number, an optional name, a preferred language, and optional custom metadata.
Viewing Contacts
Navigate to Contacts in the sidebar. You can:
- Search by name or phone number using the search bar
- Page through results with the pagination controls
- Click the history icon on any row to open that contact's profile
Call & Intent History
Open a contact (the history icon in the contacts table) to see their profile — a chronological record of every call across all campaigns in your organization, plus their Best time to call (see Demographics).
Each entry shows:
| Field | Description |
|---|---|
| Campaign | Name + use case type |
| Date & time | When the call happened |
| Outcome | Connected, No Answer, or Failed |
| Duration | Call length |
| Intent | The auto-tagged intent label |
| Transcript | Link to the call in its campaign |
History is newest-first by default — use the toggle to switch to oldest-first.
History is unified by phone number, so a contact called under different campaigns (even with different lookup keys like loan_id vs member_id) shows a single timeline. Everything is scoped to your organization — you never see another org's contacts or calls.
Alerts
- Review before re-engaging — a banner appears if the contact has any outcome that makes further calls inappropriate (e.g. Dispute Raised, Not Interested, Already Paid, opted out).
- Do Not Contact — if the contact was suppressed org-wide (via a journey rule), a red banner shows the reason; they'll be skipped by all campaigns.
Adding a Single Contact
Click "+ Add Contact"
On the Contacts page, click the + Add Contact button.
Fill in Contact Details
| Field | Required | Description |
|---|---|---|
| Name | Yes | Full name of the contact |
| Phone Number | Yes | E.164 format — e.g., +919876543210 |
| Language | No | Preferred language for AI calls (e.g., hi-IN) |
| Metadata | No | Custom key-value pairs (e.g., {"tier": "gold", "city": "Chennai"}) |
Save
Click Save. The contact is immediately available for audiences and campaigns.
Bulk Import
For large contact lists, use the bulk import feature.
Prepare Your File
Supported formats: CSV, Excel (.xlsx), JSON
Your file should include at minimum a phone number column. Recommended columns:
name,phone,language,city,tier
Priya Sharma,+919876543210,hi-IN,Mumbai,premium
Ravi Kumar,+919123456789,en-IN,Delhi,standard
Anita Patel,+919988776655,gu-IN,Ahmedabad,premiumPhone numbers must be in E.164 format — country code + number, no spaces or dashes. Example: +919876543210.
Navigate to Import
On the Contacts page, click Import Contacts.
Upload Your File
Drag and drop your file or click to browse. OliAI shows a preview of the first few rows.
Map Columns
Match your file's columns to OliAI's contact fields:
| Your Column | Map To |
|---|---|
phone | Phone Number |
name | Name |
language | Language |
| Any other column | Metadata (stored as key-value) |
Select Target Audience (Optional)
You can optionally add all imported contacts directly to an existing audience.
Execute Import
Click Import. OliAI processes the file and shows:
- Number of contacts created
- Number of contacts updated (if phone number already exists)
- Number of errors with row numbers
Download Error Report (if needed)
If some rows failed, click Download Error Report to get a CSV with just the failed rows and error messages.
Editing a Contact
- Find the contact in the list.
- Click the contact row to open details.
- Click Edit, make changes, and Save.
Deleting Contacts
Single delete: Open the contact, click the Delete button.
Bulk delete: Use the checkboxes to select multiple contacts, then click Delete Selected.
Deleting a contact removes them from all audiences. Calls already made to that contact are preserved in call history.
Demographics
The Add / Edit Contact form has an optional Demographics section with structured fields:
| Field | Examples |
|---|---|
| Age band | 18-25, 26-35 |
| Gender | |
| City tier | Metro, Tier 1, Tier 2, Rural |
| Occupation | |
| Income band | |
| Product type | loan, insurance |
These are optional but recommended. They power Best-time-to-call optimisation — when a contact's own history is thin, OliAI groups them with similar profiles (age band / city tier / language) to pick a good retry time — and they're stored in a structured, queryable form for future analytics and ML. You can also populate them via bulk import or the API.
Metadata
Metadata is a flexible JSON object you can attach to any contact. It's useful for:
- Segmentation (city, tier, product)
- Personalization (the AI can reference metadata in conversations)
- Analytics (filter call results by segment)
Example metadata:
{
"city": "Bangalore",
"tier": "enterprise",
"last_purchase": "2026-01-15",
"preferred_time": "morning"
}