Integrations · Zoho CRM

Storm leads in your Zoho CRM pipeline

Minutes after NOAA radar confirms hail in your territory, a lead lands in Zoho CRM — hail size, county, and a link to every affected property. Zoho can catch the storm directly through Zoho Flow, with no third-party tool in between.

RADAR VERIFIES A STORM → SWATH POSTS TO YOUR WEBHOOK → ZOHO CRM 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

Get a webhook URL to give Swath

Path A · Zoho Flow — Zoho's own automation tool, no middleman

  1. Open Zoho Flow and click Create Flow
  2. Choose the Webhook trigger
  3. Set the payload type to JSON — that's what Swath sends
  4. Flow generates a unique webhook URL; copy it for step 3

CHECK YOUR PLAN: Zoho Flow is a separate Zoho product from Zoho CRM, bundled with some Zoho suites and sold on its own otherwise. If you don't have Flow, Path B works on any Zoho plan.

Path B · Zapier — works without Zoho Flow

  1. In Zapier, click Create Zap
  2. Trigger app: Webhooks by Zapier → event: Catch Hook
  3. Zapier shows a unique webhook URL — copy it; that's the URL for step 3
  4. Leave the Zap open; you'll add the Zoho CRM action in step 5

Catch Hook is a Zapier premium trigger, so it needs a paid Zapier plan. A native Swath app for Zapier is built and headed for the directory — until it's live, Webhooks by Zapier does the same job with one extra copy-paste.

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

These tools map fields from a request they have 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
}'

The sample then shows up as the test record, and you map from its fields. 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 (Zoho Flow): add a Zoho CRM → Create Record action, choose the Leads module, and map the fields Flow captured from your test:

  • Lead name from county + mesh_in, e.g. "Storm — Dallas, TX — 1.75″ hail"
  • report_url into a custom field or the description — that's the property list
  • Optionally branch on county to assign the right owner

Path B (Zapier): same idea with a Zoho CRM action step instead.

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. Zoho Flow 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}.

Zoho steps verified against Zoho Flow's trigger documentation (webhook trigger, JSON payload type) as of July 27, 2026. Swath itself has no Zoho CRM-specific code — a monitor posts to whatever webhook URL you give it, which is why this page is instructions rather than a connector. Vendors rename menus periodically; if a label here doesn't match your screen, look for the inbound-webhook trigger. Webhook payload fields on this page are copied verbatim from the Swath dispatcher and stay current with the docs.