Contact Management
Automatically build and enrich contact profiles from form submissions. Track all interactions, merge duplicate contacts, and gain a complete view of every respondent.
What is Contact Management?
Contact Management transforms your form responses into rich contact profiles. Instead of just collecting isolated submissions, WorkForm builds a comprehensive contact database that tracks every interaction, enriches profiles over time, and gives you a complete picture of each respondent.
Example Workflow:
- ✅ User submits a lead form → Contact profile created
- ✅ Same user submits a support request → Profile updated with new info
- ✅ User books a demo → Scheduling details added to profile
- ✅ View all interactions in one unified contact profile
Key Features
Intelligently identify returning users by email or IP address to prevent duplicates and maintain clean contact records.
Map any form field to contact properties. Extract names, emails, phone numbers, company details, and custom fields automatically.
View all form submissions from each contact in one place. See the complete interaction timeline with expandable response details.
Automatically capture IP addresses, browser details, and device information for better context and fraud prevention.
Enable Contact Matching
Open Form Settings
Go to your form editor and click the "Settings" tab in the right sidebar.
Enable Contact Matching
Toggle on "Enable Contact Matching" to activate the feature for this form.
Settings → Contact Matching → Enable Contact MatchingConfigure Field Mappings
Map your form fields to contact properties (email, name, phone, etc.). Click "Add Field Mapping" to create custom mappings.
Choose Matching Strategy
Configure how WorkForm identifies returning contacts using email matching, IP matching, or both.
Contact Matching Strategies
Email matching is the primary and most reliable method for identifying contacts. When enabled, WorkForm searches for existing contacts by email address.
How it works
If the email from the form matches an existing contact, that profile is updated. Otherwise, a new contact is created.
Exclusive matching
Email matching takes priority. If an email is provided, IP matching is skipped to ensure different emails always create separate contacts.
Best for
Lead forms, contact forms, user registrations, surveys with known respondents
IP matching helps identify anonymous or returning visitors who don't provide an email. This is particularly useful for tracking quiz takers, survey respondents, or multi-part forms.
How it works
Only used when no email is provided. WorkForm checks if the IP address has submitted before and updates the existing anonymous contact.
Limitations
IP addresses can change or be shared (offices, VPNs, mobile networks). Use this for approximate tracking, not precise identification.
Best for
Anonymous surveys, quizzes, calculators, multi-step forms before email collection
Privacy Tip
When using IP matching, ensure you comply with privacy regulations (GDPR, CCPA). Add a privacy policy link to your forms and be transparent about data collection.
Field Mapping
Field mapping connects your form questions to contact properties. This tells WorkForm which form responses should update which contact fields.
Standard Contact Fields
emailEmail address used for contact matching and communication
firstNameContact's first name or given name
lastNameContact's last name or surname
phonePrimary phone number with country code
companyCompany or organization name
jobTitleProfessional role or position
websiteCompany or personal website URL
addressFull street address
city / state / zipCode / countryLocation details for contact segmentation
Custom Fields
Beyond standard fields, you can map form questions to custom properties unique to your needs.
Example Custom Mappings:
- •"Annual Revenue" →
customFields.annualRevenue - •"Industry" →
customFields.industry - •"Preferred Contact Method" →
customFields.contactMethod - •"Lead Score" →
customFields.leadScore
Update Existing Contacts
Control how WorkForm handles data when a contact submits multiple forms over time.
When enabled, new form submissions will update all fields with new values. This keeps contact data fresh and ensures you always have the latest information.
When disabled, only empty fields will be filled. Existing data is preserved, preventing accidental overwrites from partial forms or progressive profiling.
Viewing Contact Profiles
Access your contact database from the main dashboard to view profiles and response history.
Navigate to Contacts
Click "Contacts" in the main navigation menu to open your contact database.
Browse Contact List
See all contacts with key information: name, email, company, location, and number of form submissions. Use search and filters to find specific contacts.
View Contact Details
Click any contact to see their complete profile including:
- Contact information (name, email, phone, location)
- Device & browser information
- Custom fields unique to this contact
- IP address history with location data
View Response History
Scroll down to see all forms submitted by this contact. Each form is displayed in an expandable accordion showing:
- Form name and submission date
- Response status (completed/incomplete)
- Submission time and response count
- Click to expand and view full response answers
Viewing Response Details
Click on any form submission in a contact's history to view complete details in a modal window.
Submission Metadata
Response ID, submission time, completion status, and device information
All Questions & Answers
Complete list of form questions with formatted answers. HTML from the editor is automatically stripped for clean display.
Scheduling Details (if applicable)
For forms with Cal.com or Calendly integrations, see booking details including:
- • Scheduled date and time with timezone
- • Booking status and cancellation info
- • Video call links (Zoom, Google Meet, etc.)
- • Direct links to view booking on Cal.com/Calendly
Common Use Cases
Build comprehensive lead profiles from multiple touchpoints. Track demo requests, white paper downloads, and contact form submissions all in one contact record.
Track all support requests from each customer. See ticket history, common issues, and customer information in one unified view.
Track attendees across multiple events. See which events each person registered for, dietary preferences, and networking interests.
Build complete profiles gradually over time. First form collects basic info, subsequent forms ask for additional details without re-asking known information.
Track quiz takers, calculator users, or survey respondents who don't provide email. If they later provide email, merge their anonymous activity into their contact profile.
Best Practices
✓ Always map email fields
Email is the most reliable identifier. Make sure your email form field is mapped to the contact email property for accurate matching.
✓ Use consistent field names
If you have multiple forms, use the same question IDs or labels for common fields (email, name, phone) to ensure consistent mapping.
✓ Review IP matching limitations
IP addresses are approximate. Don't rely solely on IP matching for critical data or where accuracy is essential. Use it as a fallback for anonymous tracking only.
✓ Test your configuration
Submit test responses with the same email to verify contact matching and field updates work as expected before launching your form.
⚠ Be mindful of data privacy
Always include a privacy policy and be transparent about how you collect and use contact data. Ensure compliance with GDPR, CCPA, and other applicable regulations.
⚠ Don't over-collect data
Only map fields that provide value. Collecting unnecessary information can reduce conversion rates and create privacy concerns.
Technical Details
Data Storage
Contacts are stored in MongoDB with the following schema:
{
workspace: ObjectId,
email: String (unique per workspace),
firstName: String,
lastName: String,
phone: String,
company: String,
jobTitle: String,
website: String,
address: String,
city: String,
state: String,
zipCode: String,
country: String,
ipAddresses: [{ ip: String, location: Object, timestamp: Date }],
devices: [{ browser: String, os: String, device: String }],
customFields: Object,
tags: [String],
createdAt: Date,
updatedAt: Date
}Matching Logic
Step 1: Email Check
If email provided, search for existing contact by email in workspace. If found, update and skip IP check. If not found, continue to step 2.
Step 2: IP Check (if no email)
If IP matching enabled AND no email provided, search by IP address. If found, update anonymous contact. If not found, continue to step 3.
Step 3: Create New Contact
If no existing contact found, create new contact with provided data and captured metadata (IP, device info, timestamp).
Automatic Data Capture
Beyond mapped fields, WorkForm automatically captures:
- IP Address & Location: Geo-location data including country, region, city, and timezone
- Device Information: Browser name/version, operating system, device type (mobile/desktop/tablet)
- Timestamps: First seen, last updated, and submission times for activity tracking
Frequently Asked Questions
What happens if someone uses a different email?
A new contact is created. Different emails are treated as different people to prevent data mixing. Even if IP matching is enabled, email takes priority.
Can I merge duplicate contacts?
Contact merging is not currently available in the UI, but you can use the GraphQL API to programmatically merge contact records if needed.
How do I export contact data?
Use the Export button in the Contacts page to download your contact database as CSV. You can also use the GraphQL API for programmatic access.
Are incomplete form submissions linked to contacts?
Yes! Both completed and incomplete responses are linked to contacts. This helps you identify drop-off points and follow up with incomplete submissions.
Can I disable contact matching for specific forms?
Yes, contact matching is configured per-form. You can enable it for lead forms and disable it for anonymous surveys or feedback forms.
How accurate is IP-based location data?
IP geolocation is generally accurate at the country and city level, but can be affected by VPNs, proxies, and mobile networks. Use it for general insights, not precise targeting.
Can I tag contacts or add notes?
Contact tags and notes are available via the GraphQL API. UI support for manual tagging and notes is planned for a future update.
Is contact data shared across workspaces?
No, contacts are workspace-specific. The same email in different workspaces creates separate contact records.
Related Documentation
Send contact data to your CRM, email platform, or database via webhooks and API
Programmatically create, update, and query contacts using the GraphQL API
Analyze contact engagement, form completion rates, and submission patterns