Embed the Window Subsidy Calculator on your website

A free widget for window, door and renovation websites in Spain. Your visitors set their budget, province and property type and see the honest net cost after the regional grant and the IRPF deduction — the samecalculator that runs on Estimia, kept up to date by us, served from our infrastructure.

Quick start

Paste this where the calculator should appear. That's the whole integration — no API key, no build step, no cookies on your domain.

<!-- Estimia — Window Subsidy Calculator -->
<div class="estimia-widget-container">
  <div data-estimia-widget="subsidy-calculator" data-lang="es"></div>
  <script async src="https://estimia.es/widget/subsidy-calculator.js"></script>
  <div style="font-family:sans-serif;font-size:12px;text-align:right;margin-top:6px;">
    <a href="https://estimia.es/es/herramientas/calculadora-subvenciones/" target="_blank"
       style="display:inline-flex;align-items:center;gap:5px;color:inherit;font-weight:600;text-decoration:none;">
      <img src="https://estimia.es/assets/images/favicons/favicon.svg" alt="Estimia" width="14" height="14" />
      Calculator provided by Estimia
    </a>
  </div>
</div>

Options

AttributeValuesWhat it does
data-lang"es" (default) · "en" · "ru"Language of the calculator UI and of the attribution line.
data-theme"light" (default) · "dark" · "auto""auto" follows the visitor’s OS preference. Pick the value that matches your site — the widget has no chrome of its own, so it blends in.
data-provinceprovince slug, e.g. "madrid"Preselects the province. Slugs are the lowercase, accent-stripped province names. Unknown slugs are ignored.
All supported values

Andalucía: almeria cadiz cordoba granada huelva jaen malaga sevilla

Aragón: huesca teruel zaragoza

Canarias: las-palmas santa-cruz-de-tenerife

Cantabria: cantabria

Castilla y León: avila burgos leon palencia salamanca segovia soria valladolid zamora

Castilla-La Mancha: albacete ciudad-real cuenca guadalajara toledo

Cataluña: barcelona girona lleida tarragona

Ceuta: ceuta

Comunidad de Madrid: madrid

Comunidad Foral de Navarra: navarra

Comunitat Valenciana: alicante castellon valencia

Extremadura: badajoz caceres

Galicia: a-coruna lugo ourense pontevedra

Illes Balears: baleares

La Rioja: la-rioja

Melilla: melilla

País Vasco: araba bizkaia gipuzkoa

Principado de Asturias: asturias

Región de Murcia: murcia

data-lock-provincepresent / absentPins the calculator to data-province and replaces the selector with a read-only field — for companies that only work in one region.
data-budgetnumber, € (default 6000)Initial position of the budget slider. Snapped to €500 steps and clamped into the slider range.
data-budget-mindata-budget-maxnumbers, € (defaults 1000 / 15000)The slider range — match it to the orders you actually take (e.g. 3000–30000 for premium work). Inconsistent values fall back to the defaults.
data-accenthex color, e.g. "#e11d48"Your brand color. It drives the slider, the highlighted inputs, the receipt accents and the totals — light- and dark-theme shades are derived from the one value. Default is Estimia’s emerald.
data-estimia-ctaon child <a> links (up to 4)Your own action buttons — the widget has none by default. Put links marked data-estimia-cta inside the container (not on the container itself); the widget renders them under the result, the first as the solid primary button, the rest outlined. Relative URLs resolve against your page and clicks open in the top window on your site; only http/https targets are accepted.

Full example — live

Every option in one snippet: a Madrid-only company with its brand color, a premium price range and two of its own buttons. The widget below is rendered from exactly this markup — resize the window or switch inputs; the iframe height adjusts itself via postMessage, so it never shows scrollbars.

<!-- A single-region company: brand color, premium price range, own buttons -->
<div class="estimia-widget-container">
  <div
    data-estimia-widget="subsidy-calculator"
    data-lang="en"
    data-theme="auto"
    data-accent="#2563eb"
    data-province="madrid"
    data-lock-province
    data-budget="9000"
    data-budget-min="3000"
    data-budget-max="30000"
  >
    <a data-estimia-cta href="/get-a-quote/">Get my free quote</a>
    <a data-estimia-cta href="/contact/">Talk to an advisor</a>
  </div>
  <script async src="https://estimia.es/widget/subsidy-calculator.js"></script>
  <div style="font-family:sans-serif;font-size:12px;text-align:right;margin-top:6px;">
    <a href="https://estimia.es/en/tools/subsidy-calculator/" target="_blank"
       style="display:inline-flex;align-items:center;gap:5px;color:inherit;font-weight:600;text-decoration:none;">
      <img src="https://estimia.es/assets/images/favicons/favicon.svg" alt="Estimia" width="14" height="14" />
      Calculator provided by Estimia
    </a>
  </div>
</div>

How it works under the hood

  • The loader (/widget/subsidy-calculator.js, ~2 KB) finds every container withdata-estimia-widget="subsidy-calculator" and replaces its content with a lazy, borderless iframe pointing atestimia.es/embed/subsidy-calculator/.
  • The embed page reports its rendered height to your page on every layout change; the loader sizes the iframe accordingly (origin-checked postMessage).
  • A built-in spinner overlays the frame until the calculator reports it has rendered, so visitors never stare at a blank rectangle on slow connections.
  • Your own buttons (the CTA slot) open in the top window — your page never navigates inside the frame.
  • The credit line is a plain static<a> in the snippet, a sibling of the widget div inside estimia-widget-container. The loader never touches it, so it stays in the HTML for crawlers and no-JS visitors and passes real link weight. Only when that wrapper is absent does the loader inject its own fallback credit.
  • Dynamic pages: if you inject containers after load (SPA routing), callwindow.EstimiaWidgets.scan() to initialise them.
  • Sites with their own light/dark toggle: callwindow.EstimiaWidgets.setTheme('dark' | 'light' | 'auto')from your toggle handler and every widget on the page follows instantly —data-theme only sets the initial state. The demo above does exactly this.

Terms of use

This widget is free — no traffic limits, no account — for any website related to windows, doors, renovation or real estate. In return, every embed keeps the small visible credit — “Calculator provided by Estimia” — as the static, followable link shipped in the snippet. That backlink is what keeps the widget free, so it is enforced: the loader checks for a visible, followed link to Estimia before it loads the calculator, and if the credit is missing, hidden or set to nofollow, the calculator doesn't launch — a short notice appears in its place instead. Terms are per widget: some future Estimia widgets will be paid, and each states its own terms on its page.

Embedding — quick answers

Will the widget slow my site down or hurt Core Web Vitals?

No. Your page ships only the ~2 KB loader, loaded async so it never blocks rendering. The calculator itself — its JavaScript, CSS, fonts and data — runs inside a lazy iframe served from estimia.es, so it competes with none of your assets. The loader sizes the frame from the height the calculator reports, so it adds no layout shift (CLS).

Does the widget use cookies or need a GDPR consent banner?

No. The widget sets no cookies on your domain and collects no personal data from your visitors, so it adds no consent requirement on your side and never pops a cookie dialog on someone else’s site. The only measurement is Estimia’s cookieless, aggregate page-view analytics, used to count how often the widget loads per host.

Do the grant and IRPF deduction figures stay up to date?

Yes, automatically. Grant caps, IRPF deduction tiers and each region’s call status live on Estimia’s side, and every embed reflects the latest figures the moment they are published. The snippet you pasted never changes, so there is nothing to maintain when the rules do.

Where do the subsidy and tax figures come from — are they official?

Yes. The IRPF deduction tiers, bases and deadlines are the Agencia Tributaria’s income-tax deductions for energy-efficiency works (the 20%, 40% and 60% tiers), and the direct grant is the Plan Estatal de Vivienda 2026–2030 (Real Decreto 326/2026), capped at €7,500 per dwelling and paid through each comunidad autónoma’s own call. It also reflects Directive (EU) 2024/1275 (the EPBD), the EU rules behind Spain’s scheme. Estimia tracks these primary sources plus each region’s call status and re-verifies them (last checked June 2026), so the widget shows figures grounded in official rules, not guesses.

How do I embed it in WordPress, Wix, Squarespace or Webflow?

Paste the snippet into any block that accepts raw HTML — a Custom HTML block in WordPress/Gutenberg, an Embed element in Wix, a Code block in Squarespace or an Embed in Webflow. No plugin is required. If your platform injects content after load (SPA routing), call window.EstimiaWidgets.scan() to initialise any containers added later.

My site sends a Content-Security-Policy — what do I allow?

Allow estimia.es in two directives: script-src (or script-src-elem) for the ~2 KB loader, and frame-src for the iframe it inserts. Nothing else is loaded on your origin, so those two entries are all the widget needs.