Navigation
Getting Started
Business Setup
Money
WebApp Modules
Developers
Contacts
What is the Contacts Module?
The Contacts module is your relationship management system. It stores every person who interacts with your WebApp — whether they signed up, made a purchase, or were imported from another platform. This is where you can instantly see who, when, what, how, and why for any user.
Every contact record serves as the ultimate source of truth for a user on your WebApp, bringing together their profile information, purchase history, tags, and activity in one place.
Contact Types
Contacts are categorized into two types:
- Lead — Someone who has shown interest but hasn't made a purchase yet (signed up, subscribed to newsletter, etc.)
- Customer — Someone who has completed a purchase or transaction
Contacts automatically transition from Lead to Customer when they make their first purchase. You can also manually change a contact's type if needed.
Contact Data
Each contact record stores:
- Basic Information — First name, last name, email address, phone number
- Address — Full address including street, city, state/province, zip code, and country
- Tags — Labels for segmentation and organization
- Custom Fields — Business-specific data you define yourself (see below)
- Notes — Freeform text notes for unstructured context about the contact
- Timestamps — When the contact was created and last updated
- Module Data — Additional information from other modules (purchases, subscriptions, activity)
Custom Fields
The built-in contact schema covers the basics every business needs. When you need to track business-specific data — a company name, a plan tier, a renewal date, a lead source — Custom Fields let you define those fields once and have them appear everywhere: on the contact card, in the edit form, in the Contact API, and on opt-in forms.
Field Types
Six field types cover the common use cases:
- Text — Short single-line text (e.g. company, job title)
- Textarea — Multi-line freeform text
- Number — Numeric value (e.g. seat count, deal size)
- Date — Date picker (e.g. renewal date, trial end)
- Dropdown — Select from a fixed list of options you define
- Checkbox — Boolean toggle (yes/no)
Defining Fields
Custom Fields are managed from the Custom Fields page in the Contacts sidebar. Each field has:
- Label — The human-readable name shown in the UI (e.g. “Company”).
- Key — A URL-safe slug auto-generated from the label (e.g.
company). Used as the identifier everywhere (API, forms, storage). - Type — One of the six types above.
- Options — For dropdown fields, the list of allowed values.
- Required — Whether the field must be filled on edit forms and opt-in forms.
- Sort order — Drag-to-reorder position, determining how fields are displayed on the contact card and edit form.
Key & type are immutable: once a field is created, its key and type cannot be changed — changing them would orphan stored data or break validation. You can always update the label, options, required flag, and sort order.
Deleting a Field
Deleting a field definition hides it from the contact card, edit form, and opt-in form builder — but does not remove the stored values from existing contacts. This is intentional: your data is preserved. If you later recreate a field with the same key, the stored values automatically reappear. The delete confirmation dialog makes this behavior explicit.
Validation
Values are validated when writing a contact:
- A number field rejects non-numeric values.
- A dropdown field rejects values not in its option list.
- A required field rejects submission when empty.
- Updates merge into the existing JSON — partial updates only change the keys they provide, leaving other custom field values untouched.
Notes
Every contact has a dedicated Notes field — freeform, unstructured text for context that doesn't fit into a structured field. A Notes card appears on the contact profile with inline edit, and there's a Notes input on the edit form. Use it for things like “Met at SaaStr 2026, follow up next week” or any quick context that doesn't need its own custom field.
Managing Contacts
The Contacts list provides powerful tools for managing your audience:
- Search — Find contacts instantly by name, email, or phone
- Filter by Type — View all contacts, only leads, or only customers
- Filter by Tags — Include or exclude contacts based on specific tags
- Sort — Order by name, email, type, or creation date
Available actions for each contact:
- View — Open the full contact profile
- Edit — Update contact information and tags
- Delete — Remove the contact permanently
Bulk Operations
For managing large numbers of contacts, use the Edit All mode:
- Select individual contacts using checkboxes
- Select all contacts on the current page
- Select all contacts matching your current filters (across all pages)
- Bulk delete selected contacts with confirmation
When bulk deleting, you'll need to type "DELETE" to confirm, preventing accidental mass deletions.
Contact Profile
Clicking on a contact opens their full profile, displaying all their information in a clean, organized layout:
- Contact details (name, email, phone, type)
- Address information
- Custom Fields card — 3-column grid with every field that has a value, ordered by the sort order you set. Empty fields are hidden in view mode; clicking Edit reveals every defined field (including empty ones) with inputs matching their type.
- Notes card — The freeform notes text with an inline edit control.
- All assigned tags
- Creation and last update timestamps
- Module Widgets — Additional sections from other modules, such as purchase history from the Offers module, and enrollment status from Automations
This is where other modules integrate their data — for example, the Offers module adds a widget showing all purchases, allowing you to view orders, manage entitlements, and process refunds directly from the contact profile.
Tags
Tags are the foundation of contact segmentation. They allow you to categorize and organize your contacts for targeted communication and filtering.
Navigate to the Tags section to manage your tags:
- Create Tags — Add single tags with name and optional description, or bulk import multiple tags at once
- View Contact Count — See how many contacts have each tag (clickable to filter the contacts list)
- Edit Tags — Update tag names and descriptions
- Delete Tags — Remove tags that are no longer needed
Tags are automatically assigned when:
- A contact purchases an offer (based on the offer's default tags)
- A contact uses a specific checkout (based on checkout custom tags)
- A product tag is applied when a contact gains access to a product
- You manually assign tags while editing a contact
Lead Capture
To capture leads from landing pages — on your WebApp or any third-party site — Opt-in Forms pair with the Contacts module. Define a form, pick which standard and custom fields to collect, choose the tags to apply, and drop the embed code in as either a React component (internal mode) or a standalone vanilla JS script (external mode). Submissions upsert contacts by email and apply the configured tags — automatically firing any automations triggered by those tags.
Importing Contacts
Import contacts from CSV, TSV, or TXT files to quickly populate your database from other platforms or spreadsheets.
The import process:
- Upload — Drag and drop or browse to select your file (up to 10MB)
- Map Fields — Match your CSV columns to contact fields. Common field names are auto-mapped for convenience
- Import — Process contacts in batches with real-time progress
- Review Results — See how many contacts were created, updated, or skipped
Available import fields:
- Email (required) — The contact's email address
- First Name / Last Name / Full Name — Name fields (Full Name automatically splits)
- Phone — Phone number (international format preferred)
- Country Code — If phone numbers don't include country code, map this to add it
- Address Fields — Address lines, city, state, zip, country
- Type — lead or customer
- Tag — Apply a tag to all imported contacts
If an email already exists, the import will update the existing contact rather than creating a duplicate.
Integration with Other Modules
Contacts is the foundation that every other module builds upon. Whether it's sending emails, processing purchases, running automations, or delivering digital products — everything connects back to contact records.
Some integrations are visible directly on the contact profile as cards (like purchase history), while others work in the background to deliver services. Each module's documentation covers its specific integration with Contacts.
Next Steps
- Email Broadcasts — Send email campaigns to your contacts
- Automations — Automate actions based on contact activity
- Opt-in Forms — Capture leads from your WebApp or external landing pages