Gravity Forms template

Mortgage calculator template

Monthly payment with tax, insurance and HOA, principal and interest, and lifetime interest. Seven inputs, four calculation fields.

Try the live Mortgage calculator first
Template $9
  • Import-ready Gravity Forms JSON
  • One-page install guide
  • The plugins it needs, with links
Buy the template

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 needs GP Advanced Calculations.
  • Required GP Advanced Calculations (Gravity Wiz) Exponents, functions and date maths 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: Mortgage calculator for WordPress

This guide rebuilds the Mortgage calculator from this site in Gravity Forms: 7 inputs, 4 live results and no submit button. Expect about 33 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:

  • Monthly payment
  • Principal & interest
  • Loan amount
  • Total interest over the loan

What you need

The formulas below use GP Advanced Calculations syntax: exponents, functions or date maths 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

  1. Go to Forms → New Form and name it Mortgage.
  2. In Form Settings → Form Layout, set the CSS Class Name to fo-live-only. Step 3 uses it to hide the submit button.
  3. 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. Home price · Number · ID 1
Number Format Currency; Default Value 400000; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

2. Down payment · Number · ID 2
Number Format Currency; Default Value 80000; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

3. Interest rate (%) · Number · ID 3
Number Format 9,999.99; Default Value 6.5; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

4. Term (years) · Number · ID 4
Number Format 9,999.99; Default Value 30; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

5. Property tax per year · Number · ID 5
Number Format Currency; Default Value 4800; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

6. Home insurance per year · Number · ID 6
Number Format Currency; Default Value 1500; Layout: half width, on the same row as its neighbour (drag the field beside it in the editor; no CSS class needed).

7. HOA dues per month · Number · ID 7
Number Format Currency; Default Value 0.

8. Monthly payment · Number · ID 8
Number Format Currency; Description “Principal, interest, tax, insurance and HOA.”; Custom CSS Class (Appearance tab) fo-result; tick Enable Calculation, Rounding 2.

if( {Interest rate:3} == 0 ):
( {Home price:1} - {Down payment:2} ) / ( {Term:4} * 12 ) + {Property tax:5} / 12 + {Home insurance:6} / 12 + {HOA:7}
else:
( {Home price:1} - {Down payment:2} ) * ( {Interest rate:3} / 1200 ) / ( 1 - ( 1 + ( {Interest rate:3} / 1200 ) ) ^ ( 0 - ( {Term:4} * 12 ) ) ) + {Property tax:5} / 12 + {Home insurance:6} / 12 + {HOA:7}
endif;

9. Principal & interest · Number · ID 9
Number Format Currency; Layout: half width, on the same row as its neighbour (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 2.

if( {Interest rate:3} == 0 ):
( {Home price:1} - {Down payment:2} ) / ( {Term:4} * 12 )
else:
( {Home price:1} - {Down payment:2} ) * ( {Interest rate:3} / 1200 ) / ( 1 - ( 1 + ( {Interest rate:3} / 1200 ) ) ^ ( 0 - ( {Term:4} * 12 ) ) )
endif;

10. Loan amount · Number · ID 10
Number Format Currency; Layout: half width, on the same row as its neighbour (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 2.

( {Home price:1} - {Down payment:2} )

11. Total interest over the loan · Number · ID 11
Number Format Currency; Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 2.

if( {Interest rate:3} == 0 ):
0
else:
( {Home price:1} - {Down payment:2} ) * ( {Interest rate:3} / 1200 ) / ( 1 - ( 1 + ( {Interest rate:3} / 1200 ) ) ^ ( 0 - ( {Term:4} * 12 ) ) ) * ( {Term:4} * 12 ) - ( {Home price:1} - {Down payment:2} )
endif;

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-result on a calculation field makes it the big teal result panel.
  • fo-result fo-result--sub makes the smaller secondary figures.
  • fo-segmented on 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_half Ready Classes are deprecated.

The bundle includes the two stylesheets that implement those classes, with notes on matching your brand colours. Without them the form still works; it just looks like your theme’s default Gravity Forms styling.

How the maths works is explained under “How it’s calculated” on the live Mortgage calculator.