Done Bear Docs

Import from Things 3

Import a Things 3 SQLite export into Done Bear with dry runs, metadata preservation, and team mapping controls.

Use this guide to import a Things 3 export into Done Bear. You will point the CLI at a supported database location, preview the migration with --dry-run, and then run the import for a specific workspace.

What the importer accepts

donebear import things accepts:

  • A direct filesystem path
  • A file:// URL
  • A sqlite:// URL
  • A .thingsdatabase bundle
  • A ThingsData-* directory

1. Pick the target workspace

Run:

donebear workspace list
donebear workspace use personal

You can also keep the workspace explicit during the import:

donebear import things --workspace personal --dry-run --json

2. Preview the import

Run a dry run first:

donebear import things \
  --database-url ~/Backups/Things\ Database.thingsdatabase \
  --dry-run \
  --json

The dry run shows the resolved database path, source counts, planned counts, and execution summary without sending sync mutations.

3. Run the import

Run:

donebear import things \
  --database-url ~/Backups/Things\ Database.thingsdatabase \
  --workspace personal

If you want to control batching, run:

donebear import things \
  --database-url file:///Users/me/Backups/main.sqlite \
  --workspace personal \
  --batch-size 50

4. Decide how to handle Things-specific metadata

By default, the importer preserves Things-only metadata in task, project, and team descriptions.

donebear import things \
  --database-url ~/Backups/Things\ Database.thingsdatabase \
  --metadata-mode note

If you want a cleaner import without that appendix, run:

donebear import things \
  --database-url ~/Backups/Things\ Database.thingsdatabase \
  --metadata-mode none

5. Decide whether to create teams from Things Areas

The importer can map Things Areas into Done Bear teams and TeamProject links. If you do not want that mapping, skip it:

donebear import things \
  --database-url ~/Backups/Things\ Database.thingsdatabase \
  --skip-teams
  1. Run donebear import things --dry-run --json.
  2. Check the planned counts and target workspace.
  3. Decide whether to keep metadata appendices with --metadata-mode.
  4. Decide whether to keep Area-to-team mapping with --skip-teams.
  5. Run the real import without --dry-run.

Next steps

On this page