Skip to main content

Syncing with Zoho

Connect Zoho CRM, map its modules and fields to SurgeTK, run ordinary and Deep syncs, and learn what a sync matches, overwrites, replaces, or deletes, plus troubleshooting.

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:

  1. 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.

  2. 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.

  3. 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

  1. Sign in to SurgeTK as an Admin.

  2. Go to Settings › Integrations. If your firm has no CRM connected yet, the Connect CRM link in the top bar opens the same page.

  3. On the Zoho card, click Connect, or turn the toggle on. A Zoho sign-in window opens.

  4. Sign in to Zoho and accept the permissions.

  5. 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.

  1. 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.

  2. Map the fields you have. Required fields are marked. Leave the rest blank.

  3. 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.

  4. 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.

Email

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

  1. Click Sync on the Zoho card, or Sync in the top bar.

  2. 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."

  3. Leave Advanced closed for a normal sync. See Deep sync below.

  4. 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:

  1. Go to Settings › Team Members.

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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.

  4. Check the Sync details drawer for "records need attention": the account's number may already be used by another record.

  5. 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.


Related articles

Did this answer your question?