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
- Your spreadsheet as CSV or .xlsx. Excel workbooks are read directly; the first sheet with a header row is used.
- At minimum an email column and a name (full name, or first name and last name). Everything else is optional.
- A WealthY firm owner login.
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
- Open Operations > Data, choose Spreadsheet, and drop the file. During self-serve signup this is screen 3, Bring your data.
- 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.
- Mark each person client or prospect. A column that says so in your file ("Type", "Status") is used to pre-fill the choice.
- 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.
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 source | Lands in WealthY | If the person is a prospect | How it is converted |
|---|---|---|---|
| first_name (First Name, Given name) | clients.first_name | prospects.full_name (first part) | trimmed |
| last_name (Last Name, Surname) | clients.last_name | prospects.full_name (last part) | trimmed |
| full_name (Name, Client name) | clients.full_name | prospects.full_name | first + last when the source has no single name |
| salutation (Prefix) | kept as a note on the record | same | as written |
| nickname (Preferred name) | kept as a note on the record | same | as written |
| gender | kept as a note on the record | same | as written |
| dob (Date of birth, Birthday) | clients.date_of_birth | kept as a note on the record | any common date format to YYYY-MM-DD |
| marital_status | kept as a note on the record | same | as written |
| spouse_name (Spouse, Partner) | kept as a note on the record | same | as written |
| email (Email address, Primary email) | clients.email | prospects.email | lowercased and trimmed; the primary address when the source has several |
| secondary_email (Email 2, Work email) | kept as a note on the record | same | first additional address |
| phone (Phone number, Home phone, Work phone) | clients.phone | prospects.phone | as written; the primary number when the source has several |
| mobile_phone (Mobile, Cell) | clients.phone when phone is blank, else note | prospects.phone when phone is blank, else note | as written |
| preferred_language (Language) | clients.preferred_language | kept as a note on the record | English/French/en/fr to en or fr |
| address (Street, Address line 1) | clients.address | prospects.address_line1 | line 1; clients.address is the one-line address: line 1, line 2, postal code |
| address2 (Unit, Suite, Address line 2) | clients.address | prospects.address_line2 | line 2 appended |
| city | clients.city | prospects.city | trimmed |
| province (State, Region) | clients.province | prospects.province | as written (ON, Ontario, NY all kept) |
| postal_code (Zip) | clients.address | prospects.postal_code | appended to the one-line address |
| country | kept as a note on the record | prospects.country | as written; CA when blank for prospects |
| employment_status | kept as a note on the record | same | as written |
| employer (Company) | kept as a note on the record | prospects.company_name | as written |
| job_title (Title, Occupation) | kept as a note on the record | prospects.title | as written |
| industry (Sector) | kept as a note on the record | prospects.industry | as written |
| contact_type (Lifecycle stage, Stage, Type, Status) | clients.lifecycle_stage | kept as a note on the record | decides client or prospect by the stage rule; stored as written |
| lead_status | kept as a note on the record | same | as written |
| contact_source (Source, Lead source) | firm_custom_fields + client_custom_field_values ("Contact source") | prospects.source | as written |
| referred_by (Referrer) | clients.referred_by_name | prospects.referred_by_name | as written |
| tags (Labels, Categories) | firm_custom_fields + client_custom_field_values ("Tags") | prospects.tags | comma or semicolon list; prospects get an array |
| household_name (Household, Family) | households.name + clients.household_id | prospects.household | one household per distinct name or source household id |
| email_opt_out (Unsubscribed, Do not email) | clients.casl_unsubscribed_at | prospects.casl_unsubscribed_at | true/yes/unsubscribed sets the unsubscribe timestamp |
| notes (Comments, Memo, Background) | advisor_notes.content | prospect_notes.content | one note, dated at import |
| annual_income_band (Income) | kept as a note on the record | same | as written |
| liquid_assets_band (Assets, Net worth, Investable assets) | kept as a note on the record | prospects.estimated_aum when numeric | digits kept when it parses as a number |
| account_types (Accounts) | kept as a note on the record | same | as written |
| any other column | kept as a note on the record | same | kept 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 source | Lands in WealthY | If the person is a prospect | How it is converted |
|---|---|---|---|
| Contact owner / Owner / Advisor (any column mapped to owner) | clients.advisor_id | prospects.advisor_id | matched 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 source | Why |
|---|---|
| SIN / SSN / tax id columns | Government ID numbers never travel in a contact import. They arrive through the document path, masked to the last four. |
| Bank account numbers | Same rule. A void cheque upload captures them, masked. |
| Record IDs, association IDs, sync metadata from the old CRM | Plumbing 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
- Social insurance numbers, passport or licence numbers, bank account numbers. Never put these in a spreadsheet. They are entered later inside the client's own paperwork and stored as last four digits only. A statement, a government ID or a void cheque can be dropped as a document instead; WealthY reads it and masks the number itself.
- Passwords or portal logins. WealthY invites each client by email; they choose their own password.
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
- Spot-check a few households in Contacts.
- Continue with Getting started for firm owners.