Free tool · HMA

Clinic Break-Even Calculator

Find out how many consultations or treatments your clinic needs each month to cover its costs.

1Your clinic setup

Saved on this device so you don't need to re-enter it next time.

Doctors, dentists, or therapists who each see patients.

2Monthly fixed costs

Costs that stay the same every month regardless of patient volume, like rent or salaries.

Cost item Monthly amount
Total fixed costs 0

3Monthly variable costs

Costs that can change month to month, like utilities, marketing spend, or supplies.

Cost item Monthly amount
Total variable costs 0

4Your own take-home target

Optional. If you want the calculator to include what you want to personally earn, not just cover costs, add it here.

5Your treatments and pricing

List what you charge for each treatment or service you offer.

Treatment / service Price you charge

6Safety buffer and current volume

Most clinics run 6-12 months below full capacity while the patient base builds. A buffer makes your number more realistic.

We'll crunch the numbers above into your break-even report.

Fill in your numbers above, then click “Calculate Break-Even Number” to see your full report.

Once you know your number, the fastest way to close the gap is getting more of the right patients in the door. See how HMA can help.

See a 15-minute demo
" + wrapClone.outerHTML + ""; var printWindow = window.open("", "_blank"); if (!printWindow){ // Popup blocked: fall back to printing the current page as-is. window.print(); return; } printWindow.document.open(); printWindow.document.write(docHTML); printWindow.document.close(); var printed = false; function doPrint(){ if (printed) return; printed = true; try{ printWindow.focus(); printWindow.print(); } catch(e){} } printWindow.onload = doPrint; setTimeout(doPrint, 700); } function saveState(){ try{ var data = JSON.parse(JSON.stringify(state)); localStorage.setItem(STORAGE_KEY, JSON.stringify(data)); } catch(e){} } function loadState(){ try{ var raw = localStorage.getItem(STORAGE_KEY); if (!raw) return false; var data = JSON.parse(raw); Object.assign(state, data); return true; } catch(e){ return false; } } function bindStaticInputs(){ document.getElementById("resultsBody").addEventListener("click", function(e){ var btn = e.target.closest(".bec-formula-toggle"); if (!btn) return; formulaBoxOpen = !formulaBoxOpen; var content = document.getElementById("formulaContent"); if (content) content.style.display = formulaBoxOpen ? "block" : "none"; btn.textContent = formulaBoxOpen ? t().formulaToggleHide : t().formulaToggleShow; pushEvent("bec_formula_toggle", { open: formulaBoxOpen }); }); document.querySelectorAll(".bec-hero-chip").forEach(function(chip){ chip.addEventListener("click", function(){ var targetId = chip.getAttribute("data-target"); var el = document.getElementById(targetId); if (el){ pushEvent("bec_hero_chip_click", { target: targetId }); el.scrollIntoView({ behavior:"smooth", block:"start" }); } }); }); document.getElementById("clinicName").addEventListener("input", function(e){ state.clinicName = e.target.value; saveState(); }); document.getElementById("workingDays").addEventListener("input", function(e){ state.workingDays = e.target.value; recalc(); }); document.getElementById("numProviders").addEventListener("input", function(e){ state.numProviders = e.target.value; recalc(); }); document.getElementById("includeOwnerComp").addEventListener("change", function(e){ state.includeOwnerComp = e.target.checked; document.getElementById("ownerCompRow").style.display = e.target.checked ? "flex" : "none"; recalc(); }); document.getElementById("ownerCompGoal").addEventListener("input", function(e){ state.ownerCompGoal = e.target.value; recalc(); }); document.getElementById("currentVolume").addEventListener("input", function(e){ state.currentVolume = e.target.value; recalc(); }); document.getElementById("addFixedRow").addEventListener("click", function(){ state.fixedCosts.push({ id:newId("f"), label:"", amount:"" }); renderFixedTable(); recalc(); }); document.getElementById("addVariableRow").addEventListener("click", function(){ state.variableCosts.push({ id:newId("v"), label:"", amount:"" }); renderVariableTable(); recalc(); }); document.getElementById("addMixRow").addEventListener("click", function(){ state.treatments.push({ id:newId("m"), name:"", price:"" }); renderMixTable(); recalc(); }); document.querySelectorAll(".bec-buffer-btn").forEach(function(btn){ btn.addEventListener("click", function(){ document.querySelectorAll(".bec-buffer-btn").forEach(function(b){ b.classList.remove("active"); }); btn.classList.add("active"); state.bufferPercent = btn.getAttribute("data-val"); recalc(); }); }); document.getElementById("countrySelect").addEventListener("change", function(e){ state.country = e.target.value; pushEvent("bec_country_switch", { country: state.country }); applyI18nStatic(); recalc(); }); document.getElementById("langSelect").addEventListener("change", function(e){ state.lang = e.target.value; document.getElementById("langSelect").value = state.lang; pushEvent("bec_language_switch", { language: state.lang }); rebuildForLanguage(); }); document.getElementById("calcBtn").addEventListener("click", function(){ // Show the calculator report as normal reportRevealed = true; recalc(); document.getElementById("reportPlaceholder").style.display = "none"; var reportEl = document.getElementById("reportSection"); reportEl.style.display = "block"; // Send ONLY the fields entered by the user. // No calculated/report data is sent. sendBreakEvenFormData(); pushEvent("bec_calculate_click", { country: state.country }); reportEl.scrollIntoView({ behavior: "smooth", block: "start" }); }); document.getElementById("printBtn").addEventListener("click", function(){ pushEvent("bec_print_click", {}); openIsolatedPrintWindow(); }); document.getElementById("resetBtn").addEventListener("click", function(){ if (window.confirm(t().confirmReset)){ localStorage.removeItem(STORAGE_KEY); location.reload(); } }); document.getElementById("ctaLink").addEventListener("click", function(){ pushEvent("bec_cta_click", { country: state.country }); }); window.addEventListener("beforeprint", function(){ if (!reportRevealed){ reportRevealed = true; recalc(); document.getElementById("reportPlaceholder").style.display = "none"; document.getElementById("reportSection").style.display = "block"; } }); } function rebuildForLanguage(){ applyI18nStatic(); renderFixedTable(); renderVariableTable(); renderMixTable(); recalc(); } function pushEvent(eventName, data){ try{ window.dataLayer = window.dataLayer || []; var payload = Object.assign({ event: eventName, tool: "clinic_break_even_calculator" }, data || {}); window.dataLayer.push(payload); } catch(e){} } function sendBreakEvenFormData() { // Build ONLY the data entered/selected by the user. var formData = { clinicName: state.clinicName || "", workingDays: state.workingDays || "", numProviders: state.numProviders || "", country: state.country || "", language: state.lang || "", fixedCosts: state.fixedCosts.map(function(row) { return { label: row.label || "", amount: row.amount || "" }; }), variableCosts: state.variableCosts.map(function(row) { return { label: row.label || "", amount: row.amount || "" }; }), includeOwnerComp: state.includeOwnerComp ? "Yes" : "No", ownerCompGoal: state.ownerCompGoal || "", treatments: state.treatments.map(function(row) { return { name: row.name || "", price: row.price || "" }; }), bufferPercent: state.bufferPercent || "", currentVolume: state.currentVolume || "" }; /* ========================================= 1. SEND TO WORDPRESS AJAX ========================================= */ fetch("https://healthcare-marketing.agency/wp-admin/admin-ajax.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }, body: new URLSearchParams({ action: "hma_break_even_submit", data: JSON.stringify(formData) }) }) .then(function(response) { return response.json(); }) .then(function(result) { console.log("Break-even WordPress submission:", result); }) .catch(function(error) { console.error("Break-even WordPress submission failed:", error); }); /* ========================================= 2. SEND TO WEBHOOK ========================================= */ fetch("https://connect.pabbly.com/webhook-listener/webhook/IjU3NjUwNTZkMDYzNTA0M2Q1MjZkIg_3D_3D_pc/IjU3NjcwNTY4MDYzMDA0MzY1MjY1NTUzZDUxMzci_pc", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(formData) }) .then(function(response) { if (!response.ok) { throw new Error("Webhook returned HTTP " + response.status); } return response.text(); }) .then(function(result) { console.log("Break-even webhook submission:", result); }) .catch(function(error) { console.error("Break-even webhook submission failed:", error); }); } function init(){ var restored = loadState(); var tr0 = I18N[state.lang]; if (!restored || !state.fixedCosts || state.fixedCosts.length === 0){ state.fixedCosts = defaultFixedCosts(tr0); } if (!restored || !state.variableCosts || state.variableCosts.length === 0){ state.variableCosts = defaultVariableCosts(tr0); } if (!restored || !state.treatments || state.treatments.length === 0){ state.treatments = defaultTreatments(tr0); } document.getElementById("langSelect").value = state.lang; document.getElementById("clinicName").value = state.clinicName || ""; document.getElementById("workingDays").value = state.workingDays || 22; document.getElementById("numProviders").value = state.numProviders || 1; document.getElementById("includeOwnerComp").checked = !!state.includeOwnerComp; document.getElementById("ownerCompRow").style.display = state.includeOwnerComp ? "flex" : "none"; document.getElementById("ownerCompGoal").value = state.ownerCompGoal || 0; document.getElementById("currentVolume").value = state.currentVolume || ""; document.querySelectorAll(".bec-buffer-btn").forEach(function(btn){ btn.classList.toggle("active", btn.getAttribute("data-val") === String(state.bufferPercent)); }); applyI18nStatic(); renderFixedTable(); renderVariableTable(); renderMixTable(); bindStaticInputs(); recalc(); pushEvent("bec_tool_loaded", { country: state.country, language: state.lang }); } document.addEventListener("DOMContentLoaded", init); })();

Get A Free E-Book