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 LogPOTA 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 POTA ↔ SOTA ↔ WWFF ↔ BOTA

AspectPOTASOTAWWFFBOTA
Activation from10 QSOs4 QSOs44 QSOs1 QSO
RefsK-1234, HB-0001HB/BE-001DLFF-0001B/DL-0123
Points1–10 + winter bonus
Data sourceopen APIopen APIURL + fileopen API (WWBOTA)
Spotsdedicated (api.pota.app)dedicated (sotawatch3)DX cluster filterDX cluster + DB match
Self-spot✓ (anonymous)– (Phase 6)
ADIF tagsstandard (MY_SIG=POTA)standard (MY_SIG=SOTA)standard (MY_SIG=WWFF)standard (MY_SIG=WWBOTA)

HAM-Tools © HB9HJI · Funkwelt