Running a weather station for your own benefit is satisfying. Contributing your data to a shared network is something else entirely β€” it turns your backyard instruments into a node in a global observation mesh, visible to forecasters, researchers, and neighbours who want to know if they need an umbrella. The data you publish does not just sit in a database; it fills gaps between official observation sites, improves forecast models through ground truth, and occasionally catches microclimatic events that the nearest airport METAR misses by twenty kilometres.

I have been publishing to Weather Underground, CWOP, and PWSweather since the early days of my station, and added WeatherCloud a few years later when they opened their API. Each platform has its own registration quirks, data format expectations, and community flavour. This guide walks you through setting up all four, so you can decide which networks suit your goals β€” or, more likely, publish to all of them simultaneously, because the cost of doing so is nearly zero once the first one is configured.

For the broader picture of getting your data from station to web, start with the publishing overview. If your publishing pipeline involves FTP uploads to your own site alongside network submissions, the FTP publishing guide covers that workflow.

Quick-Answer Summary

Network Registration Update Method Typical Interval Primary Audience
Weather Underground Web sign-up, station ID assigned HTTP GET to API endpoint 5–60 seconds General public, hobbyists
PWSweather Web sign-up, station ID assigned HTTP GET to API endpoint 1–30 minutes Hobbyists, regional networks
WeatherCloud Web sign-up, device ID + API key HTTP POST or device integration 10 minutes European hobbyists, device ecosystem
CWOP Registration with call sign APRS-IS packet submission 5–15 minutes NWS forecasters, MADIS, researchers

If you want maximum scientific impact, CWOP is the priority β€” its data feeds into NOAA's MADIS quality-control system and is used by National Weather Service forecasters. If you want community visibility and a public-facing map pin, Weather Underground has the largest audience. PWSweather and WeatherCloud round out the portfolio.

Prerequisites

  • A working weather station with software that supports network uploads: GraphWeather, WeeWX, CumulusMX, Ecowitt firmware, or Ambient Weather firmware.
  • An internet connection from the station PC (or gateway device).
  • Station metadata: latitude, longitude, elevation (above mean sea level), and station type (manufacturer and model). Every platform requires these during registration.
  • For CWOP: familiarity with the APRS packet format is helpful but not required β€” most station software abstracts it. The METAR and CWOP basics guide covers the underlying standards.

Weather Underground

Registration

Create a Weather Underground account, then navigate to the "My Weather Station" section and select "Add New Station." You will provide:

  • Station name and location (latitude, longitude).
  • Elevation above sea level β€” this is critical because WU uses it to calculate sea-level pressure from your station pressure. Get it right to within Β±3 metres. A GPS reading is sufficient; a surveyed benchmark is better.
  • Hardware type and indoor/outdoor configuration.

WU assigns you a Station ID (format: KSTATECI123) and an API Key. Both are needed for uploads. Store the API key securely β€” the security guide covers API key management.

Configuration

Most station software has a built-in Weather Underground upload module. The configuration requires:

  • Station ID (e.g., KSTATECI123)
  • API Key (a long alphanumeric string)
  • Update interval (WU accepts updates as frequently as every 5 seconds for RapidFire mode, or every 60 seconds for standard mode)

In WeeWX, the weewx.conf entry looks like:

[StdRestful]
    [[Wunderground]]
        station = KSTATECI123
        password = your_api_key
        rapidfire = true

GraphWeather has a dedicated Weather Underground panel in its publishing settings β€” enter the station ID and key, select the update interval, and enable the upload.

Data Format

WU expects HTTP GET requests to its API endpoint with parameters like tempf (temperature in Fahrenheit), humidity, baromin (pressure in inches of mercury), windspeedmph, and so on. Yes, imperial units. If your station logs in metric, your software must convert before submission. Every major station package handles this conversion automatically.

A typical upload URL looks like:

/weatherstation/updateweatherstation.php?ID=KSTATECI123&PASSWORD=apikey&dateutc=2026-04-10+07:30:00&tempf=54.3&humidity=68&baromin=30.12&windspeedmph=7.8&winddir=225&rainin=0.00&dailyrainin=0.12&action=updateraw

WU responds with success or an error message. If you see INVALIDPASSWORDID, your station ID and API key do not match β€” re-check both.

PWSweather

Registration

PWSweather (now operated under the AerisWeather umbrella) has a straightforward registration process. Create an account, add a station, provide location and elevation, and receive a Station ID and API Key.

Configuration

PWSweather uses a nearly identical API format to Weather Underground β€” the endpoint differs, but the parameter names are the same. Many station packages treat PWSweather as a "clone" of the WU protocol, which means configuration is almost identical.

In WeeWX:

[StdRestful]
    [[PWSweather]]
        station = STATIONID
        password = your_api_key

GraphWeather and CumulusMX both have PWSweather-specific upload options in their publishing settings.

Update Interval

PWSweather does not support RapidFire mode. A 1–10 minute interval is typical. Pushing more frequently than once per minute may trigger rate limiting, though PWSweather is generally lenient.

WeatherCloud

Registration

WeatherCloud uses a device-centric model. Create an account, then register your device (specifying manufacturer, model, and firmware version). WeatherCloud assigns a Device ID and an API Key.

Configuration

WeatherCloud supports two upload methods:

  1. Direct device integration: Some Ecowitt and Ambient Weather gateways have native WeatherCloud support. Enter the Device ID and API Key in the gateway firmware settings.
  2. HTTP POST from station software: WeeWX supports WeatherCloud via a community extension. CumulusMX has built-in support. GraphWeather can be configured to POST to the WeatherCloud API endpoint.

Data Format

WeatherCloud uses its own API format with metric units β€” a refreshing change from WU's imperial-only requirement. Parameters include temp (Β°C Γ— 10, so 22.5 Β°C is sent as 225), hum (percentage), bar (hPa Γ— 10), and similar scaled integers. The scaling catches people β€” if you send raw float values, every reading will be off by an order of magnitude.

Update Interval

WeatherCloud expects updates every 10 minutes. More frequent pushes are silently discarded; less frequent pushes result in gaps on the WeatherCloud dashboard.

CWOP

CWOP (Citizen Weather Observer Program) is the network with the most scientific impact. Data submitted to CWOP feeds into NOAA's Meteorological Assimilation Data Ingest System (MADIS), where it undergoes automated quality control and becomes available to National Weather Service forecasters and researchers.

Registration

CWOP registration involves requesting a call sign. If you hold an amateur radio licence, use your ham call sign. If not, CWOP assigns a CW identifier (format: CW1234 or DW1234 for non-US stations). Submit a registration request with your station coordinates, elevation, and equipment description.

Configuration

CWOP data is submitted as APRS (Automatic Packet Reporting System) packets over the APRS-IS network. Your station software formats the observation into an APRS weather packet and sends it to an APRS-IS server (e.g., cwop.aprs.net on port 14580).

In WeeWX:

[StdRestful]
    [[CWOP]]
        station = CW1234
        server = cwop.aprs.net
        port = 14580
        interval = 600

GraphWeather supports CWOP upload natively β€” enter the call sign in the CWOP publishing panel and set the interval to 10 minutes (600 seconds). CumulusMX also has built-in CWOP support.

APRS Packet Format

A CWOP weather packet looks like this:

CW1234>APRS,TCPIP*:@101230z4836.00N/00230.00E_225/008g015t054r001p010P024h68b10184

Breaking it down:

  • CW1234>APRS,TCPIP*: β€” source call sign, destination, and path.
  • @101230z β€” day and time (UTC).
  • 4836.00N/00230.00E β€” latitude and longitude in degrees and decimal minutes.
  • _225 β€” wind direction (degrees).
  • /008 β€” wind speed (mph, one-minute average).
  • g015 β€” gust speed (mph).
  • t054 β€” temperature (Fahrenheit).
  • r001 β€” rain last hour (hundredths of an inch).
  • p010 β€” rain last 24 hours.
  • P024 β€” rain since midnight.
  • h68 β€” humidity (percent).
  • b10184 β€” barometric pressure (tenths of hPa/mb).

Yes, CWOP uses imperial units for wind and temperature but metric for pressure, and a peculiar hundredths-of-an-inch scale for rain. This is the APRS weather packet standard, inherited from amateur radio conventions. Your station software handles the conversion β€” you should never need to construct these packets by hand.

The METAR and CWOP basics guide unpacks the format in more detail and explains how CWOP data is quality-checked by MADIS.

Data Quality Requirements

CWOP/MADIS runs automated quality control on every submission. Your data may be flagged or rejected if:

  • Position is wrong. Even a single-digit error in latitude or longitude places your station kilometres from its actual location, and MADIS compares your readings against nearby stations. A significant outlier at an incorrect position gets flagged.
  • Pressure is uncorrected. CWOP expects station-level pressure. MADIS applies its own elevation correction. If you send sea-level-corrected pressure, the correction is applied twice, producing obviously wrong values.
  • Temperature is stuck. A sensor reporting the same value for hours triggers a "stuck sensor" flag. This happens with dying thermistors or USB connection drops where the software repeats the last known value.

The station data sanity checks guide covers how to validate your data before it reaches any network, preventing embarrassing rejections.

Comparing the Networks

Feature Weather Underground PWSweather WeatherCloud CWOP
Map visibility Yes, very popular Yes, smaller audience Yes, Europe-focused Indirect (via MADIS)
Data retention Years (varies by plan) Years Years Permanent (MADIS archive)
API access Paid tiers Free/paid tiers Limited free Free (MADIS)
Scientific use Limited Limited Limited Primary purpose
Community Large, global Moderate Growing, Europe-heavy Niche, technically minded
Quality control Basic Basic Basic Rigorous (MADIS QC)

For maximum reach, publish to all four. The overhead is negligible β€” each upload is a single HTTP request or APRS packet, consuming trivial bandwidth and processing time.

Configuring Simultaneous Multi-Network Publishing

Most station software supports multiple simultaneous network uploads:

  • GraphWeather: Each network has its own panel in the publishing settings. Enable all four, configure credentials, and set individual intervals.
  • WeeWX: The [StdRestful] section in weewx.conf supports all four networks as subsections. Enable each one and they all run in parallel.
  • CumulusMX: The "Internet" settings tab has dedicated sections for WU, PWSweather, WeatherCloud, and CWOP.
  • Ecowitt gateways: Support WU, WeatherCloud, and a "Customized" endpoint natively. CWOP requires an intermediary (WeeWX or a custom script).

If you also publish to your own website via FTP, the uploads run alongside network submissions without conflict. The FTP publishing guide covers that parallel workflow.

Troubleshooting Rejected Uploads

Weather Underground: "INVALIDPASSWORDID"

The station ID and API key do not match. Re-copy both from your WU account settings. Note that the API key is case-sensitive.

PWSweather: No Data Appearing

PWSweather can take up to 30 minutes to display the first data point after registration. If data is still missing after an hour, check the API response β€” a 200 OK response means the data was accepted; anything else indicates a parameter or authentication error.

WeatherCloud: Values Off by 10Γ—

You are sending unscaled values. WeatherCloud expects integers scaled by 10 (temperature Γ— 10, pressure Γ— 10). Check your software's WeatherCloud configuration for a "scaling" or "multiplier" option.

CWOP: Station Not Appearing on Map

New CWOP registrations take 24–48 hours to propagate through MADIS. If your station still does not appear after two days, verify the APRS packet format using the APRS-IS raw feed viewer, and confirm your call sign was accepted during registration.

Common Mistakes

  1. Wrong station ID format. WU uses KSTATECI123, CWOP uses CW1234 or a ham call sign. Entering a WU ID in the CWOP configuration (or vice versa) is a surprisingly common error.

  2. Pushing too frequently. WU RapidFire allows 5-second updates. CWOP and WeatherCloud do not. Pushing CWOP data every 30 seconds clutters the APRS network and may get your call sign flagged. Stick to 10-minute intervals for CWOP and WeatherCloud.

  3. Forgetting elevation for pressure correction. If your station reports sea-level pressure but the network expects station pressure (or vice versa), your barometric readings will be systematically wrong. WU expects station pressure; CWOP expects station pressure. Check each network's documentation.

  4. Not validating data before publishing. A stuck sensor or a miscalibrated rain gauge does not just affect your own records β€” it injects bad data into shared networks. Run the checks in the station data sanity checks guide before enabling network uploads.

  5. Reusing API keys across networks. Each network issues its own key. Do not try to use a WU key on PWSweather β€” the formats may look similar but the authentication systems are independent.

Related Reading

FAQ

Can I publish to all four networks from a single station simultaneously? Yes. Every major station package (GraphWeather, WeeWX, CumulusMX) supports concurrent multi-network publishing. The uploads are independent β€” a failure on one network does not affect the others.

Do I need a ham radio licence for CWOP? No. Non-licensed operators receive a CW or DW prefix call sign. A ham licence is only needed if you want to use your existing amateur call sign.

Which network should I prioritise if I can only choose one? CWOP, if scientific contribution matters to you β€” your data enters the NOAA pipeline. Weather Underground, if you want the largest public audience and a visible map pin. The effort difference between one and all four is minimal, though, so there is little reason to limit yourself.

How do I know if my CWOP data is passing quality control? MADIS provides a station data quality page where you can look up your call sign and see which observations passed, which were flagged, and why. Common flags include spatial consistency (your reading is an outlier compared to neighbours) and temporal consistency (a sudden jump that looks like a sensor glitch).

Will publishing to multiple networks use significant bandwidth? No. Each upload is a single HTTP request (a few hundred bytes) or APRS packet. Even publishing to all four networks every 5 minutes uses less than 1 MB per day. It is negligible compared to a single webcam image upload.