People Import Guide
Overview
CSV File Requirements
The easiest way to use the import feature is to start with a valid import file. A valid import file can be generated by using the People Export feature from within Settings > Import/Export.
- Format: CSV (Comma-Separated Values)
- Encoding: UTF-8
- Delimiter: Comma (,)
- Headers: First row must contain column names
- ID Column: Required for all imports (can be empty for new records)
Required Columns
id
- Type: String
- Required: Yes (column must exist)
- Description: Unique identifier for the person
- Usage:
- Empty/blank: Creates a new person with an auto-generated ID
- Existing ID: Updates the existing person record
- Non-existent ID: Import fails with error “ID does not exist in account”
email
- Type: String (valid email address)
- Required: Yes
- Description: Person’s email address
- Validation: Must not be empty
Standard Data Columns
All standard columns are optional unless specified otherwise.
Personal Information
first_name
- Type: String
- Description: Person’s first name
last_name
- Type: String
- Description: Person’s last name
prefix
- Type: String
- Description: Name prefix (e.g., Dr., Mr., Ms., Prof.)
nominals
- Type: String
- Description: Post-nominal letters or certifications (e.g., PhD, MBA, FRICS)
Professional Information
position
- Type: String
- Description: Job title or position
department
- Type: String
- Description: Department within the organisation
Contact Information
mobile
- Type: String
- Description: Mobile phone number
address
- Type: String
- Description: Physical address
Social Media
linked_in
- Type: String
- Description: LinkedIn profile username or URL
- Note: URLs are automatically cleaned (removes
https://,www.,linkedin.com/in/prefix) - Example:
- Input:
https://www.linkedin.com/in/johndoe→ Stored as:johndoe - Input:
johndoe→ Stored as:johndoe
- Input:
twitter
- Type: String
- Description: Twitter/X handle or profile
instagram
- Type: String
- Description: Instagram handle or profile
Profile Content
bio
- Type: String (text)
- Description: Biography or about text
- Max length: 255 characters
photo_url
- Type: String (URL)
- Description: URL to the person’s profile photo
Group Assignment
group
- Type: String
- Description: Name of the group this person belongs to
- Validation: Must match an existing group name in the organisation (including capitalisation)
- Error: If group name doesn’t exist, import fails with “Group ‘{name}’ not found within groups”
- Note: The group name is automatically converted to
group_idduring import
Location Configuration
Locations control how address information is displayed on digital business cards.
locations
- Type: String (enumerated)
- Required: Optional (defaults based on organisation settings)
- Allowed Values:
disabled– No location information is showngroup– Show locations assigned to the person’s grouplist– Show locations from the person’s location_ids listcustom– Use the custom address field
- Validation: Value must be one of the allowed values listed above
- Error: Invalid values fail with “Value ‘{value}’ is not an allowed value (disabled, group, list, custom)”
location_ids
- Type: String (comma-separated location IDs)
- Description: List of location IDs to associate with this person
- Format: Comma-separated values without spaces (e.g.,
loc1,loc2,loc3) - Validation: Each location ID must exist in the organisation
- Error: If a location ID doesn’t exist, import fails with “Could not find Address ‘{id}’ referenced within location_ids”
- Example:
d9fg87d09f8g,osd98f7l9sfs - Note: Leave empty for no locations or when using
locations: disabledorlocations: group
How to Find Location IDs
Location IDs are unique identifiers for office locations in your organisation. To find available location IDs:
- Export your locations list from Settings > Import/Export and use the Export Address Data
- The
idcolumn contains the location IDs you can reference - Use these IDs in the
location_idsfield, separated by commas
Linked Profyles Configuration
Linked Profyles allows you to connect people together, useful for teams, assistants, or related contacts.
linked_profyles
- Type: String (enumerated)
- Required: Optional (defaults based on organisation settings)
- Allowed Values:
disabled– No linked profyles showngroup– Show all people in the same group as linked profyleslist– Show specific people from the linked_profyle_ids list
- Validation: Value must be one of the allowed values listed above
- Error: Invalid values fail with “Value ‘{value}’ is not an allowed value (disabled, group, list)”
linked_profyle_ids
- Type: String (comma-separated person IDs)
- Description: List of person IDs to link to this person
- Format: Comma-separated values without spaces (e.g.,
person1,person2,person3) - Validation: Each person ID must exist in the organisation
- Error: If a person ID doesn’t exist, import fails with “Could not find Person ‘{id}’ referenced within linked_profyle_ids”
- Example:
abc123def,xyz789ghi - Note: Leave empty when using
linked_profyles: disabledorlinked_profyles: group
How to Find Person IDs
Person IDs are unique identifiers for each person in your organisation. To find person IDs:
- Export your people list from the People page in the Profyle Card admin
- The
idcolumn contains the person IDs you can reference - Use these IDs in the
linked_profyle_idsfield, separated by commas
Custom Fields
Organisations can define custom fields to capture additional information specific to their needs.
Custom Field Format
Custom field columns must be prefixed with cf_ followed by the custom field ID.
cf_{field_id}
- Type: Varies by field configuration
- Description: Custom field values defined by your organisation
- Format:
cf_+ custom field ID - Example: If you have a custom field with ID
employee_number_a5ffe, the column name would becf_employee_number_a5ffe
How to Find Custom Field IDs
- Custom fields are configured at the organisation level
- Contact your Profyle Card administrator to get the list of available custom field IDs or simply download a Person Export – it will contains all the custom field columns already.
- Each custom field has a unique ID that must be used in the column name
Import Behaviour
Creating New Records
- Leave the
idcolumn empty or blank - System generates a new unique ID automatically
- Sets initial metadata (created_at, created_by)
- Initialises default values for card_id, digital_id, subscription, etc.
Updating Existing Records
- Provide the existing person’s id in the
idcolumn - Only fields included in the CSV will be updated (merge behavior)
- Updates metadata (updated_at, updated_by)
- If the ID doesn’t exist, the record is skipped with an error
Validation Rules
The import process validates data before writing to the database:
- File Format: Must be valid CSV with headers
- ID Column: Must be present (even if values are empty)
- Email Required: Every record must have an email address
- Group Names: Must match existing groups exactly
- Location IDs: Must reference existing location IDs
- Person IDs: Must reference existing person IDs (for linked profyles)
- Enumerated Values: Must use exact values for
locationsandlinked_profyles - Allowed Columns: Only standard fields and registered custom fields are allowed
Processing Details
- Batch Size: Records are processed in batches of 100
- Error Handling: If a record fails validation, it’s skipped and an error is logged
- Metadata: System automatically tracks who created/updated records and when
- Audit Trail: All changes are logged with the authenticated user’s email
Import Results
After import, a table will be shown with the status of each line within the CSV file and if that Person has been “created”, “updated”, or “error”. Errors will also include a description as to why the error has occurred.
Please note that if a row generates more than one error, only the first error will be shown.
Best Practices
- Test First: Import a small test file with 2-3 records before bulk importing
- Backup IDs: Export existing people first to get accurate IDs for updates
- Group Names: Verify group names are spelled exactly as they appear in the system
- Location Setup: Create and configure locations before importing people that reference them
- Custom Fields: Confirm custom field IDs with your administrator before importing
- Email Validation: Ensure all email addresses are valid and unique
- URL Cleanup: LinkedIn URLs are automatically cleaned, but other URLs should be properly formatted
- Incremental Updates: For large organisations, consider updating in smaller batches
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| “id column not present” | CSV missing id column | Add id as the first column |
| “Email address not present” | Email field is empty | Provide a valid email for each record |
| “Group ‘{name}’ not found within groups” | Group name doesn’t exist | Check group spelling or create the group first |
| “ID does not exist in account” | Trying to update non-existent person | Verify the ID or leave blank to create new |
| “Could not find Address ‘{id}’ referenced within location_ids” | Location ID doesn’t exist | Verify location IDs or create the location first |
| “Could not find Person ‘{id}’ referenced within linked_profyle_ids” | Person ID doesn’t exist | Verify person IDs or import those people first |
| “Value ‘{value}’ is not an allowed value” | Invalid enumerated value | Use only allowed values (see Allowed Values sections) |