Monday.com CSV Import: Complete Tutorial (2026)
Import data to monday.com from CSV files. Covers native import, column mapping, API methods, and troubleshooting for every plan tier.

Monday.com supports CSV import on all paid plans. You can import a .csv, .xlsx, or .xls file with up to 8,000 rows and 100 columns into either a new board or an existing one. Two minutes for a typical file. But column mapping and date formatting will trip you up if you're not prepared.
Below we cover every import method: native UI for new and existing boards, the CRM-specific flow, the GraphQL API for large datasets, and third-party tools for recurring imports. We'll also call out the gotchas that monday.com's own docs bury in footnotes.
Before You Start: CSV Requirements
Monday.com is pickier about file formatting than most project management tools. Annoyingly so. Get these wrong and your import will either fail silently or produce garbage data -- and monday.com won't tell you which one happened.
Supported file types: .xlsx, .xls, .csv
Hard limits:
| Parameter | New Board | Existing Board | monday CRM |
|---|---|---|---|
| Max Columns | 100 in file / first 50 imported | 100 | 50 |
| Max Rows | 8,000 | 8,000 | 8,000 |
| Max File Size | 10 MB | 10 MB | 10 MB |
| Multi-tab | First tab only | First tab only | First tab only |
| Upload Rate | 100 files/account/hour | 100 files/account/hour | 100 files/account/hour |
That 50-column limit on new boards catches people off guard. Your file can contain 100 columns, but monday.com quietly ignores everything past column 50. No warning. If you have critical data in column 51, move it left before importing.
Date formatting is non-negotiable. Dates must use ISO format: YYYY-MM-DD. So 2024-03-15, not 03/15/2024 or 15/03/2024. Monday.com's docs are blunt about it: "When importing dates, they must be formatted in ISO format. This means that they must show 4 digits for the year, 2 digits for the month, and 2 digits for the day."
If you're exporting from Excel, reformat your date columns to YYYY-MM-DD before saving as CSV. European DD/MM/YYYY formats? They just won't work.
Pre-Import Checklist
Run through this before every import:
- File is .xlsx, .xls, or .csv format
- File is under 10 MB
- 8,000 rows or fewer (or split into batches)
- 100 columns or fewer (50 for new boards)
- All dates in ISO format (YYYY-MM-DD)
- Sheet is not protected
- Data is on the first tab
- Column headers are clear and descriptive
- No merged cells
- Status column has 9 or fewer unique labels
- Board automations disabled (if importing to a CRM board)
Method 1: Import CSV to a New Board
Simplest path. Monday.com creates a fresh board from your file and auto-detects column types.
Steps:
- Click your profile picture in the top-right corner
- Select Import Data
- Choose Excel in the popup window (this handles CSV files too, despite the label)
- Drag your CSV file into the popup or click Click to browse
- Click Let's customize your new board
During customization, you'll set up a few things:
Select the header row. Pick which row in your file contains the column titles. Everything above that row is discarded. If your CSV has metadata or notes in the first few rows, this is where you skip past them.
Choose the item name column. This becomes the first column on your board -- the item name. It should be the column that best identifies each row (task name, project title, contact name, etc.).
Review column types. Monday.com auto-detects column types based on the data in each column. Here's what it can detect:
| Column Type | How It's Detected |
|---|---|
| Numbers | Numeric data in the column |
| Status | 9 or fewer unique text values |
| Values matching email format | |
| Date | ISO-formatted dates (YYYY-MM-DD) |
| Text | Default fallback for everything else |
That status detection threshold matters. Ten or more unique values? Monday.com dumps it into Text. Consolidate similar values before importing if you want the Status column type.
You can manually change any column type during the mapping step. Don't skip this. Honestly, auto-detection gets it wrong more often than you'd expect. Phone numbers become Numbers. Short codes become Status. It's frustrating.
Method 2: Import CSV to an Existing Board
More control here, but more work too. You'll need to manually map every column from your CSV to columns on the board.
Steps:
- Open the target board
- Click the arrow beside the New Item button at the top
- Select Import Items from the dropdown
- Drag your CSV file into the frame or click click to browse
- Choose which CSV column becomes the item name
- Map each remaining CSV column to an existing board column
- Choose how to handle duplicates
- Click Start import
Column Mapping
This is where it gets tedious. Every column in your CSV must be mapped to a column on the board. Unmapped columns are just... gone. There's no option to auto-create new columns, which feels like a miss on monday.com's part.
The existing board import supports more column types than the new board import:
| Column Type | Supported |
|---|---|
| Numbers | Yes |
| Text | Yes |
| Date | Yes (ISO format) |
| Yes | |
| Dropdown | Yes (must match existing values) |
| Timeline | Yes (start + end date mapping) |
| Phone | Yes |
Column types you can't populate via CSV import: People, Formula, Mirror, Files, Checkbox. Your board can have these columns, but the import process just skips over them. You'll fill those in by hand after.
Handling Duplicates
When importing to an existing board, monday.com gives you three options:
Create new items -- Every row becomes a new item, period. Doesn't matter if identical items already exist. All new items land in a new group. Good for first-time bulk imports.
Skip items -- Monday.com checks a column you pick. If a row matches an existing item on that value, it's skipped. Only genuinely new items get added. Use this for incremental updates.
Overwrite existing items -- Matching rows update the existing item with your CSV data. New rows still get added. This is what you want when you've edited records in a spreadsheet and need to push changes back.
One thing that's easy to miss: new rows always land in a new group, not an existing one. You'll drag items between groups manually after import. Not ideal, but that's how it works.
Import CSV to monday CRM
Monday CRM has its own import flow. Similar to the existing board method, but the supported fields are CRM-specific.
Supported CRM import fields:
- Name
- Status
- Link
- Long text
- Numbers
- Text
- Phone
- Date
The CRM import has a stricter 50-column limit (not 100) but the same 8,000-row and 10 MB caps. One nice thing: unmapped columns get added as text columns automatically. That's actually more forgiving than the standard board import, where unmapped columns just vanish.
Watch out for automations. If your CRM board has active automations (and most do), importing items will trigger them. You'll probably see status columns auto-change to "New Lead," notification emails firing, assignment rules kicking in -- the whole chain reaction. Disable all board automations before running a CRM import. Turn them back on after you've verified the data. I've seen teams skip this step and end up sending hundreds of welcome emails to contacts that weren't ready.
How to Import More Than 8,000 Rows
The 8,000-row limit comes up constantly in monday.com's community forums. For good reason -- plenty of real-world datasets blow past that number. If you've got 35,000 rows, you have two options: batch imports through the UI or programmatic import via the API.
Batch Import Strategy
For datasets between 8,000 and about 40,000 rows, manual batching works fine:
- Split your CSV into files of 8,000 rows or fewer. Keep the header row in every file.
- Import each file sequentially. Each batch creates a new group on the board.
- Merge groups after all batches are imported.
- Spot-check items across batches to verify nothing was dropped.
A 32,000-row dataset means four import files. At roughly two minutes per import, you're done in under ten minutes. Not fun, but it works.
API Import for Large Datasets
For datasets well over 8,000 rows, or imports that need to run on a schedule, the monday.com GraphQL API is the way to go.
API access works on all paid plans (Basic and above). Grab a personal API token from your monday.com account under the Developer section.
Here's the create_item mutation:
mutation {
create_item(
board_id: 1234567890
group_id: "group_one"
item_name: "new item"
column_values: "{\"date\":\"2023-05-25\",\"status\":{\"label\":\"Working on it\"},\"numbers\":42}"
) {
id
}
}
The column_values parameter takes a JSON-formatted string. Each key is the column ID (not the column title -- find column IDs via the API or board settings). Status values use the {"label": "value"} format. You can also use create_labels_if_missing: true to auto-create status or dropdown labels that don't exist yet.
Here's a Node.js script that reads a CSV and creates items via the API:
const fs = require('fs');
const csv = require('csv-parser');
async function importCSVToMonday(filePath, boardId, groupId, apiToken) {
const rows = await new Promise((resolve, reject) => {
const collected = [];
fs.createReadStream(filePath)
.pipe(csv())
.on('data', (row) => collected.push(row))
.on('end', () => resolve(collected))
.on('error', reject);
});
for (const row of rows) {
const columnValues = JSON.stringify({
"text_column": row.name,
"date": row.due_date,
"status": { "label": row.status }
});
const query = `mutation ($itemName: String!, $columnValues: JSON!) {
create_item(
board_id: ${boardId}
group_id: "${groupId}"
item_name: $itemName
column_values: $columnValues
) { id }
}`;
await fetch('https://api.monday.com/v2', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': apiToken
},
body: JSON.stringify({
query,
variables: { itemName: row.item_name, columnValues }
})
});
}
}Rate limits: Monday.com gives you 5,000,000 complexity points per minute per API token. A single create_item mutation is cheap, but if you're importing thousands of rows, add a small delay between requests. Batch multiple create_item mutations into a single request where you can.
For production use, add error handling and retry logic. The API throws transient errors under load -- I haven't tested every edge case with large batch sizes, but keeping batches under 50 items per request seems to avoid most issues.
Third-Party Import Tools
If you need automated or scheduled imports, third-party tools can fill the gap. Fair warning: each requires a Standard plan or above. Basic plan doesn't support integrations.
Zapier
Zapier connects monday.com to 7,000+ apps. Build a Zap that creates monday.com items from CSV uploads, Google Sheets rows, or pretty much any data source.
The upside: no-code setup. The downside: action-based pricing. Your monday.com plan's automation/integration limits apply (250/month on Standard, 25,000/month on Pro). Those limits go fast if you're importing frequently.
Make (formerly Integromat)
Make gives you more granular control than Zapier through a visual workflow builder. It's better when you need to transform data -- splitting a full name column into first/last, reformatting dates, filtering rows before creating items.
The tradeoff: steeper learning curve. Make scenarios take longer to build but handle edge cases that would need multiple Zaps to pull off.
Marketplace Apps
The Automatic Excel/CSV Import and Export app (available in the monday.com Marketplace) supports scheduled imports from SFTP, FTP, Google Sheets, and SharePoint. It's purpose-built for recurring imports where you drop a file in a shared folder and it automatically syncs to your board.
Skyvia is another option for automated CSV import/export on a schedule, with FTP/SFTP and cloud storage connections. Both tools need their own subscriptions on top of your monday.com plan. Worth it if you're importing weekly; overkill for a one-time job.
For Enterprise Migrations
If you're migrating a large dataset from a legacy system -- tens of thousands of records with complex relationships -- CarbonWeb offers professional data migration through certified monday.com partners. It's a paid engagement, but it makes sense when the data is too messy or too important to risk a DIY approach.
Plan Restrictions Quick Reference
Not every plan supports every import method. Here's the breakdown:
| Plan | Price (per seat/month, annual) | Native CSV Import | API Access | Third-Party Integrations |
|---|---|---|---|---|
| Free | $0 (up to 2 seats) | Limited (3 boards, 8 column types) | No | No |
| Basic | $9/seat/month | Yes | Yes | No |
| Standard | $12/seat/month | Yes | Yes | Yes (250 actions/month) |
| Pro | $19/seat/month | Yes | Yes | Yes (25K actions/month) |
| Enterprise | Contact sales | Yes | Yes | Yes (250K actions/month) |
The Free plan technically lets you import, but with 3 boards and 8 column types it's basically useless for real work. Basic gets you native CSV import and API access, which honestly covers most needs. Only upgrade to Standard or higher if you want Zapier, Make, or marketplace app integrations.
Common Import Errors and How to Fix Them
Dates Not Importing Correctly
The most common issue by far. Your dates show up blank, get misread, or land in a text column.
Fix: Convert all dates to ISO format (YYYY-MM-DD) in your spreadsheet before exporting to CSV. In Excel, select the date column, right-click, choose Format Cells, pick Custom, and enter yyyy-mm-dd. In Google Sheets, use Format > Number > Custom date and time.
Mixed date formats within a single column will also break things. If row 5 is 2024-03-15 and row 12 is March 15, 2024, the import chokes. Standardize everything.
Status Column Shows as Text
Monday.com auto-detects a column as Status only when it has 9 or fewer unique values. If you have 10 unique status labels, it defaults to Text.
Fix: Consolidate similar values. Do you really need both "In Progress" and "In progress"? Case matters here. Get your unique values to 9 or fewer and auto-detection kicks in.
Protected Sheet Error
The import just fails. No useful error message. You're left guessing.
Fix: Open the file in Excel, go to Review > Unprotect Sheet, remove the protection, and save again. If the workbook itself is protected, unprotect that too. Then save as .csv.
Only Partial Data Imported
You had 150 columns but only 50 showed up. Or you had 3 tabs but only the first one imported.
Fix: For columns, move your most important data into the first 50 columns (for new board imports) or first 100 columns (for existing board imports). For multi-tab files, consolidate all data onto the first tab. Monday.com only reads the first sheet.
Subitems Imported as Regular Items
Monday.com does not support importing subitems from CSV. Period. Every row becomes a top-level item. This is one of those limitations that feels like it should have been fixed years ago.
Fix: Import everything as items, then manually convert the appropriate ones to subitems. No workaround through native import. For large datasets with parent-child relationships, this gets messy fast -- you might want the API instead.
Automations Firing During CRM Import
You import 500 contacts and suddenly 500 "New Lead" notifications go out.
Fix: Before importing, go to the board's automations center and toggle everything off. Run the import, verify the data, then turn automations back on. Takes 30 seconds. Saves you from a very bad day.
Tips for a Smooth Import
Organize columns in your spreadsheet before importing. Column order in your CSV becomes column order on a new board. Put your most-used columns on the left. Saves you from rearranging after.
Test with a small file first. Before importing 8,000 rows, try 10. Check column types, date parsing, status mapping. Fix issues on the small file, then go full-size. This alone will save you hours of cleanup.
Use the overwrite option carefully. Overwriting matches on a single column. If that column has duplicate values, you'll get unpredictable results. Make sure your matching column has unique values.
Keep a copy of your original file. There's no "undo import" button. When something goes wrong (not if), you'll want that original CSV.
Automate recurring imports. If you're importing the same CSV format weekly or monthly, the manual process gets old by the third time. The API approach or a Zapier/Make integration pays for itself fast.
If your CSV import needs go beyond what monday.com handles natively -- validation rules, better column mapping, error previews before committing data -- ImportCSV is an embeddable CSV importer that validates data on upload and pushes clean records to monday.com via its API. Built for teams that are tired of fixing formatting issues after every import.
Wrap-up
CSV imports shouldn't slow you down. ImportCSV aims to expand into your workflow — whether you're building data import flows, handling customer uploads, or processing large datasets.
If that sounds like the kind of tooling you want to use, try ImportCSV .