The Call Center Doctors Logo Get Started

Free Embed

Put a live hail map on your roofing website.

One iframe. No key, no account, no script to install, no bill. It renders recent hail reports from the National Weather Service archive, it can open pre-zoomed to your state, and it is the single most useful thing you can put on a storm landing page that is not a phone number.

We ask one thing in return, and it is a link rather than a fee. Details below the code.

Two different people read this page

Which one are you?

I own the house

You want to know whether hail actually hit your address

Then this is the wrong page and we will not waste your afternoon. Call Center Doctors does not repair roofs, inspect roofs, or sell roofs. We run the phones for roofing companies, which means the only thing we could sell you is somebody else's inspection.

What is genuinely useful to you is free and takes about a minute: look your address up against the National Weather Service storm archive and see the dates and hail sizes recorded near it. Take that to any local roofer, including one who has never heard of us.

Check hail history at my address

I run the roofing company

You are looking at a swath and deciding whether to work it

Then keep reading. The rest of this page is the part nobody publishes: what happens to the dials, in what proportion, measured on our own floor rather than asserted in a brochure.

The map is free whether or not you ever speak to us. If you want the calls made as well as the map drawn, that is the other half of what we do.

Talk to us about working a storm

The embed code

Everything below is plain HTML. If your site builder has a block that accepts raw HTML, this works in it.

The whole country

Paste this anywhere in your page HTML. It is one block: the map, plus the credit line we ask for underneath it. The wrapper keeps it a fixed 16:10 shape at any width, so it does not collapse on a phone.

HTML
<div style="position:relative;width:100%;padding-bottom:62%">
  <iframe src="https://swathiq.ccdocs.com/embed/hail-map"
          title="Live hail map"
          loading="lazy"
          style="position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:10px"
          referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
<p style="font-size:13px;margin-top:8px">
  Live hail data by <a href="https://ccdocs.com/hail-map-widget/">SwathIQ</a>,
  from Call Center Doctors.
</p>

Scoped and pre-zoomed to your state

Add ?state= and a two-letter code. The map opens already centred on that state instead of on the middle of the country, which is what most contractors actually want. Same one block, same credit line.

HTML
<div style="position:relative;width:100%;padding-bottom:62%">
  <iframe src="https://swathiq.ccdocs.com/embed/hail-map?state=TX"
          title="Live Texas hail map"
          loading="lazy"
          style="position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:10px"
          referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
<p style="font-size:13px;margin-top:8px">
  Live hail data by <a href="https://ccdocs.com/hail-map-widget/">SwathIQ</a>,
  from Call Center Doctors.
</p>

The wrapper div is doing real work. An iframe with a percentage height inside a normal page collapses to nothing, so the wrapper holds the aspect ratio with bottom padding and the frame fills it absolutely. Change 62% if you want a taller or shorter map.

The last line of that block is the whole price. An iframe is a resource embed rather than a hyperlink, so the frame itself sends us nothing -- and the "Powered by SwathIQ" text inside the widget bar belongs to the frame's own address, not to your page. One visible sentence, rendered by your site in your own HTML, is the entire exchange. That is why it is in the code you copy instead of in a footnote.

It is an ask, not a condition. If your site cannot show a credit, take the frame on its own -- the version below is the identical widget with nothing withheld.

Frame only, if you cannot show a credit

Some sites cannot carry a visible third-party credit -- a franchise template, a compliance rule, a page with no room. Use this and the widget still works exactly the same. Nothing is withheld, nothing is checked. We would rather you embedded it than not.

HTML
<div style="position:relative;width:100%;padding-bottom:62%">
  <iframe src="https://swathiq.ccdocs.com/embed/hail-map"
          title="Live hail map"
          loading="lazy"
          style="position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:10px"
          referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>

The 32 state codes it accepts

Listed in the order the hail belt is defined, which is roughly how much large hail each state records. Use the two-letter postal code.

TX KS NE SD OK CO MO MN IA IL ND AR NM WY NC GA MT MS VA WI TN FL AL OH SC IN LA KY PA MI NY WV

An unrecognised code fails quietly. We tested it: a state code that is not on this list returns a normal 200 and renders the national map with no error and no warning. So a typo does not break your page -- it silently ships the wrong map. Check your code against the list once and you are done forever.

What we are asking for in return

Attribution, and nothing else. Specifically:

  • 1. Keep the credit line that ships in the block. It is the last two lines of the snippet above: one visible sentence under the frame, linking to this page. Keep it visible and keep it where a reader can see it -- a credit set to display:none, font-size:0, or parked off-screen is not a credit, and we would rather you used the frame-only version than faked one.
  • 2. Word it however you like. The snippet says "Live hail data by SwathIQ" because SwathIQ is the name of the thing. Rewrite the sentence, translate it, put it in your own voice -- we are asking for a brand credit, not for a phrase. We will never send you anchor text to paste, and if we ever did you should ignore it: a keyword anchor mandated across every site that runs a widget is a link scheme under Google's own policy, and it would hurt both of us.
  • 3. Leave the link in the bar too. The widget carries a small "Powered by SwathIQ" link along its bottom edge. It is 11px and out of the way. It is not the link we are asking for -- an iframe is a separate document, so that anchor is not a link from your site at all -- but it is how a reader inside the map knows where it came from. Do not crop it off with a negative margin or an overflow trick.
  • 4. Do not present it as your own data product. Embedding it on your storm page is exactly the intended use. Rebadging it as your proprietary hail intelligence platform is not, and it is the one thing that would get the widget locked behind a key.

None of this is a condition of use. The widget is not keyed, not metered, and not switched off if the credit is missing. We ship the credit inside the block because leaving it in a separate box marked "optional" meant nobody pasted it, not because we intend to police it -- and the frame-only version on this page exists so that "we ask" stays true rather than becoming "we require" with extra steps.

That is the whole licence. There is no contract to sign and no attribution police. We are telling you what the link is worth to us so the exchange is legible instead of hidden.

Why a map earns its place on a roofing page

A homeowner who lands on your storm page has exactly one question and it is not about your company: did the hail hit my street. A map answers it in three seconds without a form, which is why a map converts a page that a paragraph about your 20 years of experience does not.

There is plenty for it to show. 9,205 hail events logged in 2025 (2024: 8,941). Top states by 2025 hail-event count: Texas 1,453, Oklahoma 836, Kansas 541. Those are storm reports rather than storms -- a report exists because somebody filed one, so the count follows people and spotters as well as weather. Source: NOAA NCEI Storm Events Database, https://www.ncei.noaa.gov/stormevents/ (2025).

It also closes a gap that most roofing companies cannot close with staff. 25,519 establishments and 215,242 employees; 16,661 of them (65.3%) have fewer than 5 employees (US Census Bureau, County Business Patterns, https://www.census.gov/programs-surveys/cbp.html, 2023). Two caveats: those are establishments rather than firms, so a company with three locations is counted three times, and only employer establishments are counted, which makes the total a floor and the under-five share conservative. Either way, most roofing companies are small enough that nobody has an afternoon to build an interactive storm map. This is one you can have for the cost of a paste.

And when the map does its job, the phone rings. That half is ours: we publish 20 recorded storm appointment calls with audio and transcripts at roofing-storm-appointments/live-calls, and the measured outbound numbers behind them are on storm restoration appointment setting. Read the recordings as evidence of intake craft, never as a booking rate -- every published call ends in a booking because those are the ones we chose to publish.

Technical notes, for whoever actually pastes it

Question Answer
Cross-origin framing Explicitly allowed on this route and only this route. The response sets a Content Security Policy with frame-ancestors permitting any site, and sends no X-Frame-Options header. Both halves are required -- an X-Frame-Options header would still block the frame in every browser regardless of the policy.
Login or key None. The embed route is on the public allowlist and performs no authenticated action, which is also why it is safe for us to let anyone frame it.
Visitor data The route is built PII-free and asks your visitors for nothing -- no form, no address box, no email capture inside the frame. Your visitors stay yours.
Indexing The framed document carries a robots noindex tag, so it will not be indexed as a page of its own and cannot compete with yours in search results.
Height Set by the wrapper, not by the frame. Give the wrapper a padding-bottom percentage (62% is a good default) or a fixed pixel height; an iframe with height 100% and no sized parent renders as a sliver.
Uptime checks Monitor it with GET, not HEAD. Only GET is routed on this path, so a HEAD probe returns 404 on a perfectly healthy widget. Browsers issue GET, so this affects your monitoring and nothing else.

Hail Map Widget FAQ

Is the hail map widget free?
Yes. There is no key, no account, no billing, and no usage cap. Paste the block and it works. What we ask for instead of money is the credit line that ships inside the snippet: one visible sentence under the frame, linking to this page. We ask for it rather than require it -- there is a frame-only version on this page for sites that cannot show a credit, and it is not crippled in any way.
Why is the credit line part of the code instead of optional?
Because it is the only part of the snippet that is a link. An iframe is a resource embed, not a hyperlink: it creates no link from your domain to ours, and the "Powered by SwathIQ" anchor inside the widget bar belongs to the frame's own URL rather than to your page. The credit line your page renders, in your own HTML, outside the frame, is the whole exchange -- so it sits in the block you copy rather than in a footnote saying "ideally, also...".
What data is behind the map?
Storm reports from the US National Weather Service Storm Prediction Center archive, which is also where the NOAA storm-event counts come from. It is public data, rendered so a homeowner can understand it. Read it as observed hail: a report exists because somebody was there to file one, so coverage follows population and spotter density rather than the storm.
Will the widget outrank or compete with my own page?
No. The embedded document is served with a robots noindex tag, so search engines are told not to index the frame itself. What gets indexed is your page, with a live interactive map on it. The credit line under the frame is what points back to us, and it is the exchange.
Which states can I scope it to?
Thirty-two, listed on this page. Anything outside that list is ignored rather than rejected: the widget quietly renders the national view and gives you no warning, so check your code against the list rather than guessing.
Does it work on my site builder?
If your builder lets you paste raw HTML into a block -- WordPress custom HTML, Webflow embed, Squarespace code block, GoHighLevel custom code, Wix HTML iframe -- it works, because it is an ordinary iframe with no script for you to install. Builders that strip iframes from their free tiers are the one common failure, and that is a limit of the builder rather than of the widget.
Is it going to slow my page down?
The snippet sets loading="lazy", so the browser does not fetch the map until it is close to the viewport. Nothing loads on your page itself: the map, its tiles, and its scripts all load inside the frame, on our origin, and cannot block your own rendering.
Why are you giving away a hail map?
Because we do not sell hail data. We run outbound and inbound phones for roofing contractors, and a contractor who finds us through a map they embedded is a better conversation than a contractor who found us through an ad. The widget costs us bandwidth and earns us a link and a relationship. That is the entire trade, and it is worth stating plainly rather than pretending it is charity.

Embedded it? Now do the other half.

The map tells a homeowner they were hit. Somebody still has to pick up when they call, and somebody has to dial the neighbours who did not. That part is what we actually sell.

Call Now Book a Call