CRM

CRM

Manage contacts, lists, deals, and prospecting for your brand in one place.


What is CRM?

SWAI CRM lives under Contacts in the SWAI Dashboard. It is where you store people and companies, organize them into lists, review their journey, add notes, run a sales Deal Room, and bring in new people with Import Contacts, Prospecting, or Visitor Intel.

You use it to:

Main screens

Screen What it’s for
Contacts List, search, filter, bulk actions, and Add contact
Conversations Messaging hub for contact threads (related tab)
Deal Room Pipeline board and client workspace
Contact detail Profile, Journey, Details, Deal, Notes
Import Contacts Upload a file, map fields, import into lists
Prospecting Search, enrich emails, add a list to CRM
Visitor Intel Track website company visits, enrich roles, sync leads to lists
Setup webhooks Origin-allowlisted URL so a JS form can create contacts; AI assigns matching brand lists

Note: Open Contacts from the SWAI Dashboard sidebar. CRM uses your brand session — there is no separate CRM sign-up.

Note: From Add contact you may also open Visitor Intel and Signal Marketing. For Listening Signals, see the Signal Marketing Help article (Contacts → Add contact → Signal Marketing).


Before you start

You can add contacts anytime. Import, Prospecting, Visitor Intel, and Deal Room work best when a few basics are ready.

Checklist

  1. Open Contacts from SWAI
    Use the Contacts sidebar item so you are signed in for the correct brand.

  2. Lists
    Create at least one list if you plan to Import Contacts, bulk-add people to lists, or organize audiences for outreach and agents. Webhook ingest can still create contacts with no lists if none match.

  3. Prospecting / enrichment credits (optional)
    Prospecting and Visitor Intel enrichment charge credits only when a verified email is found (0.3 credits each in the UI). Check your wallet balance before large searches or enrichments.

  4. Visitor Intel tracking script (optional)
    To identify website companies, install the Tracking script from Visitor Intel on your site before you expect the Intelligence feed to fill.

  5. Deal Room (optional)
    Launch a pipeline once (niche, stages, key facts, documents) before you add deals.

Important warnings

Warning: If you see Missing brand or authentication, sign in again and reopen Contacts from the Dashboard.

Warning: Deleting contacts or notes cannot be undone. Confirm counts carefully before Delete.

Tip: Use lists early — import, prospecting, webhooks, filters, and many outbound tools all rely on them.


Quick start

  1. Open Contacts.
  2. Click Add contactQuick Add (or Import Contacts / Prospecting / Visitor Intel / Setup webhooks).
  3. Optionally click Create List and add people to lists.
  4. Open a contact to review Journey, add a Note, or check Deal.
  5. Open the Deal Room tab to set up a pipeline and add deals.
  6. Use search and Filter by list to find people later.

Contacts

Path: Sidebar → Contacts → tab Contacts.

Browse and find

Control What it does
Type folders All, Prospect, Lead, Customer
Filter by list All lists, No source, or a specific list with counts
Search contacts... Find contacts in the current view
Table Name, Type, Email, Phone, Source, Updated, edit

Empty state: No contacts yet. Add your first contact to get started.
Contacts without a display name may show as Unnamed contact.

Bulk actions

Select rows (or select all matching), then:

Action What it does
Delete Delete Contact — confirm how many contacts will be removed
Add to agent Pick a launched agent (empty: No launched agents)
Add to list Open Add Contacts to Lists
Create List Create a list without selecting contacts first

Add contact menu

Add contact opens:

Option Purpose
Quick Add Create one contact in a modal
Import Contacts File upload wizard
Prospecting Search and enrich prospects
Visitor Intel Identify website visitor companies, enrich roles, sync leads
Signal Marketing Listening Signals → matches to a contact list
Setup webhooks Create an Origin-allowlisted webhook for website JS forms

Quick Add

Modal title: Add Contact.

Required / typical fields:

Warning: Phone must start with + and contain digits (for example +15551234567).

Actions: Cancel, Add contact. SWAI may generate description/type with AI before save.

Edit and delete


Setup webhooks

Path: Add contactSetup webhooks.

Use Setup webhooks when a JavaScript client on your website (or app) should create contacts in CRM. Each webhook is locked to allowed origin domains (the sites where your script runs). After create, AI matches the contact description against all lists on the brand. If none match, description is empty, or classification fails, the contact is created with no lists.

Tip: You must add at least one origin domain when you create a webhook. Include a clear description in the payload so AI can choose lists. List descriptions on the brand improve matching.

What Origin allowlisting means

Allowed domains are browser Origin hosts, not email domains. Examples:

SWAI hosted sites on *.site.swaihosting.online are allowed for every brand automatically. You do not need to add that host on each webhook.

The request must include a matching Origin header (browsers send this automatically on cross-origin fetch). If the Origin (or Referer host) is missing or not allowlisted, the webhook returns 403.

Warning: Do not share the webhook URL publicly beyond your own site. The path includes a secret token. Origin checks protect browser use; anyone who can forge an Origin header from a server can still call the URL — treat the URL like an API key for your site.

Create a webhook

  1. Open ContactsAdd contactSetup webhooks.
  2. Optional: enter a Name (for example Website form).
  3. Under Allowed origin domains, type a host (for example www.mysite.com) and click Add. Add every site where the script will run.
  4. Click Create webhook. Lists are not selected on the webhook — AI assigns from all brand lists using description.

After create, the webhook appears under Your webhooks. Select it to see the ingest URL and helpers at the bottom of the modal.

Manage webhooks

Under Your webhooks:

Action How
Browse See name, ingest URL, origins, and Disabled badge when off
Select Click a webhook card to show its sample curl / Copy for AI footer
Copy Copy the ingest URL
Edit Change name, origins, or Enabled; Save changes or Cancel / Back to list
Delete Confirm delete — the ingest URL stops working
New webhook Open the create form

After create or save, you return to the list. Footer helpers (Sample curl, Copy curl, Copy for AI) appear when a webhook is selected on the list view.

Payload (JSON)

POST to the webhook ingest URL with Content-Type: application/json.

Example body:

{
  "first_name": "Ada",
  "last_name": "Lovelace",
  "email": "ada@example.com",
  "phone": "+15551234567",
  "company": "Acme",
  "job_title": "Engineer",
  "type": "Lead",
  "description": "From website form",
  "notes": "optional"
}

Rules:

Browser example

await fetch("https://webhook.swai.ai/contact/YOUR_BRAND_UNIQUE_ID", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    first_name: "Ada",
    last_name: "Lovelace",
    email: "ada@example.com",
    type: "Lead",
    description: "From website form",
  }),
});

Replace the URL with Copy URL from the modal (https://webhook.swai.ai/contact/{brandUniqueId}). Run this only on pages hosted on an allowlisted origin. Do not call api.swai.ai from the browser for ingest.

Server-side callers use the same URL and must send a matching Origin (or Referer) header.

After a successful call

The contact is created (or updated if they already exist) in CRM. Matching brand lists are added when AI can classify the description; otherwise the contact has no lists. Notifications follow normal Contacts settings when applicable (in-app and/or email per Settings → Notifications — see Notifications, or go to app.swai.ai/setting/notifications). Open Contacts to confirm.


Lists

Lists are named groups of contacts. They are not a separate sidebar item — you manage them from Contacts, import, and Prospecting.

Action How
Filter the table Filter by list
Create Create ListList Name* , Description (Optional)Create List
Bulk add Select contacts → list icon → Add Contacts to Lists → select or Create New ListAdd to N List(s)
On a contact Lists tags; empty: Not in any lists yet.; remove with X

Empty picker: No lists available.

Tip: No source in the list filter means contacts with no source and no list membership.


Import Contacts

Path: Add contactImport Contacts.

Header: Import ContactsUpload a CSV or Excel file, map columns, then add contacts to your lists.

Supported files: CSV, XLS, XLSX.

Step 1 — Upload & Lists

Warning: Select at least one list and fill the description before uploading.

Busy state: Reading file…

Step 2 — Map Fields

Map columns to:

Review the preview of the first rows, then Continue to Import.

Validation expects enough identity data (for example name and/or email/phone/company).

Step 3 — Import

Warning: If you see Missing brand or authentication, sign in again before retrying.


Contact details

Path: click a contact → /contacts/{id}.

Profile

Email may show No email if none is on file.

CRM tabs

On the contact: Journey | Details | Deal | Notes (Journey is the default).


Journey and activities

Journey is the activity timeline for the contact.

Sub-tabs:

Tab What you see
All Combined timeline
Communications SMS, Email, WhatsApp messages
Touch Points System events (visits, forms, email opens, bookings, and more)

Empty states:

Message contact

From Journey you can message the contact:

Channel Typical setup
SMS Send from a connected phone number
WhatsApp Send from a WhatsApp integration
Email From name / sending identity

Touch point examples

Page visited, appointment booked, contact created, purchase, opportunity created, message or email opened / clicked / responded, quiz taken or submitted, webinar registered or attended, email sent, email bounced.


Notes

On the contact Notes tab:

Empty: No notes yetAdd a note to track context for this contact.


Details (AI insights)

On the Details tab:

Use this when you want a quick AI summary without reading the full journey yourself.


Deal Room

Path: Contacts → tab Deal Room (or Open Deal Room from a contact’s Deal tab).

First-time pipeline setup

If no pipeline exists, Pipeline Setup asks you to:

  1. What's your primary service? (niche — for example Mortgage Broker, Financial Planner, Coach, Medical Professional, Other)
  2. Define your client journey (process stages)
  3. Key Facts (fields) and Document Checklist
  4. Review your configurationLaunch Pipeline

Or use Generate with AICreate Pipeline to draft the setup faster. Templates can prefill stages, facts, and documents for common niches.

After launch — board and workspace

Toolbar: Pipeline settings, New Deal
Sub-nav: Pipeline Board | Client Workspace

View Purpose
Pipeline Board Stage columns; + Add Card; optional Archive for closed deals
Client Workspace One deal’s journey, status, documents, key facts, activity

Card info typically includes name, service, amount, owner, expected close, Docs: received/total, and closed badges Closed > Won / Closed > Lost.

New Deal

New Deal / Add New DealSelect a contact to add to your pipeline.

You can add another deal for a contact already on the board (renewal, upsell, or a new opportunity).

Empty search: No contacts in this brand. / No matching contacts…

Client Workspace

Pipeline settings

Edit niche, stages, facts, documents, allowed currencies, and stale after (days) (deals use that short currency dropdown; chase goes quiet after the stale window); Replace with template…; or Delete pipeline? (permanently deletes the pipeline and associated deals).

Contact → Deal tab

State What you see
No deal Not in pipelineOpen Deal Room
Has deal Amount, owner, close date, facts collected, docs pending, key facts, documents, View in Deal Room
Multiple deals Switcher to pick which deal to view; add another deal from Deal Room

Prospecting

Path: Add contactProspecting.

Header: ProspectingSearch, enrich, and import prospects into your contact lists.

Billing callout: you pay when a verified email is found (0.3 credits per result). Importing enriched contacts into CRM is free after enrichment. The UI shows your balance and how many prospects you can enrich.

Step 1 — Search

If the session fails, use Retry.

Step 2 — Results

Empty: No prospects found.

Step 3 — Enriched emails

Warning: Contacts need a name and email to import. Enrichment may stop if you hit your credit or selection cap — reduce selection or add credits.


Visitor Intel

Path: Add contactVisitor Intel.

Visitor Intel identifies companies that visit your website, shows page-level engagement, finds decision-makers at those companies (email enrichment), and syncs them into CRM as Lead contacts on a named list.

Header: Visitor IntelIdentify and enrich website visitors, then sync them to your lists.

Wallet display may show {n} credits / {n} left (or {n} enrichments left on smaller screens).

Main areas

Area What it’s for
Intelligence feed Visitors grouped by organization; select, expand, archive, enrich
Tracking script Copy embed code and pixel URL for your website
Lead enrichment Choose job roles and list name, scan domains, sync contacts

Note: Visitor Intel uses your brand session from Contacts. If the session fails, reopen from Add contact → Visitor Intel.

Before you use Visitor Intel

  1. Open Contacts for the correct brand.
  2. Confirm wallet credits for enrichment (0.3 credits per verified email found).
  3. Install the Tracking script on the website you want to monitor.

Tracking script

  1. Open Visitor Intel. If the feed is empty, Tracking script often opens automatically (or use the Tracking script control).
  2. Dialog: Tracking scriptAdd this script to your website to start tracking visitors.
  3. Embed codeCopy (or Copied).
  4. Note the Pixel URL (https://stats.swai.ai/{brandId} style).
  5. Paste the script into your site HTML, ideally before the closing </body> tag.
  6. Publish the site, then return and use Refresh visitors.

Steps in the dialog: Copy the script abovePaste it into your website HTML…Publish your site and return here to see visitor activityGot it.

Tip: Empty feed usually means the script is not installed yet, or no business visitors have been identified — use Tracking script and wait for traffic.

Intelligence feed

Columns: Organization, Activity, Type, Last visit.

Control What it does
Select rows Choose organizations to archive or enrich
Expand row See visits: Page URL, Engagement, Time
Activity {n} visits · {n}m active
Type badges Business (company resolved) or Shadow
Archive selected Hide selected records from the feed (confirm: Archive N selected record(s)?)
Enrich selected Start Lead enrichment for selected companies
Refresh visitors Reload the feed

Header counts: {n} organization(s) · {n} selected.

Empty: No visitor activity detected yet.

Warning: Enrichment needs companies with a known domain. Selection without domains fails with No domains found in selected visitors.

Lead enrichment

  1. Select organizations → Enrich selected.
  2. Wizard Lead enrichmentStep 1 of 2 — find decision-makers at selected companies.
  3. Set Campaign title (becomes the CRM list name; default like Prospects {date}).
  4. Set Job roles to search (defaults often include CEO, Founder). Add roles with Enter (Enter role and press Enter / Add role...).
  5. Review credit note: You only pay when we find a verified email (0.3 credits each…).
  6. Click Launch scan (or Cancel).
  7. Step 2: review discovered contacts (Name, Company, Role). Empty: No contacts found for the selected domains and roles.
  8. Click Sync contacts (or Back).
  9. Success: Sync completedEnriched contacts were added to your CRM.

Synced people appear as Lead contacts on the list named by Campaign title, with job title, company, email, optional LinkedIn, and journey activity such as Page visited.

Warning: Insufficient balance stops enrichment. Add credits or reduce how many emails you expect to find.

Warning: Session expired or invalid. Please reopen Visitor Intel. — close and open Visitor Intel again from Add contact.

Tip: Campaign title is the CRM list name for synced leads. Filter Contacts by that list after sync.


Common warnings and troubleshooting

Contacts won’t load / missing brand

Warning: Sign in again and open Contacts from the Dashboard for the correct brand.

I can’t import

  1. Choose at least one list and fill the description prompt.
  2. Use CSV, XLS, or XLSX.
  3. Map enough identity fields (name and/or email/phone/company).
  4. Keep the window open until import finishes.

Phone rejected on Quick Add

Use international format starting with + and digits only after the plus.

Prospecting finds no emails / can’t enrich

Visitor Intel feed is empty

  1. Open Tracking script, Copy the embed code, paste it before </body>, and publish.
  2. Confirm the site is live and generating traffic.
  3. Click Refresh visitors. Only business visitors (company identified) appear in the CRM feed.

Visitor Intel enrichment / sync fails

Deal Room is empty / can’t add a deal

  1. Complete Pipeline Setup and Launch Pipeline.
  2. Use New Deal and pick a contact. A contact can have more than one deal.
  3. For a renewal or upsell, add another deal for the same contact instead of editing the closed one.

Journey shows no activity

Empty timelines are normal for new contacts. Activity appears as they message, open emails, book, take quizzes, or hit other touch points.

Webhook returns 403 / contact not created

  1. Confirm the page runs on an allowlisted origin (exact host, for example www.mysite.com vs mysite.com).
  2. Add both hosts if your site redirects between them.
  3. Browsers must send Origin (normal for cross-origin fetch). A bare curl without -H "Origin: …" will fail.
  4. Confirm the webhook was not Deleted and that you used Copy URL from Setup webhooks.
  5. Confirm at least one of name, email, phone, or company is in the JSON body.

Delete failed or partial

Confirm selection and brand context. Batch delete has size limits — try fewer contacts if needed.


Glossary

Term Meaning
Contact A person (or company-linked person) in CRM
Prospect / Lead / Customer Contact type folders
List Named group of contacts
Source Origin of the contact; No source = none and no lists
Journey Timeline of communications and touch points
Touch Points System events (visits, opens, bookings, quizzes, and more)
Communications SMS / Email / WhatsApp messages
Lead score Warmth score from 1–10
Contact status A Satisfied / B Neutral / C Unsatisfied
Notes Free-form context on a contact
Details AI-generated contact insights
Deal Room Pipeline board and client workspace
Pipeline Niche + stages + key facts + document checklist
Archive Column for closed or orphan-stage deals
Client Workspace Per-deal status, docs, facts, and history
Import Contacts File → map → import into lists
Prospecting Search → select → enrich emails → add list to CRM
Visitor Intel Website company visits → enrich roles → sync Leads to a list
Intelligence feed Grouped visiting organizations in Visitor Intel
Tracking script Brand embed that tracks visits for Visitor Intel
Lead enrichment Domain + job-role email find flow in Visitor Intel
Campaign title (Visitor Intel) CRM list name used when syncing enriched leads
Setup webhooks Origin-allowlisted URL for JS forms to create contacts; AI assigns matching brand lists
Allowed origin Host where the webhook’s JavaScript client is allowed to run
Description prompt AI context used when importing contacts
Custom fields Brand-defined fields on contacts

Need more help?

If something still fails after the checklist above:

  1. Confirm you opened Contacts for the correct brand.
  2. Note whether the issue is list, import, prospecting, Visitor Intel, webhook, contact detail, or Deal Room.
  3. For Prospecting or Visitor Intel enrichment, note credit balance and how many emails you tried to find.
  4. For Visitor Intel, note whether the tracking script is installed and whether organizations have domains.
  5. For webhooks, note the allowlisted origins, ingest URL (without sharing the full token publicly), and the HTTP status (for example 403).
  6. Contact your SWAI admin or support with the contact/list/deal name and what you expected to happen.