Importing your Contacts and Accounts
You can bring existing contacts, companies, and deals into Ahoy from a CSV or Excel file. Ahoy reads your file, suggests how each column maps to its fields, and matches rows against what's already in your CRM – so importing on top of the records Ahoy has already built from your email and calendar updates those records rather than creating duplicates.
This guide covers:
- Where to import and what you can bring in
- Preparing your file so it imports cleanly
- Uploading and checking the column mapping
- How Ahoy handles duplicates
- Importing deals and keeping your pipeline history
- Reviewing before you commit, and what to do afterwards
Before you begin, you'll need:
- An export from your current tool. Any CSV or Excel file works. You don't need to match a template – Ahoy maps your columns for you.
- Your pipeline set up first, if you're importing deals. Import matches your deals to stages that already exist – it won't create pipelines or stages for you. Set those up in Settings > Pipelines before you start. See [Pipelines and deals].
- A few minutes to review. Ahoy shows you what it's about to do before anything is written, so plan to check the mapping and resolve any conflicts rather than uploading and walking away.
There's no need to import contacts and companies right away – Ahoy is already building those from your email and calendar. Importing is most worthwhile for deal and pipeline history, which Ahoy can't reconstruct on its own.
Where to import
Everything runs through one import wizard. Go to Settings > Import, then click New Import in the Import files card. The wizard handles contacts, companies, and deals, and also notes and any custom object types your org has set up. You can't import users, pipelines, or stages this way – those are set up in Settings.
Preparing your file
- File types and size. Ahoy accepts .csv and .xlsx. You can upload up to 10 files in a single import, and each file can hold up to 10,000 rows. For Excel files, only the first sheet is read. Files are read as UTF-8.
- One file can create linked records. You don't need a separate file per record type. If a file contains contacts and their companies, Ahoy can create both and link them in a single pass. Across several uploaded files, it can match records to one another too – so a deals file can link to a contacts file in the same import.
- Dates. Use YYYY-MM-DD (for example, 2024-03-15) and you'll never hit a date problem. Named-month formats like 15 Jan 2024 also work. Numeric dates where the day is clearly above 12, like 15/03/2024, parse fine – but a date where both parts are 12 or lower, like 01/02/2024, is genuinely ambiguous, so the date will be rejected instead of assuming US or European order. Sticking to YYYY-MM-DD avoids this entirely. Use a plain date with no time attached.
- Deal amounts. Plain numbers are safest – 1000 or 1,234.56 – and are stored in your org's default currency. Currency symbols ($, €, £) are accepted but the symbol itself is ignored: the amount lands in your default currency regardless, so €500 in a USD-default org imports as 500 USD. An explicit currency code like 100 USD is the exception. If your export mixes currencies, converting them to a single currency before importing will ensure nothing is misread.
- No column is mandatory. A row imports as long as it has at least one value Ahoy can map – a contact with only an email address is fine, and a deal with no amount or stage is fine.
Uploading and mapping
Once you upload, Ahoy reads your headers and a few sample rows, works out which record type each file holds, and suggests a mapping from your columns to its fields. Your columns can be named anything – you review the suggested mapping and adjust it in the next step rather than renaming things to match Ahoy.
A few things worth knowing at this step:
- Custom fields don't need to exist first. If a column doesn't match an existing field, you can create a new custom property for it right in the mapping step, or map it to one you already have.
- Unmapped columns are left out. A column you don't map to anything is ignored – it won't import and won't cause an error.
How Ahoy handles duplicates
This is the part that matters most when you're importing on top of an existing CRM, so here's exactly how it behaves.
Ahoy matches against records it already has, including the ones it built for you. A contact Ahoy created from your inbox, or a company it created from an email domain, will be updated by your import, not duplicated. You don't need to clean those out first.
How rows are matched:
- Contacts match on email address (or LinkedIn URL).
- Companies match on domain.
- Deals have no natural key, so by default every deal row creates a new deal. If you need to update existing deals instead, mark a column – such as an external deal ID – as a Unique match key in the mapping step, and Ahoy will match on that.
When a row matches an existing record, Ahoy updates it – and updates are safe by design:
- An empty cell in your file never wipes out a value that's already in Ahoy.
- A field that's blank in Ahoy gets filled from your file.
- A value in your file that differs from what's already in Ahoy is flagged as a conflict in the review step, where you decide field by field which to keep. (If you don't resolve a conflict, the imported value is used.)
If a single row matches two or more existing records, Ahoy can't safely choose between them, so it skips that row and flags it for you rather than guessing.
Importing deals and keeping your pipeline history
Deals are the main reason to import early, because Ahoy can't rebuild your pipeline from your inbox the way it can with contacts.
- Stages must already exist. Ahoy maps the stage values in your file to stages in your pipeline – it doesn't create them, so it's important to set your pipeline up first. For deals, any stage value that doesn't match an existing stage is left blank rather than dropped into a fallback, so the deal comes in with no stage set – map every stage value in your file to make sure each deal lands where it should.
- Your original dates are preserved. Map a historical "created" column and each deal keeps its real creation date and its place on the timeline – Ahoy doesn't stamp everything with today's date. This is what makes importing history worthwhile rather than cosmetic. (Creation date can only be set when a record is first created – on rows that update an existing deal, it's left as-is.)
- Owners and associations. You can set a deal's owner by mapping an owner column, or apply one owner to the whole file. A deal with no owner specified comes in unassigned. Links between a deal and its contact and company can be created in the same import, either by matching across your uploaded files or by looking up records already in Ahoy.
Reviewing and committing
Ahoy shows you what's about to happen before it writes anything. You'll see counts of what will be created, updated, and skipped, along with any per-row errors. Invalid rows are surfaced here, before execution – and a cleanup assistant can suggest fixes, such as reformatting a date, that you approve before committing.
Importing isn't all-or-nothing. Good rows import, and any bad rows are skipped and reported – one row with an issue won't hold up the rest of the file.
After the import
- You can see your import history. Past imports and their status are listed in Settings > Import, and every imported record is linked back to the import it came from, so you can always trace where a record originated.
- There's no one-click undo. Records that were created or updated stay in place, and removing the import entry doesn't remove the data. Reversing a bad import means cleaning up the affected records by hand – the import link makes them findable – or contacting support.
Because of that, the safe habit is to run a small test import first – a handful of rows – confirm the mapping and results look right, and only then import the full file. The review step is there to catch issues before they're imported, so it's worth reading rather than clicking past.
FAQs
Do I need to import my contacts and companies?
No. Ahoy builds those automatically from your email and calendar. Importing is most useful for deals and pipeline history, which Ahoy can't reconstruct on its own.
Will importing create duplicates of contacts Ahoy already found?
No. Ahoy matches your rows against your existing records – including the ones it created from your inbox – and updates them instead of duplicating.
Is there a template I have to follow?
No. Upload your existing export with whatever column names it has, and Ahoy suggests the mapping for you to review.
One of my date columns keeps failing. Why?
Almost always an ambiguous numeric date like 03/04/2024, where Ahoy can't tell which part is the month. Reformat that column as YYYY-MM-DD and it'll import.
Can I import into custom fields?
Yes. You can map to existing custom fields, or create new ones during the import – they don't need to exist beforehand.
I imported the wrong file. Can I undo it?
There's no automatic undo. The records are findable through the import they're linked to in Settings > Import, so they can be cleaned up manually, or support can help. Running a small test import first is the best way to avoid needing to.
Need help?
We’re hands-on. Reach out anytime:
- Email – help@ahoy.ai