Photo by Team Nocoloco on Unsplash
Why a spreadsheet beats a back-of-envelope estimate
Property renovation projects regularly overrun on time and budget. A quick mental sum of purchase price minus sale price ignores the dozen cost categories that sit between those two numbers. A structured calculator forces you to name every cost, apply a contingency buffer, and see what a one-month delay does to your bottom line before you commit any money. This guide walks you through building that calculator inside Google Sheets, then publishing it as a branded web form using the GSheetPress Calculator tool.
What this guide does not cover: local tax obligations (stamp duty, capital gains tax, GST, transfer duty), jurisdiction-specific legal fees, currency conversion, or regulated financial advice. All assumptions — especially interest rates, agent commission percentages, and holding period — must be verified against your local market and your own lending terms before you use the outputs for any real purchasing decision.
Key terms explained
- Acquisition cost: The total money paid to buy the property, including the purchase price, stamp duty, legal or conveyancing fees, and any buyer's agent fee.
- Renovation budget: All direct construction and fit-out costs — labour, materials, subcontractors, council permits, and inspections — before any contingency is added.
- Holding cost: Ongoing expenses you pay while you own the property: loan interest, council rates, landlord insurance, utilities, and body-corporate levies if applicable.
- Holding period: The number of months from settlement of purchase to settlement of sale. Extending this by even one or two months can significantly erode profit.
- Contingency: A percentage buffer added to the renovation budget to absorb unexpected costs. Industry convention often suggests 10–20% for residential projects, but the right figure depends on the project scope and your risk tolerance.
- Disposal cost: Costs paid when selling — real-estate agent commission, marketing, property styling or staging, and legal fees on the sale side.
- Gross profit: Assumed sale price minus every identified cost category. This is the headline number before any tax consideration.
- Return on investment (ROI): Gross profit expressed as a percentage of total money invested. A project with a high gross profit but very high capital outlay may still have a disappointing ROI.
- Assumed sale price (ASP): Your best estimate of the price the renovated property will achieve. This is an input, not a guarantee.
- GS2Web: The GSheetPress Google Workspace add-on that converts a specially structured Google Sheets tab into a hosted web calculator, form, or table without any coding.
- Calculator entitlement: The subscription tier or licence on your GSheetPress account that unlocks the Calculator publish feature.
- Runtime G column: Column G in the calculator sheet is populated by the web form when a visitor submits values. All result formulas must reference G cells, not E cells, so they react to live submissions.
Prerequisites
- A Google account with Google Sheets access.
- The GS2Web add-on installed from the Google Workspace Marketplace. Open any Google Sheet, go to Extensions → Add-ons → Get add-ons and search for GS2Web SaaS.
- A GSheetPress account at gsheetpress.com/admin/signup.html using the same Google account email you use in Sheets. The add-on reads your account entitlement at run time, so a mismatched email will block publishing.
- A Calculator-enabled subscription. Check your plan on the GSheetPress pricing page.
- A dedicated sample workbook created solely for this calculator. Do not use a workbook that holds private or sensitive financial data, because the sharing step later makes the spreadsheet editable by anyone with the link.
Plan your inputs and results
Before opening the add-on, decide what the calculator must accept and what it must display. The table below lists the nine inputs this guide uses.
| Input label | What to enter | Unit |
|---|---|---|
| Purchase Price | Contract price of the property | Currency (e.g. 450000) |
| Acquisition Costs | Stamp duty + legal + buyer agent fees | Currency |
| Renovation Budget | Total build and fit-out estimate before contingency | Currency |
| Contingency % | Buffer on renovation budget | Whole number, e.g. 15 means 15% |
| Holding Months | Expected ownership period | Whole months |
| Monthly Holding Cost | Interest + rates + insurance per month | Currency |
| Delay Months | Extra months if project runs late | Whole months |
| Disposal Costs | Agent commission + marketing + legal on sale | Currency |
| Assumed Sale Price | Target sale price after renovation | Currency |
That is nine inputs. Because the add-on places each input on its own row starting at row 2, the layout is: inputs in rows 2–10, the Calculate button in row 11, the merged Result Fields separator in row 12, result headings in row 13, and result values from row 14 onward.
Build the calculator in Google Sheets
Step 1 — Create a new tab and open the add-on
- Open your dedicated sample workbook in Google Sheets.
- Click the + icon at the bottom to add a new sheet tab and rename it RenovationCalc.
- Go to Extensions → GS2Web SaaS → Calculator → New Calculator.
- In the dialogue that appears, enter the name Renovation Profit Calculator, set the input count to 9, and select No for graphs. Click Create.
- The add-on writes the header row A1:H1 automatically and scaffolds rows 2 through 12. Do not delete, move, or reorder any of these rows.
Row 1 contains these generated column headers across columns A to H: Labels, Input Type, Required, Data, Default, ToolTips, Inputs, Rules. You fill columns A through F and optionally H for each input row. Column G (Inputs) is overwritten by the web form at runtime — never store result formulas in column G.
Step 2 — Configure the nine input rows
Work through each row exactly as shown below. Where a cell is stated as blank, leave it completely empty.
Row 2 — Purchase Price
- A2 — Label: Purchase Price
- B2 — Input Type: Number
- C2 — Required: Tick the checkbox (mark as required)
- D2 — Data: Leave blank
- E2 — Default: 450000
- F2 — ToolTips: Enter the contract purchase price of the property in your local currency, excluding all other costs.
- H2 — Rules: Leave blank
Row 3 — Acquisition Costs
- A3 — Label: Acquisition Costs
- B3 — Input Type: Number
- C3 — Required: Tick the checkbox
- D3 — Data: Leave blank
- E3 — Default: 20000
- F3 — ToolTips: Total of stamp duty, conveyancing fees, buyer agent fee, and any other purchase settlement costs.
- H3 — Rules: Leave blank
Row 4 — Renovation Budget
- A4 — Label: Renovation Budget
- B4 — Input Type: Number
- C4 — Required: Tick the checkbox
- D4 — Data: Leave blank
- E4 — Default: 80000
- F4 — ToolTips: Your estimated total cost for all building work, materials, permits, and inspections before the contingency buffer is added.
- H4 — Rules: Leave blank
Row 5 — Contingency %
- A5 — Label: Contingency %
- B5 — Input Type: Number
- C5 — Required: Tick the checkbox
- D5 — Data: Leave blank
- E5 — Default: 15
- F5 — ToolTips: Enter a whole number. For example, enter 15 for a 15% contingency buffer on the renovation budget. Do not enter 0.15.
- H5 — Rules: Leave blank
Row 6 — Holding Months
- A6 — Label: Holding Months
- B6 — Input Type: Number
- C6 — Required: Tick the checkbox
- D6 — Data: Leave blank
- E6 — Default: 6
- F6 — ToolTips: How many months you plan to own the property from purchase settlement to sale settlement, not counting any delay.
- H6 — Rules: Leave blank
Row 7 — Monthly Holding Cost
- A7 — Label: Monthly Holding Cost
- B7 — Input Type: Number
- C7 — Required: Tick the checkbox
- D7 — Data: Leave blank
- E7 — Default: 2500
- F7 — ToolTips: Total monthly outgoings while you own the property: loan interest, council rates, insurance, body corporate fees, and utilities.
- H7 — Rules: Leave blank
Row 8 — Delay Months
- A8 — Label: Delay Months
- B8 — Input Type: Number
- C8 — Required: Tick the checkbox
- D8 — Data: Leave blank
- E8 — Default: 0
- F8 — ToolTips: Enter the number of extra months beyond your planned holding period. Use 0 for a best-case scenario. The calculator adds these to Holding Months automatically.
- H8 — Rules: Leave blank
Row 9 — Disposal Costs
- A9 — Label: Disposal Costs
- B9 — Input Type: Number
- C9 — Required: Tick the checkbox
- D9 — Data: Leave blank
- E9 — Default: 18000
- F9 — ToolTips: Agent commission, marketing, staging, and legal fees paid when selling. For example, a 2.5% agent commission on a $650,000 sale equals $16,250.
- H9 — Rules: Leave blank
Row 10 — Assumed Sale Price
- A10 — Label: Assumed Sale Price
- B10 — Input Type: Number
- C10 — Required: Tick the checkbox
- D10 — Data: Leave blank
- E10 — Default: 650000
- F10 — ToolTips: Your target after-renovation sale price based on comparable sales in the area. This is an estimate, not a guaranteed outcome.
- H10 — Rules: Leave blank
Step 3 — Confirm the generated button row
Row 11 is the Calculate button. The add-on has already written it. Check but do not overwrite these cells:
- A11: Calculate
- B11: Button
- D11: main
- E11: Reset
Row 12 is the merged Result Fields separator. Leave it untouched. The add-on uses it to separate the input area from the results area.
Step 4 — Add result headings in row 13
Click cell A13 and enter the following headings across the row:
- A13: Result Label
- B13: Value
- C13: Notes
Step 5 — Enter result labels and formulas from row 14 onward
Each row from 14 downward holds one result. Column A holds the label, column B holds the formula, and column C holds an explanatory note. All formulas reference the G column for live inputs (G2 through G10 correspond to the nine input rows 2 through 10). Column E holds the defaults you configured; column G is overwritten by the web form at runtime.
Important: To test the formulas before publishing, copy the range E2:E10, then click G2 and use Edit → Paste special → Values only. This pastes the default numbers into G2:G10 so the formulas calculate immediately in the sheet. When the live web form is used, column G is overwritten by visitor submissions automatically.
To enter each formula: click the target cell in column B, type =, then type or paste the rest of the formula, then press Enter.
Row 14 — Total Renovation Cost (with contingency)
- A14: Total Renovation Cost
- C14: Renovation Budget multiplied by (1 plus contingency fraction). For example, 80000 at 15% contingency gives 92000.
=G4*(1+G5/100)Paste this into B14.
Row 15 — Total Holding Cost (including any delay)
- A15: Total Holding Cost
- C15: Monthly Holding Cost multiplied by the sum of Holding Months and Delay Months.
=G7*(G6+G8)Paste this into B15.
Row 16 — Total All-In Cost
- A16: Total All-In Cost
- C16: Sum of Purchase Price, Acquisition Costs, Total Renovation Cost (B14), Total Holding Cost (B15), and Disposal Costs.
=G2+G3+B14+B15+G9Paste this into B16.
Row 17 — Gross Profit
- A17: Gross Profit
- C17: Assumed Sale Price minus Total All-In Cost. A negative result means the project produces a loss at this sale price.
=G10-B16Paste this into B17.
Row 18 — ROI %
- A18: ROI %
- C18: Gross Profit as a percentage of Total All-In Cost, rounded to two decimal places. Returns a dash if total cost is zero to prevent a division error.
=IF(B16=0,"-",ROUND(B17/B16*100,2))Paste this into B18.
Row 19 — Delayed-Sale Gross Profit (scenario comparison)
This row recalculates profit assuming two additional delay months beyond whatever the visitor enters, so they can see downside risk without re-entering data.
- A19: Delayed Sale Gross Profit (+2 months)
- C19: Recalculates profit with two extra holding months added to the visitor's delay input.
=G10-(G2+G3+G4*(1+G5/100)+G7*(G6+G8+2)+G9)Paste this into B19.
Row 20 — Break-Even Sale Price
- A20: Break-Even Sale Price
- C20: The minimum sale price needed to cover all costs at zero profit.
=B16Paste this into B20. This simply echoes Total All-In Cost, making the break-even threshold explicit for the visitor.
Step 6 — Review the complete cell map
The table below summarises every cell you have filled or should leave as generated.
| Row | Column A (Label) | Column B (formula or type) | Purpose |
|---|---|---|---|
| 1 | Labels (generated) | Input Type (generated) | Header row — do not edit |
| 2 | Purchase Price | Number | Input row 1 |
| 3 | Acquisition Costs | Number | Input row 2 |
| 4 | Renovation Budget | Number | Input row 3 |
| 5 | Contingency % | Number | Input row 4 |
| 6 | Holding Months | Number | Input row 5 |
| 7 | Monthly Holding Cost | Number | Input row 6 |
| 8 | Delay Months | Number | Input row 7 |
| 9 | Disposal Costs | Number | Input row 8 |
| 10 | Assumed Sale Price | Number | Input row 9 |
| 11 | Calculate | Button (generated) | Submit button — do not edit |
| 12 | Result Fields (merged, generated) | — | Separator — do not edit |
| 13 | Result Label | Value | Result column headings |
| 14 | Total Renovation Cost | =G4*(1+G5/100) | Renovation with contingency |
| 15 | Total Holding Cost | =G7*(G6+G8) | Holding including delay |
| 16 | Total All-In Cost | =G2+G3+B14+B15+G9 | Sum of all costs |
| 17 | Gross Profit | =G10-B16 | Sale price minus all costs |
| 18 | ROI % | =IF(B16=0,"-",ROUND(B17/B16*100,2)) | Return on investment |
| 19 | Delayed Sale Gross Profit (+2 months) | =G10-(G2+G3+G4*(1+G5/100)+G7*(G6+G8+2)+G9) | Downside scenario |
| 20 | Break-Even Sale Price | =B16 | Minimum sale price to break even |
Worked example with the default values
Using the defaults set in column E (and copied to column G for testing), the calculator should produce the following results. If your sheet shows different numbers, check that G2:G10 contain the correct default values and that every formula references G cells, not E cells.
| Result label | Calculation | Expected value |
|---|---|---|
| Total Renovation Cost | 80000 × (1 + 15/100) | 92,000 |
| Total Holding Cost | 2500 × (6 + 0) | 15,000 |
| Total All-In Cost | 450000 + 20000 + 92000 + 15000 + 18000 | 595,000 |
| Gross Profit | 650000 − 595000 | 55,000 |
| ROI % | 55000 / 595000 × 100 | 9.24% |
| Delayed Sale Gross Profit (+2 months) | 650000 − (595000 + 2500 × 2) | 50,000 |
| Break-Even Sale Price | Same as Total All-In Cost | 595,000 |
Alternative scenario: three-month delay and 20% contingency
Change G5 to 20 (contingency), G8 to 3 (delay months), and keep all other defaults. Expected results:
| Result label | Expected value |
|---|---|
| Total Renovation Cost | 96,000 |
| Total Holding Cost | 22,500 |
| Total All-In Cost | 606,500 |
| Gross Profit | 43,500 |
| ROI % | 7.17% |
Notice how a three-month delay combined with a higher contingency reduces gross profit by more than 20% from the base case. This is the kind of sensitivity insight the calculator is designed to surface quickly. For more on what a property investment feasibility model should capture, see the RICS Real Estate standards guidance, which outlines professional frameworks for property appraisal.
Important assumptions and exclusions
- The calculator does not compute stamp duty or transfer duty automatically — these vary by state, territory, and country, and may also depend on buyer type (first home buyer, investor, company). Enter the actual amount in the Acquisition Costs field.
- Capital gains tax and income tax on profit are excluded entirely. Consult a qualified tax adviser before making investment decisions.
- Loan establishment fees, lenders mortgage insurance (LMI), and valuation fees are not separate inputs — include them in Acquisition Costs if relevant.
- The Assumed Sale Price is a user estimate. The calculator cannot predict market movements.
- Contingency is applied only to the renovation budget, not to holding or disposal costs. If you want a broader buffer, increase those inputs manually.
- The delayed-sale scenario row adds exactly two months. It is illustrative only. For a custom delay, adjust the Delay Months input.
Frequently asked questions and troubleshooting
Frequently asked questions
Why does my Gross Profit show a negative number?
A negative Gross Profit means your Total All-In Cost exceeds the Assumed Sale Price. Check each cost input for realistic figures, then consider whether the sale price is achievable. If the number is only slightly negative, increasing the sale price assumption or reducing one cost category will show you how close the deal is to viability. Do not simply reduce the contingency to make the number positive — that removes a real financial buffer.
Should I enter the contingency as a decimal (0.15) or a whole number (15)?
Enter it as a whole number. Enter 15 to represent 15%. The formula divides your entry by 100 internally (G5/100), so entering 0.15 would apply a 0.15% contingency, which is effectively zero.
Can I use this calculator for commercial property or house-and-land packages?
The structure works for any project where you can separate acquisition, build, holding, and disposal costs. However, commercial property involves different financing structures, depreciation schedules, and tax treatments. The labels and tooltip text should be updated to reflect the correct cost categories for your project type, and the results should be reviewed with a qualified adviser. The GSheetPress support team can advise on structuring more complex calculator layouts.
Troubleshooting
Formulas return zero or blank even after pasting defaults into column G
Check that you pasted using Paste special → Values only. A regular paste copies the formula from E2 (which is empty or a default number depending on your sheet state) rather than the numeric value. Also confirm that B14 and B15 do not contain text — if they show the formula as text, click the cell and check the cell format is set to Automatic or Number, not Plain text.
The add-on menu shows Calculator as greyed out
This means your GSheetPress account does not have a Calculator entitlement on its current plan, or the account email in Sheets does not match the email registered at GSheetPress. Sign out of the add-on, confirm the matching email, and check your plan on the pricing page. The GSheetPress shop lists available plan upgrades.
ROI % shows a dash instead of a number
The formula returns a dash when B16 equals zero, to prevent a division-by-zero error. If B16 is genuinely zero, it means all cost inputs in G2:G10 are zero or blank. Paste the defaults into G2:G10 again using Values only to restore the test values.
The public calculator does not reflect changes I made to the sheet after publishing
After editing any cell in the sheet — including formulas, labels, or defaults — you must republish the calculator. Go to Extensions → GS2Web SaaS → Calculator → Publish Calculator, select the existing calculator name, and confirm. Republishing the same existing calculator retains its original public link; the URL does not change.
Results on the public form differ from results in the sheet
The most common cause is that a result formula accidentally references a column E cell instead of the corresponding column G cell. E holds the defaults shown in the editor; G holds the submitted values. Open the sheet, click each formula cell in column B (rows 14–20), and confirm every input reference reads G2, G3, G4 and so on, not E2, E3, E4.
Publish and test your web calculator
Step 1 — Share the workbook correctly
The GS2Web publishing process requires the spreadsheet to be accessible. Click Share in the top-right corner of your Google Sheet. Under General access, change the setting to Anyone with the link, set the role to Editor, and click Done.
Important: Setting access to Editor means anyone who obtains the spreadsheet link can modify the sheet directly. This is why you must use only the dedicated sample workbook, never a file containing private or sensitive data. Do not share the spreadsheet link publicly — it is separate from the public calculator URL that visitors will use.
Step 2 — Publish the calculator
- Make sure you are on the RenovationCalc tab (the tab the add-on scaffolded).
- Go to Extensions → GS2Web SaaS → Calculator → Publish Calculator.
- Select Renovation Profit Calculator from the list of available calculators.
- Click Publish and wait for the confirmation message. Do not close the dialogue early.
Step 3 — Retrieve and verify the public link
- After confirmation, open the Calculator Links sheet that the add-on creates or updates in your workbook.
- Find the row where the Sheet Name column matches RenovationCalc.
- Open the Link in column C — this is the public calculator URL. Do not use the Edit Link in column B, which opens the sheet editor.
- If the row is missing or the link appears stale, click Get Links inside the add-on to refresh the Calculator Links sheet.
Step 4 — Test the published calculator with the worked example
- Open the public link in a new browser tab (or an incognito window to simulate a visitor).
- Enter the nine default values from the worked example: Purchase Price 450000, Acquisition Costs 20000, Renovation Budget 80000, Contingency % 15, Holding Months 6, Monthly Holding Cost 2500, Delay Months 0, Disposal Costs 18000, Assumed Sale Price 650000.
- Click Calculate.
- Confirm that the results match the expected values from the worked example table: Gross Profit 55,000, ROI % 9.24, Break-Even Sale Price 595,000.
- If results do not match, return to the sheet and check that all result formulas reference G cells and that the sheet has been republished after any edits.
Step 5 — Embed the calculator on a website (optional)
In the Calculator Links sheet, column D contains an Iframe code snippet. Copy the full contents of that cell and paste it into an HTML block on your website. The embedded calculator will display the same public form. Republishing the calculator later updates the embedded version automatically because the URL does not change. For guidance on embedding and display options, visit the GSheetPress Calculator details page or the Table details page for related embed options.