Skip to main content

Importing Contacts

Hamtrax gives you four ways to bring contacts in:

  • Import any logbook — the general importer. Point it at a whole ADIF or CSV file (yours or another logger's) and Hamtrax sorts every contact into the right folder for you, skipping duplicates.
  • Import directly from QRZ — connect your QRZ Logbook once, then pull its contacts into the same guarded general importer without downloading a file.
  • Automatic POTA starter import — when you add or change your account callsign, Hamtrax checks your public POTA profile and imports the latest public hunter QSOs POTA exposes for that callsign. This is a capped recent public list, not your full private POTA logbook.
  • Import a single past activation — the activation importer. An ADIF from one POTA session, brought in as a single activation with a park-confirmation step.

Use the general importer for whole logbooks, connected QRZ contacts, and mixed files. Use the activation importer when you have one activation's ADIF and want to confirm its park before it lands.


Import any logbook

The general importer takes an entire logbook and files each contact where it belongs — activations into activation folders, hunts into monthly Hunting folders, and everything else into a custom folder. You never sort anything by hand.

Getting to the importer

  1. Open the Logbook tab.
  2. Click the Import Contacts button next to the Folders heading at the top of the folder tree.

Supported files

Drop one file onto the drop zone, or click to browse:

  • ADIF (.adi or .adif) — the standard amateur-radio log format, exported by virtually every logger.
  • CSV (.csv) — a spreadsheet-style file. Hamtrax reads its own CSV export back in with full fidelity (a complete round-trip), and recognizes the common column names other logbooks use (CALL, QSO_DATE, TIME_ON, FREQ, BAND, MODE, and so on) automatically. There's no column-mapping step to fill out — recognition is automatic.

Import directly from QRZ

If QRZ is connected under Settings → Preferences → Integrations, the Select step also shows QRZ Logbook:

  1. Click Import from QRZ. Hamtrax fetches the logbook in pages through its authenticated server gateway; your browser never contacts QRZ directly.
  2. Walk through the same guided Activations → Hunting → Custom → Summary review used for file imports. Empty folder stages are skipped automatically.
  3. Finish the review to save only the new contacts.

Direct QRZ imports are capped at 100,000 contacts or 64 MiB per run. This keeps an unexpectedly large or malformed remote response from overwhelming the browser; no contacts are saved unless the complete fetch fits within both limits.

If a QRZ contact already exists locally, Hamtrax skips the duplicate and attaches its QRZ log ID to the matching local contact. That remote identity prevents a later Export to QRZ from uploading the same contact again. A duplicate-only QRZ review can still be finished so those IDs are attached even when there is nothing new to save. Importing never deletes a contact from QRZ.

Need to connect first? See Get Your QRZ Logbook API Key.

Automatic POTA starter import

When your Hamtrax account gets a callsign for the first time, or when you change it later in Settings → Account, Hamtrax fetches the public POTA profile for that callsign and imports the latest public hunter QSOs POTA exposes. This is a starter import only: POTA currently exposes a capped recent public list, not your full private POTA logbook.

These contacts follow the same rules as file imports: Hamtrax skips duplicates, files hunted parks into monthly Hunting folders, fills map coordinates from POTA park data when available, and runs the same folder guardrails before anything is saved. The import runs in the background and only ever happens once per callsign — even if you're signed in on two devices — and the contacts appear in your logbook on the next refresh, usually a minute or two after your callsign is saved.

The three steps

A progress bar walks you through Select → Review → Finalize:

  1. Select. Choose a file or your connected QRZ Logbook. Hamtrax parses the source and works out where every contact will go.
  2. Review. Hamtrax shows one non-empty folder category at a time: Activations, then Hunting, then Custom, followed by a count-only Summary. Protected activation and Hunting destinations are read-only. Only the Custom stage offers organization choices; excluding a contact never reroutes it.
  3. Finalize. Hamtrax creates any folders it needs and writes the contacts. A summary confirms what was imported.

How contacts are sorted

Hamtrax reads the POTA park references on each contact and routes it automatically:

  • You activated a park (a "my park" reference — MY_SIG_INFO, POTA) → an activation folder, one per park per UTC day, named in the standard CALLSIGN@PARK-YYYYMMDD format. If a folder for that activation already exists, the contacts merge into it; otherwise Hamtrax creates it.
  • You hunted or worked a park (a "their park" reference — SIG_INFO, POTA) → that month's Hunting folder, created automatically if it isn't there yet.
  • No POTA park on either side — plain contacts, or contacts from other programs like SOTA or WWFF — → a custom folder. Hamtrax never re-tags these as POTA; a SOTA contact stays a SOTA contact. In Review, you decide whether these go into one existing or newly named custom folder, or get split by month, year, band, or mode.

Only stages containing contacts appear. Activation folders are fixed by your park and UTC day; Hunting folders are fixed by the worked park and UTC month. Those destinations cannot be changed in Review, which keeps the same folder-hygiene rules as normal logging. Custom folders have no protected placement rule, so that is the one stage where Hamtrax asks how you want the contacts organized.

When an imported contact is missing coordinates, Hamtrax fills them from known park and callsign data where it can. POTA park coordinates always win over callsign coordinates for both the operator side and the contacted-station side, so maps use the actual park location for POTA contacts.

Duplicates are skipped for you

Hamtrax won't add the same contact twice. It skips:

  • Duplicates within the selected source — repeated rows collapse to one.
  • Contacts already in your logbook — matched on callsign, date, time, band, mode, and POTA park references.
  • Repeat hunts of the same park — a hunted POTA contact is kept just once per activator, per park, per UTC day, regardless of time, band, or mode. Logs from different apps often disagree on the exact QSO time, so this catches the same hunt logged twice a few hours apart. Contacts from your own activations (park-to-park) are never collapsed this way.

Because of this, re-importing the same file or QRZ Logbook is safe — nothing gets added a second time. Import a growing source as often as you like; only the genuinely new contacts come in.

Every record is accounted for

Nothing is dropped silently. The final Summary accounts for each record in the selected source:

  • Unreadable — stopped during parsing because a required value is missing or structurally invalid. The source summary shows N unreadable with a Show unreadable records disclosure and the reason for each.
  • To import — ready to be filed into its reviewed folder when you confirm.
  • Duplicate — skipped as a repeat (in the selected source or already in your log).
  • Rejected — parsed successfully but can't be routed or saved without breaking a logbook guardrail.
  • Excluded — anything you removed yourself (below).

The counts always reflect what will actually be written, not the raw number of rows returned by the source.

Excluding contacts before you confirm

While reviewing a destination, click the on any contact to leave it out of this import. Changed your mind? Restore it — nothing is committed until you confirm on the Finalize step. This is an include/exclude choice only; it never moves a contact to a different folder. Long folder lists load 200 contacts at a time when expanded, with a Show 200 more contacts control until every row is available.

info

Saving new contacts requires a callsign on your account (imported contacts carry your callsign for folder naming and export). If yours isn't set, Hamtrax prompts you to add one in Settings → Account before the import runs. A duplicate-only QRZ finish only reconciles remote IDs, so it does not need a callsign.

The folder guardrails always decide

Every protected placement is checked while Hamtrax builds the plan, checked again against the real folder before execution, and checked a third time by the batch-write door that protects normal logging. A contact that fails any check appears under Can't be imported; it is never rerouted into a less-protected folder just to make the import succeed.

Offline imports

ADIF and CSV files can be imported with no internet connection. A QRZ import needs a connection while Hamtrax fetches the remote logbook. Folders and contacts are written to your local database and sync to the cloud when you reconnect.

[SCREENSHOT: General import Review step showing one folder category, its destination cards, and the Back / next-stage controls; companion screenshot of the final Summary with import, duplicate, rejected, and ignored counts, the duplicates explainer line, and per-row skip reasons (exact re-import vs. same-park hunt with park and UTC day)]


Importing a single past activation

Alongside the general importer, Hamtrax keeps a focused path for bringing in one past POTA activation from an ADIF file, with a step to confirm the park before it's filed. The whole session — folder, metadata, and every accepted QSO — comes in as a single activation.

Reach for this one when you have a lone activation's ADIF and want to review its detected park. For a whole logbook, a mix of hunts and activations, or a CSV, use Import any logbook above instead.

info

Importing requires a callsign on your account (imported contacts carry your callsign for folder naming and export). If yours isn't set, Hamtrax prompts you to add one in Settings → Account before the import runs.

Steps

  1. Open the Logbook tab.
  2. In the folder tree, find the Activations category folder and click the Import button that appears below it (alongside New).
  3. Drop your ADIF file (.adi or .adif) onto the drop zone, or click Browse Files.
  4. Hamtrax parses the file and auto-detects:
    • Park reference (e.g. K-1234) — from the most common MY_SIG_INFO field.
    • Activator callsign — from STATION_CALLSIGN or OPERATOR.
    • Date range — from the earliest and latest QSO dates.
  5. Review the park reference. If the file omits MY_SIG_INFO, you'll need to fill it in manually. A park reference is required to enable the import button. Imported activations are filed as POTA activations.
  6. Preview the QSOs. Up to 200 contacts are shown with callsign, date, band, and mode. Larger files show a "+ X more contacts (will be imported, not previewed)" footer — the full accepted set still imports.
  7. Click Import [N] QSOs as Activation to confirm. A progress bar tracks the import.

When the import completes, Hamtrax will have:

  • Created an activation folder in the Activations category, named in the standard callsign@reference-YYYYMMDD format, with POTA session metadata (start/end time, activity type, location reference).
  • Imported every matching QSO into that folder with the activation reference, MY_SIG, and MY_SIG_INFO fields set.
Re-importing is safe

QSOs already anywhere in your logbook are detected and skipped, so bringing in the same activation ADIF twice won't create duplicate contacts — only genuinely new QSOs are added. See Validation and warnings.

[SCREENSHOT: Import Activation modal showing parsed-QSO count, activation-detected banner, and Park Reference field]


Validation and warnings

The general and single-activation importers are conservative — bad records are dropped or normalized at parse time so they don't pollute your log. In the general importer these appear as unreadable records with a reason; in the activation importer the count appears as "N skipped" in the file-info banner, with an expandable Show N skipped records disclosure listing each error's record index and reason.

What gets dropped or normalized:

  • Missing required fields — every record needs CALL, QSO_DATE, and TIME_ON.
  • Invalid date — the QSO_DATE must be a real YYYYMMDD between 1900-01-01 and one year from today. Feb 30, 99999999, year 1776, etc. are marked unreadable before routing.
  • Invalid timeTIME_ON / TIME_OFF must have hours < 24, minutes < 60, seconds < 60. A typo like 250000 is marked unreadable instead of becoming "25:00".
  • Garbled callsign — the instant structural check requires 3–15 characters, only letters, digits, and /, at least one letter and one digit, no empty or repeated-slash segments, no more than four slash-delimited segments, and at least one segment that mixes letters and digits (the base call). This is a fast shape check, not a live callsign-directory lookup.
  • Oversized field — any single ADIF field declared larger than 64 KB drops the whole record. (Real fields don't get anywhere near this; this catches malformed files where a length declaration corrupts the rest of the record.)
  • Frequency out of range — anything ≤ 0 or ≥ 300,000 MHz is normalized to 0 (the BAND field, if present, is still used).

The activation review screen also shows a HEADS UP banner with up to three notices when applicable:

  • Mismatched park / program. If the file contains QSOs whose MY_SIG_INFO points at a different park, or whose MY_SIG is explicitly not POTA, those QSOs are skipped rather than silently re-tagged. The banner shows the count: "N QSOs reference a different park or program and will be skipped."
  • Already in your logbook. QSOs that already exist anywhere in your logbook are skipped, matched on the same canonical identity the general importer uses — callsign, UTC day, time, band, mode, and park references (a QSO with no park of its own is matched against the park you confirm, so it lines up with what an earlier import stamped). The banner shows the count: "N QSOs are already in your logbook and will be skipped."
  • Duplicate collapse. Identical records repeated within the file collapse to one. The banner shows the count: "N duplicates will be collapsed to one."

The Import button always reflects the actual number that will be written, not the raw count parsed from the file.


Offline imports

ADIF and CSV imports work without an internet connection. QRZ import requires a connection while the remote contacts are fetched. Once a plan is confirmed, contacts are saved to your local database and sync to the cloud when you reconnect.

Large files (10,000+ QSOs) parse in a few seconds. General-import destination cards render contacts in user-requested chunks of 200; the single-activation importer caps its preview at 200 rows. The full accepted set imports in both flows.

Getting-started checklist

A user-initiated general or single-activation import completes Import contacts when at least one new contact is added. A duplicate-only import does not complete it, and the automatic public POTA starter import that may run after signup does not count as this hands-on setup step.