HubSpot to Clarify
Contacts, companies, deals and your portal's own objects — with the associations intact.
What crosses
Everything HubSpot will give us
Each of these is written against the real API rather than a generic model, which is where the depth comes from.
Contacts, companies and deals
Every property the portal reports, mapped onto the Clarify structure you approved. Contacts land as people.
Your portal's own custom objects
Discovered from the portal schema, not from a list we maintain. The property HubSpot enforces uniqueness on becomes the dedup key, so re-running updates rather than duplicates.
Associations, in full
Read through the v4 batch association API with paging. The inline association parameter on a record read silently truncates a contact with hundreds of associations; this does not.
Notes and tasks
Notes become Clarify comments on the record they belong to, tasks become Clarify tasks — with the priority mapped and the task assigned to whoever owned it, matched by email against your Clarify users.
On every migration
Relationships, resolved in a second pass
Records are created first and linked second, so a deal finds its company no matter which order they arrived in. A link whose other end never made it is reported as a skipped row naming what it was waiting for.
Dedup against what is already in Clarify
People match on email, companies on domain, custom objects on the unique key you designate. A matched record is updated in place, so running the same migration twice never leaves you two of anything.
A sample run before the real one
Cap the import at the first 50 records, read the result, then promote it to a full run with one click.
Cancel that leaves zero trace
Every record, list entry, attribute and select option this migration created is deleted or archived in reverse order. Whatever was in your workspace before is never touched.
Limits
7 things that do not cross
Each of these is a ceiling in an API rather than a feature we have not written yet. You would find them on day two, so you may as well read them now.
A task whose HubSpot owner has no Clarify user
Not migratedIt still imports, unassigned, and the summary counts how many. Assigning it to the nearest name would put one person's work in another person's list.
Marketing events, quotes and line items
Not migratedClarify models none of them. Exporting them into a custom object would give you a table nothing in Clarify reads.
Emails
Not migratedClarify asks migration tools not to import them — its own inbox sync covers email far better than a one-time copy would, and it keeps working after the migration.
File attachments
Not migratedClarify publishes no endpoint for writing files onto a record, so there is nowhere to put them.
Meetings
Not migratedEvery field that makes a meeting a meeting - title, time, participants, location - is read-only in Clarify's schema. Clarify builds meetings from the calendar you connect, so a copied one would be a shell it would immediately contradict.
Lists and saved views
Not migratedClarify has no list object and no list-membership endpoint. A HubSpot list, an Affinity list or a Pipedrive saved filter has nowhere to land, so the members cross as records and the grouping does not.
Field history
Not migratedClarify stores a field's current value, not its timeline. A stage that changed in March imports as the value it holds today; there is no route that would let us date it.
Other sources
Moving from somewhere else
Pipedrive
Persons, organizations, deals, and the activities you have been tracking against them.
Affinity
Persons, organizations, opportunities — and the global fields a naive export loses.
Salesforce
Accounts, contacts, leads and opportunities, your __c objects, and both kinds of note.
Attio
Every object in the workspace, read the way Attio actually stores it.
CSV
A spreadsheet from anywhere, including the CRM that has no API worth using.
Connect HubSpot and read the receipt when it lands.
Nothing is written to Clarify until you have approved the structure and the field mapping.