Overview
The Contacts / Manage page is where you search, filter, import, export, and manage every contact in a client's pool. A hairline stat band above the table shows the contacts on the current page and how many have a phone, are in a campaign, or have replied. Click any row to open that contact. Add a single contact with Add Contact (email is no longer required -- a phone number or name is enough), optionally dropping it straight into a campaign as you create it. Import from CSV without mapping an email column; the system accepts contacts with only a phone, name, or company. The CSV import mapper supports 40+ fields including Company Sub-Industries, Zoom ID, Other Phone, Sales Rep, and Sales Development Rep alongside Company City/State/Zip/Country, street addresses, company details, tags, contact owner, notes, and follow-up dates. Column search helps navigate wide exports, duplicate-email warnings prevent surprises, and the unified ImportResultSummary shows everything that happened on import at a glance.
How to use this page
Search and filter contacts
Use the search bar and filter dropdowns above the table to narrow contacts by name, email, company, title, phone, contact status, current campaign, tags, list names, contact owner, sales rep, sales development rep, and more. Saved views let you bookmark filter combinations for quick access. The stat band above the table updates to show the contacts on the page and how many have a phone, are in a campaign, or have replied. For any text filter operator (Contains, Does not contain, Equals, Does not equal, Starts with), separate several values with commas to match any of them: a Contains rule for "Alabama, Arkansas" matches contacts in either state, and a negation (Does not contain, Does not equal) excludes contacts matching none of the values. A small hint under the value field reminds you which behavior applies. A value with no comma still works as a single substring, exactly as before.
Open a contact from the list
Click anywhere on a contact row to open that contact's detail page. The checkbox, status pill, links, and action buttons keep their own behavior, so clicking those does not navigate. If the list fails to load, an in-table Could not load contacts panel appears with a Try again button; your filters and view stay unchanged.
Save a view
Set up the filters you want, then open the Views dropdown and choose Save current view. Name it in the modal and press Enter or Save; a confirmation toast tells you it saved. Saved views appear in the Views dropdown for one-click reuse. The Views, Columns, and filter dropdowns all close when you click outside them. Use the Columns dropdown to toggle columns like Company State on or off.
Import contacts from CSV
Click Import CSV to open the column mapper. Upload your file and the system auto-maps column headers to SalesHive fields using smart rules. No email column is required -- contacts with only a phone, name, company, or even just a company and job title are accepted. The mapper supports 40+ import fields including Company Sub-Industries, Zoom ID, Other Phone, Sales Rep, Sales Development Rep, Company City/State/Zip/Country, street addresses, company details, tags, list names, and contact owner. Use the column search box to filter through large exports. A duplicate-email warning shows how many rows share an email and will merge on import.
Review import results
After importing, the unified ImportResultSummary shows per-batch counts: contacts created, updated, enrolled in a campaign, reassigned (owner change), blocklisted-skipped, already-in-another-campaign skipped, notes imported, follow-up dates imported, and a Skipped (no identity) count for rows with no email, phone, name, company, or title to dedupe on.
Bulk actions on contacts
Check individual contacts or use Select all matching to select the full filtered set. The bulk action bar lets you update status, add to a campaign, assign a contact owner, add tags, or delete the selected contacts. The Add to Campaign button appears whenever the client has at least one non-archived campaign, so it stays available even before a campaign goes active. A failed status change, view save, view delete, or archive now surfaces an error toast instead of failing quietly.
Add a contact and optionally put it in a campaign
Click Add Contact to open the form for a single contact. Provide an email, phone number, or name -- any one of the three is enough (call-only lists with just a company and title work too). If you supply an email, it is validated for format. Fill in the remaining fields as needed (company, title, additional phones, LinkedIn). At the bottom is a Campaign dropdown, always shown: leave it on No campaign to just create the contact, or pick a campaign to enroll the new contact right away. Enrolling from here creates a real campaign enrollment, which is what lets the contact count toward that campaign's Meetings Set, so use it when you want the contact worked in a specific campaign. The dropdown lists the client's non-archived campaigns, including active and paused (staged) ones, so you can stage a contact into a campaign before it goes live. If this client has no non-archived campaigns at all, the dropdown is greyed out and reads No campaigns available. If the contact is created but the campaign add fails (for example it is already in another campaign), you get a message saying so and the contact is still saved.
What the buttons do
- Contact row
- Click a row to open that contact. Checkboxes, status pills, links, and action buttons inside the row keep their own behavior.
- Import CSV
- Open the CSV import mapper with column search, duplicate-email warnings, and support for 40+ fields including Company Sub-Industries, Zoom ID, Other Phone, Sales Rep, Sales Development Rep, Company City/State/Zip/Country, street addresses, tags, list names, and contact owner. No email column is required; contacts with only a phone, name, or company are accepted.
- Export CSV
- Download the current filtered contact list as a CSV file.
- Add Contact
- Open the form to manually add a single contact. An email, phone number, or name is accepted (any one is enough). A Campaign dropdown at the bottom (always shown) lets you enroll the new contact in one of the client's non-archived campaigns (active or paused) as you create it.
- Campaign dropdown (Add Contact modal)
- Always shown at the bottom of the Add Contact form. Defaults to No campaign. Pick a campaign to enroll the new contact the moment it is created, which creates the real campaign enrollment that lets the contact count toward that campaign's metrics. Lists the client's non-archived campaigns, including active and paused (staged) ones, so you can stage a contact into a campaign before it goes live. If the client has no non-archived campaigns at all, the dropdown is disabled and reads No campaigns available.
- Add to Campaign (bulk action bar)
- Appears in the bulk action bar whenever the client has at least one non-archived campaign, so it stays available even when no campaign is active yet. Opens a modal that offers active and paused (staged) campaigns as enrollment targets; completed and archived campaigns are excluded.
- Column search (mapper)
- In the CSV mapper, a search box filters columns by header name or mapped field name. Helps when importing files with dozens or hundreds of columns.
- Duplicate-email warning
- Before importing, shows how many rows share an email address and will merge into unique contacts. No data is lost; rows with the same email merge into one contact.
- ImportResultSummary
- After import, shows a unified results block: created, updated, enrolled, reassigned, blocklisted, already-in-campaign, notes imported, follow-up dates imported, and skipped (no identity).
- Bulk action bar
- Appears when contacts are selected. Options: update status, add to campaign, assign owner, add tags, or delete. Failures surface an error toast.
- Saved views
- Save filter combinations as named views for quick access later. The Save current view modal submits on Enter and confirms with a toast; the Views dropdown closes on outside click.
- Filter value hint
- Under any text filter value field (Contains, Does not contain, Equals, Does not equal, Starts with), a one-line hint reads "Separate values with commas to match any" for positive operators or "Separate values with commas to match none" for negations. It appears the moment you pick one of those operators.
