Migration
Your old tool exports. Spodus reads it.
Upload a CSV or an Excel file, or paste the rows straight in.
- hubspot-contacts.csv1,240 rows · 6 columnsLooks like a HubSpot export1Upload
- First Name + Last NameNameEmailEmailPhone NumberPhoneLifecycle StageIgnored2Map
- Preview
Nothing is written yet
Rows read1,240DuplicatesSkippedUnreadableKept as textImport contacts3Preview
What CSV import gives you.
Seven exports recognised on sight
Headers from Asana, ClickUp, HubSpot, Pipedrive, Salesforce, Trello and Zoho CRM are matched to a preset, and the mapping arrives filled in.
Columns you can re-map by hand
Every field shows the column feeding it. Change it, ignore it, or join two columns into one, which is how First name and Last name become a name.
A duplicate check before the write
Spodus asks the server which of your rows it already holds, counts the repeats inside the file too, and skips them unless you tell it not to.
A preview that shows the damage
How many rows are new, how many are duplicates, how many have no name, how many cells would not parse, and the first eight rows as they will land.
7 exports recognised on sight.
HubSpot
PipedriveSalesforce
Zoho CRM
Asana
ClickUp
Trello
The specifics.
Every number here came out of the product rather than a roadmap.
- File formats
- CSV and .xlsx. A workbook with several sheets offers a sheet picker. The older .xls format is refused with a message telling you to re-save it. You can also paste rows into a box instead of uploading anything.
- Vendor presets
- Seven. HubSpot, Pipedrive, Salesforce and Zoho CRM cover contacts, companies and deals; Asana, ClickUp and Trello cover tasks. Every other tool is a few minutes of mapping columns by hand.
- Column matching
- A field claims the first free column whose header matches its name. A preset takes over once at least two of its fields match, and where two presets tie on the same file Spodus applies neither and asks you which one it is.
- Joining columns
- One field can be fed by several columns and joined in order. The usual case is a first-name and last-name pair arriving as one name.
- Duplicate matching
- On the record's primary field, which is the name at the front of it. The check runs on the server, against the records your permissions already let you open, and it catches repeats inside the file as well as against what is stored.
- What a duplicate does
- It is skipped, by a checkbox that is on by default. Turn the checkbox off and duplicates come in as new records. Nothing is ever overwritten, because an import only ever creates.
- Rows with no name
- Always skipped, whatever the duplicate setting says, because there is nothing to match them on.
- Cells that will not parse
- Kept as the text you gave, and counted in the preview. Spodus reads 1,234.56 and 1.234,56, ISO and slashed dates, and the usual yes and no words; it will not guess at a spreadsheet error.
- Where you can import
- Every object except invoices, estimates, bills, credit notes and tickets, which are built by the modules that own them. Custom objects behave like the built-in ones.
- Size
- Up to 50,000 rows in one file. Above that, split the export.
- Getting data back out
- Export the current table to CSV, or only the rows you have selected. A file exported from Spodus imports back into Spodus unchanged.
Switching it on.
In this order. Nothing here needs us.
- Open the object you are filling, press Import, and drop in a CSV or .xlsx file. Pasting the rows works too.
- Check the mapping. If the headers came from one of the seven recognised exports it is already done for you.
- Read the preview: new rows, duplicates, rows with no name, and the cells that would not parse.
- Press Import. Nothing at all is written until you do.
What the importer will not do.
- It only ever creates.
- There is no update-existing mode, so a second file of the same contacts carrying new phone numbers will not fill them in; those rows are skipped as duplicates instead.
- There is no undo once an import runs, which is why the preview is a step you walk through rather than a message that appears afterwards.
- Matching looks at one field, the record's name, and never at an email address or a company.
- And if the duplicate check cannot reach the server it tells you so and imports everything, rather than reporting a comfortable zero.
The rest of the list.
It is a short one, and every page says what its connection does not do.
- Email
Gmail
Connect a Gmail mailbox over IMAP and SMTP so mail with a contact shows on their record, and reply from there.
- Email
Outlook
Connect an Outlook mailbox over IMAP and SMTP, where your account and your administrator allow those protocols.
- Automation
Webhooks
Give a workflow its own URL so your systems can start work in Spodus, and let a workflow call yours back.
Two ways
to start
Start fresh today, or bring the clients, deals and history you already have.
Start fresh
Free for up to three people.
You get every product: CRM, invoicing, support, team, chat and Spodus AI, which asks before it changes anything. Upgrade when your team grows.
Start for freeBring your data
Bring your data from the tool you use now.
Your deals arrive with their stages, owners and dates. Connect your work email, and each client's emails land on their record. On a paid plan, we'll move it all for you, free.


Bring your data in one file.
Start today, or bring your own data to a demo and see it there.
Questions, answered
Any tool that exports a CSV or an Excel file, which is very nearly all of them. Seven are recognised from their column headers alone and need no mapping at all: Asana, ClickUp, HubSpot, Pipedrive, Salesforce, Trello and Zoho CRM. Everything else is the same import with a few minutes of choosing which column feeds which field.
No. Matching is on the record's primary field, which is the name for a contact or a company. That also means an import cannot merge two records or fill in a blank field on one that already exists: a matched row is skipped, not updated.
Yes, and it behaves exactly like a built-in one. The five places an import cannot go are invoices, estimates, bills, credit notes and tickets, because each of those is created by the module that owns it rather than typed into a grid.
It is stored as the text you supplied and counted for you in the preview, so a column full of spreadsheet errors is visible before you commit rather than silently turned into zeroes. Numbers in either European or US notation, ISO dates and slashed dates all parse.
Fifty thousand rows at a time. The duplicate check refuses more than that in one pass, so a larger export needs splitting. There is no limit on how many files you import one after another.