CLI & MCP

Waymaker migrate

Migrate data into Waymaker from other platforms. Import contacts, tasks, documents, and other data from common business tools.

MigrationData Import
Last updated: January 21, 2026

Overview

Migrate data into Waymaker from other platforms. Import contacts, tasks, documents, and other data from common business tools.

Usage

waymaker migrate <source> [options]

Supported Sources

SourceDescription
notionMigrate from Notion workspaces
asanaMigrate from Asana projects
trelloMigrate from Trello boards
mondayMigrate from Monday.com
airtableMigrate from Airtable bases
hubspotMigrate from HubSpot CRM
salesforceMigrate from Salesforce
csvImport from CSV files
jsonImport from JSON files

Notion Migration

waymaker migrate notion \
  --workspace <workspace-id> \
  --token <notion-integration-token>

Output:

Notion Migration

Connected to: My Notion Workspace
Found: 15 databases, 234 pages

Select what to migrate:
  [x] Databases → Tables
  [x] Pages → Documents
  [ ] Comments

Mapping:
  "Projects" database → "Projects" table
  "Tasks" database → "Tasks" taskboard
  "Notes" pages → Documents

Proceed with migration? (y/n)

Interactive Mode

waymaker migrate notion --interactive

Migrate Specific Database

waymaker migrate notion \
  --workspace ws_xxx \
  --token $NOTION_TOKEN \
  --database "database_id_here"

Asana Migration

waymaker migrate asana \
  --workspace <workspace-id> \
  --token <asana-token>

Output:

Asana Migration

Connected to: My Asana Workspace
Found: 8 projects, 450 tasks

Mapping:
  "Q1 Sprint" project → "Q1 Sprint" taskboard
  "Marketing" project → "Marketing" taskboard

Tasks will preserve:
  - Assignees (matched by email)
  - Due dates
  - Subtasks → Checklists
  - Comments
  - Attachments

Proceed? (y/n)

Migrate Specific Project

waymaker migrate asana \
  --workspace ws_xxx \
  --token $ASANA_TOKEN \
  --project "project_gid"

Trello Migration

waymaker migrate trello \
  --workspace <workspace-id> \
  --api-key <trello-api-key> \
  --token <trello-token>

Output:

Trello Migration

Found: 5 boards

Board Mapping:
  "Product Backlog" → "Product Backlog" taskboard
    Lists → Statuses (To Do, In Progress, Done)
    Cards → Tasks
    Checklists → Task checklists
    Labels → Task labels

Proceed? (y/n)

Airtable Migration

waymaker migrate airtable \
  --workspace <workspace-id> \
  --api-key <airtable-api-key> \
  --base <base-id>

Output:

Airtable Migration

Connected to: My Base
Found: 6 tables

Field Type Mapping:
  Single line text → text
  Long text → longtext
  Single select → select
  Multiple select → multiselect
  Number → number
  Currency → currency
  Date → date
  Checkbox → checkbox
  Link to another record → link
  Attachment → attachment

Tables to migrate:
  [x] Contacts (1,250 records)
  [x] Companies (340 records)
  [x] Deals (89 records)

Proceed? (y/n)

CSV Import

waymaker migrate csv \
  --workspace <workspace-id> \
  --file ./data.csv \
  --table "Imported Data"

Output:

CSV Import

File: data.csv
Rows: 1,250
Columns: 8

Column Mapping:
  "Name" → name (text)
  "Email" → email (email)
  "Phone" → phone (phone)
  "Company" → company (text)
  "Status" → status (select)
  "Value" → value (currency)
  "Created" → created_at (datetime)
  "Notes" → notes (longtext)

Creating table: Imported Data
Proceed? (y/n)

Import to Existing Table

waymaker migrate csv \
  --workspace ws_xxx \
  --file ./new_contacts.csv \
  --target-table tbl_contacts

Custom Column Mapping

waymaker migrate csv \
  --workspace ws_xxx \
  --file ./data.csv \
  --table "Contacts" \
  --mapping '{
    "full_name": "name",
    "email_address": "email",
    "phone_number": "phone"
  }'

JSON Import

waymaker migrate json \
  --workspace <workspace-id> \
  --file ./data.json \
  --table "Imported Data"

JSON Format

[
  {
    "name": "John Smith",
    "email": "john@company.com",
    "status": "active"
  },
  {
    "name": "Jane Doe",
    "email": "jane@company.com",
    "status": "lead"
  }
]

HubSpot Migration

waymaker migrate hubspot \
  --workspace <workspace-id> \
  --api-key <hubspot-api-key>

Output:

HubSpot Migration

Connected to: My HubSpot Portal

Available Objects:
  [x] Contacts (5,230 records) → Contacts table
  [x] Companies (890 records) → Companies table
  [x] Deals (234 records) → Deals table
  [ ] Tickets (1,200 records)

Property Mapping:
  HubSpot properties will be mapped to table fields
  Custom properties will be preserved

Proceed? (y/n)

Salesforce Migration

waymaker migrate salesforce \
  --workspace <workspace-id> \
  --instance <salesforce-instance-url> \
  --token <salesforce-token>

Migration Options

Dry Run

Preview migration without making changes:

waymaker migrate notion \
  --workspace ws_xxx \
  --token $NOTION_TOKEN \
  --dry-run

Output:

DRY RUN - No changes will be made

Would create:
  - 3 tables
  - 15 documents
  - 1,250 records total

Run without --dry-run to proceed.

Verbose Output

waymaker migrate csv \
  --workspace ws_xxx \
  --file ./data.csv \
  --verbose

Skip Errors

Continue migration even if some records fail:

waymaker migrate airtable \
  --workspace ws_xxx \
  --api-key $AIRTABLE_KEY \
  --base base_xxx \
  --skip-errors

Options Reference

Common Options

OptionTypeDescription
--workspacestringRequired. Target workspace ID
--dry-runflagPreview migration without changes
--verboseflagShow detailed progress
--skip-errorsflagContinue on record errors
--interactiveflagInteractive mapping mode
--jsonflagOutput results as JSON

Source-Specific Options

notion

OptionTypeDescription
--tokenstringRequired. Notion integration token
--databasestringSpecific database ID to migrate

asana

OptionTypeDescription
--tokenstringRequired. Asana personal access token
--projectstringSpecific project GID to migrate

trello

OptionTypeDescription
--api-keystringRequired. Trello API key
--tokenstringRequired. Trello token
--boardstringSpecific board ID to migrate

airtable

OptionTypeDescription
--api-keystringRequired. Airtable API key
--basestringRequired. Base ID to migrate
--tablestringSpecific table to migrate

csv/json

OptionTypeDescription
--filestringRequired. Path to import file
--tablestringNew table name
--target-tablestringExisting table ID to import into
--mappingstringColumn mapping as JSON

AI Agent Workflow

# Analyze source data
waymaker migrate csv \
  --workspace ws_xxx \
  --file ./data.csv \
  --dry-run \
  --json

# Migrate with AI-generated mapping
MAPPING=$(echo "$AI_COLUMN_ANALYSIS")
waymaker migrate csv \
  --workspace ws_xxx \
  --file ./data.csv \
  --table "AI Imported" \
  --mapping "$MAPPING"

# Batch migration
for file in ./exports/*.csv; do
  TABLE_NAME=$(basename "$file" .csv)
  waymaker migrate csv \
    --workspace ws_xxx \
    --file "$file" \
    --table "$TABLE_NAME" \
    --skip-errors
done

# Verify migration
TABLES=$(waymaker tables list --workspace ws_xxx --json)
echo "Migrated $(echo $TABLES | jq 'length') tables"

Post-Migration Steps

After migration, verify your data:

# Check table record counts
waymaker tables list --workspace ws_xxx

# Verify specific table
waymaker tables get tbl_xxx --json | jq '.record_count'

# Query migrated data
waymaker tables query tbl_xxx --filter '{}' --limit 10
  • tables - Manage tables after migration
  • taskboards - Manage migrated taskboards
  • docs - Manage migrated documents
  • connections - Set up ongoing integrations