POTA — Parks On The Air
Complete in 1.8 (May 2026)
The POTA module is fully built out. Local park DB from pota.app, Activator/Hunter workflow, live spots, self-spotting, map, awards with profile sync, ADIF export per the pota.app spec including multi-park split.
Quick Overview
Activator / Hunter modes selectable when creating a POTA session
Park auto-complete from the official
pota.app/all_parks_ext.csv(~80,000 parks worldwide, local SQLite, one-time ~15 MB download)Multi-park hopping: multiple park refs per session (comma list)
Dual program 🆕: a session can carry additional SOTA, WWFF and/or BOTA refs — the export automatically delivers the file sets of all programs (pota.app, sotadata.org.uk, wwff.co, wwbota.net)
10-QSO activation counter with live display in the QSO form
P2P detection (Park-to-Park): Their Park field with DB lookup
POTA spots feed: live stream from
api.pota.app/spot/activator(polling every 60 s), with filter and CAT QSYSelf-spotting: push a spot straight to pota.app from the QSO form (anonymous, no auth)
POTA Map tab: park pins (tree icon, POTA green) + DX pins + lines park → DX, P2P indicator per QSO
POTA awards in the Awards tab: Activator parks, Hunter parks, P2P count — either locally from the log or live from your pota.app user profile
ADIF conformance:
MY_SIG=POTA+MY_SIG_INFO(official pota.app spec, see ADIF for POTA Technical Reference)STATION_CALLSIGN unification on export — logs with mixed calls (e.g. after reconfiguring WSJT-X) are automatically unified, otherwise pota.app rejects them
Load the Park DB Once
Before your first activation the park DB has to be downloaded:
- Settings → Data → POTA Park Database
- Click "Load Now" → download of
pota.app/all_parks_ext.csv(~15 MB) - Parsing takes ~5–10 sec, after that the database is ready in
~/Documents/HAM-Tools/Cache/parks.sqlite - Refresh reminder after 14 days (the park list keeps growing)
Creating a POTA Session
- Top bar → New Log → POTA Session → opens the POTA wizard
- Pick Activator or Hunter
- Callsign used — important for portable activations!
- Default is your standard call from the Station settings
- For a portable activation abroad: enter the portable call with prefix here (e.g.
IT/HB9HJI/P) - This call is written into the ADIF export as a uniform
OPERATOR+STATION_CALLSIGNacross all QSOs — pota.app requires a single value per log file
- Enter your own park (Activator) — auto-complete searches the park DB, showing country + park name per suggestion
- Optional: hopping parks as a comma list (
K-1234, K-5678) - Optional: dual-program refs 🆕 — if your park is also a SOTA summit, WWFF area (common in Europe) and/or bunker: one field each for
HB/BE-001,HBFF-0123,B/CH-0042(comma lists supported, live validation against the local DBs). Every QSO is then tagged for all programs - Create → the log is created, the POTA form goes active
Keep the Activator call consistent
If you log via WSJT-X over the spot stream and change my_call mid-session there (e.g. from HB9HJI to IT/HB9HJI/P), pota.app rejects the log with "Only a single STATION_CALLSIGN value is supported per log file". Since 1.8.10 the WSJT-X importer overrides this automatically with the call picked in the wizard — even so, it's cleaner to configure the correct portable call in WSJT-X from the start.
Logging a QSO
As soon as a POTA log is active, the QSO panel renders the POTA form:
- Status bar shows UTC · frequency/band · mode · power · log name · my park (e.g.
Activator · K-1234 · United States) - Their Call with QRZ/HamQTH lookup (auto-fill after ~600 ms for NAME, QTH, GRIDSQUARE, COUNTRY, CONT, CQZ, ITUZ)
- Their Park with auto-complete for P2P — park name is shown
- 10-QSO counter bottom right: red up to 9 QSOs, green with an "Activation valid" badge from 10 QSOs on
- Dupe marking: same call+band+mode in the log → orange banner (a pile-up on one frequency stays clearly recognizable)
- Cmd+Return saves the QSO, focus jumps back to the Call field
Self-Spotting
Send a spot to pota.app straight from the POTA form — no DX cluster needed, no authentication:
- Park ref, frequency and mode are set in the form
- Click the spot button (📡) next to the activation counter
- The spot lands immediately on
api.pota.app/spot/and is visible on pota.app + in our app's POTA Spots tab - The button only appears in Activator mode — it reports YOU as the activator on the current frequency. As a hunter you spot heard activators via the POTA Spots tab or directly on pota.app
The source is marked as source=HAM-Tools.
POTA Spots Tab
When a POTA log is active, the lower "DX Clusters" tab automatically switches to the POTA spots feed:
- Polling every 60 sec from
api.pota.app/spot/activator(if the server throttles with HTTP 429, the app backs off automatically) - Filter: band, mode, country prefix (
K,HB,DL…) - "Manual only" toggle 🆕 hides automatic RBN spots
- "ATNO only" toggle hides parks you've already worked
- Sort by time, frequency or spotter
- Copy button fills Activator call + park ref + frequency into the POTA form. When CAT is connected and the QSY toggle is on, the rig jumps to the spot frequency
POTA Map
- Dedicated "POTA Map" tab in the lower tab bar (tree icon)
- Park pins for all park refs of the QSOs in the active log
- DX pins for worked stations with grid resolution
- Lines park → DX optional (toggle in the filter bar)
- P2P indicator in the info popup when clicking a DX pin
- Band filter persistent across app restarts
Awards Tab
The Awards tab has a dedicated POTA sub-tab (automatically selected as soon as a POTA log is active):
- Activator parks: unique refs from
myPotaRef+myPotaRefs - Hunter parks: unique
theirPotaRefvalues - Park-to-Park (P2P): QSOs with both fields set
pota.app profile as source of truth
If you have your email + callsign in the app settings, the POTA Awards tab pulls your public profile from api.pota.app/profile/. That way you see the real standing across devices instead of only what's in the local .htlog file. The profile cache lasts 24 h.
ADIF Export
On ADIF export the following fields are written for POTA QSOs (strictly per the ADIF for POTA Technical Reference):
<CALL:6>DL1ABC <BAND:3>20m <MODE:3>SSB
<OPERATOR:11>IT/HB9HJI/P <STATION_CALLSIGN:11>IT/HB9HJI/P
<MY_SIG:4>POTA <MY_SIG_INFO:6>K-1234
<APP_HAMTOOLS_MY_POTA_REF:6>K-1234
<MY_GRIDSQUARE:6>JN47PN
<SIG:4>POTA <SIG_INFO:6>K-5678 <APP_HAMTOOLS_POTA_REF:6>K-5678
<EOR>MY_SIG=POTA+MY_SIG_INFOfor the Activator (official pota.app spec)SIG=POTA+SIG_INFOfor Hunter/P2POPERATOR+STATION_CALLSIGNare unified across all QSOs to the Activator call picked in the log wizard (1.8.10) — otherwise pota.app rejects the fileAPP_HAMTOOLS_MY_POTA_REF/APP_HAMTOOLS_POTA_REFare proprietary and enable a lossless re-import into HAM-ToolsMY_GRIDSQUAREfrom the app settings (Station tab → grid)
Multi-Park Hopping (Split per Park)
pota.app requires a separate file per park and accepts no comma lists in MY_SIG_INFO. So for a log with multiple park refs the export automatically produces one file per park, in the pota.app filename scheme:
HB9HJI@K-1234 20260518.adi
HB9HJI@K-5678 20260518.adiQSOs are filtered per park (each QSO only gets the park it actually activated), and the multi-ref list is collapsed into a single ref.
Dual Program (POTA + SOTA/WWFF/BOTA) 🆕
Many parks are a WWFF area at the same time (common in Europe), have a SOTA summit or a bunker. Enter the other programs' refs in the log wizard and a single activation covers all programs:
- Every logged QSO is tagged for all programs and counts in all award counters
- The ADIF export writes a separate file set per ADIF program — same QSOs, exactly one
MY_SIGeach:
HB9HJI@K-1234 20260606.adi ← for pota.app
HB9HJI@HBFF-0123 20260606.adi ← for wwff.co
HB9HJI@B-CH-0042 20260606.adi ← for wwbota.net- If the session carries a SOTA ref, the "SOTA CSV…" button appears additionally (sotadata.org.uk requires CSV instead of ADIF) — with the familiar validation sheet
Each file is conformant for its portal — upload them all, done. The same works in every direction: the SOTA, WWFF and BOTA wizards also offer the other programs' fields.
Upload to pota.app
Currently still a manual workflow (auto-upload is on the roadmap for Phase 6):
- In the logbook toolbar of the active POTA log click "pota.app…"
- The sheet shows the generated ADIF files (1 or more for multi-park) — click "Show in Finder" to open the exports folder
- Open a browser to pota.app/page/logger, log in, upload the ADIF
- For multi-park: upload each file separately (the park is detected from the filename)
Known Limitations
- Auto-upload to pota.app not yet implemented — coming with Phase 6 (Cognito SRP auth is the hurdle)
- Park DB refresh is manual — the refresh reminder nudges you, but automatic background sync is not active
Comparison POTA ↔ SOTA ↔ WWFF ↔ BOTA
| Aspect | POTA | SOTA | WWFF | BOTA |
|---|---|---|---|---|
| Activation from | 10 QSOs | 4 QSOs | 44 QSOs | 1 QSO |
| Refs | K-1234, HB-0001 | HB/BE-001 | DLFF-0001 | B/DL-0123 |
| Points | – | 1–10 + winter bonus | – | – |
| Data source | open API | open API | URL + file | open API (WWBOTA) |
| Spots | dedicated (api.pota.app) | dedicated (sotawatch3) | DX cluster filter | DX cluster + DB match |
| Self-spot | ✓ (anonymous) | – (Phase 6) | – | – |
| ADIF tags | standard (MY_SIG=POTA) | standard (MY_SIG=SOTA) | standard (MY_SIG=WWFF) | standard (MY_SIG=WWBOTA) |