{
  "$schema": "https://soudcoh.com/tools/data/index.json",
  "slug": "contract-churn-calculator",
  "name": "Contract churn and replacement cost",
  "category": "Sales and conversion",
  "url": "https://soudcoh.com/tools/contract-churn-calculator",
  "dataUrl": "https://soudcoh.com/tools/data/contract-churn-calculator.json",
  "currency": "AUD",
  "updated": "2026-08",
  "summary": "Work out how many recurring contracts you lose a year, the revenue that leaves with them, and what share of your new business is spent replacing rather than growing.",
  "whatItDoes": [
    "Turns an annual churn rate into contracts lost, revenue lost, and what it costs to win those contracts back.",
    "Compares that against the new business you are winning, so you can see whether the base is growing, flat or shrinking.",
    "Works out the average contract life implied by your churn rate, which is usually shorter than anyone expects."
  ],
  "howToUse": [
    "Enter how many recurring contracts you hold and what an average one bills each month.",
    "Enter your annual churn as a percentage. If you do not know it, count how many contracts you held twelve months ago and how many of those are still with you.",
    "Enter how many new contracts you win in an average month and what one costs to win.",
    "Read the standing-still line before the growth line."
  ],
  "formula": [
    "Contracts lost a year = contracts × churn rate",
    "Revenue lost a year = contracts lost × monthly value × 12",
    "Average contract life = 1 ÷ churn rate, in years",
    "Net change = (new contracts × 12) − contracts lost"
  ],
  "interpret": [
    "If new contracts a year barely exceed contracts lost, the marketing is not failing — the retention is. Buying more enquiries into a leaking base is expensive and slow.",
    "The replacement cost line is the honest price of churn. It is money spent to end the year where you started.",
    "Cutting churn by a few points is usually cheaper than winning the equivalent in new contracts, because keeping a client costs a phone call and winning one costs an acquisition."
  ],
  "limitation": "This models a flat churn rate applied evenly across the year. Real churn clusters — around contract anniversaries, price rises and changes of building manager — so the month-to-month picture is lumpier than this suggests, even when the annual figure is right.",
  "inputs": [
    {
      "key": "contracts",
      "label": "Recurring contracts held",
      "kind": "number",
      "default": 40,
      "min": 1,
      "max": 1000000,
      "unit": "count",
      "help": "Sites, runs or agreements that bill every month.",
      "sourceId": null,
      "sourceNote": null,
      "options": null
    },
    {
      "key": "monthlyValue",
      "label": "Average monthly value of one",
      "kind": "currency",
      "default": 900,
      "min": 1,
      "max": 1000000,
      "unit": "AUD",
      "help": "What one contract bills you in a month, excluding GST.",
      "sourceId": null,
      "sourceNote": null,
      "options": null
    },
    {
      "key": "churnPct",
      "label": "Annual churn",
      "kind": "percent",
      "default": 18,
      "min": 0.1,
      "max": 100,
      "unit": "percent",
      "help": "The share of contracts that end in a year. Count it from your own book rather than estimating.",
      "sourceId": null,
      "sourceNote": null,
      "options": null
    },
    {
      "key": "margin",
      "label": "Gross margin",
      "kind": "percent",
      "default": 30,
      "min": 1,
      "max": 100,
      "unit": "percent",
      "help": "After the labour and materials on the run.",
      "sourceId": null,
      "sourceNote": null,
      "options": null
    },
    {
      "key": "newPerMonth",
      "label": "New contracts won a month",
      "kind": "number",
      "default": 2,
      "min": 0,
      "max": 100000,
      "unit": "count",
      "help": "Average across the year. Half a contract a month is fine to enter.",
      "sourceId": null,
      "sourceNote": null,
      "options": null
    },
    {
      "key": "cac",
      "label": "Cost to win one contract",
      "kind": "currency",
      "default": 499,
      "min": 0,
      "max": 1000000,
      "unit": "AUD",
      "help": "All-in acquisition cost, not media only.",
      "sourceId": "soudcoh-case-studies",
      "sourceNote": "Placeholder derived from our own book: the median cost per enquiry across 4 commercial cleaning accounts is $99.73, and this assumes one in five enquiries becomes a contract. Replace it with your own figure.",
      "options": null
    }
  ],
  "defaults": {
    "contracts": 40,
    "monthlyValue": 900,
    "churnPct": 18,
    "margin": 30,
    "newPerMonth": 2,
    "cac": 499
  },
  "exampleResult": {
    "headline": {
      "label": "Revenue lost to churn a year",
      "value": "$77,760",
      "note": "7.2 contracts at $900.00 a month"
    },
    "outputs": [
      {
        "label": "Average contract life",
        "value": "5.6 years",
        "note": "1 ÷ 18% churn"
      },
      {
        "label": "Net change in the base",
        "value": "16.8",
        "note": "56.8 contracts at year end"
      },
      {
        "label": "New business spent replacing",
        "value": "30%",
        "note": "3.6 months of winning work"
      },
      {
        "label": "Acquisition cost of replacement",
        "value": "$3,593",
        "note": "7.2 contracts at $499.00"
      },
      {
        "label": "Gross profit lost",
        "value": "$23,328",
        "note": "At 30% margin"
      }
    ],
    "workings": [
      {
        "label": "Contracts lost a year",
        "expression": "40 × 18% = 7.2"
      },
      {
        "label": "Revenue lost",
        "expression": "7.2 × $900.00 × 12 = $77,760"
      },
      {
        "label": "Average contract life",
        "expression": "1 ÷ 18% = 5.6 years"
      },
      {
        "label": "Net change",
        "expression": "(2 × 12) − 7.2 = 16.8"
      },
      {
        "label": "Replacement cost",
        "expression": "7.2 × $499.00 = $3,593"
      }
    ]
  },
  "shareableExample": "https://soudcoh.com/tools/contract-churn-calculator?contracts=40&monthlyValue=900&churnPct=18",
  "faqs": [
    {
      "question": "What is a normal churn rate for commercial cleaning contracts?",
      "answer": "No published figure exists for Australia, and we are not going to estimate one. The useful way to read your own is through contract life: 10% annual churn is a ten-year average relationship, 20% is five years, 30% is a bit over three. Most operators, asked to guess their churn, name a number that implies a contract life far longer than their own records support — which is the reason this tool asks you to count rather than estimate."
    },
    {
      "question": "Is it cheaper to keep a contract or win a new one?",
      "answer": "Keeping one, in almost every case, and this tool prices the difference. Winning a replacement costs a full acquisition — the enquiry, the site visit, the quote, the mobilisation. Keeping one usually costs a scheduled conversation before the anniversary. The replacement-cost line on this page is the annual price of not having that conversation."
    },
    {
      "question": "How do I calculate my churn rate?",
      "answer": "Take the contracts you held twelve months ago, count how many of those you still hold today, and divide the lost ones by the starting number. Do not include contracts won during the year in the denominator — mixing them in produces a churn rate that is too low, and it is the most common way this figure gets flattered."
    },
    {
      "question": "Why is my revenue flat when my advertising is working?",
      "answer": "This is the calculation that usually answers that. If you win twenty-four contracts a year and lose twenty-two, the advertising is doing its job and the business is standing still. The net-change line separates the two, and it is worth running before any decision to increase the budget — otherwise more spend just replaces losses faster."
    },
    {
      "question": "Where does the default acquisition cost come from?",
      "answer": "It is derived from our own published work, and it is a placeholder rather than a benchmark. Across four commercial cleaning accounts we run, the published cost per enquiry ranges from $27.39 to $220.59, and the default here takes the median of those and assumes one enquiry in five becomes a contract. That close-rate assumption is ours, not a measured figure, which is exactly why the field is editable and you should edit it."
    }
  ],
  "sources": [
    {
      "id": "soudcoh-case-studies",
      "label": "SoudCoh, 36 published client case studies",
      "publisher": "SoudCoh",
      "year": "2026",
      "market": "AU/UK",
      "method": "Cost per enquiry taken from the headline figure published on each case study, for a measured period in 2026. Australian dollars.",
      "confidence": "high",
      "caution": "A range from selected work on accounts we run, not a market average and not a forecast. Read the individual case studies before using any figure from it.",
      "url": "https://soudcoh.com/case-study"
    }
  ],
  "relatedTools": [
    "https://soudcoh.com/tools/customer-lifetime-value-calculator",
    "https://soudcoh.com/tools/cost-per-booked-job-calculator",
    "https://soudcoh.com/tools/marketing-budget-calculator"
  ],
  "licence": {
    "terms": "Free to reuse with attribution to SoudCoh and a link to the page it came from. Third-party figures remain the property of the publisher named on each row and must keep their market and year attached.",
    "attribution": "SoudCoh — https://soudcoh.com/tools"
  }
}
