Integrations · HubSpot

Storm leads in your HubSpot pipeline

Minutes after NOAA radar confirms hail in your territory, a storm record lands in HubSpot — hail size, county, and a link to every affected property. Two honest paths: Zapier (works on every HubSpot tier) or HubSpot's native webhook trigger (needs Operations Hub — now sold as Data Hub — Professional or Enterprise).

RADAR VERIFIES A STORM → SWATH POSTS TO YOUR WEBHOOK → HUBSPOT FILES THE LEAD
1

Get a free Swath key

Sign up at swathapi.com/signup — one email field, no credit card. Your key (it starts with sk_) comes back instantly and is shown once, so paste it somewhere safe. The free plan includes 100 credits a month; storm webhooks themselves cost nothing.

2

Pick your path and copy a webhook URL

Path A · Zapier — works on every HubSpot tier

  1. In Zapier, click Create Zap
  2. Trigger app: Webhooks by Zapier → event: Catch Hook (this is a Zapier premium trigger — it needs a paid Zapier plan)
  3. Zapier shows a unique webhook URL — copy it; that's the URL for step 3

A native Swath app for Zapier is built and headed for the Zapier directory — until it's live, Webhooks by Zapier does the same job with one extra copy-paste.

Path B · HubSpot's native webhook trigger — Operations Hub / Data Hub Pro or Enterprise

  1. Go to Automation → Workflows and click Create workflow
  2. In the trigger panel, expand Custom events & external events and choose Received a webhook from an external app
  3. Click + Add a webhook, name it (e.g. "Swath storm alert"), and continue — HubSpot generates a unique webhook URL; copy it

HONEST CAVEAT: HubSpot's native webhook trigger only enrolls existing records whose unique property matches a value in the payload — it cannot create a new contact or deal from a storm. It fits teams that keep a standing "territory" or "market" record per area. If you want each storm to create something new in HubSpot, use Path A. (It also accepts JSON bodies only — Swath sends application/json, so that part just works.)

3

Tell Swath to watch your territory

Path A · Ask your AI — no code, recommended

Connect Swath to Claude or ChatGPT first (a 2-minute paste-one-URL setup — steps here), then say:

Create a Swath storm monitor covering [YOUR COUNTY OR CITY] for hail 1 inch and up.
Use this webhook URL: [PASTE THE WEBHOOK URL FROM STEP 2]. Name it "[TERRITORY NAME]".

The AI draws the box around your territory, creates the monitor, and confirms. Ask it to save the webhook_secret it gets back.

Path B · Or paste this in any terminal

curl -X POST https://swathapi.com/v1/monitors \
  -H "Authorization: Bearer sk_YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{
    "name": "My territory",
    "bbox": [-97.5, 32.5, -96.4, 33.3],
    "hail_min_in": 1.0,
    "webhook_url": "PASTE_THE_WEBHOOK_URL_FROM_STEP_2"
  }'

Swap in your sk_ key and the webhook URL from step 2. The bbox is the [west, south, east, north] corners of a box around your territory — the example roughly covers Dallas–Fort Worth. The response includes a webhook_secret, shown once — save it.

4

Send a test storm so the fields get mapped

Both Zapier and HubSpot map fields from a request they've actually seen — and you can't make it hail on demand. Send a realistic sample to your webhook URL: either ask your AI ("Send a test POST to [the webhook URL] with this exact JSON: …") or paste this in any terminal:

curl -X POST "PASTE_THE_WEBHOOK_URL_FROM_STEP_2" \
  -H "content-type: application/json" \
  -d '{
  "event": "storm.verified",
  "storm_id": "sw_db69f3ae",
  "monitor_id": "mon_1a2b3c4d",
  "type": "hail",
  "mesh_in": 1.75,
  "wind_mph": null,
  "verified_at": "2026-07-24T19:42:00Z",
  "county": "Dallas, TX",
  "swath_geometry_url": "/v1/swaths/sw_db69f3ae/geometry",
  "report_url": "/v1/swaths/sw_db69f3ae/properties",
  "parcels_in_swath_est": null
}'

Zapier: the test shows up as the sample record — use its fields when you add HubSpot action steps.
HubSpot native: the payload appears under Review your test event; map each field by setting a HubSpot property label and a Data type (map verified_at as a string — HubSpot asks for datetime values as strings here).

Every field Swath sends, and what it means:

FieldWhat it is
eventAlways storm.verified — the only event Swath sends today
storm_idThe storm's permanent ID, e.g. sw_db69f3ae
monitor_idWhich of your territories it hit, e.g. mon_1a2b3c4d
typehail or wind
mesh_inLargest radar-measured hail in the swath, in inches (null on wind events)
wind_mphPeak measured wind, mph (null on hail events)
verified_atWhen radar confirmed it, UTC — e.g. 2026-07-24T19:42:00Z
countyCounty the swath centers on — e.g. Dallas, TX (null only offshore / outside the US)
swath_geometry_urlPath to the storm's shape on a map: /v1/swaths/{storm_id}/geometry
report_urlPath to the affected-property list: /v1/swaths/{storm_id}/properties
parcels_in_swath_estReserved for a future estimate — currently always null
5

Finish the automation

Path A (Zapier): add HubSpot action steps to the Zap — typical recipe:

  • Create Record (deal or ticket) — title it from county + mesh_in (e.g. "Storm — Dallas, TX — 1.75″ hail") in your storm pipeline
  • Create Task — "Pull the Swath Report and work the list", assigned to the territory rep
  • Optionally a Slack or email step so the team hears about it instantly

Path B (native): the workflow runs against the enrolled record — add actions like setting storm properties, creating tasks, or internal notifications.

HONEST NOTE: the webhook is the storm, not a homeowner list — you get one new record per verified storm, with hail size and county. The leads live behind report_url: the Swath Report lists every affected property with the hail size measured at that address (billed per property — ask for a quote first). Easiest pull: ask your AI "Pull the Swath Report for storm sw_… and give me a CSV."

The fine print (plain English)

One storm, one POST. Each verified storm that crosses a monitor produces exactly one webhook to that monitor — no duplicates. If your endpoint is down, Swath retries with increasing delays.

Every POST is signed. Swath adds an X-Swath-Signature header (t=<unix>,v1=<HMAC-SHA256>, keyed by the webhook_secret you got when the monitor was created) plus X-Swath-Event: storm.verified. HubSpot (and Zapier) doesn't check signatures on inbound webhooks — that's normal for this kind of setup; the long, unguessable webhook URL is the gate.

Turning it off. Delete the monitor any time — ask your AI ("delete my Swath monitor") or call DELETE /v1/monitors/{id}.

HubSpot steps verified against the HubSpot Knowledge Base — Set 'When a webhook is received' workflow triggers — as of July 24, 2026, including the Operations Hub / Data Hub Professional-or-Enterprise requirement and the existing-records-only enrollment limit. HubSpot renames hubs and menus periodically; if a label here doesn't match your screen, look for the webhook-received trigger under external events. Webhook payload fields on this page are copied verbatim from the Swath dispatcher and stay current with the docs.