Importing contacts and setting up custom fields
Importing contacts into Arino One means pasting or uploading a CSV with a required phone_e164 column, letting the importer map any extra headers to custom fields you've already defined in Settings, then reviewing a per-row result before the contacts land in your list. Custom fields — Company, Plan, Birthday, or anything else specific to your business — are set up once in Settings → Contact fields and from then on are recognised automatically by their key whenever that column appears in a CSV.
Preparing the CSV
The importer understands a fixed set of core columns and treats everything else as either a custom field or noise:
| Column | Required | Notes |
|---|---|---|
phone_e164 | Yes | E.164 format, e.g. +14155551234. Used to match existing contacts. |
first_name, last_name, display_name | No | Standard name fields. |
email | No | Standard email field. |
opt_in | No | opted_in, opted_out, pending or left blank. |
tags | No | Comma- or semicolon-separated inside a quoted cell, e.g. "vip,beta". |
notes | No | Free text. |
| anything else | No | Must match a custom field's key exactly, or the column is ignored. |
Header matching is case-insensitive but exact otherwise, so a field with key plan needs a CSV column literally called plan, not Plan Name.
Setting up custom fields first
Custom fields live in Settings → Contact fields and are shared across the whole instance — every contact profile gets the same set. Each field has:
- Label — the human-readable name shown on the contact profile and in field pickers.
- Key — the machine name used in CSV headers, automations and segment rules. Set once at creation and not editable afterwards.
- Type — text, number, date, boolean, url, email, or select (with a fixed list of options).
Define fields before importing large batches. If you import first and add the field afterwards, none of the historical rows are retroactively parsed into that field — you would need to re-import.
How values are coerced on import
The importer reads each cell's raw text and converts it to the field's declared type:
- number — strips thousands separators and parses; falls back to the raw string if it isn't numeric.
- boolean —
true,yes,y,1(case-insensitive) becometrue, anything elsefalse. - date — parsed and normalised to
YYYY-MM-DD; unparseable text is kept as-is so you can spot it in the review step. - select and text — kept as a trimmed string; select values aren't currently checked against the configured option list at import time, so keep source data consistent with your options.
Running the import
- Open Contacts → Import.
- Paste your CSV text (a sample with your current custom fields pre-filled is shown for reference).
- The importer parses the file locally and shows you the detected headers split into three groups: recognised core columns, recognised custom fields, and ignored columns. Fix header spelling here before you submit if anything unexpected lands in "ignored".
- Submit. The import runs server-side, matching each row to an existing contact by
phone_e164where possible. - You get back counts of contacts inserted and updated, plus a list of any rows that errored, each tagged with its row number and the specific reason.
Because matching is by phone number, re-running the same file is safe — it will update the same contacts again rather than duplicate them, which makes it reasonable to fix a handful of failed rows and re-submit just the corrected file.
Data validation on custom fields
Settings → Data validation lets you attach rules to any custom field: required, minimum/maximum length or a regex pattern for text fields, minimum/maximum for numeric fields, and a custom error message shown when a value fails. These rules govern manual edits and anywhere a field is required in the product; see contact sync and data validation for how they interact with automated inbound sync specifically.
After the import: groups and segments
Raw imported contacts aren't targetable on their own — group them. Create a static group and add the imported contacts directly, or build a dynamic segment with rules against tags, custom field values or opt-in status so contacts matching the rule are kept current automatically. See contacts and segments for the difference between static and dynamic groups, and consent and opt-in for what opt_in values mean for outbound messaging eligibility.
Common mistakes
- Forgetting
phone_e164formatting — a number without the leading+and country code will typically fail or fail to match an existing contact. - Adding a custom field after importing and expecting historical rows to backfill — they won't; only fields present at import time are parsed.
- Assuming
tagsmerges with existing tags — check whether your import mode adds to or replaces tags before running a large batch, and test on a small file first. - Skipping the column plan preview — an ignored column usually means a typo in the header, and it's much cheaper to fix before submitting than after.
Pricing
Importing contacts, custom fields and groups are part of the core product, included in the flat $50/month instance connection and management fee — there is no per-contact or per-import charge. See billing and plans for what the fee covers.
Steps at a glance
- Define custom fields firstGo to Settings → Contact fields and create any extra data points you need — Company, Plan, Birthday — with a type (text, number, date, boolean, select, url, email) before you import, so the importer recognises the matching CSV columns.
- Prepare the CSVBuild a CSV with a phone_e164 column (required) plus any of first_name, last_name, display_name, email, opt_in, tags, notes, and a column per custom field key.
- Open Contacts → ImportPaste or upload the CSV text. The importer parses it client-side and shows a preview before anything is written.
- Check the column planReview which headers matched a custom field, which matched a core column, and which are unrecognised and will be ignored — fix header names if a column you expected shows as ignored.
- Run the importSubmit the import; Arino One inserts new contacts and updates existing ones matched by phone number, returning counts of inserted and updated rows.
- Review row errorsAny row that failed — bad phone format, invalid value for a typed field — is reported individually with its row number and reason, so you can fix and re-run just those rows.
- Organise with groupsOnce imported, add contacts to a group (static or rule-based dynamic segment) for targeting in campaigns and automations.
Frequently asked
What CSV format does Arino One expect for importing contacts?
A standard comma-separated file with a header row. The only required column is phone_e164 — the contact's phone number in E.164 format, e.g. +14155551234. Optional core columns are first_name, last_name, display_name, email, opt_in, tags (comma or semicolon separated inside a quoted cell) and notes. Any other header must match a custom field key exactly, or it's ignored.
How do I add a custom field like Company or Plan to contacts?
In Settings → Contact fields, add a field with a label, a machine key, and a type (text, number, date, boolean, select, url or email). Once saved, a CSV column whose header matches the field's key is automatically read into that contact's custom attributes on import.
What happens if a contact's phone number already exists?
Contacts are matched by phone_e164. If a match exists, the row updates that contact's fields rather than creating a duplicate; if not, a new contact is created. The import summary reports both counts separately.
Can I set validation rules on custom fields before importing?
Yes. Settings → Data validation lets you mark a custom field required, set min/max length or numeric range, or a regex pattern with a custom error message. Import rows are coerced to the field's type — numbers, booleans and dates are parsed from the CSV cell — but validation rules are enforced where the field is edited or required, so it is worth setting them up before a large import.
Why did some rows fail to import?
Common causes are a missing or malformed phone_e164 value, or a value that cannot be coerced to the custom field's declared type. The import result lists each failed row by number with the specific error, so you can correct just those rows in the source CSV and re-run the import — successful rows are not re-processed.
How do imported contacts get into a campaign?
Import contacts first, then use Groups to add them to a static group or build a dynamic segment with rules based on tags, custom fields or opt-in status. Campaigns and automations target groups, not the raw import.
Apply this to your own deployment
This guide describes decisions we make on live instances. Tell us your channels, systems and region and we will map it to an architecture outline, a provisioning plan and an indicative commercial model — usually within one business day.