Duplicates and the Import Summary
The source summary at the end of Select, the half of Review that How Imported Contacts Are Filed does not cover — Review's Finalize stage — and the Finalize step that follows it: what Hamtrax throws away before you ever see it, what you can throw away yourself, and what the finish screen says happened.
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 both program-qualified references.
-
Repeat contacts within the same program — Hamtrax compares the contacted station, program-qualified reference, and UTC day, plus the band, mode, or time required by that program's duplicate rule. An explicit record under another program remains separate even when its reference text matches. Contacts from your own activations (park-to-park) are never collapsed this way.
Each program has its own rule for repeat contacts. POTA counts one contact per park per UTC day no matter the band or mode, so a second one is a duplicate. DXCC credit is counted per band and per mode, so working the same country on 20m and again on 40m is two separate achievements — Hamtrax keeps both, and only collapses a DX contact when the contacted station, entity, UTC day, band, and mode all match. Repeaters go one step further and count every QSO: chatting through the same repeater three times in an afternoon is three real contacts, so only an identical re-log — same station, same repeater, same day, band, mode, and time — is treated as a duplicate. In practice that means re-importing a file is still safe, while nothing you genuinely worked twice is thrown away.
Each contact is checked twice over: once exactly as your file spells it, and once as Hamtrax will store it. Those two can differ. A DX contact another logger recorded with nothing but a country name or a DXCC number arrives without the DX identity Hamtrax stamps on it while filing it under DX Chasing, so on a re-import the row in your file and the contact in your logbook no longer look alike. Checking both is what lets Review recognize those contacts as ones you already have and count them with the rest of the duplicates, before you confirm rather than after.
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.
All of that reads the copy of your logbook on this device. On a device that has never finished loading it, Hamtrax stops the import and asks you to connect and retry rather than reading an empty copy as an empty logbook — see ② Duplicates.
Every record is accounted for
Nothing is dropped silently. Select's always-visible We found X contacts summary accounts for the source before Review, Review's own Finalize stage accounts for the whole import in the moment before you commit it, and the finish summary accounts for exclusions and filing outcomes afterward. PoLo operation and timeline events are metadata rather than contacts, so they are intentionally excluded from contact totals:
- To import — ready to be filed into its reviewed folder when you confirm.
- Unreadable — stopped during parsing because a required value is missing or structurally invalid. The source summary shows N unreadable with a Show parse notes disclosure and the reason for each. Only records that produced no contact are counted: a record Hamtrax recovered and imported anyway is listed there as a note, but never counted as unreadable. The count beside the heading is always the true total.
- 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. This is decided before anything is written, which is why you see it in the review rather than after.
- Excluded — anything you removed yourself (below).
Skipped contacts that share the same reason are listed together on one line, naming the first few callsigns with and N more standing in for the rest, so a file with two hundred duplicates is a handful of readable lines rather than two hundred copies of one sentence. The count beside the reason is always the true total. Reasons only group when they are genuinely identical — "already hunted at US-0001" never merges with the same sentence about a different park.
Review's Finalize stage
Finalize is the last stage of Review — it shares its name with the Finalize step that follows, where the import actually runs — and it answers the whole import in four counts before you commit to it:
- found — every contact read out of your source. This is the same total Select headlined as We found X contacts, so the number you started from is the number you finish Review with.
- to import — what will actually be filed: everything routed, minus anything you excluded.
- won't be imported — duplicates, contacts that can't be imported, and contacts you excluded, added together.
- new folders — how many folders this import will create. A folder it only adds contacts to isn't counted here, because it already exists.
All four are shown even when they are zero. This is the one screen that reports the run as a whole, so "0 won't be imported" is an answer worth reading, not a blank to skip.
When won't be imported is above zero, a single line beneath the tiles breaks it down — N duplicates, N rejected, N excluded — and a reason at zero stays off that line. The full Duplicates and Can't be imported lists sit below it with the reason for every contact.
When nothing can be imported, the stage says so instead of offering a button. If to import reads 0, an orange warning triangle and Nothing to import lead the four tiles, and there is no Import button at all — the slot beside the title stands empty rather than holding a control you cannot press. A panel beneath the tiles names the cause in plain words: Everything here is already in your logbook, No contact could be filed, You excluded every contact, Nothing could be read from this file, or Nothing left to import when it is a mix of those. Back is still there: step back into a folder stage to restore contacts, or return to Select for a different source. A QRZ Logbook import is the one exception — with nothing new to write it still finishes, so the duplicates' remote ids can be reconciled onto the contacts you already have.
Unreadable records appear in none of the four. They never became contacts, so they are accounted for on Select, where the parse notes that explain them live.
Once you confirm, the finish screen accounts for the file once more. Every count there is named for what became of a contact, never for the step that worked it out:
- Imported — the contact is yours. It is in your logbook and on its way to every device you sign in on, and there is nothing here for you to do.
- Duplicates skipped — you already had it, either in your logbook or repeated inside the file. Hamtrax checks again as each contact is saved, and one caught by that second look is counted here too: a duplicate is a duplicate whichever check notices it, and it is never reported as something going wrong.
- Refused — sent, and your logbook wouldn't take it where it was headed. The finish screen uses the same contact identity, plain explanation, and outcome as Needs Filing. It is a read-only summary; actionable rows direct you to the Logbook's one recovery flow. If the destination folder was the thing that was refused, the contact says so by name instead of quoting a rule about a folder that doesn't exist.
- Failed before filing — something actually went wrong on this device: the local save or its durable sync command failed, so the contact was never sent to the cloud. Hamtrax rolls back a local row whose command could not be queued and lists the exact contact separately; it never calls that a cloud refusal, and never counts a contact you simply already had.
The title tells you which of those you are looking at before you read a single number. Import complete means the whole file came in. Import complete — some contacts need attention means at least one contact was refused or failed, and those are listed directly beneath it. A file of contacts you already have finishes on the plain title too — nothing came in, but nothing needs you either.
You can leave the page as soon as the summary appears. If your logbook turns a contact away after you have gone, it is not lost — it waits for you under Logbook → Needs Filing, the same list the finish screen reads.
The counts describe what became of the contacts in your file, not the raw number of rows returned by the source.
Only the counts that have something to say are shown. A number at zero is left off the finish screen, so a clean import reads as a single imported tile instead of one real number beside four zeros. Imported always appears, even at zero, because it is the question the screen exists to answer — and a count above zero is never hidden, which is the same rule the Select source summary follows. Review's Finalize stage is the deliberate exception: its four tiles are the stage, so all four speak even at zero. Records the file was unable to yield at all stay visible here as unreadable, so a ten-row file that imported six still tells you what happened to the other four.
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 Review's Finalize stage. 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 N more contacts control until every row is available. The read-only table behind See Contacts in Custom Folders — Unrecognized is the one exception: it only lists the contacts Hamtrax could not file, with no ✕ of its own. Give that stage a destination and the folder rows it reveals carry the usual per-contact controls.
Choosing I'll folder these myself (next) on a suggested folder does not exclude its contacts; they move to Custom Folders — Unrecognized. That stage's Exclude from import card excludes all its remaining contacts and goes straight to Review's Finalize stage, preserving the choices in earlier stages. Excluding every contact in a folder stage keeps it available: choose Back, open its contacts, and restore any you want to keep. Unrecognized recovers as a whole instead — choose Back, then I'll folder these, and every contact in the stage comes back. The Unrecognized guide explains how to include and organize them instead.
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 asks for it as soon as your file is read, over the Select source summary — and takes it right there. Your file already names its operator on every record, so the prompt usually arrives with that callsign filled in and reads "Is this your callsign?"; confirm it and you return to that summary with the file and routing intact. It runs the same callbook check as Settings, so only a confirmed callsign saves, and saving one re-routes the plan — activation folders are named from your account callsign. If the fallback prompt is raised later at confirmation, saving returns you to Review with its choices intact. Add it in Settings instead is still there if the callbook genuinely can't find you. A duplicate-only QRZ finish only reconciles remote IDs, so it does not need a callsign.
Every protected placement is checked while Hamtrax builds the plan, checked again against the real folder before execution, checked a third time by the batch-write door that protects normal logging, and checked a fourth time by your logbook in the cloud — the only one of the four that judges the folder your account actually holds rather than the one this device worked out. A contact that fails any of the first three appears under Can't be imported; one the cloud turns away appears under Refused by the cloud on the finish screen and under Needs Filing in your Logbook. Neither is ever rerouted into a less-protected folder just to make the import succeed.
[SCREENSHOT: Select's second substep with the static centered We found X contacts heading, centered count rows, top Back to import options control, and bottom Next button. General import Review showing a program stage with its Auto-organized sublabel, then Custom Folders with the Manually organized sublabel as regular folder rows with full editable names, independent Create this folder / I'll folder these myself (next) dropdowns, counts, latest-contact dates, and expandable contacts. Include separate year/month/session rows and a muted manual row. Show Custom Folders — Unrecognized in three separate frames, because only one pair of cards is ever on screen there — never more than one pair in one frame. First frame: the warning triangle, the large unfoldered-contact count above We don't know where to put these, See Contacts, and the two unchosen decision cards below it — I'll folder these with a circular folder-icon tile and Exclude from import with a circular no-entry tile, each above its one-line explanation, side by side on a wide screen and stacked on a narrow one — with no folder rows or Next. Include the read-only contact table that See Contacts opens — no Action column and no per-row ✕. Second frame: the same space after I'll folder these, with the decision pair gone and Group together (circular archive-box tile) and Multiple Folders (circular two-squares tile) standing in its place — the same card shape and one-line explanations as the pair they replaced, side by side on a wide screen and stacked on a narrow one, with nothing revealed below them. Third frame: the same space after Group together, with the grouping pair gone in its turn and New folder (circular folder-plus tile) and Existing folder (circular open-folder tile) standing in its place, the same card shape and one-line explanations again. The second and third frames also carry the back chevron in the card's top-left corner and no Back beside the review title; the first frame has neither. Show it with New folder chosen and no naming field of its own beneath it, above the single folder card that carries the name and its edit folder name control, plus a frame of that name mid-edit as a focused input on the card; a second state with Existing folder chosen and nothing picked yet, showing the saved-custom-folder dropdown below the pair reading Choose a folder, with no folder card and no Next on screen; and a third state after picking a folder from that dropdown, where its card and Next appear. This third frame needs a logbook that already has a custom folder — with none saved, the step is skipped and the grouping pair stays on screen. Then a chosen Multiple Folders card carrying the accent border and tint, with its shared Folder name prefix field and By month / By year / By band / By mode as plain buttons beneath that pair, and a chosen dimension with folder previews, per-contact ✕ controls, and Next. Show Back and any available Next beside the centered review counter and title, with no page-level Back button or footer action row; companion screenshots of Review's Finalize stage showing its four centered tiles — found, to import, won't be imported, new folders — with Import replacing Next in that same slot beside the title — capture a narrow-width Finalize frame too, since that button no longer drops below the title there; and one blocked frame — every contact a duplicate — where the slot beside the title is empty, an orange warning triangle and Nothing to import sit centered above the four tiles, and Everything here is already in your logbook explains it below them: one frame after bulk exclusion, where won't be imported is above zero and the itemized N duplicates / N rejected / N excluded line sits beneath the tiles, and one clean-import frame where won't be imported and new folders read 0 with no reason line at all and the finish screen with its tiles — only the non-zero ones appear, plus imported — under the plain Import complete title; a re-import frame of that same plain title where duplicates skipped carries nearly the whole file and no warning appears; then a second frame of the same screen titled Import complete — some contacts need attention, with its orange warning triangle and the Refused by the cloud section beneath it, the duplicates explainer line, and grouped skip reasons. Contacts skipped for the identical reason share one line naming the first few callsigns plus "and N more". Include an exact re-import and a program-specific repeat-contact reason — POTA names the park reference and UTC day, DX names the band, mode, and UTC day; an identical repeater re-log shows the neutral exact re-import reason.]