Solar savings calculator template
System cost after the tax credit, yearly production and savings, payback time and net savings over the panel's life. Seven inputs, seven calculation fields.
Try the live Solar savings calculator first- Import-ready Gravity Forms JSON
- One-page install guide
- The plugins it needs, with links
- Everything in Template
- Step-by-step PDF with screenshots of every field and formula
- The CSS skin from this site, with notes on matching your brand
What you'll need
Check these before you buy so there are no surprises. Links may be affiliate links.
- Required Gravity Forms (any license) Calculation fields are in core; the exponent in the savings series needs GP Advanced Calculations.
- Required GP Advanced Calculations (Gravity Wiz) Exponents, functions and date math in calculation fields. The formulas in this template use its syntax. Part of Gravity Perks; needs the Spellbook plugin active as well.
Free build guide: Solar savings calculator for WordPress
This guide rebuilds the Solar savings calculator from this site in Gravity Forms: 7 inputs, 7 live results and no submit button. Expect about 42 minutes by hand. The template above is the same form as an import file, and the bundle adds a PDF version of this guide with a screenshot of every setting, plus the stylesheet.
You will end up with:
- Net savings over the period
- System cost
- Your cost after the credit
- Electricity produced per year (kWh)
- First-year savings
- Simple payback (years)
- Total electricity savings
What you need
- Gravity Forms (any license) — Calculation fields are in core; the exponent in the savings series needs GP Advanced Calculations.
- GP Advanced Calculations (Gravity Wiz) — Exponents, functions and date math in calculation fields. The formulas in this template use its syntax. Part of Gravity Perks; needs the Spellbook plugin active as well.
The formulas below use GP Advanced Calculations syntax: exponents, functions or date math that core calculation fields cannot do. Install and activate it, with its Spellbook parent plugin, before you start; without it every result shows 0.
1. Create the form
- Go to Forms → New Form and name it Solar savings.
- In Form Settings → Form Layout, set the CSS Class Name to
fo-live-only. Step 3 uses it to hide the submit button. - Leave the form open in the editor; the fields come next.
2. Add the fields, in this order
Field IDs are assigned as you add fields. If yours come out differently, change the {Label:ID} references in the formulas to match your IDs. Settings not mentioned stay at their defaults.
1. System size (kW) · Number · ID 1
Number Format 9,999.99; Default Value 8; Description “Home systems run 5–12 kW; about 400 W per panel.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
2. Installed cost per watt · Number · ID 2
Number Format Currency; Default Value 3.00; Description “$2.50–3.50 before incentives in most of the US.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
3. Tax credit (%) · Number · ID 3
Number Format 9,999.99; Default Value 30; Description “The federal credit is 30% through 2032 for systems you own; add any state rebate as a percentage.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
4. Peak sun hours per day · Number · ID 4
Number Format 9,999.99; Default Value 4.5; Description “3.5 in the Northeast and Pacific Northwest, 4.5 in the middle of the country, 5.5–6 in the Southwest.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
5. Electricity rate (¢ per kWh) · Number · ID 5
Number Format 9,999.99; Default Value 17; Description “From your bill. Assumes full net metering: every kWh produced is worth the retail rate.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
6. Rate increase (% per year) · Number · ID 6
Number Format 9,999.99; Default Value 3; Description “US retail rates have risen about 2–3% a year.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).
7. Years to count · Number · ID 7
Number Format 9,999.99; Default Value 25; Description “The usual panel warranty. Panels lose about 0.5% of output a year; that is built in.”.
8. Net savings over the period · Number · ID 8
Number Format Currency; Description “Electricity savings less what the system cost you after the credit.”; Custom CSS Class (Appearance tab) fo-result; tick Enable Calculation, Rounding 0.
( ( ( {Size:1} * {Sun hours:4} * 365 * 0.8 ) * {Rate:5} / 100 ) * ( ( ( 1 + {Escalation:6} / 100 ) * 0.995 ) ^ {Years:7} - 1 ) / ( ( ( 1 + {Escalation:6} / 100 ) * 0.995 ) - 1 ) ) - ( ( {Size:1} * 1000 * {Cost per watt:2} ) * ( 1 - {Credit:3} / 100 ) )
9. System cost · Number · ID 9
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.
( {Size:1} * 1000 * {Cost per watt:2} )
10. Your cost after the credit · Number · ID 10
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.
( ( {Size:1} * 1000 * {Cost per watt:2} ) * ( 1 - {Credit:3} / 100 ) )
11. Electricity produced per year (kWh) · Number · ID 11
Number Format 9,999.99; Description “First year. The average US home uses about 10,500 kWh.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.
( {Size:1} * {Sun hours:4} * 365 * 0.8 )
12. First-year savings · Number · ID 12
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.
( ( {Size:1} * {Sun hours:4} * 365 * 0.8 ) * {Rate:5} / 100 )
13. Simple payback (years) · Number · ID 13
Number Format 9,999.99; Description “Net cost ÷ first-year savings. Rising rates shorten it a little.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 1.
( ( {Size:1} * 1000 * {Cost per watt:2} ) * ( 1 - {Credit:3} / 100 ) ) / ( ( {Size:1} * {Sun hours:4} * 365 * 0.8 ) * {Rate:5} / 100 )
14. Total electricity savings · Number · ID 14
Number Format Currency; Description “Over the period, before the system cost.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.
( ( ( {Size:1} * {Sun hours:4} * 365 * 0.8 ) * {Rate:5} / 100 ) * ( ( ( 1 + {Escalation:6} / 100 ) * 0.995 ) ^ {Years:7} - 1 ) / ( ( ( 1 + {Escalation:6} / 100 ) * 0.995 ) - 1 ) )
3. Hide the submit button
The results are live, so nothing needs submitting. Add this filter to your theme’s functions.php or a code-snippets plugin; it hides the button on any form carrying the fo-live-only class:
add_filter( 'gform_submit_button', function ( $button, $form ) {
return str_contains( (string) rgar( $form, 'cssClass' ), 'fo-live-only' ) ? '' : $button;
}, 10, 2 );
Or with CSS alone: .fo-live-only_wrapper .gform_footer { display: none; }
4. Put it on a page and make it look like this
Add the form to any page with the Gravity Forms block, or the shortcode [gravityform id="X" title="false" ajax="false"]. The form inherits your theme’s styles; the classes you set in step 2 are hooks for the look you see on this site:
fo-resulton a calculation field makes it the big teal result panel.fo-result fo-result--submakes the smaller secondary figures.fo-segmentedon a radio field turns it into a segmented switch.- Two fields on one row is the editor’s own column layout: drag a field beside another and the row splits in half. No CSS class is needed, and the old
gf_left_halfReady Classes are deprecated.
The bundle includes the two stylesheets that implement those classes, with notes on matching your brand colors. Without them the form still works; it just looks like your theme’s default Gravity Forms styling.
How the math works is explained under “How it’s calculated” on the live Solar savings calculator.