Settings saved.

'; } $tab_labels = [ 'general' => 'General', 'sota' => 'Summits (SOTA)', 'pota' => 'Parks (POTA)', 'display' => 'Display', 'lookup' => 'Callsign Lookup', 'developer' => 'Developer', 'cache' => 'Cache', ]; $default_program = get_option('sota_default_program', 'sota'); ?>

Activator ToolkitActivator Toolkit Settings

Created by KI6CR. Version

What This Plugin Does

Activator Toolkit turns the files from a radio activation into a ready-made section of a WordPress post. Add the Activator Toolkit block to a post, choose a mode, upload your files, and the plugin builds the maps and tables for you.

Summits on the Air (SOTA) mode
Upload a GPX track and a SOTA CSV or ADIF log. You get an interactive map of your hike with the activation zone, an elevation chart, hiking and activation statistics, a contact table, and a map of everyone you worked. Summit-to-Summit (S2S) contacts are highlighted.

Parks on the Air (POTA) mode
Upload your POTA ADIF log. You get a map of every station you worked, with lines back to your park, plus a contact table. Park-to-Park (P2P) contacts are highlighted, and activations from several parks at once are supported.

Station locations come from grid squares in your log or from callsign lookups, and are saved so the map shows where each station was at the time of your activation.

Default Mode

New blocks start in
This is the mode a new block starts in. You can flip any individual block between SOTA and POTA using the toggle on the block itself. Existing SOTA posts are not affected.

Where To Find Things

Summits (SOTA): activation zone, GPX statistics, units, hike map layer, S2S colors.
Parks (POTA): P2P colors and notes on how POTA logs are read.
Display: headlines, colors, contact map, and block width (both modes).
Callsign Lookup: how contact locations are found (both modes).
Developer and Cache: troubleshooting tools.

Activation Zone

How Hiking vs. Activation Time is Calculated:
The plugin looks for the activation zone in this order:
1. SOTLAS (most detailed): Terrain-based boundaries at roughly 1 meter detail, from sotl.as. SOTLAS is still adding associations, so a summit without a boundary today is checked again after 30 days.
2. Activation.Zone: Terrain-based boundaries from activation.zone (by N6ARA), at lower detail. Used when SOTLAS has no boundary for the summit.
3. Radius circle: A simple circle around the highest GPS point. Used if neither service has a boundary, or if terrain lookups are turned off.

Both services follow the 25m vertical drop rule. You can force a specific source for a single post in the block's Statistics Overrides.

All time spent within the activation zone counts as activation time (regardless of movement). All other time counts as hiking time, with rest breaks shown as a sub-note.

Use Terrain-Based Zones />
Look up SOTLAS and Activation.Zone boundaries. If turned off, or if neither has a boundary, the radius circle is used.
Activation Zone Radius meters
Used when no terrain-based boundary is found or terrain lookups are turned off (default: 50m)

Display & Units

Show GPX Statistics />
Display hiking time, activation time, and other statistics
Unit System
Choose how distances and speeds are displayed
Default Map Layer
Which base map layer loads by default on the GPX track map

Track Analysis

Rest Break Threshold minutes
Minimum duration to count as a rest break. Short stops (photos, water) won't count. (default: 3 min)
Stationary Speed Threshold km/h
Speed below this is considered stationary (default: 0.3 km/h)

Summit-to-Summit (S2S) Highlighting

S2S Background
S2S Text

How POTA Mode Works

Your log file does the work. Upload the ADIF (.adi or .adif) log you submit to pota.app. The plugin reads your park reference from the log (the MY_SIG_INFO field) and finds each park’s location from the official POTA database.
Several parks at once: if you activated more than one park from the same spot, all of them are shown, and distances are measured from the first park.
Park-to-Park (P2P): when a contact logged their own park, their dot is placed at that park and the contact is highlighted in the table.
No activation zone: POTA does not publish park boundaries, so each park is shown as a single pin at its official location.
Everything else: headlines, colors, block width, and callsign lookups are shared with SOTA mode and live on the Display and Callsign Lookup tabs.

Park-to-Park (P2P) Highlighting

P2P Background
P2P Text

Headlines

GPS Track Headline (SOTA)
Contacts Headline
Map Headline

Colors

Background
Text
Transparent BG />
Use Theme Font />

Contact Map

Show Contact Map />

Block Width

Width px
Choose a fixed pixel width, or use Wide/Full page width to use WordPress alignment classes that break out of the content column.

How Contact Locations Are Determined

How the plugin figures out where each contact was located:
1. Summit-to-Summit (S2S) or Park-to-Park (P2P): if the log shows the other station was also on a summit or in a park, the plugin uses that summit’s or park’s official coordinates. No lookup needed.
2. Grid square in log file: if your logging app recorded a Maidenhead grid square for the contact (common in ADIF/.adi files), the plugin plots directly from that. No lookup needed.
3. Grid square in Comments: if you typed a grid square into the comments field of your log, the plugin uses that instead.
4. Callook.info: free automatic lookup for US callsigns using FCC data. No account or configuration needed.
5. HamQTH: free lookup for international callsigns. Requires a free HamQTH account (see below).
6. QRZ.com: international lookup. Requires a paid QRZ XML subscription (see below).

Once a location is found it’s saved permanently. The address at the time of your activation is kept intentionally. If they’ve moved since, the cached location is still the historically accurate one.

Callook.info ✓ Free, no account needed

Callook.info serves US callsigns from FCC data. It runs automatically for every contact, with no configuration needed. Non-US callsigns fall through to HamQTH or QRZ.

HamQTH Free account required

HamQTH Username
Your HamQTH.com callsign. Register free at HamQTH.com. No paid subscription required. Provides international callsign location data.
HamQTH Password
Your HamQTH.com password. Leave blank to keep the current saved password.

QRZ.com Paid XML subscription required

QRZ Username
Your QRZ.com callsign. Requires a QRZ XML subscription. A free QRZ account does not include XML access. Learn more at QRZ.com.
QRZ Password
Your QRZ.com password. Leave blank to keep the current saved password.

Debug Mode

Debug Mode (admin only) />
Shows technical debug panels visible only to logged-in admins. Safe to leave on without affecting public visitors. Enables two panels:
• GPX stats page: API response details, polygon vertex count, points-in-zone count, and speed ranges (SOTA mode)
• Contact map: summit or park lookup result, contacts resolved, per-contact location source, and lines-drawn count
Debug Mode (public) />
Same debug panels as above but visible to all visitors. Use temporarily when testing while logged out. Disable when done.
prefix . 'sota_magic_locations'; // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared $sota_cache_table_safe = esc_sql( $sota_cache_table ); $sota_cached_entries = $wpdb->get_results( "SELECT cache_key, lat, lon, source, cached_at FROM {$sota_cache_table_safe} WHERE source NOT IN ('sota','pota') ORDER BY cache_key ASC" ); // phpcs:ignore PluginCheck.Security.DirectDB.UnescapedDBParameter -- table name sanitized via esc_sql() // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared $sota_cache_count = count( $sota_cached_entries ); ?>

When your contact map loads, the plugin looks up each callsign’s location via QRZ, Callook, or HamQTH and stores the result locally. Locations are cached permanently so the map reflects where each station was at the time of your activation, even if they’ve moved since. Summit and park coordinates are cached separately for 90 days and are not listed here.

✓ Changes on this page take effect immediately. No Save button needed. Deleting an entry or clearing all cached locations happens the moment you click.

Cached Callsign Locations

callsign location(s) cached.

0 ) : ?>

'Callook', 'hamqth' => 'HamQTH', 'qrz' => 'QRZ' ]; foreach ( $sota_cached_entries as $sota_entry ) : $sota_callsign = preg_replace( '/^(loc_|qrz_)/', '', $sota_entry->cache_key ); $sota_cached_date = $sota_entry->cached_at ? gmdate( 'Y-m-d', strtotime( $sota_entry->cached_at ) ) : '-'; ?>
Callsign Source Lat / Lon Cached
source ] ?? $sota_entry->source ); ?> lat, 4 ) ); ?>, lon, 4 ) ); ?>

No callsign locations are currently cached.


Clear All Cached Locations

⚠ Nuclear option: Wipes all cached callsign locations site-wide. The next time any contact map loads, every contact without a grid square or summit/park reference will trigger a fresh lookup. Only use this if you believe cached locations are incorrect.