A WordPress plugin that calculates snow load according to DIN EN 1991-1-3 and simultaneously shows how many days per year a terrace roof covering provides – both based on the customer's actual address.
For Schmidt Ueberdachungen, I built exactly that. The company sells patio covers, conservatories, and carports. The sales team needed a tool for their consultations: What is the snow load at the customer's location? And how many more days per year can they use their terrace with a roof covering?
Previously, snow load calculations were done via an Excel spreadsheet with manual entry, error-prone formulas, and outdated zone assignments. The plugin completely digitizes this process: One address entry – and both results appear in seconds. The exact snow load in kN/m² according to DIN standard and an interactive graphic showing what a roof covering adds in terrace time.
In this article, I show how it works technically and why the combination of structural engineering tool and sales tool works so well.
What Does the Snow Load Calculator Calculate?
The snow load calculator determines the characteristic ground snow load for any location in Germany – using the formulas from DIN EN 1991-1-3 (Eurocode 1: Snow loads).
The user enters an address (street, house number, postal code, city). The plugin then does three things: It determines the snow load zone via the postal code. It fetches coordinates via a geocoding API and then the elevation above sea level. And it applies both to the appropriate DIN formula.
Germany is divided into five snow load zones (Zone 1, 1a, 2, 2a, and 3). Different formulas apply depending on zone and elevation:
- Zone 1: sk = 0.19 + 0.91 x ((A + 140) / 760)²
- Zone 2: sk = 0.25 + 1.91 x ((A + 140) / 760)²
- Zone 3: sk = 0.31 + 2.91 x ((A + 140) / 760)²
Where A is the elevation above sea level in meters and sk is the snow load in kN/m². Zones 1a and 2a additionally use a factor of 1.25.
For an address in Hamburg (snow load zone 2, 18 m elevation), this results in 0.33 kN/m² – that's 34 kg per square meter.
How Does the Plugin Determine Elevation Above Sea Level?
The elevation lookup runs via the OpenRouteService API in two steps. First, the entered address is converted to coordinates via geocoding. Then the coordinates are sent to the elevation endpoint, which returns the elevation above sea level.
The first API call goes to /geocode/search/structured with street, house number, postal code, and city as parameters. OpenRouteService returns coordinates (latitude and longitude). The second call goes to /elevation/point with the coordinates – elevation in meters comes back.
Both calls run server-side via PHP, triggered by AJAX from the frontend. The snow load zone is not determined via API, but via a local JSON file that maps every German postal code to its corresponding zone. This file is about 1.3 MB and covers all postal code areas in Germany.
// Simplified snow load calculation flow
$plz = sanitize_text_field($_POST['plz']);
// 1. Postal code -> Snow load zone (local JSON lookup)
$zones = json_decode(file_get_contents('snowloadzones.json'), true);
$zone = $zones[$plz];
// 2. Address -> Coordinates (OpenRouteService Geocoding)
$coords = openroute_geocode($street, $nr, $plz, $city);
// 3. Coordinates -> Elevation (OpenRouteService Elevation)
$elevation = openroute_elevation($coords['lat'], $coords['lng']);
// 4. Zone + Elevation -> Apply DIN formula
$snowload = din_formula($zone, $elevation);
Each calculation requires two live API calls. Results are not cached – since every address has an individual elevation and query frequency is manageable, caching wasn't necessary here.
What Does the Terrace Time Calculator Do?
The terrace time calculator shows for any location in Germany how many days per year the terrace is usable – and by how many days usage extends with a roof covering or cold conservatory.
The tool categorizes all 365 days of the year into five categories, based on historical weather data for the respective location:
| Category | Temperature | Meaning |
|---|---|---|
| Ice days | below 0°C | Not usable |
| Cold days | 0-10°C | Usable with cold conservatory |
| Potential days | 10-25°C | Usable with terrace roof |
| Summer days | 25-30°C | Pleasant without roof |
| Hot days | above 30°C | Shade from roof helps |
Without a roof covering, only summer days count as real terrace days. For Hamburg, that's about 29 days per year. With a terrace roof, potential days are added – days when it's warm enough, but rain or wind would be disruptive without a covering.
The result is displayed as an interactive pie chart (Chart.js). The clever part: Two checkboxes let the user activate "Terrace Roof" and "Cold Conservatory". With each click, the chart animates – gray segments turn green, the day count visibly increases.
- Without roof covering: 29 days (8%)
- With terrace roof + cold conservatory: 344 days (94%)
- Gain: +315 days of terrace usage per year
Why Are Both Tools Combined in One Plugin?
Because they belong together in practice. Every customer of Schmidt Ueberdachungen needs both: the technical snow load calculation for structural engineering and the emotional visualization for the purchase decision.
In the consultation, the salesperson enters the customer's address – once. Both AJAX requests fire in parallel. A few seconds later, snow load and terrace time appear side by side on screen.
The snow load result determines the technical design: Which rafter profile is needed? How strong must the construction be? In expert mode, the plugin even calculates rafter sizing for different profiles (S, M, L, XL, XL+) and checks deflection and loading for the company's own product lines Toskana and Tirol – with and without reinforcement.
"At your location, a terrace roof gives you 200 additional days of terrace usage per year." That's more concrete than any brochure.
Without the plugin, these would have been two separate work steps – look up snow load in an Excel sheet, somehow estimate terrace time. Now it's a single click.
How Is the Tool Used in Sales?
The plugin has two modes built for two different target audiences.
Standard mode is publicly accessible on Schmidt Ueberdachungen's website. Any visitor can enter their address and see snow load and terrace potential. At the end, an email address is requested – the result is sent by email. This is a classic lead magnet: The visitor gets real value (their individual snow load according to DIN standard), and the company gets a qualified contact with a concrete building project.
Expert mode is only accessible to Schmidt Ueberdachungen's sales team. Additional input fields appear here: width and depth of the planned covering, glass thickness, height offset, rafter profile. The plugin then calculates not just snow load, but also the specific loading of the planned construction – including snow load with and without wedge, total load in kilograms, and rafter sizing for all available profiles.
The salespeople use expert mode in every consultation. Instead of working with tables and rules of thumb, they enter the customer's address and have all technical data and the sales argument on one screen in seconds.
The plugin replaces an Excel spreadsheet that was in use for years: manual zone entry, error-prone formulas, outdated postal code assignments, no elevation lookup, and no way to send results directly to customers. Now everything runs automated.
How Is the Plugin Technically Built?
The entire system is a WordPress plugin with PHP backend and jQuery frontend. It's embedded via two shortcodes: [schneelast] for standard mode and [schneelast_expert] for expert mode.
The architecture consists of three layers:
Frontend (jQuery): A form accepts the address. On clicking "Calculate", two AJAX requests fire in parallel – one for snow load, one for the terrace time calculator's weather data. Results are inserted into the page without reload. The pie chart is rendered with Chart.js and animates when checkboxes are activated.
Backend (PHP): Two WordPress AJAX actions process the requests. calc_snowload() handles snow load calculation with API calls to OpenRouteService and JSON lookup for snow load zone. A separate function calculate_regentage() delivers weather data for the terrace time calculator – temperature statistics from recent years for the respective location, split into the five day categories.
Data layer: The postal code to zone mapping lives as a local JSON file (snowloadzones.json, about 1.3 MB) in the plugin. Additionally, there's a deliveryzones.json that checks whether the location is in the delivery area. Weather data comes from an external API.
For expert mode, an additional calculation is added: Rafter sizing. Based on project data (width, depth, glass thickness, height offset) and calculated snow load, each available rafter profile (S to XL+) is checked to see if deflection and loading are within permissible ranges.
A print view (print-view.php) and an email template (email-template.php) enable direct sending of results to customers.
What Did the Combination of Structural Engineering and Sales Achieve?
Hard to quantify in exact numbers, but the tool has two clearly measurable effects.
First: Consultation conversations are faster and more convincing. Previously, the salesperson had to manually look up the snow load zone in an Excel spreadsheet, research elevation above sea level themselves, apply the formula, and hope there were no typos. Terrace time could only be vaguely estimated. The plugin's digitization makes all of this unnecessary: Enter one address, and seconds later both arguments – technical and emotional – are on screen. The plugin is used in every consultation.
Second: The public standard mode works as a lead magnet on the website. Every visitor who enters their address and calculates snow load provides their email at the end – a qualified lead with concrete interest in a roof covering.
A pure snow load calculator would be a useful nerd tool. But only the terrace time calculator alongside it – with the animated pie chart that changes from gray to green – makes the purchase decision tangible. "344 days instead of 29 days" sells better than any brochure.
When Is a Custom Online Calculator Worthwhile for a Company?
A custom calculator is worthwhile when three conditions are met: The company has a product requiring location- or project-specific calculation, the calculation follows clear rules or standards, and the result influences the purchase decision.
A custom calculator makes sense when:
- There's a technical calculation currently done manually or via Excel
- The calculation is based on real data (location, standards, measurements) – not estimates
- The result can be used directly in sales or on the website as a lead magnet
- Errors in the current calculation cause costs or risks
It's overkill when:
- The product doesn't need location-specific or technical calculation
- A simple price calculator with fixed tiers suffices
- The target audience doesn't even expect technical details
- The company has fewer than a few consultations per week
The snow load calculator for Schmidt Ueberdachungen shows the ideal case: A mandatory DIN standard calculation (snow load must be determined anyway) that previously ran through an error-prone Excel is digitized and extended into a sales tool. Digitization eliminates error sources, the terrace time calculator delivers the sales argument on top.
Frequently Asked Questions About Snow Load Calculation and Online Calculators
How is snow load calculated according to DIN EN 1991-1-3?
Snow load is calculated based on the snow load zone and elevation above sea level. Germany is divided into five zones (1, 1a, 2, 2a, 3). The formula for Zone 2, for example, is: sk = 0.25 + 1.91 x ((A + 140) / 760)². A is the elevation in meters, sk is the snow load in kN/m².
Which API is suitable for geocoding and elevation lookup in Germany?
OpenRouteService offers both structured geocoding (address to coordinates) and an elevation endpoint (coordinates to elevation above sea level). Both endpoints are accessible via REST API and free for moderate query volumes. Alternatives include Google Maps Elevation API or Open-Elevation.
Can you build a DIN standard calculator as a WordPress plugin?
Yes. The DIN formulas can be implemented in PHP. External data like elevation above sea level is fetched via API, static mappings like postal code to snow load zone are solved via local JSON files. The result is loaded into the frontend via AJAX – without page reload.
What is a terrace time calculator?
A terrace time calculator uses historical weather data to determine how many days per year a terrace is usable. It categorizes all 365 days (ice days, cold days, potential days, summer days, hot days) and shows how many additional usage days a roof covering or conservatory provides.
How much does a custom online calculator as a WordPress plugin cost?
Costs depend on scope. A simple calculator with one API integration and result display starts at around 500 euros. A complex system with multiple APIs, DIN standard calculation, interactive visualization, and different modes (standard/expert) is in the mid four-figure range.
Which snow load zone does my location have?
The snow load zone is determined by postal code. Germany has five zones: Zone 1 (lowest snow load, e.g., Northern Germany) to Zone 3 (highest snow load, e.g., Alpine foothills). The assignment is based on DIN EN 1991-1-3 Appendix NA. Online snow load calculators automatically determine the zone based on postal code.
Need a Custom Calculator for Your Business?
Do you need a calculator, configurator, or technical tool for your website? Let's discuss what makes sense for your project in a free initial consultation.
Schedule Consultation