Rollback snapshot
A snapshot is created immediately before the operation. If it fails, no import changes are applied.
KeyHarbor documentation
Create a preview from installed apps or existing records, review every change, and apply the import only when it looks right.
Verified with KeyHarbor 1.6.2 · July 13, 2026
KeyHarbor analyzes the selected source and builds a preview first. The preview separates new records, possible updates, unchanged records, duplicates, and skipped rows so you can decide what should be applied.
Start from the location that matches what you are importing.
| Goal | Use | What it brings in |
|---|---|---|
| Move all KeyHarbor data | Encrypted .khbackup | Licenses, attachments, icons, receipts, categories, smart folders, and payment sources |
| Move spreadsheet records | CSV, TSV, or delimited text | The license fields you explicitly map |
| Create drafts from this Mac | Installed Apps | App name, publisher, version, bundle identifier hint, and icon |
| Create Homebrew drafts | Homebrew Cask or Brewfile | Cask names and available installation metadata |
| Move structured records | JSON or ZIP | License data and any assets supported by the selected format |
KeyHarbor scans applications on the Mac and uses available bundle metadata as the starting point for a license record.
Search by app name or publisher, then select only the apps you want to turn into license drafts.
Select each app on the left and add only the purchase and license information you know. Every field is optional and remains editable after import.
Check whether each row is new, a possible match, or unchanged. Confirm icon readiness and rollback protection before applying the import.
The preview does not expose full product keys and does not write to the library until you confirm the operation.
| State | Meaning |
|---|---|
| New | A license that will be added as a new record. |
| Changed | A possible existing match with one or more different fields. |
| Same | The incoming values match the current record, so no change is needed. |
| Duplicate | A repeated identifier or name conflicts with another row or existing record. |
| Skipped | A row you excluded or a row that cannot be applied because of an error. |
Merge options appear only when an incoming row matches an existing license candidate.
| Decision | Behavior | Use when |
|---|---|---|
| Fill empty fields | Keeps existing values and fills only blank fields. | You want the safest default or are unsure which source is newer. |
| Keep existing values | Preserves conflicting values already in KeyHarbor. | The current KeyHarbor record is more accurate. |
| Use imported values | Updates the changed fields shown in the preview. | The imported source is the newer source of truth. |
| Keep both | Preserves the existing license and adds the imported row separately. | The records share a name but represent different purchases or licenses. |
The completion screen reports each outcome separately. Open the imported items and compare the result with the preview before continuing with more data.
KeyHarbor protects the current library before an import or restore changes it.
A snapshot is created immediately before the operation. If it fails, no import changes are applied.
Open Settings > Storage > Restore > Restore Last Rollback Snapshot, verify its timestamp, and then confirm the restore.
Merge keeps the current library and adds or updates selected records. Restore replaces the current store with the backup state.
Clear the search field and expand Scan Notices. System apps, unreadable Info.plist files, and duplicate bundle identifiers may be excluded.
This is expected. App bundles usually do not include product keys or purchase email. Enter the value in step 2 or edit the license later.
All selected rows are new and have no existing match. Merge options appear only for matching candidates.
Open the field mapping menu and select the correct KeyHarbor field. A mapped Name field is required to continue.
Look for a backup password, CSV mapping, or duplicate decision dialog behind another window. Cancel and retry with a smaller copy of the source if needed.
Review the imported, updated, and skipped counts. Restore the last rollback snapshot when the changes are not acceptable.