Importing people
Bring an existing contact list into PageFork from a CSV file, with a preview of exactly what will happen before anything is saved.
If you already have a customer list — in a spreadsheet, an old CRM, a mailing tool — you can bring it into PageFork as people with a CSV file.
The import is a three-step wizard: File, Map columns, Review. The review step shows what the import would do before it does anything, so you can go back and fix the mapping as often as you like.
Importing is a Pro feature, and only owners and admins can do it. See Basic and Pro plans and Team and roles.
Before you start
Export your list as a CSV file. In Excel or Google Sheets that’s Save as or Download → CSV.
The file needs:
- A header row. The first line names the columns.
- At least one data row under it.
- A name, email or phone column. Every person needs at least one of the three.
PageFork is forgiving about the rest:
- Columns can be separated by commas, semicolons or tabs. It works out which from the header row.
- Values containing commas or line breaks are fine as long as they’re wrapped in double quotes, which spreadsheet apps do for you.
- Blank lines are skipped.
- A column with no header is called Column 3 (or whatever its position is). Two columns with the same header get (2) added to the second.
Step 1: File
- Open Leads, pick the site, and choose the People tab.
- Click Import CSV.
- Drop your file onto the box, or click choose a file.
PageFork shows the file name, how many rows and columns it found, and the first three rows so you can check it read the file correctly.
If something is wrong you’ll see one of:
| Message | Meaning |
|---|---|
| No header row found. The first line should name the columns. | The file is empty. |
| No data rows below the header. | There’s a header but nothing under it. |
| Couldn’t read that file. | The file couldn’t be opened. Export it again as CSV. |
Click Next.
Step 2: Map columns
Each column in your file is listed with a sample value and an Import as dropdown. This is where you tell PageFork what each column means.
| Import as | Use it for |
|---|---|
| Name | The person’s name |
| Their email address | |
| Phone | Their phone number |
| Company | Their company |
| Tags | Tags, separated by commas or semicolons |
| A custom field | Any of the site’s visible custom fields |
| Create new field… | Make a new custom field from this column |
| Skip | Leave the column out |
What PageFork maps for you
Column headers are matched ignoring capitals and punctuation, so
E-mail, email and EMAIL are all the same.
| Mapped to | Headers recognised |
|---|---|
| Name | name, full name, first name, given name, last name, surname, family name, contact, contact name, person |
| email, e-mail, email address, mail | |
| Phone | phone, phone number, tel, telephone, mobile, mobile phone, cell, cell phone |
| Company | company, company name, organisation, organization, org, business, employer |
| Tags | tags, tag, labels, label |
A header that matches the label of one of your custom fields is mapped to that field. Everything else starts as Skip.
If two columns would map to the same thing, the first one gets it and the later ones start as Skip.
First and last name in separate columns
Name is the one target you can use more than once. When your file has separate first-name and last-name columns, PageFork maps both to Name automatically and joins them with a space, in the order the columns appear in the file.
Creating a new field
Choose Create new field… and a label box appears, pre-filled with the column header. Change it if you like. The field is created as a Text field when the import runs; you can change its type afterwards in the fields editor.
Two options below the table
Also create a lead for each person. Off by default — the import just adds people. Tick it to also open a lead for each person, and pick the stage they should start in. Only open stages are offered. People who already have an open lead don’t get a second one.
Add tags to everyone imported. Tags typed here go onto every person
in the file, on top of any tags in a Tags column. Useful for
marking where the list came from, such as imported-2026.
When Next is greyed out
A line under the options says what’s missing:
- Map at least one column to Name, Email or Phone
- Each target can only be used once — the offending dropdowns are marked Used more than once. Only Name may repeat.
- Give every new field a label
Step 3: Review
PageFork now runs the whole import as a rehearsal. Nothing is saved yet. You get a summary headed What this import will do:
| Figure | Meaning |
|---|---|
| Rows | Data rows in the file |
| Will be added | New people that will be created |
| Already here | Rows that match a person already on the site |
| Skipped | Rows that can’t be imported |
| Leads to create | New leads, if you ticked the option |
| Fields to create | The new fields that will be made |
If any rows will be skipped, they’re listed underneath with the row number and the reason. Row 1 is the first row under the header. The first 50 are shown.
The usual reason is No name, email or phone — the row is empty in all the columns that identify a person. A row whose only details are an email or phone that isn’t valid is skipped too, with Invalid email or Invalid phone.
A second list shows rows that will be imported with a problem: the person has a name, but their email or phone isn’t valid, so it’s left out. The message says which, for example Imported without email: not a valid email. Fix the address in your file and import again to fill it in, or add it on the person’s page afterwards.
Not happy? Click Back, adjust the mapping, and come forward again. The rehearsal re-runs each time.
When the numbers look right, click Import N people. The button is unavailable if no rows can be imported.
When it finishes, the summary changes to Import complete with the real counts: Added, Matched existing, Skipped, Leads created, Fields created. Click Done.
How existing people are matched
Import uses the same rules as form submissions — see People.
- A row whose email matches someone on the site is that person. If the email matches nobody, the phone is tried.
- A matched person only has their gaps filled. Empty details and empty custom fields take the value from the file. Anything already filled in is kept — an import never overwrites existing data.
- Tags are added to whatever tags the person already has.
- Rows that match nobody become new people, shown as first seen via import.
Two rows in the same file with the same email end up as one person: the first row creates them, the second counts as Already here.
A value in the Email column that isn’t a valid address is ignored rather than saved.
Large files
Files are imported 2,000 rows at a time. A bigger file is sent in several batches, one after another, and the wizard shows which batch it’s on. You can’t close the wizard while it’s working.
If a batch fails partway through a large file, the batches before it are already saved. Click the import button again and PageFork carries on from the batch that failed rather than starting over.
Good to know
There is no undo. Imported people stay until you remove them, and people can only be erased one at a time. Read the review step carefully, and try a small file first if you’re unsure.
Far more “Already here” than expected. Those rows share an email or phone with someone already on the site, or with an earlier row in the file.
Imported the same file twice. Nothing is duplicated as long as the rows have an email or phone: they’re all matched the second time. Rows with only a name are added again, because names aren’t used for matching — tidy those up with Merging duplicates.
A custom field isn’t in the dropdown. It’s hidden. Unhide it in the fields editor first.
The Import CSV button isn’t there. You’re a member, not an owner or admin — or the site is on Basic.