WealthY · WealthY Docs

Switching from Wealthbox

How a Wealthbox book moves into WealthY with one API token, field by field, and what stays behind.

WealthY reads your Wealthbox book directly from Wealthbox's own API: contacts, households, notes, tasks, events and opportunities. You paste one token, you review every field before anything is written, and the whole import can be rolled back in one click. The import never writes to Wealthbox. If you would rather keep Wealthbox, the hourly sync is a separate connection that does, keeping contacts, notes and tasks in step both ways; see Integrations.

What you need

How the book leaves Wealthbox

  1. In WealthY, open Operations > Data and choose Wealthbox. During self-serve signup this is screen 3, Bring your data.
  2. Paste the token. WealthY's server uses it once to read your book and then forgets it; the token is never stored, never shown again and never used after the import.
  3. The read takes contacts (people, households, organizations and trusts), notes with their author and date, tasks, events, opportunities, your users and your tags.

Review before anything is written

The review screen shows your book as WealthY understood it, with the WealthY field printed beside every source field in the first rows, so you can see the mapping on your own data rather than in a table.

Commit, resume, roll back

Field map and what is not imported

Every Wealthbox field WealthY reads, where it lands when the person is a client and when they are a prospect, and how the value is converted. Then the short list of what is deliberately not imported, and why.

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

Paste a personal API access token (Wealthbox, Settings, API Access). The token stays in your browser for the length of the pull, is used by our server to read contacts, households, notes, tasks, events and opportunities page by page, and is never stored.

Contact fields (80)

Field in the sourceLands in WealthYIf the person is a prospectHow it is converted
idcrm_import_links.external_idsamethe Wealthbox contact id, so a repeat import matches instead of duplicating
prefixkept as a note on the recordsameas written
first_nameclients.first_nameprospects.full_name (first part)trimmed
middle_namekept as a note on the recordsamekept as written in the import note
last_nameclients.last_nameprospects.full_name (last part)trimmed
suffixkept as a note on the recordsamekept as written in the import note
nicknamekept as a note on the recordsameas written
job_titlekept as a note on the recordprospects.titleas written
company_namekept as a note on the recordprospects.company_nameas written
twitter_namekept as a note on the recordsamekept as written in the import note
linkedin_urlkept as a note on the recordprospects.linkedin_urlas written
background_informationadvisor_notes.contentprospect_notes.contentbecomes a note titled Background
birth_dateclients.date_of_birthkept as a note on the recordYYYY-MM-DD as Wealthbox stores it
anniversarykept as a note on the recordsamekept as written in the import note
client_sincekept as a note on the recordsamekept as written in the import note
date_of_deathkept as a note on the recordsamekept as a note; the review screen flags the record
referred_byclients.referred_by_nameprospects.referred_by_namea contact id is resolved to that contact's name; an object yields its name; a plain name is kept as written
typeimport record typesamePerson, Household, Organization, Trust. Households become households; the rest become people records
genderkept as a note on the recordsameas written
contact_sourcefirm_custom_fields + client_custom_field_values ("Contact source")prospects.sourceas written
contact_typeclients.lifecycle_stagekept as a note on the recordClient, Past Client, Prospect, Vendor and your own values; Client-like values become clients by the stage rule
statuskept as a note on the recordsameActive / Inactive, kept as a note
marital_statuskept as a note on the recordsameas written
attorneykept as a note on the recordsameprofessional contacts are kept together in the note
cpakept as a note on the recordsamekept as written in the import note
doctorkept as a note on the recordsamekept as written in the import note
insurancekept as a note on the recordsamekept as written in the import note
business_managerkept as a note on the recordsamekept as written in the import note
family_officerkept as a note on the recordsamekept as written in the import note
assistantkept as a note on the recordsamekept as written in the import note
otherkept as a note on the recordsamekept as written in the import note
trusted_contactkept as a note on the recordsamekept as written in the import note
important_informationadvisor_notes.contentprospect_notes.contentbecomes a note titled Important information
personal_interestskept as a note on the recordsamekept as written in the import note
investment_objectivekept as a note on the recordsamekept as written in the import note
time_horizonkept as a note on the recordsamekept as written in the import note
risk_toleranceclients.risk_profilekept as a note on the recordas written
mutual_fund_experiencekept as a note on the recordsamekept as written in the import note
stocks_and_bonds_experiencekept as a note on the recordsamekept as written in the import note
partnerships_experiencekept as a note on the recordsamekept as written in the import note
other_investing_experiencekept as a note on the recordsamekept as written in the import note
gross_annual_incomekept as a note on the recordsameas written
assetskept as a note on the recordprospects.estimated_aum when numericdigits kept when it parses as a number
non_liquid_assetskept as a note on the recordsamekept as written in the import note
liabilitieskept as a note on the recordsamekept as written in the import note
adjusted_gross_incomekept as a note on the recordsamekept as written in the import note
estimated_taxeskept as a note on the recordsamekept as written in the import note
confirmed_by_tax_returnkept as a note on the recordsamekept as written in the import note
tax_yearkept as a note on the recordsamekept as written in the import note
tax_bracketkept as a note on the recordsamekept as written in the import note
birth_placekept as a note on the recordsamekept as written in the import note
maiden_namekept as a note on the recordsamekept as written in the import note
retirement_datekept as a note on the recordsamekept as written in the import note
signed_fee_agreement_datekept as a note on the recordsamecompliance dates stay with the record as a note
signed_ips_agreement_datekept as a note on the recordsamekept as written in the import note
signed_fp_agreement_datekept as a note on the recordsamekept as written in the import note
last_adv_offering_datekept as a note on the recordsamekept as written in the import note
initial_crs_offering_datekept as a note on the recordsamekept as written in the import note
last_crs_offering_datekept as a note on the recordsamekept as written in the import note
last_privacy_offering_datekept as a note on the recordsamekept as written in the import note
external_unique_idkept as a note on the recordsamekept as written in the import note
occupation.namekept as a note on the recordprospects.titleused when job_title is blank
occupation.start_datekept as a note on the recordsamekept as written in the import note
email_addresses[] (principal)clients.emailprospects.emailthe principal address; Home before Work when none is principal
email_addresses[] (others)kept as a note on the recordsamefirst extra address; the rest are kept in the note
phone_numbers[] (principal)clients.phoneprospects.phonethe principal number
phone_numbers[] (kind Mobile)clients.phone when phone is blank, else noteprospects.phone when phone is blank, else notethe Mobile number when it is not the principal
phone_numbers[] (others)kept as a note on the recordsameevery other number kept as "Kind: number"
street_addresses[] (principal).street_line_1clients.addressprospects.address_line1line 1; clients.address is the one-line address: line 1, line 2, postal code
street_addresses[] (principal).street_line_2clients.addressprospects.address_line2line 2 appended
street_addresses[] (principal).cityclients.cityprospects.citytrimmed
street_addresses[] (principal).stateclients.provinceprospects.provinceas written (ON, Ontario, NY all kept)
street_addresses[] (principal).zip_codeclients.addressprospects.postal_codeappended to the one-line address
street_addresses[] (principal).countrykept as a note on the recordprospects.countryas written; CA when blank for prospects
street_addresses[] (others)kept as a note on the recordsameevery other address kept as one line in the note
websites[]kept as a note on the recordsamekept as written in the import note
tags[].namefirm_custom_fields + client_custom_field_values ("Tags")prospects.tagstag names joined with commas; the tag list itself is read from /v1/categories/tags
custom_fields[] (name, value)firm_custom_fields + client_custom_field_valuesfirm_custom_fields + prospect_custom_field_valuesone firm custom field per distinct name, created on first use; the value as written
contact_roles[]kept as a note on the recordsamekept as "Role: name" in the note
created_atclients.created_atprospects.created_atthe original date, so the book does not look brand new

Households (4)

Field in the sourceLands in WealthYHow it is converted
household.idhouseholds.external_idone household per Wealthbox household id
household.namehouseholds.nameas written
household.titlenote on the memberHead, Spouse, Dependent kept as a note; the Head becomes households.primary_client_id
household.members[]clients.household_idevery member client joins the household; member prospects carry the name in prospects.household

Notes (6)

Field in the sourceLands in WealthYIf the person is a prospectHow it is converted
notes[].idcrm_import_links.external_idsamethe source id, so a repeat import matches instead of duplicating
notes[].linked_to[] (type Contact)advisor_notes.client_idprospect_notes.prospect_idthe linked contact; a note on somebody who becomes a prospect lands on prospect_notes.prospect_id
notes[].contentadvisor_notes.contentprospect_notes.contentas written, HTML stripped to text
notes[].created_atadvisor_notes.created_atprospect_notes.created_atthe original date, so history stays in order
notes[].creator (via /v1/users)advisor_notes.source_authorprospect_notes.source_authorthe author name or email as written
notes[].tags[].nameadvisor_notes.contentprospect_notes.contentappended as "Tags: ..." on the note

Tasks (9)

Field in the sourceLands in WealthYHow it is converted
tasks[].idcrm_import_links.external_idthe source id
tasks[].linked_to[] (type Contact)advisor_tasks.client_idthe linked contact, or advisor_tasks.prospect_id
tasks[].nameadvisor_tasks.titleas written
tasks[].descriptionadvisor_tasks.descriptionas written
tasks[].due_dateadvisor_tasks.due_dateto YYYY-MM-DD
tasks[].completeadvisor_tasks.status + completed_atcompleted when the source says so, else pending
tasks[].priorityadvisor_tasks.prioritylow / medium / high / urgent; medium when unrecognized
tasks[].assigned_toadvisor_tasks.advisor_idthe owner mapped to an advisor, else the importing owner
tasks[].categoryadvisor_tasks.descriptiona numeric category id is resolved through /v1/categories/task_categories and prepended as "Category: name"

Activities (calls, meetings, emails) (8)

Field in the sourceLands in WealthYHow it is converted
events[].idcrm_import_links.external_idthe source id
events[].titlecontact_log.subjectas written; a future, unfinished event becomes an advisor task instead
events[].starts_atcontact_log.contacted_atthe start time
events[].ends_atcontact_log.duration_minutesminutes between start and end
events[].description + locationcontact_log.notesjoined
events[].event_categorycontact_log.contact_typea numeric id is resolved through /v1/categories/event_categories; call / meeting / email / other by the name, meeting when unknown
events[].linked_to[] (type Contact)contact_log.client_idor contact_log.prospect_id
events[].stateskip rulecancelled events are skipped and counted

Deals and opportunities (10)

Field in the sourceLands in WealthYHow it is converted
opportunities[].idcrm_import_links.external_idthe source id
opportunities[].namedeals.nameas written
opportunities[].descriptiondeals.notesas written
opportunities[].stagedeals.stagea numeric id is resolved through /v1/categories/opportunity_stages, then mapped onto the pipeline by name; qualifying when unrecognized; the source name is kept in deals.notes
opportunities[].next_stepdeals.notesappended as "Next step: ..."
opportunities[].amounts[].amountdeals.valuethe first amount
opportunities[].probabilitydeals.probability0 to 100
opportunities[].target_closedeals.expected_closethe date part of the timestamp, YYYY-MM-DD
opportunities[].managerdeals.advisor_idthe owner mapped to an advisor
opportunities[].linked_to[] (type Contact)deals.client_idor deals.prospect_id

Record owner (3)

Field in the sourceLands in WealthYIf the person is a prospectHow it is converted
assigned_toclients.advisor_idprospects.advisor_idthe Wealthbox user id, resolved through /v1/users to an email, then to an advisor by email or name
users[].id, email, nameadvisors.user_idsameeach Wealthbox user is matched to an advisor by email, then by name; unmatched users fall back to the advisor you pick
users[].statusskip rulesameinactive and legacy users are still matched so their records land with the right advisor

Not imported, and why

Field in the sourceWhy
passport_numberGovernment ID numbers never travel in an import. They arrive through the document path, masked to the last four.
green_card_numberSame rule.
drivers_license (number, state, issued_date, expires_date)Same rule.
imageContact photos are not copied. The portal uses the client's own photo once they sign in.
creator, updated_at, visible_toWealthbox internals: who created the row in Wealthbox and who could see it there. The import note carries created_at only.
tasks[].repeats, tasks[].subtasks, tasks[].frameRecurring task rules are not translated. The task itself lands once, with a note saying it repeated.
events[].invitees, events[].email_invitees, events[].repeatsAttendee lists and recurrence rules stay in the calendar you connect; the event lands as one history entry.
opportunities[].amounts[] beyond the first, amounts[].kinddeals.value is one number. Extra amounts are written into deals.notes.
Workflows, documents, email historyNot available through the Wealthbox API in a form that can be read without the firm's mailbox. Connect Gmail or Outlook to bring email history.

After the import

Prefer a file? Export Contacts from Wealthbox as CSV and follow Switching from a spreadsheet. You get the same review screen; the token path simply brings more (notes, tasks, events, deals) in one pass.