Importing People Data

People Import Guide

This guide provides instructions for importing people data into Profyle Card using CSV files.

Overview

The import function allows you to bulk create or update people records in your organisation. The system processes CSV files and validates all data before committing changes to the database.

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

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_id during 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 shown
    • group – Show locations assigned to the person’s group
    • list – Show locations from the person’s location_ids list
    • custom – 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”
  • Exampled9fg87d09f8g,osd98f7l9sfs
  • Note: Leave empty for no locations or when using locations: disabled or locations: group

How to Find Location IDs

Location IDs are unique identifiers for office locations in your organisation. To find available location IDs:

  1. Export your locations list from Settings > Import/Export  and use the Export Address Data
  2. The id column contains the location IDs you can reference
  3. Use these IDs in the location_ids field, 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 shown
    • group – Show all people in the same group as linked profyles
    • list – 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”
  • Exampleabc123def,xyz789ghi
  • Note: Leave empty when using linked_profyles: disabled or linked_profyles: group

How to Find Person IDs

Person IDs are unique identifiers for each person in your organisation. To find person IDs:

  1. Export your people list from the People page in the Profyle Card admin
  2. The id column contains the person IDs you can reference
  3. Use these IDs in the linked_profyle_ids field, 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
  • Formatcf_ + custom field ID
  • Example: If you have a custom field with ID employee_number_a5ffe, the column name would be cf_employee_number_a5ffe

How to Find Custom Field IDs

  1. Custom fields are configured at the organisation level
  2. 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.
  3. Each custom field has a unique ID that must be used in the column name

Import Behaviour

Creating New Records

  • Leave the id column 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 id column
  • 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:

  1. File Format: Must be valid CSV with headers
  2. ID Column: Must be present (even if values are empty)
  3. Email Required: Every record must have an email address
  4. Group Names: Must match existing groups exactly
  5. Location IDs: Must reference existing location IDs
  6. Person IDs: Must reference existing person IDs (for linked profyles)
  7. Enumerated Values: Must use exact values for locations and linked_profyles
  8. 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

  1. Test First: Import a small test file with 2-3 records before bulk importing
  2. Backup IDs: Export existing people first to get accurate IDs for updates
  3. Group Names: Verify group names are spelled exactly as they appear in the system
  4. Location Setup: Create and configure locations before importing people that reference them
  5. Custom Fields: Confirm custom field IDs with your administrator before importing
  6. Email Validation: Ensure all email addresses are valid and unique
  7. URL Cleanup: LinkedIn URLs are automatically cleaned, but other URLs should be properly formatted
  8. 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)

 

Profyle logo

Back to Help Section