Preparing Import Data is the planning step before you run an import in infoodle. An import brings contact data (people, organisations, households, addresses, and the fields attached to them) from a CSV file into infoodle in one job. Getting the file shape, identifiers, and duplicate strategy right before you upload keeps the import predictable and prevents accidental data loss.
Before you start
By working through this list in order you will set yourself up for a clean import and avoid the most common mistakes. Take note of lawful basis and the rollback export, as these will protect you from the worst kinds of problems if something later turns out to be wrong.
Role Permissions
- Access Import Tool: required to run any import. If Import is missing from your menu, ask whoever manages roles in your infoodle to add it to your role.
- The user running the import also needs the underlying write permissions for the records being changed (People, Households, Groups).
For more on what each role permission means, see Role Permissions.
Other prerequisites
- You will need a lawful basis to hold each contact in infoodle. Under the New Zealand Privacy Act 2020, the UK and EU GDPR, and the Australian Privacy Act, you need consent, a contract, or another lawful basis to process the personal data of the people you are importing. Imports of purchased contact lists are almost always not lawful. If any contacts on the file are children, check the extra consent rules that apply in your jurisdiction (parental consent for under-13s in the UK and EU; equivalent rules apply in NZ and AU).
- You will need a rollback export of your current people data first. A completed import cannot be undone with a single click. A pre-import export of the contacts you are about to update is your rollback baseline if the column mapping turns out to be wrong. You can find this by going to People & Households, then Export. Save the file somewhere safe, then start preparing the import file.
- You will need to decide which records you are importing into infoodle: People (individuals), organisations (businesses, trusts, schools), or both. The structure of the file changes slightly between the two. See Name fields below.
- You will need to create any custom fields in infoodle first. If your data includes anything beyond the default name, contact, and household fields, create those custom fields in infoodle before you build the file. Custom fields that don't yet exist can't be mapped at import time. See About Custom Fields.
- You will need to decide how addresses attach to households or organisations. Address data is stored once per household, not per person. Rows that belong to the same household must share an Import House ID. See Household/Organisation Identifiers.
- You will need to decide how duplicates will be handled. Before you build the file, read Plan how duplicates will be handled below. The choice between Skip, Add as new, Update existing, and Update + add changes which columns you should leave blank and which you should populate fully.

Where to find data import
- Click on the administration cog icon in the top left corner
- Then click administration in the drop down menu
- Then scroll to the bottom to find Data Import

- A new page will then open for you to import your data

Data file requirements
The file you upload must be:
- CSV (Comma-Separated Values): export from Excel, Google Sheets, Numbers, or any spreadsheet tool as CSV (Comma delimited).
- One row per contact: one person, one organisation, or one row per household member if you have several people in the same household.
- One column per field: the first row contains column headers. infoodle uses these headers as suggestions when you map columns to fields, so descriptive headers save time during mapping.
- UTF-8 encoded: infoodle expects UTF-8 so macrons, accents, and characters outside basic ASCII import cleanly. See Saving your data file using the UTF-8 character set for the steps in Excel, Google Sheets, and Numbers.
- Comma field delimiter, double-quote string delimiter: when the export dialog asks, choose comma (,) for the field separator and double quote (") for the text qualifier.
Saving as UTF-8 means rows containing macrons, accents, or other non-ASCII characters import without errors.
Plan how duplicates will be handled
When you run the import, the Configuring Import Settings step asks how the import tool should treat a row in your file that matches a contact already in infoodle. The four options are not equivalent risks:
| Setting | Explanation | Example |
|---|---|---|
| Skip duplicates | Rows that match an existing contact are left alone. Only new contacts are created. Safe; no writes to existing rows. | You upload a file of 500 contacts; 50 already exist. Only the 450 new ones are added. |
| Add as new | A new contact is created for every row, including ones that match an existing contact. Creates duplicates. Useful only when you know the file is genuinely new data. | You upload a file of 500 contacts; 500 new contacts are created even if some duplicate existing records. |
| Update existing | Rows that match an existing contact rewrite that contact's fields with the values in the CSV. New rows in the file are not added. | You upload a corrected phone-number file for 50 existing contacts; their numbers are updated. New rows in the file are ignored. |
| Update + add | Matching rows update existing contacts (same rewrite behaviour as Update existing), and rows with no match are added as new contacts. | You upload 500 contacts; 50 update existing records and 450 are added as new. |
Update existing rewrites with whatever is in the CSV. If you pick Update existing or Update + add, the values in your file overwrite the values on each matching contact. A blank cell in the CSV clears that field on the contact. A misaligned column (for example, a blank Email column mapped to the email field) will clear that field on every matched contact in one job. Before running an Update-mode import, double-check the column mapping screen, take the rollback export described above, and consider running a small test file first against a handful of known contacts.
Unique identifiers
The duplicate-handling options above rely on unique identifier columns in your file. infoodle does two checks against your file:
- Are any rows in the file duplicates of each other?
- Does any row match a contact that already exists in your infoodle database?
You can use identifiers you already have (an existing member number, for example) or add new columns for the import.
Person/Contact ID
A Person/Contact ID uniquely identifies each individual in the file. Common choices:
- An existing member or contact number from your previous system. Usually the cleanest option.
- A new column you add for the import, populated with sequential numbers or another stable value. Add a custom field in infoodle to hold this on the contact record so the same ID can be used on future imports.
- A combination of first, middle, and last name columns, if names are unique enough in your data set.
- The infoodle-generated unique ID, for rows that match contacts already in infoodle. Export this from infoodle first if you plan to update existing records.
For the matching options available during the import itself, see Person/Contact Identifiers.
Household/Organisation ID
A Household/Organisation ID groups several people into the same household or organisation. Address fields and household-level custom fields are stored against this ID, not per person, so two people who share an address need to share a Household ID.
Rules for the Household/Organisation ID column:
- Only one column can be used as the Household/Organisation ID.
- Every row needs a value. An empty cell means infoodle creates a new household for that row.
- The value must be the same for every member of the same household, and different between households.
If your data already has a household or organisation name, that column can be used directly. If not, add an Import House ID column with a sequential number per household.
For matching options, see Household/Organisation Identifiers.
Person and contact data
Name fields
Every contact record in infoodle has to have a name. The required fields depend on whether the row is a person or an organisation:
| Contact type | Required columns | Optional columns |
|---|---|---|
| Person | First Name, Last Name | Title, Middle Name, Preferred Name |
| Organisation | Organisation/Household Name; a Gender column containing the value Organisation | - |
The Organisation value in the Gender column is how infoodle distinguishes a business or trust record from a person record. If your file mixes people and organisations, include a Gender column for both. People rows can have their actual gender value or be left blank, and organisation rows must have Organisation.
For how to add gender values to a person record, see How to add gender.
Phone numbers and email addresses
Each phone number and each email address goes in its own column. A person with a home phone, a mobile, and a work email needs three columns: one per value.
Per-column settings you can apply during mapping:
| Setting | Explanation | Example |
|---|---|---|
| Label | Free text shown on the contact's profile to label the value. | Home Phone, Work Phone, Personal Email. |
| Cell | Marks a phone column as a mobile number. Only numbers flagged as Cell receive text messages from Contact people by text. | Tick Cell on the Mobile column; leave it un-ticked on Home Phone. |
| Active | Marks an email column as the active or preferred address. Only active emails receive infoodle email campaigns. | Tick Active on the primary email column; leave it off any secondary email columns. |
| Private / Visible | Controls whether the value shows on printed and online directories. See Private and Visible Settings. | Tick Private to hide a number from the printed directory. |
Two things spreadsheets often do to phone columns that need watching:
- Leading zeros are dropped if the column is formatted as a number. Format the column as Text before pasting numbers in.
- Scientific notation (2.7E+10) appears on long numbers in number format. Same fix: Text format.
Email addresses are validated on import. Anything that is not a valid email (john2email.com, Unsubscribed) is flagged as an error and you are prompted to correct it.
Other personal info and custom fields
Anything else on a person, such as date of birth, marital status, baptism date, or custom membership flags, goes in its own column. During import you map each column to one field in infoodle. The cell values in your file need to match the format of the field's type:
| Field type | Cell format expected | Example |
|---|---|---|
| Text / Long Text | Any text. No specific format. | Volunteer since 2015 |
| Date | Calendar date matching your site's system date format. | 14/03/1985 (NZ/UK) or 03/14/1985 (US) |
| Integer / Number | Digits only, no text or symbols. | 42 |
| Yes/No | Yes, No, or blank. | Yes |
| Lookup (single dropdown) | One value from the field's dropdown list, or blank. The import tool offers to add new list values it finds in your data. | Member |
| Multi-select Lookup | One or more values separated by %%%. | Value 1%%% Value 2%%% Value 3 |
| Web address | Any text. A valid URL becomes a clickable link. | https://www.infoodle.com |
Address and household or organisation data
Addresses in infoodle are stored on the household or organisation, not on the individual. Every person attached to the same Household/Organisation ID sees the same address.
This affects how you populate address columns: include the address on every row that belongs to the household, not just the first member. If only one row in a household has the address, and that row is processed after another household member, the address can be cleared because the later row has a blank in the column.
Address fields
| Field | Explanation | Example |
|---|---|---|
| Organisation / Household Name | Name shown on the household or organisation record. | Smith Household |
| Street Address (Address Line 1) | First line of the postal address. | 12 High Street |
| Address Lines 2, 3, 4 | Additional address lines for suite, suburb, or rural detail. | Apartment 4B |
| Area / State | Region, state, or county. | Auckland / California |
| City / Town | City or town name. | Wellington |
| Post Code | Postal or ZIP code. | 6011 |
| Country | Country name. Country codes are accepted; see Country Codes. | New Zealand |
| Household / Organisation Phone | Phone number stored on the household, not on a person. | 04 555 1234 |
| Household / Organisation Fax | Fax number stored on the household. | 04 555 5678 |
UK-based sites have an additional House Name/Number column before Street Address. This is required for any donor whose donations you intend to claim Gift Aid on. HMRC's Charities Online schema requires the first line of the donor address and the postcode, and missing or incorrect values cause HMRC to reject the claim line for that donor. Include and populate this column on every UK donor row.
Household and organisation custom fields
Just like people fields, household-level custom fields take one column each and the cell value must match the field type. Use household-level fields for anything that belongs to the family or organisation as a whole, such as a family membership category, an organisation's website, or a primary contact reference.
For more on household custom fields, see Household custom fields.
Group or list membership
You can add people to groups as part of the import. There are two ways to structure the group columns in your file; choose based on how many distinct groups you are adding to.
| Option | Explanation | Example |
|---|---|---|
| Option 1: Select Group (one column per group) | One column per named group. You pick the group from a dropdown during mapping. Mark a cell with any value (Y, 1, true) to add that person. Leave blank to skip. Groups must already exist in infoodle. | Columns: Newsletter, Worship Team, Pastoral Care. Jane has Y in Newsletter and Worship Team. |
| Option 2: Use/Create From Value (group name in the cell) | Each cell contains the name of a group. One column per group a person belongs to. The import tool creates the groups as it goes if they don't already exist. Match group-name spelling exactly so existing groups are re-used. | Columns: Group 1, Group 2, Group 3. Jane's row: Volunteers, Pastoral Visits, Newsletter. |
Option 1: Select Group example
Example layout for three groups:
First Name, Last Name, Newsletter, Worship Team, Pastoral Care Jane, Baker, Y, Y, John, Smith, Y, , Y
Subgroups are fine on their own; infoodle adds the person to the parent group automatically.
Option 2: Use/Create From Value example
If one person is in five groups, you need five columns. Example for a person in three groups:
First Name, Last Name, Group 1, Group 2, Group 3 Jane, Baker, Volunteers, Pastoral Visits, Newsletter
To create a subgroup hierarchy during the import, separate levels with %%%:
All Staff%%%Clinical Staff%%%Counsellors
That cell adds the contact to all three groups, creating the parent and subgroups if they don't yet exist.
After the import
If you used Option 2, work through these checks once the import has finished:
- Open Settings, then Groups.
- Review each new group and confirm its visibility, ownership, and access settings are correct. Option 2 creates groups using the site's default settings.
- Tidy up any groups created by typos in the CSV by merging or deleting them.
Common formatting errors
Phone numbers showing as 2.7E+10 or missing leading zeros
The column was formatted as a number in the spreadsheet. Set the column format to Text before pasting the numbers in.
Macrons or accented characters arriving as ? or mojibake
The file was saved as something other than UTF-8. Re-save using UTF-8. See Saving your data file using the UTF-8 character set.
"Invalid email address" errors on rows that look fine
The cell contains free text (Unsubscribed, n/a) or has a typo (name2example.com instead of name@example.com). Replace with a valid address or leave the cell blank.
Organisations being imported as people
The Organisation value is missing from the Gender column for those rows. Add it.
Two members of the same household ending up in separate households
The Household/Organisation ID column has different values (often a stray space or a different spelling). Reconcile the IDs so household members share exactly the same value.
Address on one person but not their partner
Copy the full address across every row in that household. Address fields read from each row independently.
Fields cleared after an Update-mode import
A column in the CSV was blank, and the import was run with Update existing or Update + add. Restore the affected fields from the rollback export you took before the import. To avoid this, leave columns out of the file entirely if you don't want them written.
If an import goes wrong
You may run into problems after an import has finished. The fix depends on what you have in place and how the issue was caught. Use whichever of the recovery paths below matches your situation:
- Pre-import export: the export of your contacts that you took in Before you start. Use this to see which fields changed on which contacts, and to restore values by hand or via a follow-up corrective import.
- Wrong column mapping caught during the run: if you stop the import on the Check and Run the Import screen before confirming, no records are changed. Re-map and start again.
- Wrong column mapping caught after the run: reverse the change by preparing a corrective CSV (the same matching IDs, with the correct values from your rollback export in the affected columns) and running an Update existing import.
- Whole-job mistake: contact infoodle support with the import job details. Support can advise on the recovery options available for your site and import. The more detail you can share about what changed and which contacts are affected, the faster the recovery.
The best safeguard is the pre-import export from Before you start. Take one before every Update-mode import, even when you are confident in the mapping.
Next steps
- Starting your Import: uploading the prepared CSV.
- Configuring Data Fields: mapping columns to fields and per-column settings (Cell, Active, Label).
- Configuring Import Settings: record matching and create/update rules.
- Check and Run the Import: final validation and running the job.