Migration Playbook

Zoho CRM monday.com

Zoho CRM to monday.com: The Complete Migration Playbook

A 46-step runbook across six phases — track your progress, and open the right tool at every step.

0 / 46 steps complete 0%
TL;DR

Zoho CRM to Monday.com migration is a data-model translation problem. CSV breaks relationships, API-based migration is the only safe path for preserving Account → Contact → Deal chains, and Monday's complexity limits require careful engineering.

There is no native migration path from Zoho CRM to Monday.com; the migration is fundamentally a data-model translation from a relational CRM with enforced module-level lookups (Account → Contact → Deal) to a Work OS where boards, items, and optional Connect Boards columns replace schema-enforced relationships. CSV export/import works only for small, flat datasets but destroys relational integrity, making API-based migration the only safe approach for preserving entity chains, custom module data, and picklist fidelity. Custom engineering is required to sequence imports in dependency order, maintain a crosswalk ID map, handle GraphQL complexity-based rate limits on the Monday.com side, and compensate for the absence of native custom objects, subforms, and validation rules in the target platform.

Read this first

Pair-specific gotchas that catch teams out. Each one has cost somebody a weekend.

Zoho Data Center matters

The API base URL differs by region. US customers use https://www.zohoapis.com, EU customers use https://www.zohoapis.eu, India uses https://www.zohoapis.in, Australia uses https://www.zohoapis.com.au, and China uses https://www.zohoapis.com.cn. If your Zoho org is hosted outside the US and you hardcode the .com base URL, every API call will silently fail with an authentication error. Check your org's data center at Setup → Company Details before writing any extraction code.

Watch your credit burn rate

A full extraction of 500K records across modules can consume tens of thousands of credits. Run extractions during off-peak hours, monitor your API dashboard at Setup → Developer Hub → APIs & SDKs, and prefer Bulk Read or wide COQL windows over thousands of chatty single-page calls.

Always include the complexity field in your mutations to track your remaining budget in real-time

This prevents blind retries that waste your quota.

Do not trust old Monday migration snippets

On API versions 2025-04 and later, the raw value field for Connect Boards (board_relation) returns null. Read linked_item_ids or query the linked_items field instead. Use items_page and next_items_page — the old boards { items } pattern was removed from newer versions. Pin an API-Version header in production because Monday ships new API versions quarterly. The code samples in this guide pin 2024-10 for stability — if you're reading this after mid-2025, test against a newer version and verify behavior before deploying. This is exactly the kind of outdated example that breaks AI-generated migration scripts.

Separate the migration from the implementation

Your team configuring Monday.com workflows, automations, and dashboards should be a different workstream from the team extracting and loading data. This reduces moving parts during go-live. See Why Data Migration Isn't Implementation for the rationale.

The runbook

Work top to bottom. Tick steps as you go — your progress is saved in this browser.

01 Discovery Agree scope, pipeline design and success criteria before touching data. 0/8

Objective A scope covering every object in the revenue model, with sales leadership signed up to the pipeline design.

  1. Inventory every object in Zoho CRM

    RevOps 1-2 days

    Count accounts, contacts, leads, deals or opportunities, activities, notes, emails, files, products and quotes. Activity and email history is usually the largest object by an order of magnitude and the one people forget to size.

    Data Profiler Get real record counts instead of estimating from memory
  2. Map the current pipeline and agree the target model

    Sales leadership 3-5 days

    Document every pipeline, stage, probability and required field, then agree the monday.com model with sales leadership. Migrating a broken pipeline faithfully is a wasted opportunity; redesigning it mid-migration is a wasted migration.

    Stage changes alter historical conversion rates. Agree how you will restate reporting before you change the model.

  3. Catalogue integrations and automation

    RevOps 2-3 days

    List every system touching Zoho CRM: marketing automation, quoting, billing, ERP, data enrichment, dialler, BI. Each is a separate cutover task with its own owner, and each can silently write bad data into your new CRM.

  4. Capture the reporting that must survive

    RevOps 2 days

    Interview the people who actually live in the dashboards — forecast, pipeline coverage, rep activity, cohort conversion. Every one of these needs the underlying fields to migrate, which frequently expands the scope.

  5. Build the business case and pick the go-live date

    Project sponsor 2 days

    Model licence delta, implementation effort and productivity dip. Then choose the date deliberately: mid-quarter is disruptive, quarter-end is worse. Most teams land on the first week of a new quarter.

    COI & ROI Calculator Build the 36-month business case you will need for sign-off
  6. Identify stale data

    Inactive leads, closed-lost deals older than 2 years, duplicate contacts. Do not migrate what you don't need.

  7. Document all relationships

    Which modules have lookup fields? Which custom modules reference standard modules?

  8. Map picklist values

    Zoho's dropdown values must match Monday's label/status values exactly, or the import will default to blank.

Don't move on until

  • Object counts confirmed for accounts, contacts, deals and activities
  • Target pipeline and stage model agreed with sales leadership
  • Reporting requirements captured from the people who use the reports
02 Data Audit CRM data is usually dirtier than anyone expects. Find out how dirty. 0/8

Objective A profiled export with duplicates, ownership gaps and relationship integrity all quantified and triaged.

  1. Export and profile every object

    Data engineer 2 days

    Profile null rates, distinct values and type consistency across all objects. Pay attention to fields sales reps were supposed to fill in: an 80% null rate on a field your forecast depends on is a business finding, not a data one.

    Data Profiler Profile the Zoho CRM export for nulls, outliers and type drift
  2. Quantify duplicates and agree the merge policy

    RevOps 2-4 days

    Measure duplicate accounts (same company, different spellings and suffixes) and contacts (same email, or same person at a renamed company). Agree survivorship rules before merging: which record wins, which fields, and what happens to the activity history on the loser.

    Merging before you have agreed survivorship rules destroys history irreversibly. Decide first, merge second.

    Data Cleaner Strip empty rows, stray whitespace and dead columns
  3. Verify relationship integrity

    Data engineer 1-2 days

    Check every deal has a valid account, every contact a valid account, every activity a valid parent. Referential breaks are the defect that turns a clean-looking load into a CRM where the pipeline report does not tie to the account list.

  4. Resolve ownership and the user map

    RevOps 1-2 days

    Build the Zoho CRM user → monday.com user map, including leavers. Every record needs a valid owner: records assigned to deactivated users either fail to load or land unassigned, and unassigned pipeline is pipeline nobody works.

    Records owned by deactivated users are a top cause of load failures. Decide the reassignment target before you start.

  5. Scan for PII and regional compliance

    Compliance / DPO 1-2 days

    CRMs hold marketing consent, lawful basis and unsubscribe state. Confirm these fields migrate intact and that consent provenance survives — losing consent records is a regulatory problem, not a data-quality one.

    PII & Compliance Scanner Find regulated fields before they land in a new system
  6. Clean, normalise and archive the pre-state

    Data engineer 2 days

    Normalise country and state values, phone formats, currencies and casing, and standardise all timestamps to UTC. Keep an untouched copy of the raw export — it is your only reference if a mapping decision turns out wrong.

  7. Inventory every module

    in Zoho. Pull module metadata and field metadata first via the API. Count records per module, identify custom modules, list all custom fields and subforms.

  8. Export a full backup

    of your Zoho org before touching anything.

Don't move on until

  • Duplicate rate quantified per object with a merge policy agreed
  • Every record has a valid owner mapped to a target user
  • Relationship integrity verified — no orphaned deals or contacts
03 Field Mapping Map objects, relationships and picklists — in that order. 0/9

Objective A signed mapping spec that covers objects, relationships, picklist values and currency handling.

  1. Map objects and their relationships first

    Solution architect 2-3 days

    Establish how Zoho CRM objects correspond to monday.com objects before any field work. Leads-versus-contacts, accounts-versus-organisations and deal hierarchies differ structurally between CRMs, and a field map built on the wrong object model has to be redone.

    Schema Mapper Opens pre-loaded with the Zoho CRM → monday.com field pair
  2. Generate and then hand-review the field map

    Solution architect 2-3 days

    Auto-match both schemas, then review every row. Look hardest at anything named "type", "source", "stage" or "status", where names match and meanings do not.

  3. Map every picklist value, including retired ones

    RevOps 2 days

    Enumerate all values on both sides — deal stages, lead sources, industries, statuses — and map each explicitly, including values no longer offered but still present on old records. Unmapped values either fail the row or land as blanks that quietly break segmentation.

    Historical records often carry picklist values that were retired years ago and no longer appear in the UI.

  4. Decide currency, amount and date handling

    Finance / RevOps 1-2 days

    If you sell in multiple currencies, confirm how monday.com stores amounts, exchange rates and dated conversion rates. Recalculating historical deal values at today's rate silently rewrites your revenue history.

    Multi-currency deals re-converted at current rates will not tie to your historical reporting or your finance system.

  5. Determine the load order

    Data engineer 1 day

    Sequence the load so parents exist before children: users, then accounts, then contacts, then deals, then activities and notes. Keep source IDs in custom fields so relationships can be rebuilt by lookup rather than guesswork.

  6. Freeze the spec and sign off

    Project manager 1 day

    Version-control the mapping, walk RevOps and sales leadership through the decisions that change reporting, and get written sign-off before the pilot.

  7. Build a crosswalk table

    {zoho_account_id: monday_account_item_id} — this is your source-to-target ID map for rebuilding relationships

  8. Convert field types

    Zoho date formats → Monday ISO format (YYYY-MM-DD), Zoho multi-select → Monday dropdown JSON, URLs → {"url": "...", "text": "..."} format

    Data Format Converter Reshape the export into the format monday.com's importer expects
  9. Flatten subforms

    Monday has no subform equivalent. Subform rows become either subitems (API-only, requires a separate GraphQL mutation after parent item creation) or separate board items

    JSON to CSV Converter Flatten nested API responses into a reviewable sheet

Zoho CRM → monday.com specifics

Stamp every record
with an immutable external_id column so you can rerun the migration safely and debug issues post-load

Don't move on until

  • Object and relationship model mapped and reviewed
  • Every picklist value explicitly mapped, including dead values
  • Load order determined so parents always exist before children
04 Test Migration Pilot with related records, not a flat sample. 0/6

Objective A pilot load whose relationships, ownership and roll-up reporting all verify against source.

  1. Configure the monday.com sandbox to match the agreed model

    Solution architect 3-5 days

    Build the pipelines, stages, custom fields, record types and user roles first. Load into a default configuration and you will only discover the configuration defects at full scale.

  2. Select a connected pilot slice

    Data engineer 0.5 day

    Take complete account trees — 50-100 accounts with all their contacts, deals, activities and files — rather than a flat random sample. Relationship defects are the whole point of a CRM pilot and a flat sample cannot expose them.

  3. Run the load in dependency order with full logging

    Data engineer 1-2 days

    Load users, accounts, contacts, deals, then activities, logging every request against its source ID. Note which failures are transient (rate limits, timeouts) and which are structural (validation, missing parent).

  4. Verify relationships and roll-ups

    RevOps 1-2 days

    Confirm every deal sits on the right account with the right owner and stage, and that pipeline totals per account and per rep match Zoho CRM exactly. Roll-up mismatches almost always mean a relationship or currency defect upstream.

    Migration Validation Tool Diff the pilot batch against source before scaling up
  5. Measure throughput and project the full load

    Data engineer 1 day

    Record actual records-per-hour under monday.com's API limits and extrapolate, remembering activity history usually dominates volume. If the projection exceeds your window, split the load or trim activity scope now.

  6. Let reps work the pilot data

    Sales leadership 2-3 days

    Put two or three reps in the sandbox against their own accounts. They spot missing context, wrong owners and unusable notes far faster than any reconciliation script, and their buy-in is what makes adoption work.

Don't move on until

  • Relationships intact across the whole pilot slice
  • Pipeline roll-ups match source for the pilot accounts
  • Reps have worked pilot records and confirmed they are usable
05 Cutover Switch the revenue system with the pipeline intact. 0/6

Objective All in-scope CRM data live in monday.com, integrations repointed, and reps selling on day one.

  1. Pre-load history ahead of the freeze

    Data engineer 5-10 days

    Load closed deals, historical activities and inactive accounts while Zoho CRM stays live. Only open pipeline and the final delta need to move inside the window.

  2. Publish the cutover runbook

    Project manager 1 day

    A timed sequence with owners and abort criteria: freeze, final export, delta load, integration switch, smoke test, go/no-go, rep enablement. Pick a window that avoids quarter-end and month-end close.

  3. Freeze Zoho CRM and take the final delta

    RevOps 2-4 hours

    Set Zoho CRM read-only and export everything changed since the pre-load. Reps updating deals during an unenforced freeze is the classic way to lose the most recent — and most valuable — pipeline changes.

    A rep who updates a deal in the old CRM during the freeze will lose that update permanently.

  4. Load the delta and reconcile the pipeline

    RevOps 2-6 hours

    Run the delta, then verify open pipeline value and count per rep against Zoho CRM before anything else. If the pipeline number is wrong on day one, reps stop trusting the system and never fully come back.

    Migration Validation Tool Confirm the final delta landed before you reopen
  5. Repoint every integration and verify with real records

    IT / integrations 4-8 hours

    Switch marketing automation, quoting, billing, enrichment, dialler and BI connections, then push a live record through each path. An unrepointed integration writing into the old CRM causes divergence that gets harder to reconcile every day.

    Two-way integrations left pointing at the old CRM will keep writing there. Disable them before you switch, not after.

    Cron Expression Builder Schedule the delta syncs that run through the freeze
  6. Go/no-go, then enable the reps

    Project sponsor 1-2 days

    Call the decision explicitly against the exit criteria. Run enablement on real data with their own accounts on screen, and keep Zoho CRM read-only rather than cancelled until validation closes.

Zoho CRM → monday.com specifics

Choose your cutover pattern
A big bang works for small orgs with a short freeze window. Phased works when business units or pipelines can move separately. Delta syncs between Zoho and Monday are exceptionally difficult because Monday webhooks fire on item updates but don't expose before/after field values in a diff-friendly format, and Zoho's notification webhooks have their own payload quirks. Plan for a clean freeze window when possible.

Don't move on until

  • Historical load complete and reconciled before the freeze
  • All integrations repointed and verified end to end
  • Reps logged in with pipeline visible and correct
06 Validation Prove the revenue numbers tie out, then close the project. 0/9

Objective Reconciled data, forecast parity with pre-migration reporting, and signed acceptance.

  1. Reconcile every object

    Data engineer 2 days

    Compare counts and values across accounts, contacts, deals, activities and files, plus field-level spot checks on a random sample. Produce a single report suitable for audit and for finance.

    Migration Validation Tool Reconcile Zoho CRM and monday.com record-for-record
  2. Tie the pipeline and forecast to baseline

    RevOps 2-3 days

    Rebuild forecast, pipeline coverage and win-rate reporting and compare to pre-migration figures. Every variance needs an explanation — most trace back to stage or currency mapping decisions made in Field Mapping.

    Stage-model changes will legitimately shift historical conversion rates. Restate the baseline rather than chasing the difference as a defect.

  3. Verify ownership, visibility and permissions

    RevOps 1-2 days

    Confirm every record has the right owner and that sharing rules, territories and role hierarchy give each rep exactly the visibility intended. Over-broad visibility in a CRM is a data-protection issue as much as a config one.

  4. Re-profile for field completeness

    Data engineer 1 day

    Compare loaded null rates against the source profile per field. A field that arrived empty while counts matched is the failure counts alone cannot detect.

    Data Profiler Prove field completeness held up through the load
  5. Test automation and integration write-back

    RevOps 2 days

    Fire every workflow, assignment rule, sequence and notification, and confirm each integration writes correctly in both directions. Automation is rebuilt rather than migrated, so it is unproven until observed.

  6. Sign off and schedule decommission

    Project sponsor 1 day

    Get written acceptance against the Discovery criteria, keep Zoho CRM read-only for 30-90 days with a final archive export taken, then diarise cancellation so the contract does not auto-renew.

  7. Rebuild automations in Monday.com

    Zoho workflows, blueprint processes, and assignment rules do not transfer. Rebuild them using Monday's automation recipes. Do not attempt to migrate Zoho Workflows programmatically.

  8. Configure Emails & Activities

    Integrate Gmail or Outlook with Monday CRM to resume email tracking on the new platform. The Emails & Activities feature is preinstalled on entity boards.

  9. Monitor for 2 weeks

    Watch for data inconsistencies, broken links, and missing records that surface during daily use.

Zoho CRM → monday.com specifics

Re-enable board automations
after verifying imported data looks correct.
Train your team
Monday's board-based interface is fundamentally different from Zoho's module-based navigation. Budget time for onboarding — especially for sales reps who are used to Zoho's record-centric views.

Don't move on until

  • Full reconciliation report complete across all objects
  • Forecast and pipeline reports tie to pre-migration baselines
  • Acceptance signed and Zoho CRM decommission scheduled

Field mapping reference

The field-by-field mapping for each object. Use this as the starting point for your mapping spec.

Module Board 9 fields high

Monday.com has no native custom object equivalent, so custom modules must be recreated as additional boards without schema enforcement, validation rules, or workflow triggers.

Zoho CRM fieldmonday.com fieldNotes
Accounts Accounts board Company-level records. Keep Zoho record ID in a hidden External ID text column.
Contacts Contacts board Each contact links to Account via Connect Boards column.
Leads Leads board Unqualified prospects. Monday separates Leads from Contacts by board. Since Monday does not have a native lead conversion process like Zoho, you can alternatively use a unified Contacts board with a Status column.
Deals (Opportunities) Deals board Pipeline stages map to Monday's status/stage column. Each deal item represents an opportunity.
Tasks / Calls / Events Activities board Monday uses a unified Activities entity for calls, meetings, and similar logged events.
Notes Item updates or long-text columns Notes are not Activities board records. On Monday CRM, emails and notes are distinct from the Activities board. If you collapse all Zoho history into Activities, users lose the difference between a note, a scheduled activity, and email context.
Custom Modules Additional boards (with limitations) No native custom object equivalent.
Products Separate board Must be linked via Connect Boards.
Attachments File columns Require separate multipart upload via API.
Zoho CRM Zoho Type 20 fields
Zoho CRM fieldmonday.com fieldNotes
Account_Name Text Direct map
Account ID (Zoho) System ID Used for crosswalk during ETL
Phone Phone Include country code
Website URL Map as {"url": "...", "text": "..."}
Industry Picklist Match picklist values exactly
Annual_Revenue Currency Strip currency symbol
Contact.First + Last Name Text Concatenate; preserve in separate text columns if needed
Contact.Email Email Map as {"email": "...", "text": "..."}
Contact.Account_Name Lookup Use Account item_id from crosswalk
Deal.Deal_Name Text Direct map
Deal.Stage Picklist Map each stage to a Monday status label
Deal.Amount Currency Strip formatting
Deal.Closing_Date Date Convert to ISO YYYY-MM-DD
Deal.Contact_Name Lookup Use Contact item_id from crosswalk
Lead.Lead_Source Picklist Match values exactly
Lead.Lead_Status Picklist Map to Monday status labels
Task.Subject Text Direct map
Task.Due_Date Date Convert to ISO
Task.Related_To Lookup Use parent item_id
Subform Rows Subform Requires separate GraphQL mutation

Risk matrix

Per-object risk for this pair. Plan extra validation around anything marked high.

ObjectRiskNotes
Accounts low Accounts map directly to Monday.com's Accounts board as a flat entity with straightforward field-to-column translation.
Contacts medium Contacts must be imported after Accounts and explicitly linked via Connect Boards columns, requiring a crosswalk table to preserve the Account-Contact relationship.
Deals (Opportunities) medium Deals depend on both Contact and Account links being established first, and pipeline stage mappings must be translated to Monday.com's status/stage column values.
Leads medium Monday.com lacks a native lead conversion process like Zoho's, so teams must decide between a separate Leads board or a unified Contacts board with a Status column.
Activities (Tasks/Calls/Events) medium Zoho's separate Tasks, Calls, and Events modules collapse into Monday.com's single Activities board, requiring careful type differentiation to avoid losing activity context.
Notes high Zoho limits notes export to 3,000 at a time, notes map to item updates or long-text columns rather than a dedicated board, and conflating them with Activities causes silent context loss.
Custom Modules high Monday.com has no native custom object equivalent, so custom modules must be recreated as additional boards without schema enforcement, validation rules, or workflow triggers.
Custom Fields medium Zoho's 30+ field types must be mapped to Monday.com's approximately 20 column types, with lossy transformations required for unsupported types like subforms.
Attachments high Attachments require separate multipart uploads via the Monday.com API and cannot be included in standard CSV imports, adding significant migration complexity and time.
Products medium Products must be migrated to a separate board and linked to Deals via Connect Boards columns, with no native line-item or product-deal association equivalent.

The hard parts

What makes this specific migration difficult, beyond the mechanics.

Relational Integrity Preservation

Zoho CRM enforces Account → Contact → Deal lookups at the database level, while Monday.com's Connect Boards columns are opt-in and unenforced, requiring explicit sequential imports and a crosswalk ID map to rebuild every relationship.

Board Item Limits

Monday.com imposes a 10,000-item limit per board (100,000 on Enterprise), which can force architectural decisions like board partitioning for high-volume Zoho modules that have no practical record cap.

Custom Module Translation

Zoho's native custom modules with full CRUD, validation rules, and workflow triggers have no equivalent in Monday.com, where custom objects are technically iFrame-based apps without schema enforcement.

GraphQL Complexity Rate Limits

Monday.com's API uses complexity-based rate limiting (10,000,000 per minute per account), and bulk create_item mutations burn through this budget quickly, requiring careful queuing and throttling during large-scale loads.

Notes and Activity Differentiation

Zoho CRM maintains distinct Notes, Tasks, Calls, and Events modules, but Monday.com collapses activities into a single Activities board and treats notes separately as item updates or long-text columns, risking context loss if not mapped carefully.

Field Type Parity Gaps

Zoho CRM supports over 30 native field types including subforms, while Monday.com offers approximately 20 column types with no subform equivalent, requiring lossy transformations or workarounds for complex field structures.

Tools used in this playbook

All free, all run entirely in your browser — nothing is uploaded.

FAQ

Can I migrate Zoho CRM data to Monday.com using CSV export?

You can, but CSV import into Monday.com is capped at 8,000 rows and 50 columns per file, cannot populate Connect Boards columns, and does not support subitems. All Account-to-Contact and Contact-to-Deal relationships are lost and must be rebuilt manually or via a follow-up API script. CSV is only practical for small, flat datasets under 5,000 records.

What are the Monday.com API rate limits for data migration?

Monday.com enforces a complexity limit of 10,000,000 per minute per account. Each API call has a computed complexity cost based on query depth. Rate limit errors return a 429 HTTP code with a Retry-After header. Include the complexity field in your mutations to track your remaining budget in real-time.

How do I map Zoho CRM modules to Monday.com boards?

Zoho Accounts map to Monday's Accounts board, Contacts to the Contacts board, Deals to the Deals board, and Leads to the Leads board. Relationships are preserved via Connect Boards columns, but you must import in dependency order (Accounts first, then Contacts, then Deals) and programmatically set connections using Monday item IDs from a crosswalk table.

Does Monday.com support custom objects like Zoho CRM?

No. Monday.com's custom objects are iframe-based app views — not native database tables with CRUD operations and lookup relationships like Zoho's custom modules. You'll need to create additional boards for custom module data, but you lose schema enforcement, validation rules, and workflow triggers.

How many records can a Monday.com board hold?

Monday.com limits boards to 10,000 items on all plans except Enterprise, which allows 100,000 items. CRM Pro users get 100K connected items on up to five boards. If your Zoho module has more records than this limit, you'll need to split data across multiple boards or archive stale records before migration.

Or skip all of this and let us handle it

Book a 30-minute call and we'll scope your migration in a single session.