Skip to main content

Documentation Index

Fetch the complete documentation index at: https://help.statisfy.com/llms.txt

Use this file to discover all available pages before exploring further.

Direct CSV Import lets you upload a CSV or Excel file and immediately import data into Statisfy. Use it to update account fields or create and update people records — no integration setup required.
Direct CSV Import requires Admin access. You can find it in Integrations > Data Import.

Accessing Direct CSV Import

  1. Navigate to Integrations from the main menu
  2. Select the Data Import tab
  3. Click Import CSV to open the import wizard
The Data Import tab also shows a history of all past imports with their status.

Step 1: Entity & File

Choose what you’re importing and upload your file. Entity type:
  • Account — Update fields on existing accounts
  • People — Create or update people records linked to existing accounts
Upload your file:
  1. Drag and drop a CSV or Excel file, or click to browse
  2. Supported formats: .csv, .xlsx, .xls
  3. Once uploaded, the wizard displays your detected column headers and a preview of the first few rows

Step 2: Identifier

Configure how rows in your CSV are matched to accounts in Statisfy.

CSV Column

Select which column in your file contains the identifier value.

Match By

Select which account field to match against:
  • Account Name — Match by the account display name (fuzzy matching)
  • Domain — Match by company domain (e.g., acme.com)
  • CRM Account ID — Match by Salesforce or HubSpot account ID
  • Custom fields — Match by any custom field you’ve defined on accounts (each custom field appears as a separate option)
For people imports, this step is labeled “Account Link” — it identifies which account each person belongs to, not the person themselves.
The wizard highlights the selected column in the data preview so you can verify your choice.

Step 3: Map Columns

Map CSV columns to the target fields on the selected entity (account or people).
  1. Click Add Mapping
  2. Select a CSV Column and the corresponding target field (standard or custom)
  3. Repeat for each column you want to import
Each CSV column and target field can only be used once. The identifier column from Step 2 is excluded from the available columns since it’s already used for matching. Each target field shows a type badge (for example Text, Number, Date, Currency, Percent) so you can verify the data in your CSV is appropriate for the field before executing. Example (Account):
CSV ColumnAccount Field
industryIndustry
employee_countEmployee Count
regionSales Region
Example (People):
CSV ColumnPeople Field
emailEmail
first_nameFirst Name
titleJob Title
For people imports, the email field mapping is required. The wizard will not let you proceed without it.

Supported custom field types

You won’t see custom fields that can’t be populated from a CSV cell — the mapper hides them so you only pick from the types listed below.
TypeWhat to put in the CSV cell
Text, Long TextAny string
Number, FloatNumeric value
PercentNumber — with or without a trailing % (for example 42 or 42%)
CurrencyNumber — symbols ($, , £, ¥) and thousands separators (,) are stripped automatically
Booleantrue / false, 1 / 0, yes / no, or on / off
DateISO date (YYYY-MM-DD) or a common date string
Text ListUse semicolons to separate multiple values (for example alice;bob;carol)
URLA URL string
Lookup (User, Owner)An email address that matches a user in your workspace
Not supported in CSV: Pill, Object, Lookup List, JSON, and Lookup fields that target an account or document. You won’t be able to map these from a CSV — use the web app to populate them instead.
Values with a trailing newline or extra whitespace are trimmed before import. Empty cells leave the existing field value untouched.

Step 4: Options

Configure how unmatched rows are handled during the import. For account imports: All rows attempt to match an existing account using the identifier from Step 2. Rows that don’t match any account are reported as errors. For people imports, choose one of:
  • Skip — When the account is matched but no person with the given email is found, the row is skipped. Only existing people are updated.
  • Create new person — When the account is matched but no person with the given email is found, a new people record is created and linked to the matched account.
If the account itself cannot be matched, the row is reported as an error regardless of this setting. This step also shows a summary of your import configuration: entity type, file name, total rows, field mappings, and identifier mapping.

Step 5: Preview & Confirm

The wizard runs a dry-run preview of your import using the first rows of your file (up to 10) and shows the results before any data is changed. The preview checks both that each row matches an existing record and that each mapped value parses correctly for its target field type, so most type errors surface here before you execute. The full import will process all rows when you execute it. Summary cards show:
  • Will Update — Rows that matched an existing record and will update its fields
  • Will Create — (People only) Rows that will create new people records
  • Will Skip — (People only) Rows that will be skipped
  • Errors — Rows that could not be processed (either the identifier didn’t match, or a mapped value failed validation for its target field — for example a non-numeric value in a Number column, or a Lookup-by-email that didn’t match a user)
Row-by-row detail table shows:
ColumnDescription
RowRow number from the CSV
IdentifierThe identifier value from that row
StatusUpdate, Create, Skip, or Error
MatchedThe name of the matched account or person
DetailsError message if applicable
Review the results, then click Execute Import to start the import.
The preview is a dry-run — no data is changed until you click Execute Import.

After Import

Once you click Execute Import, the job is queued for background processing. You’ll see a confirmation toast with the job ID. Tracking import status:
  1. Go to Integrations > Data Import
  2. The history table shows all past imports with:
    • File name and entity type
    • Status: Pending, Processing, Processed, or Failed
    • Counts for updated, created, skipped, and errored rows
    • Import date
  3. Click any row to view full job details including individual error messages

Troubleshooting

  • Verify the identifier column contains valid data
  • Check that identifiers match exactly — CRM Account IDs and domains must match the stored value precisely. Account name matching uses fuzzy matching but still requires a close match
  • Ensure the accounts already exist in Statisfy before importing
  • Try a more reliable match method like CRM Account ID or Domain
The email field mapping is required for people imports. Add a mapping from a CSV column to the email field in Step 3.
  • Check that the identifier value exists in Statisfy for account imports
  • Verify that data types match the target fields (e.g. numbers for Number and Percent fields, a recognized boolean word for Boolean)
  • For Lookup-to-user or Lookup-to-owner fields, the cell must contain an email that matches a user in your workspace — the error message lists the unresolved email
  • For Text List fields, separate multiple values with semicolons (;)
  • For Currency fields, symbols like $ and thousands commas are stripped automatically, but the remaining value must be a valid number
  • For people imports with “Skip” strategy, unmatched emails appear as skipped, not errors
The API returns 422 unsupported_field_mappings when a mapping targets a field type that Statisfy doesn’t read from CSV (Pill, Object, Lookup List, JSON, or a Lookup that targets an account or document), or when the target custom field key doesn’t exist (typically because it was deleted between choosing it in the wizard and running the import). Remove those mappings, or replace the target with a field from the supported-types table above, then re-run the preview.
Imports are processed asynchronously. Large files may take several minutes. If a job stays in Processing for an extended time or moves to Failed, check the job details for error messages and retry with a corrected file.