Move your Attio workspace to Lumenbase
Portage imports companies, people, deals, and notes with the same guided wizard used for every Portage origin.
Connection: API token (pasted in the Portage wizard)
One-click rollback is built in.
- Read-only access to Attio
- Preview before anything imports
- Runs in the background, resumes if interrupted
See your move before you commit
Estimate the time and check what comes over. The source stays read-only, and you can roll back the import.
Estimate your move
Enter rough record counts. Times are estimates.
- Companies & people (people linked to their company)
- Deals with amount, currency, owner, and status
- A default pipeline & stage so deals keep their structure
- More data types and one-click rollback.
Comes over from Attio
- Companies & people (people linked to their company)
- Deals with amount, currency, owner, and status
- A default pipeline & stage so deals keep their structure
- Notes on the record timeline
- Owners mapped to your Lumenbase team members
Other supported origins
Portage uses one wizard in Data Hub for every CRM. Pick another origin or continue with your selection above.
Pipedrive
Connect with Pipedrive or paste an API token in Portage
Entity types
Pipelines · Stages · Organizations · Persons · Deals · Activities
HubSpot
Private app service key (pasted in the Portage wizard)
Entity types
Pipelines · Stages · Companies · Contacts · Deals · Notes
Salesforce
Connected App client credentials (pasted in the Portage wizard)
Entity types
Stages · Accounts · Contacts · Opportunities · Tasks
Synthetic default pipeline; stages come from your Opportunity stage picklist.
Five-step Portage process
Identical wizard flow for every origin: scan, configure, preview, import, summary.
- 1
Scan
Read-only inventory of your source CRM. Counts per entity type, sample records, and connection validation before anything is written.
- 2
Configure
Choose entity types to import and map source users to Lumenbase workspace members. Dependency order is enforced automatically.
- 3
Preview
Review record counts, sprint vs slow-drip pacing for large orgs, field mappings, and warnings (unmapped owners, empty types, missing relationships).
- 4
Import
Server-side batch job with checkpointed progress. Continue in the background; track status from Data Hub or Import History.
- 5
Summary & rollback
Per-entity import results, immutable entity origins, and session rollback that removes imported records using provenance rows.
Guided process
One five-step wizard for every supported CRM in Data Hub.
Unified Portage wizard
Open Lumenbase Portage in Data Hub, then connect your source CRM.
Dependency-ordered import
Imports pipelines, stages, companies, contacts, deals, then activities so links resolve in one pass.
User owner mapping
Map source CRM users to Lumenbase members; unmapped owners surface as preview warnings.
Entity type selection
Import only what you need; skipped types never touch the target workspace.
Background batch jobs
Track live progress by the summary bar and view the full log in Import History.
Sprint + slow drip
Entity types over 10,000 records import in a paced second phase to protect API budgets and server limits.
Pause & cancel
Pause an in-flight import or cancel a scan; sessions resume from saved checkpoints.
Checks & validations
Checks run before, during, and after each import.
Connection validation
Each origin validates credentials before scan (OAuth token, Attio API token, HubSpot service key).
Workspace membership
Only members of the workspace can start or continue a migration session.
Active session guard
One active Portage session per workspace per origin; prevents overlapping imports for the same CRM.
Preview warnings
Unmapped users, zero-count entity types, and deals-without-companies relationship gaps.
Scan schema version
Full pagination counts with no estimates from partial pages.
Duplicate-safe resume
import_record_changes keyed by session + source_system + source_id skips already-imported rows on continuation.
Provenance-or-rollback
If provenance write fails after insert, the entity row is deleted so resume never creates silent duplicates.
Immutable entity origins
Each imported record gets a migration origin tag (provider, session, external source id) for audit and lineage.
Process robustness
Built for large workspaces, API limits, and server timeouts.
Chunked self-reinvoke
Scan and import edge functions checkpoint progress and re-invoke on wall-clock or early_drop shutdowns.
Adaptive chunk sizing
Import batches shrink after a timeout and grow after successful runs.
Rate-limit awareness
Pipedrive: token budget headers and automatic pause metadata. All origins: stale-detector respects pause flags.
Stalled job recovery
Cron + UI resume restart failed batch jobs when the session is still scanning or importing with a saved checkpoint.
Session rollback
Chunked rollback via execute-import-rollback removes provenance-tracked entities and clears the session.
Import invocation limits
Migration edge functions cap self-reinvoke depth to prevent runaway loops.
Cancel propagation
Cancelled sessions abort continuations and mark linked batch jobs cancelled.
Audit & lineage
Know what was imported, from where, and undo it if needed.
import_record_changes
Every imported row logged with migration_session_id, source_system, source_id, and target record_id for rollback.
entity_origins
First-origin certificate: origin_kind=migration, origin_system=provider, origin_run_id=session, external_source_id=source key.
Batch job operational log
Scan and import milestones appended to batch_jobs metadata for support and recovery.
Per-provider batch job types
Distinct job types (e.g. attio_migration_import) for monitoring and stale-detector rules.
Entity catalog & field mapping
Import order is fixed across all origins: Pipelines → Stages → Companies → Contacts → Deals → Activities. Below: Lumenbase entity, origin object labels, API references, provenance keys, and field mappings.
1. Pipelines
pipelinesDeal pipeline definitions and ordering.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Default pipeline (synthetic) | Portage default. Attio deals use status instead of Pipedrive-style pipelinesSingle default pipeline created so Attio deals can attach to a stage. | pipelines |
|
2. Pipeline stages
pipeline_stagesStages within each pipeline; linked to parent pipeline.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Default stage (synthetic) | Portage default. Maps the Attio deal status ID when presentLinks: pipeline_source_id: defaultDeal stage links use Attio status id when available on the deal record. | stages |
|
3. Companies
companiesOrganizations / accounts.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Company | POST /v2/objects/companies/records/query | companies |
|
4. Contacts
contactsPeople; optionally linked to a company.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Person | POST /v2/objects/people/records/queryLinks: values.company | primary_company → company | people |
|
5. Deals
dealsOpportunities linked to company, contact, pipeline, and stage when available.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Deal | POST /v2/objects/deals/records/queryLinks: company, person, stage (status id) | deals |
|
6. Activities
activitiesTimeline activities (notes and typed activities) linked to company, contact, or deal.
| Origin | Object label | API / source | Provenance key | Field mapping |
|---|---|---|---|---|
| Attio | Note | GET /v2/notesLinks: parent_object + parent_record_id | notes |
|
