Last reviewed: September 2026.
Overview
The Zoho integration copies data from your Zoho CRM into SurgeTK: households, clients, investment and bank accounts, beneficiaries, distributions, life insurance policies, other assets, liabilities, and tax years. You decide which Zoho modules and fields feed SurgeTK. The integration is one-way. SurgeTK reads from Zoho. Nothing is written to Zoho, and nothing is deleted in Zoho.
When you connect, SurgeTK asks Zoho for four read-only permissions: ZohoCRM.modules.READ, ZohoCRM.settings.modules.READ, ZohoCRM.settings.fields.READ, and ZohoCRM.users.READ.
The integration is available on every SurgeTK plan. Only SurgeTK Admins can connect it, map fields, run a sync, or disconnect it. Everyone at your firm can see the connection status, the sync progress, and the sync history.
Syncs are manual. SurgeTK never runs a Zoho sync on a schedule, and Zoho never pushes changes to SurgeTK. You sync when you want updated data.
Related: Sync Filters explains how to exclude households by client type and what happens to closed accounts. Syncing with Redtail covers the Redtail integration.
Before you connect
You need:
A Zoho CRM login that is allowed to grant those four permissions for your Zoho organization. If you are not sure, ask your Zoho administrator.
Pop-ups allowed for SurgeTK in your browser. The Zoho sign-in opens in a pop-up window. If the browser blocks it, nothing happens: the toggle stays on and no window opens.
The Admin role in SurgeTK. Other roles see the Zoho card and its status. If they click Connect, Map Fields, or Sync, SurgeTK refuses with a message that the action requires administrator access.
Know your Zoho setup before you map: which module holds households or families, which holds contacts, and which modules hold accounts, policies, assets, liabilities, and tax records. The owner field on an account, policy, asset, or liability module must be a lookup to Zoho's Contacts module.
Connect Zoho
Sign in to SurgeTK as an Admin.
Go to Settings › Integrations. If your firm has no CRM connected yet, the Connect CRM link in the top bar opens the same page.
On the Zoho card, click Connect, or turn the toggle on. A Zoho sign-in window opens.
Sign in to Zoho and accept the permissions.
The window shows "Zoho Connected!" and closes itself. SurgeTK shows "Zoho connected successfully!" and the page reloads.
The card now shows Connected and three buttons: Reconnect, Map Fields, and Sync. After a sync it also shows "Last successful sync:" with the time. The top bar shows a Zoho Connected badge and a Sync button. If your firm has both Redtail and Zoho connected, the top bar shows whichever CRM synced most recently.
If you close the Zoho window without finishing, the toggle turns itself off again after a short wait. Start again.
Reconnect
Click Reconnect on the card ("Reconnect Zoho to update permissions") to sign in to Zoho again, for example after a permission error. You see "Zoho reconnected successfully!". Your field mapping is kept. The next sync after a Reconnect is a full read of every mapped module, not only changed records.
Map fields
Nothing syncs until you map fields. Click Map Fields on the Zoho card. The window is called Map Zoho Fields to SurgeTK. It says: "Map your Zoho modules and fields to SurgeTK. First pick a module for each tab, then map the fields below."
The window has eight numbered tabs, in this order: Households, Clients, Investable Assets, Bank Accounts, Insurance, Other Assets, Liabilities, Taxes. The window reopens on the tab you used last.
On each tab, pick the Zoho module first. The field dropdowns then fill with that module's fields, shown as the field label followed by its Zoho API name in brackets. Type in a dropdown to search it.
Map the fields you have. Required fields are marked. Leave the rest blank.
For a lookup field (a field that points at another Zoho module), a second small dropdown offers id or name. Choose id to match on the other record's ID, or name to match on its display name.
Click Save at the bottom. You see "Mapping saved." and the window closes.
The Sync button on the card stays disabled, with the tooltip "Add at least one field mapping first", until at least one ordinary field is mapped on any tab. Choosing a module, a link key, or a lookup on its own does not count. Once a field is mapped, the tooltip reads "Start Zoho sync now".
Partial mapping is fine. Tabs with no module are skipped. Save does not enforce the required fields, so records that lack a required value are skipped when the sync runs. You can add fields at any time. After you add fields, run a Deep sync so records that did not change in Zoho pick them up (see Incremental syncs and Deep sync).
Households tab
Pick "Zoho module for households", the module that stores your household or family records.
Field | Required | Notes |
Household ID (unique link key) | Yes | "A unique Zoho field that reliably identifies a household. This powers linking & grouping." Clients link to households only through this value. It must be unique for each household and must never change. |
Lead Advisor | No | "Lead/servicing advisor for the household." SurgeTK matches the value to your team by email or by name. See Link Zoho advisors below. |
Marginal Tax Bracket (%) | No | "Household's marginal tax bracket as a % (e.g., 24)." |
Additional Fees (Household Level) | No | "Any additional recurring fees assessed at the household level." |
The Household Sync Filtering and Household Status Mapping sections on this tab decide which households sync and what happens to excluded or inactive households. See Sync Filters.
Clients tab
Pick "Zoho module for clients". Use Zoho's Contacts module: the owner lookups on the other tabs list only fields that look up to Contacts.
Field | Required | Notes |
Household ID (lookup to Family) | Yes | The Contacts field that looks up to your household module, with id or name. The chosen sub-field must equal the household's link key value. A new contact whose household cannot be found is skipped. |
Client ID | Yes | Stored as the client's ID in SurgeTK. If it is unmapped or blank, the Zoho record ID is used. See the note below this table. |
First Name | Yes | A blank first or last name shows as "(Unknown)". |
Last Name | Yes | Household names are built from the clients' names. |
No | A contact whose email matches an existing SurgeTK client is merged into that client. | |
Phone Number | No | |
Birthday | No | Date of birth. |
Deceased / Living (or Date of Death) | No | Used only when mapped. Any value that can be read as a date means Deceased, and so do words such as Deceased, Died, or Passed. Living or Alive means Living. A blank value sets the client to Living. Map a date-of-death field or a picklist whose values contain Deceased or Living. The date of death itself is not stored. |
Monthly Income | No | Stored as a number. Everything except digits is removed, so "5k" becomes 5. Store full amounts in Zoho. |
Occupation | No | |
Retirement Date | No | |
Employer | No | |
Gender | No |
Client ID and the owner lookups must agree. The owner lookups on the Investable Assets, Bank Accounts, Insurance, Other Assets, and Liabilities tabs match their id value against the client's Client ID. The simplest setup is to leave Client ID on the Zoho record ID and set every owner lookup to id. If Client ID is mapped to your own client number, the lookups cannot find the owner by Zoho record ID, and every account, policy, asset, and liability gets a placeholder owner named "(Unknown) (Unknown)".
Investable Assets tab
Pick "Zoho module for accounts", the module that stores investment accounts.
Field | Required | Notes |
Owner field on Account (lookup to Contact) | Yes | The Accounts field that looks up to Contacts, with id or name. Do not pick Zoho's own Owner (user) field; the sync stops with an error. |
Account Number | Yes | The unique key. Records with no value are skipped. There is no automatic fallback: if your module has no account number field, map Zoho's Record Id here. |
Account Total Value | No | The current value. Also used to convert whole-dollar allocations to percentages. |
Account Type | No | Must match a SurgeTK account type exactly, including capitalization. Any other value is stored as Other. A value containing "joint" makes the account joint (see Ownership Type under Bank Accounts). |
Tax Status | No | A value SurgeTK does not recognize is stored blank. |
Custodian | No | |
External Household ID | No | A plain text field holding a household link key, to place the account in that household. Do not map a lookup field here. |
12/31 Value | No | The account value at the prior year end. |
As Of Date | No | The valuation date. |
Federal Tax Withholding % | No | A percentage from 0 to 100, used to estimate taxes on withdrawals in Value Adds. |
State Tax Withholding % | No | The same, for state tax. |
Date Closed, Previous Tax Year Cutoff, Closed Accounts | No | The Close-out Filtering section. See Sync Filters. |
1099 Notes, RMD Remarks, RMD Notes, RMD Processed | No | Free text stored on the account, for example "Done 2025-03-15" for RMD Processed. |
1099 Form | No | Must be one of the 1099 form names SurgeTK uses, such as 1099-R or 1099-DIV. Capitalization does not matter. Any other value leaves the stored form unchanged. A mapped field that is empty in Zoho stores none. |
Asset Allocation (Investable Assets only)
"Add one or more Zoho fields per allocation. Whole‑dollar rows are converted to % using the Account Total Value mapping above." There are four groups: Cash, Income (Fixed Income), Annuities, and Growth (Equity). Click Add field in a group, pick a Zoho field, and choose Percent or Whole $. You can add more than one field per group. A Whole $ row is divided by Account Total Value; if the account has no total value, that row is skipped. The result fills the account's asset allocation (Cash, Income, Annuities, Growth), which Buckets uses.
Distributions
Distributions (separate Zoho module) reads a module that stores one row per distribution. Fields: "Zoho module for account distributions" (required); Parent (lookup to Accounts) with id or name, or Account Number field (fallback) when the module stores the account number in a plain field; Distribution Type; Gross Distribution Amount; Payment Date; Note (for One-Time & Estimated Tax); Federal Tax Withholding ($); State Tax Withholding ($). A dollar withholding on a row overrides the account-level percentage for that distribution. For the parent, SurgeTK tries both the id and the name, then the account number fallback.
The Distribution Type value decides what SurgeTK creates. Matching ignores capitalization, spaces, and punctuation, so "One Time", "one-time", and "ONE TIME" are the same value.
Type value in Zoho | What SurgeTK creates |
One Time, Once, Single | A one-time withdrawal dated on the Payment Date. Rows without a date are skipped. |
Tax Est, Estimated Tax, Tax Estimate, Est Tax, Estimated Tax Payment | An estimated tax payment dated on the Payment Date. Rows without a date are skipped. |
Monthly, M | A recurring systematic withdrawal every month. |
Quarterly, Q | A recurring systematic withdrawal every quarter, in the months implied by the Payment Date. |
Semi-annual, Semiannually, Biannual, SA | A recurring systematic withdrawal twice a year, in the months implied by the Payment Date. |
Annual, Annually, Yearly, A | A recurring systematic withdrawal once a year, in the month of the Payment Date. |
Anything else, or an amount of zero or less | Skipped. Skipped rows are counted in the sync details. |
Deposits and contributions never come from this module. A recurring withdrawal created by the sync is removed again when its Zoho row is deleted, zeroed, moved to another account, or changed to a one-time type. Systematic withdrawals you entered by hand are not removed, with one exception: if a Zoho row matches a hand-entered withdrawal exactly, the sync adopts that withdrawal as its own and can remove it later.
Distribution History ledger
Distribution History (monthly actuals ledger) is optional. Map it if your CRM keeps a ledger of what actually moved each month: one row per account per period, with a signed amount. Fields: "Zoho module for distribution history"; Parent (lookup to Accounts) or Account Number field (fallback); Signed Amount (required); Period Date (required); Tax Withheld ($); Note (optional).
A negative Signed Amount is a withdrawal. A positive one is a deposit. Rows with a zero amount are skipped, and any transaction created earlier from such a row is deleted.
Period Date decides which month the amount lands in. It is typically the period's month end.
Tax Withheld ($) is the dollar amount withheld for taxes on that row.
Once mapped, the ledger becomes the source for the withdrawals and deposits tables on the Meeting Worksheet (Homework). It replaces the one-time rows from both the Investable Assets and Bank Accounts Distributions modules. Estimated tax rows keep coming from Distributions. Make sure the ledger covers every account whose transactions should appear.
The ledger is read in full on every sync. Once the ledger is complete, older one-time and deposit rows that came from Zoho are deleted. If you unmap the ledger module, every ledger row is deleted from SurgeTK.
Beneficiaries
Beneficiaries (separate Zoho module) reads a module with one row per beneficiary. Fields: "Zoho module for account beneficiaries" (required); Parent (lookup to Accounts) or Account Number field (fallback); Beneficiary Type; Beneficiary Name; Allocation (%); Beneficiary Date of Birth (optional); Beneficiary Relationship (optional). For the parent, SurgeTK tries both the id and the name, then the account number fallback.
Beneficiaries are replaced. Every account that has rows in the sync's feed gets its primary and contingent lists set to exactly those rows. Beneficiaries you added by hand to a Zoho-synced account are removed. Add them in Zoho instead. After you change beneficiaries in Zoho, run a Deep sync so every row for that account is read together; an ordinary sync fetches only rows that changed.
Bank Accounts tab
Pick "Zoho module for bank accounts". Use this tab for checking, savings, and similar cash accounts, and Investable Assets for custodial and investment accounts. The fields are the same as Investable Assets, except that Bank Accounts has an extra Ownership Type field and has no Asset Allocation, no Tax & RMD Annotations, and no Distribution History.
Fields: Owner field on Account (lookup to Contact) (required); Account Number (required); Account Total Value; Account Type; Tax Status; Custodian; External Household ID; 12/31 Value; Ownership Type; As Of Date; Federal Tax Withholding %; State Tax Withholding %; Close-out Filtering; Distributions; Beneficiaries.
Ownership Type marks joint accounts. When the value contains "joint" (or a variation such as JTWROS or TIC) and the household has exactly two members, both members become owners of the account. A value containing "joint" in Account Type does the same. With any other number of household members, only the looked-up owner is used.
Insurance tab
Pick "Zoho module for insurance". Only life policies sync: the Policy Type value must contain the word "life". If Policy Type is not mapped, every policy is skipped.
Field | Required | Notes |
Insured field on Policy (lookup to Contact) | Yes | The contact the policy belongs to, with id or name. SurgeTK stores this person as both the policy owner and the insured. |
Policy Number | Yes | Unique within your firm. Two policies with the same number, even from different carriers, are treated as one record. |
Carrier Name | No | |
Policy Type | No | Must contain "life" for the policy to sync. |
Policy Subtype | No | |
Face Amount | No | |
Policy Status | No | Mapped to a SurgeTK status. See the next table. |
Effective Date | No | |
Expiration Date | No | |
Cash Value | No | |
Premium Amount | No | |
Premium Mode | No |
Policy Status values are read like this. Capitalization does not matter.
Zoho value contains | SurgeTK status |
Inactive, Not In Force, or Not Active | Closed |
In Force, Active, or Current, or the value is exactly Open | In Force |
Lapse | Lapsed |
Expire | Expired |
Surrend | Surrendered |
Claim | Claim Paid |
Paid Up | Paid Up |
Pending, Applied, or Application | Pending |
Matur | Matured |
Terminat or Cancel | Terminated |
Clos | Closed |
Anything else | The stored status is left unchanged. A new policy starts as In Force. |
Beneficiaries (separate Zoho module) for policies: "Zoho module for insurance beneficiaries" (required); Parent (lookup to Insurance) or Policy Number field (fallback); and the same five beneficiary fields as accounts. Rows without both a name and a percentage are skipped. Policy beneficiaries are replaced on each sync in the same way as account beneficiaries.
Other Assets tab
Pick "Zoho module for assets" for property, vehicles, collectibles, and other non-securities assets.
Field | Required | Notes |
Owner field on Asset (lookup to Contact) | No | "If your Assets module has a true lookup to Contacts, map it here." The asset's household comes from its first owner. |
Display Name | No | |
Value | No | |
Asset Number | Yes | Unique within your firm. |
Type | No | |
Ownership Type | No | Joint ownership, as for bank accounts. |
Liabilities tab
Pick "Zoho module for liabilities" for loans, mortgages, and credit accounts.
Field | Required | Notes |
Owner field on Liability (lookup to Contact) | Yes | A liability whose owner cannot be found is skipped. |
Display Name | No | |
Liability / Loan Number | Yes | Unique within your firm. |
Type | No | |
Creditor Name | No | |
Ownership Type | No | Joint ownership, as for bank accounts. |
Interest Rate | No | |
Monthly Payment | No | |
Outstanding Balance | No | |
Estimated Payoff Date | No | |
Household ID (optional link) | No | A plain text field holding a household link key. Do not map a lookup field here. |
Taxes tab
"Each Zoho Taxes record becomes one Tax Year row on the household's Taxes tab. Blank Zoho fields never erase figures entered in SurgeTK." Pick "Zoho module for tax years". Zoho is the only CRM that syncs tax figures into SurgeTK.
Field | Required | Notes |
Household (lookup) | Yes | The Taxes field that looks up to your household module, with id or name. |
Tax Year | Yes | SurgeTK reads the first four-digit year in the value, so "2024", "FY 2024", and "2024+" all work. A year before 1990 or after next year is skipped. |
Filing Status | No | Common spellings are recognized: Single; Married Filing Jointly, Married, or Joint; Married Filing Separately, Married Filing Separate, or MFS; Head of Household, HOH, or HH; Qualifying Widow(er), QSS, or Surviving Spouse. A value SurgeTK does not recognize is counted as a field warning and leaves the stored value unchanged. |
Adjusted Gross Income | No | |
Taxable Income | No | |
Income Tax After Credits | No | "Map the 1040 “total tax” line (tax after credits) to Income Tax After Credits. Do not map withholding — wrong figures here skew every Roth conversion projection." |
Roth Conversion Amount | No | |
Notes | No | Free text for the tax year. |
Rules: one Zoho record makes one tax year row, matched by the Zoho record first, then by household and year. A mapped field that is blank in Zoho keeps whatever SurgeTK already has. A value that cannot be read as a number is a field warning and does not overwrite. If Tax Year or Household (lookup) is not mapped, the whole Taxes stage is skipped without a message. When the first Zoho tax year arrives for a household, the older tax figures stored on that household are cleared, and its Taxes tab becomes the source for the Meeting Worksheet and the Roth conversion projections.
Run a sync
Click Sync on the Zoho card, or Sync in the top bar.
The Confirm Zoho Sync window opens: "Are you sure you want to begin the Zoho sync now?" and "We will read data from your Zoho modules based on your mapping and update/create records in SurgeTK only."
Leave Advanced closed for a normal sync. See Deep sync below.
Click Sync Now.
A toast says "Zoho sync started" and "Syncing data from Zoho. You can continue working." The sync runs on SurgeTK's servers. You can leave the page or close the tab. If nothing is mapped, the sync ends at once with "No Zoho modules are mapped. Nothing to sync."
Deep sync
Under Advanced, tick "Deep sync: re-check every Zoho record (slower). Also verifies records deleted in Zoho." The window adds: "Note: a deep sync skips closed-account cleanup — run an ordinary sync for that." A Deep sync reads every record of every mapped module, applies new field mappings to records that did not change, and flags records that no longer exist in Zoho. It also allows large advisor changes that an ordinary sync holds back. The box resets each time you open the window. Retry Sync on a result card always runs an ordinary sync.
While the sync runs
Everyone at your firm sees the progress card at the top of Settings › Integrations. It shows "Zoho Sync in progress", the running time, the step ("Step 2 of 6"), record counts, and a progress bar. There is no percentage.
Step messages: "Preparing your sync...", "Getting your households...", "Getting your contacts...", "Pulling account data...", "Syncing financial details...", "Wrapping things up...".
The buttons on the integration cards are locked until the sync ends. The top bar button reads "Syncing…". Edit forms show "Heads up — a sync is running. Your changes might get overwritten when it finishes."
Only one Zoho sync, Redtail sync, or data import can run for your firm at a time. If one is running you see "A Zoho sync is already in progress. Please wait for it to finish." The first words name whatever is running. You can start at most 10 syncs in 5 minutes. After that: "Too many requests. Please slow down and try again."
Cancel a sync
Click Cancel on the progress card, then Cancel sync in the confirmation: "Cancel sync?" and "The sync will stop after the current step finishes. Data already synced will be kept." The button reads "Cancelling…" until the step ends. Records already written stay in SurgeTK. Nothing is rolled back, and the end-of-sync cleanup does not run. The card then offers Retry Sync and Dismiss, and the run is listed as Cancelled on the Imports page.
Stalled or interrupted syncs
If nothing updates for 20 minutes, the card shows "Sync may have stalled" and "No updates received for 20 minutes", with Retry Sync and Dismiss. If SurgeTK restarts during a sync, the sync is marked failed ("Sync interrupted by server restart") and the lock is released within a few minutes. SurgeTK queues the interrupted sync again automatically about 10 minutes later.
How records are matched
A sync updates an existing SurgeTK record in place when it can match it. Otherwise it creates a new record.
Record | Matched by |
Households | The Household ID (unique link key) value. |
Clients | Client ID, then email, then first name, last name, and date of birth together. |
Investable assets, bank accounts, insurance policies, other assets, liabilities | The Zoho record ID first, then the account number, policy number, asset number, or loan number. |
Tax years | The Zoho record ID, then household and tax year. |
Changing a household's link key value creates a new household on the next sync. Changing a Client ID creates a new client unless the email, or the name and date of birth, still match. When a record's number is already used by another record, the record is skipped and the result card says "N records need attention: they were skipped because other records already use their numbers". If your household link key is a name field and the household is renamed in Zoho, that household errors on every sync and the run is marked Partial. Use a stable ID field as the link key.
Zoho is the source of truth
Every sync overwrites the fields it syncs. If you edit a mapped field in SurgeTK, the next sync that reads that record puts the Zoho value back. Make the change in Zoho. Fields you did not map are left alone. A mapped account field that is blank in Zoho is cleared in SurgeTK. A date SurgeTK cannot read counts as blank.
What a sync deletes or replaces
Excluded households. With Excluded Households on Remove from SurgeTK (legacy), which is the setting for mappings saved before the Archive option existed, every sync permanently deletes households whose client type is excluded, with their clients, accounts, transactions, liabilities, assets, policies, tax years, Value Adds, and any data you entered by hand inside them. Choose Archive in SurgeTK to archive instead. See Sync Filters.
Closed accounts. With Closed Accounts on Remove from SurgeTK (legacy), ordinary syncs delete accounts closed before January 1 of the cutoff year, with their one-time transactions and beneficiary records no other account uses. Choose Keep as closed accounts to keep them.
Beneficiaries on accounts and policies are replaced by the rows in the sync's feed. Beneficiaries added by hand on those accounts and policies are dropped.
Transactions. A one-time transaction created from Distributions is deleted when its Zoho row has been missing from two complete reads at least 24 hours apart. A systematic withdrawal created from Distributions is removed as soon as its row is deleted, zeroed, moved, or changed to one-time.
Distribution History. Zero or undated ledger rows are deleted. Once the ledger is complete, older one-time and deposit rows from Zoho are deleted. Unmapping the ledger module deletes every ledger row.
Advisors. The sync adds the advisors the Lead Advisor field lists and removes advisors it added earlier that Zoho no longer lists. Advisors you assigned by hand survive. Users who left the firm or lost their advisor seat are removed from all households.
Overwrites. An unrecognized Tax Status is stored blank. A mapped Deceased / Living field that is blank sets the client to Living. A household's first Zoho tax year clears the older tax figures stored on that household.
Flags, never deletes. Accounts, assets, liabilities, policies, and tax years that are missing from Zoho on two complete reads at least 24 hours apart are marked "No longer in Zoho". A Deep sync makes those reads complete. The chip appears in the Unlinked lists and on the household's Accounts tab. The records stay until you delete them.
Deleting a Zoho-synced household in SurgeTK is not permanent. The next sync re-creates it. Archive it instead, or exclude its client type.
Household names are built from the household's clients, not from the Zoho household record. A Zoho household with no linked contacts appears as "(Unknown) Household" and is not removed automatically.
Incremental syncs and Deep sync
An ordinary sync asks Zoho only for records modified since your last successful sync finished. What each module reads:
Module | An ordinary sync reads |
Households | Every record, every sync. |
Clients, investable assets, bank accounts, beneficiaries, distributions, insurance beneficiaries, tax years | Records modified since the last sync. If Zoho reports none, the whole module is read. |
Insurance policies, other assets, liabilities | Records modified since the last sync only. |
Distribution History ledger | Every record, every sync. |
What this means:
A new field mapping reaches only records that change in Zoho, until you run a Deep sync.
A beneficiary or distribution row whose parent account was not modified since the last sync cannot be linked by an ordinary sync. Run a Deep sync after you add rows to an existing account.
Edits made in Zoho while a sync is running can be missed until that record changes again, or until you run a Deep sync.
After a Reconnect, the next sync reads everything.
After the sync
A toast says "Zoho sync complete" and "Zoho data has been synced successfully." A completion card shows "Sync completed successfully". If a module was too large to read completely, the card warns: "Zoho returned an incomplete feed for [module] — some records may not have synced. Try a sync again later."
The Imports page lists the run as "Zoho CRM sync" with its mode (Full, Incremental, or Deep sync), its status (Completed, Partial, Failed, or Cancelled), the counts of created, updated, and removed records, and "Triggered by" the user who started it. This row is the result to trust: a run with errors can show a green toast but a Partial chip here.
Click What changed to open the Sync details drawer. It shows totals for created, updated, removed, processed, and errors, then a What changed table with Fetched, Created, Updated, Skipped, Removed, Errors, and Notes for Households, Clients, Accounts, Bank accounts, Beneficiaries, Distributions, Insurance, Ins. beneficiaries, Assets, Liabilities, and Tax years. When they apply, extra cards cover Household lifecycle, Household advisors, Data hygiene, and Skipped distribution rows. The Tax years row notes "N identity conflicts" and "N field warnings". Admins also see the Raw sync log.
There is no bell notification for a failed Zoho sync. Check the card or the Imports page.
Link Zoho advisors to SurgeTK users
Map Lead Advisor on the Households tab to the Zoho field that names the household's advisor. On each sync, SurgeTK links that name to a SurgeTK user automatically when the email matches a user with an advisor seat exactly, or when the name matches exactly one user as "First Last" or "Last, First". Linked advisors become the household's lead advisors.
Names that cannot be matched wait for you:
Go to Settings › Team Members.
Scroll to Unlinked Zoho Advisors: "These are advisors from Zoho who are not yet linked to any Lead Advisor in SurgeTK. Linking them will update any Households that reference them." The table shows Advisor Name, Type, and a Link to Lead Advisor dropdown of your Lead Advisors.
Pick the user and click Link. You see "Zoho advisor linked successfully. All households with that advisor have been updated."
Only Admins can link advisors, and the target must have the Lead Advisor role. A bell notification "Unlinked Zoho advisors" appears when new names arrive. While a household's Zoho advisor is unlinked, the sync keeps the household's previous advisor instead of leaving it empty. If more than half of your assigned households would change advisor in one sync, the removals are held back. A Deep sync applies them, unless more than nine in ten households would change. The Household advisors card in the Sync details drawer explains what was held.
Disconnect
Turn the Zoho toggle off. The Disconnect Zoho? window says: "Disconnecting will remove your saved Zoho connection and mappings. Data already imported into SurgeTK will remain." Click Disconnect. You see "Zoho disconnected."
Disconnecting:
Removes the Zoho connection and your entire field mapping. If you reconnect later, map fields again, and the first sync reads everything.
Clears every "No longer in Zoho" marker.
Keeps every household, client, account, policy, asset, liability, and tax year that was synced.
Does not revoke SurgeTK's authorization inside Zoho.
Troubleshooting
I cannot use Connect, Map Fields, or Sync
Only Admins can use them. Ask an Admin at your firm.
Nothing happens when I click Connect
Your browser blocked the Zoho sign-in pop-up. Allow pop-ups for SurgeTK and try again.
A message says the connection is missing a permission
While mapping: "Your Zoho connection is missing permission to read modules (ZohoCRM.settings.modules.READ). Click “Connect to Zoho” to re-authorize and grant this scope." During a sync: "Zoho scopes missing (need ZohoCRM.settings.modules.READ). Click “Reconnect” on the Zoho card." There is no button called Connect to Zoho. Click Reconnect on the Zoho card and accept every permission. The same fix applies when the mapping window shows "Unable to load Zoho modules/fields."
Zoho temporarily limited token refresh
You see "Zoho temporarily limited token refresh. Try again in ~Ns." or "Zoho token refresh limited; retry in ~Ns." Zoho refused to renew SurgeTK's access for the moment. Wait the number of seconds shown, then start again. A sync that hits this limit fails and does not retry by itself.
The Sync button is disabled
Its tooltip says "Add at least one field mapping first". Map at least one field on any tab and save.
Clients named "(Unknown) (Unknown)" appeared
An owner lookup on an account, policy, asset, or liability did not match any client's Client ID, so SurgeTK created a placeholder owner. Check that Client ID on the Clients tab holds the same value the owner lookups resolve to (see Clients tab). Fix the mapping, save, and run a Deep sync. SurgeTK replaces a placeholder when a client with that ID syncs.
An account's type shows as Other
Account Type must match a SurgeTK account type exactly, including capitalization. Change the value in Zoho, or leave Account Type unmapped and set the type in SurgeTK.
An account I expected is missing
Check that the record has an Account Number value. Records without one are skipped, and there is no automatic fallback to the Zoho record ID.
Check the owner lookup. It must be a lookup to Contacts, and the contact must exist in SurgeTK. If the sync failed with a message that the selected owner field is Zoho “Owner” (User), pick a Contacts lookup instead.
Check whether the account's household is excluded by client type, or whether the account was closed before the cutoff year with Closed Accounts on Remove. See Sync Filters.
Check the Sync details drawer for "records need attention": the account's number may already be used by another record.
If the account is in SurgeTK but not on a report, see Why a Client or Account Is Missing From a Report.
Dates are blank in SurgeTK
A date value SurgeTK cannot read counts as blank. Use a Zoho date field, or a text value in a standard date format.
A joint account shows only one owner
SurgeTK makes an account joint only when the Account Type or Ownership Type value contains "joint" (or a variation such as JTWROS or TIC) and the household has exactly two members.
A household I deleted came back
Deleting a Zoho-synced household in SurgeTK is not permanent. The next sync re-creates it. Archive it instead; a household you archived by hand stays archived. Or give it a client type that your exclusions skip.
A household's name is wrong
SurgeTK names a household from its clients' names, not from the Zoho household record. Fix the client names in Zoho. A household with no linked contacts shows as "(Unknown) Household".
I see duplicate households or clients
A household link key value or a Client ID changed in Zoho, or the link key is a name field that was renamed. See How records are matched. Pick stable ID fields for these keys.
Beneficiaries changed in Zoho did not update
An ordinary sync cannot link beneficiary or distribution rows whose parent account did not change since the last sync. Run a Deep sync.
Distribution rows were skipped
Open the Skipped distribution rows card in the Sync details drawer. Rows are skipped when the Distribution Type is not one of the accepted values, the amount is zero or less, a one-time or estimated tax row has no Payment Date, or the parent account cannot be found.
Policies are missing
Only policies whose Policy Type contains "life" sync. If Policy Type is not mapped, no policy syncs. Policy beneficiary rows need both a name and a percentage.
Tax years are missing
Both Tax Year and Household (lookup) must be mapped, or the Taxes stage is skipped. A record whose year is before 1990 or after next year is skipped. Unrecognized filing statuses and unreadable numbers are field warnings, shown in the Tax years row of the Sync details drawer.
The sync says it is already in progress
Another sync or a data import is running for your firm. Wait for it to finish. If a sync was interrupted, the lock clears itself within a few minutes.
The card warns about an incomplete feed
Zoho limited how many records SurgeTK could read from that module in one pass, so some records did not sync. Run the sync again later, as the card suggests.
