Skip to content

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 QSY

  • Self-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:

  1. Settings → Data → POTA Park Database
  2. Click "Load Now" → download of pota.app/all_parks_ext.csv (~15 MB)
  3. Parsing takes ~5–10 sec, after that the database is ready in ~/Documents/HAM-Tools/Cache/parks.sqlite
  4. Refresh reminder after 14 days (the park list keeps growing)

Creating a POTA Session ​

  1. Top bar → New Log → POTA Session → opens the POTA wizard
  2. Pick Activator or Hunter
  3. 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_CALLSIGN across all QSOs — pota.app requires a single value per log file
  4. Enter your own park (Activator) — auto-complete searches the park DB, showing country + park name per suggestion
  5. Optional: hopping parks as a comma list (K-1234, K-5678)
  6. 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
  7. 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:

  1. Park ref, frequency and mode are set in the form
  2. Click the spot button (📡) next to the activation counter
  3. The spot lands immediately on api.pota.app/spot/ and is visible on pota.app + in our app's POTA Spots tab
  4. 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 theirPotaRef values
  • 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_INFO for the Activator (official pota.app spec)
  • SIG=POTA + SIG_INFO for Hunter/P2P
  • OPERATOR + STATION_CALLSIGN are unified across all QSOs to the Activator call picked in the log wizard (1.8.10) — otherwise pota.app rejects the file
  • APP_HAMTOOLS_MY_POTA_REF / APP_HAMTOOLS_POTA_REF are proprietary and enable a lossless re-import into HAM-Tools
  • MY_GRIDSQUARE from 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.adi

QSOs 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_SIG each:
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):

  1. In the logbook toolbar of the active POTA log click "pota.app…"
  2. The sheet shows the generated ADIF files (1 or more for multi-park) — click "Show in Finder" to open the exports folder
  3. Open a browser to pota.app/page/logger, log in, upload the ADIF
  4. 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 of the Seven Award Programs ​

AspectPOTASOTAWWFFBOTALLOTAWCAGMA
Activation from10 QSOs4 QSOs44 QSOs1 QSO10 QSOs50 QSOs*4 QSOs*
RefsK-1234HB/BE-001DLFF-0001B/DL-0123CL-0001HB-00003DA/AL-001
Points✗1–10 + winter bonus✗✗✗✗per summit
Data sourceopen APIopen APIURL + fileopen APIopen APIGMA bundleGMA bundle
SpotsdedicateddedicatedDX cluster filterDX + DB matchdedicatedDX + DB matchdedicated
Self-spot✓ (anonymous)– (phase 6)––✓ (+ AutoSpot)––
ADIFstandardstandardstandardMY_SIG=WWBOTAMY_SIG=LLOTAMY_SIG=WCAMY_SIG=GMA

* hint/counter, no hard block.

HAM-Tools © HB9HJI · Funkwelt