WealthY · WealthY Docs

Switching from a spreadsheet

Bring a book that lives in Excel or a CSV into WealthY, with your own columns or the template, and every column shown before it is written.

A book in a spreadsheet moves in with one file. WealthY gives you a template, but you do not have to use it: any CSV or Excel workbook with a header row works, and every column is shown with the field it lands in before anything is written. This is also the path for a CRM that is not Wealthbox or Redtail: export its contacts and drop the file.

What you need

The template

Under Operations > Data, download the onboarding template. Its header row is the full set of columns WealthY understands, so you can paste your data under the right headings and skip the mapping step entirely.

You can also keep your own headings. Matching is case-insensitive and ignores spaces, underscores and punctuation, so "First Name", "first_name" and "FIRSTNAME" are the same column.

Import

  1. Open Operations > Data, choose Spreadsheet, and drop the file. During self-serve signup this is screen 3, Bring your data.
  2. Review every column. Each one is in one of three states, and you can change any of them:
    • Mapped to a WealthY field. The target is printed beside the column, on your own data.
    • Owner. A column such as "Advisor" or "Contact owner" names the advisor each row belongs to. Map it, and every imported person lands with the right advisor. Rows whose owner WealthY cannot match get the advisor you pick, who defaults to you. No import leaves a client without an advisor.
    • Kept as a note. A column WealthY has no field for is carried into a dated import note on the record, never dropped. Click Suggest mappings to have the AI propose a field for it; only your header names are sent, never a row.
  3. Mark each person client or prospect. A column that says so in your file ("Type", "Status") is used to pre-fill the choice.
  4. Commit. The import writes in short chunks and resumes if the tab closes. Roll back removes exactly what the batch created.

A column holding your old system's record id can be mapped as the source id, so importing the same file twice matches instead of duplicating.

Field map and what is not imported

Every column the template defines, where it lands when the person is a client and when they are a prospect, and how the value is converted. Then what is deliberately not imported, and why.

37 fields recognized, 16 of them kept as notes on the record, 3 deliberately not imported. Checked against the source's published documentation. This table is generated from the import code on every deploy, so it cannot drift from what the import does.

Export contacts from any CRM, Excel or Google Sheets as CSV, or fill the onboarding template. Columns are matched by name; anything unrecognized can be mapped by hand or by the AI assist, which sees header names only.

Contact fields (36)

Field in the sourceLands in WealthYIf the person is a prospectHow it is converted
first_name (First Name, Given name)clients.first_nameprospects.full_name (first part)trimmed
last_name (Last Name, Surname)clients.last_nameprospects.full_name (last part)trimmed
full_name (Name, Client name)clients.full_nameprospects.full_namefirst + last when the source has no single name
salutation (Prefix)kept as a note on the recordsameas written
nickname (Preferred name)kept as a note on the recordsameas written
genderkept as a note on the recordsameas written
dob (Date of birth, Birthday)clients.date_of_birthkept as a note on the recordany common date format to YYYY-MM-DD
marital_statuskept as a note on the recordsameas written
spouse_name (Spouse, Partner)kept as a note on the recordsameas written
email (Email address, Primary email)clients.emailprospects.emaillowercased and trimmed; the primary address when the source has several
secondary_email (Email 2, Work email)kept as a note on the recordsamefirst additional address
phone (Phone number, Home phone, Work phone)clients.phoneprospects.phoneas written; the primary number when the source has several
mobile_phone (Mobile, Cell)clients.phone when phone is blank, else noteprospects.phone when phone is blank, else noteas written
preferred_language (Language)clients.preferred_languagekept as a note on the recordEnglish/French/en/fr to en or fr
address (Street, Address line 1)clients.addressprospects.address_line1line 1; clients.address is the one-line address: line 1, line 2, postal code
address2 (Unit, Suite, Address line 2)clients.addressprospects.address_line2line 2 appended
cityclients.cityprospects.citytrimmed
province (State, Region)clients.provinceprospects.provinceas written (ON, Ontario, NY all kept)
postal_code (Zip)clients.addressprospects.postal_codeappended to the one-line address
countrykept as a note on the recordprospects.countryas written; CA when blank for prospects
employment_statuskept as a note on the recordsameas written
employer (Company)kept as a note on the recordprospects.company_nameas written
job_title (Title, Occupation)kept as a note on the recordprospects.titleas written
industry (Sector)kept as a note on the recordprospects.industryas written
contact_type (Lifecycle stage, Stage, Type, Status)clients.lifecycle_stagekept as a note on the recorddecides client or prospect by the stage rule; stored as written
lead_statuskept as a note on the recordsameas written
contact_source (Source, Lead source)firm_custom_fields + client_custom_field_values ("Contact source")prospects.sourceas written
referred_by (Referrer)clients.referred_by_nameprospects.referred_by_nameas written
tags (Labels, Categories)firm_custom_fields + client_custom_field_values ("Tags")prospects.tagscomma or semicolon list; prospects get an array
household_name (Household, Family)households.name + clients.household_idprospects.householdone household per distinct name or source household id
email_opt_out (Unsubscribed, Do not email)clients.casl_unsubscribed_atprospects.casl_unsubscribed_attrue/yes/unsubscribed sets the unsubscribe timestamp
notes (Comments, Memo, Background)advisor_notes.contentprospect_notes.contentone note, dated at import
annual_income_band (Income)kept as a note on the recordsameas written
liquid_assets_band (Assets, Net worth, Investable assets)kept as a note on the recordprospects.estimated_aum when numericdigits kept when it parses as a number
account_types (Accounts)kept as a note on the recordsameas written
any other columnkept as a note on the recordsamekept as "Column: value" in one import note per contact; the AI mapping assist can map it to a column instead (header names only are sent, never values)

Record owner (1)

Field in the sourceLands in WealthYIf the person is a prospectHow it is converted
Contact owner / Owner / Advisor (any column mapped to owner)clients.advisor_idprospects.advisor_idmatched to an advisor by email or name; unmatched owners fall back to the advisor the importing owner picks

Not imported, and why

Field in the sourceWhy
SIN / SSN / tax id columnsGovernment ID numbers never travel in a contact import. They arrive through the document path, masked to the last four.
Bank account numbersSame rule. A void cheque upload captures them, masked.
Record IDs, association IDs, sync metadata from the old CRMPlumbing of the source system. Classified as CRM internal and listed on the review screen; still copied into the import note so nothing is lost.

Columns to leave out

If the file has accounts too

Holdings and balances are not contact data. If your sheet has an account section, split it into its own file and import it as Accounts on the same Data page first. Contacts whose email matches an imported account arrive marked as current clients.

After the import