Manage Contacts
TL;DR — Contacts is your CRM-style database of prospects, leads, referrals, and applicants — not just people who already started an application. Open Contacts from the sidebar, add or import people, tag them, assign them to a team member, and use the contact detail page to track every interaction (notes, tasks, applications, documents, WhatsApp chats, and calls).
Before you start
- Requires: Admin or Campaign Manager role.
- Contacts and applicants are two different things: a contact is anyone you might want to track (a lead, a referrer, an alum, a prospective student), while an applicant is a contact who has actually opened an application. Most applicants become contacts automatically; not every contact is an applicant.
Open the Contacts page
From the sidebar, click Contacts. The page lists every contact in your organization in a table with these default columns:
- Name (avatar + first + last)
- Phone
- Lead stage (badge)
- Source (Manual, Import, Signup, API)
- Assigned to (team member who owns this contact)
- Tags (key:value pairs)
- Apps (count of applications they've started)
Use the Columns menu (slider icon) at the top-right of the table to hide or show individual columns. Choices persist across visits.
Add a contact manually
- Click Add Contact in the top-right toolbar. A side sheet opens.
- Required: Email. Optional: first name, last name, phone (with country code), notes, tags.
- Pick a lead stage if you have one in mind (default: New).
- (Optional) Set Assigned to — pick a team member who'll own this contact going forward.
- Click Save. The new contact appears at the top of the list.
The contact's Source is automatically set to Manual.
Import contacts from CSV or Excel
For more than a handful of contacts, use the import flow:
- Click the More (three-dot) menu next to Add Contact and choose Import contacts. The Import Contacts page opens.
- Drag or browse to a CSV or Excel file (
.csv,.xlsx,.xls). - The system parses it and shows a preview table with each row marked Valid or Invalid (e.g. missing email, malformed phone).
- Headers are matched case-insensitively. Recognized columns are:
email(required),firstname,lastname,phone,notes, plus any column starting withtag_(e.g.tag_program,tag_source) which becomes a key:value tag. - Review the preview. Skip the invalid rows by leaving the file as-is, or fix them in your spreadsheet and re-upload.
- Click Import. A progress bar shows the upload; once done, a results card lists how many were created, skipped, or failed.
Imports that conflict with an existing email update the existing contact rather than creating a duplicate.
Filter and search
The filter bar above the table lets you narrow down by:
- Search — free-text across name, email, and phone (300ms debounce).
- Source — Manual, Import, Signup (created via the public application flow), API.
- Lead stage — see below.
- Assigned to — pick a team member.
- Has user account — only contacts who have an account on the platform.
- Tag — pick a key, then optionally a value.
- Application count — set min/max bounds (e.g. between 1 and 5).
- Application period — all time / this month / this year.
- Phone country code — filter by 1–4 digit country prefix.
Active filters appear as removable chips below the bar. Combine them freely; the URL updates so you can copy a specific view to share.
Lead stage
Lead stages let you track where a contact is in your top-of-funnel pipeline:
| Stage | Suggested use |
|---|---|
| New | Just added, no contact attempted |
| Contacted | You've reached out at least once (call, email, WhatsApp) |
| Interested | They responded positively or asked to learn more |
| Ready | They're ready to start an application |
You can update the lead stage from the contact's detail page or via bulk actions.
Bulk actions
Select rows by ticking the checkbox at the start of each row, or click the header checkbox to select every row on the current page. A toolbar appears at the bottom of the screen with available bulk actions:
- Assign to… — set the same team member as owner on all selected contacts.
- Set lead stage… — bulk-update the lead stage.
- Add tag… — add a key:value tag to all selected.
- Delete — remove the selected contacts (asks for confirmation; can't be undone).
To select more than the current page, use the Select all matching prompt that appears on the toolbar — it widens the selection to every contact matching the current filters.
Export contacts
Click the More menu next to Add Contact and choose Export to Excel. A dialog confirms the columns to include and the row count. Confirming downloads an .xlsx file with the full filtered set — not just the current page.
The contact detail page
Click any contact row to open their detail page. The layout has two columns:
- Left sidebar with stacked cards:
- Profile — avatar, name, email, and a row of pills (status, source, lead stage). Below the pills, two action buttons: Phone Call (when a phone number is on file and Twilio calling is enabled — see Call Activity) and Invite (opens the invite-to-apply dialog).
- Stats — Notes / Tasks / Apps counts, with + Add Note and + Add Task buttons.
- Details — email, phone, added date, assigned to. A small pencil icon at the top-right of this card opens the full edit form.
- Tags — every key:value tag, each with an X to remove, plus an + Add tag slot.
- Main area with tabs:
- Timeline — a chronological feed of every action on this contact (notes, calls, applications created, status changes, messages sent).
- Notes — internal notes specific to this contact, with type toggles (note/call/email/meeting).
- Tasks — to-dos tied to this contact or their applications.
- Applications — every application the contact has started; click to open.
- Documents — files uploaded for this contact, outside any specific application.
- WhatsApp — the message thread with this contact.
Invite a contact to apply
If the contact doesn't have an application yet, click Invite in the profile card (left sidebar):
- Pick the campaign to invite them to.
- Pick a channel — Email, WhatsApp, or Copy Link to share manually.
- Click Send. The contact gets the invitation with a one-click link to the campaign's public landing page.
When they click the link, they're routed to the standard sign-in flow (the link includes ?org= automatically) and can start the application.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Contacts missing from the sidebar | You're signed in as a Member or Candidate | Use an Admin or Campaign Manager account |
| Imported file says "0 valid rows" | Your file has no email column or the headers are non-Latin | Add a column header named exactly email (case-insensitive) and re-upload |
| Some imported rows say Updated not Created | An existing contact had the same email | This is the deduplication path — the existing record is updated, not duplicated |
| Tag filter shows no values | You haven't picked a key yet | Pick a tag key first; values auto-populate from existing contacts |
| Phone Call button missing on the sidebar | The contact has no phone number, or your org hasn't connected Twilio | Add a phone number; for Twilio, ask an admin to enable the integration |
| Bulk action toolbar says Selecting all matching… indefinitely | You started a "select all matching" on a very large filtered set | Wait — large selections can take a few seconds. Cancel by clicking the X on the toolbar |
| Export downloaded an empty file | No contacts match the current filters | Clear filters first to confirm there's data, then re-apply only the ones you want |
