Australian Website Design Measured figures. Named sources.
Menu Close

Pricing

Website Pricing and Costs Methodology: How the Figures Are Gathered

The website pricing methodology dataset behind every figure on this Australian site — what it contains and how an unreviewed number gets refused.

In short. Every figure on this site comes from one dataset, and that dataset is currently unreleased. This page publishes its state, the criteria that must be met before anything appears, and which bands are excluded and why — so the claim that unverified figures are refused can be checked rather than believed.

Every figure that will ever appear in the pricing section comes from a single file, research/pricing-bands.json. This page describes that file, the rules it is published under, and its current state.

The reason for publishing this at all is simple. A band figure with no stated method behind it is an assertion, and across the nine Australian cost pages checked on 31 July 2026, every published figure is exactly that. A method that can be read and argued with is the only thing that makes a number citable.

Current state of the dataset

Not released. The dataset carries 7 bands and none of them is published. The site is built to fail its own build rather than render a figure in this state, and a post-build scan of every page enforces it.

Release criteria

  • Dataset marked VERIFIED by the owner — not met Currently "PLACEHOLDER_UNREVIEWED".
  • Publication flag set — not met A separate switch from the status, so neither alone can release the data.
  • GST treatment stated — not met ACL s48 requires the total price and its GST component at equal prominence.
  • Dataset dated — not met An undated figure cannot be cited or checked.
  • Collection method written down — not met Quotes issued, invoices raised, or both — over what period, and how many projects.
  • Every published band drawn from at least 10 delivered projects — not met Below that threshold a band can identify an individual client and is excluded, not published.
  • Historical client contracts checked for confidentiality clauses — not met Owner action. Not derivable from the dataset; recorded here so it is not forgotten.

What is blocking release (6)

  • dataset status is "PLACEHOLDER_UNREVIEWED", not "VERIFIED"
  • dataset publishable is false, not true
  • GST treatment has not been stated — ACL s48 requires it explicitly, at equal prominence
  • the dataset has not been dated — undated figures are not citable
  • the collection method has not been written down — an unsourced figure is an assertion
  • no band passes the band-level audit

Bands not published, and why

Excluding a band changes the meaning of the bands that remain, so the exclusions are listed rather than quietly applied.

Small business brochure site
  • band "brochure-small": verified is not true
  • band "brochure-small": scope has not been written
  • band "brochure-small": projects_in_sample is unset
  • band "brochure-small": low is not a number
  • band "brochure-small": high is not a number
  • band "brochure-small": typical is not a number
Standard business website
  • band "brochure-standard": verified is not true
  • band "brochure-standard": scope has not been written
  • band "brochure-standard": projects_in_sample is unset
  • band "brochure-standard": low is not a number
  • band "brochure-standard": high is not a number
  • band "brochure-standard": typical is not a number
Custom designed website
  • band "custom-build": verified is not true
  • band "custom-build": scope has not been written
  • band "custom-build": projects_in_sample is unset
  • band "custom-build": low is not a number
  • band "custom-build": high is not a number
  • band "custom-build": typical is not a number
Ecommerce / online store
  • band "ecommerce": verified is not true
  • band "ecommerce": scope has not been written
  • band "ecommerce": projects_in_sample is unset
  • band "ecommerce": low is not a number
  • band "ecommerce": high is not a number
  • band "ecommerce": typical is not a number
Redesign of an existing site
  • band "redesign": verified is not true
  • band "redesign": scope has not been written
  • band "redesign": projects_in_sample is unset
  • band "redesign": low is not a number
  • band "redesign": high is not a number
  • band "redesign": typical is not a number
Ongoing maintenance (per month)
  • band "maintenance-monthly": verified is not true
  • band "maintenance-monthly": scope has not been written
  • band "maintenance-monthly": projects_in_sample is unset
  • band "maintenance-monthly": low is not a number
  • band "maintenance-monthly": high is not a number
  • band "maintenance-monthly": typical is not a number
Hourly rate for ad-hoc work
  • band "hourly": verified is not true
  • band "hourly": scope has not been written
  • band "hourly": projects_in_sample is unset
  • band "hourly": low is not a number
  • band "hourly": high is not a number
  • band "hourly": typical is not a number

What the dataset contains

Seven bands, each describing a category of work rather than a specific project:

  • Small business brochure site
  • Standard business website
  • Custom designed website
  • Ecommerce or online store
  • Redesign of an existing site
  • Ongoing maintenance, per month
  • Hourly rate for ad-hoc work

Each band carries a low, a high and a typical figure, a written scope, and the number of delivered projects it was drawn from. No client names are held in the dataset, and none are needed: the bands and the project counts are the whole of it.

The rules a band is published under

At least ten delivered projects per band. Below that, a band can identify an individual client’s price, particularly in a small market or a narrow specialism. A band under the threshold is excluded from publication rather than published with a caveat.

No band figure appears next to a named portfolio piece. The simplest way to guarantee this is that there are no named portfolio pieces on this site at all, and there will not be.

GST treatment stated at equal prominence. Not a footnote, not an asterisk. The same size and weight as the figure it qualifies.

The scope of each band stated with the band. A figure without a scope is not a data point, it is a number.

The date the figures were current, stated with the band. Currency of the figures is most of their value.

Indicative only, never a quote. Stated beside every figure, because a low headline band that draws enquiries which are then quoted well above it is a problem under Australian Consumer Law, not merely an awkward conversation.

How the refusal actually works

The guard is not a policy, it is code, and it fails closed at four separate points.

The dataset module reads the file at build time and evaluates every criterion above. If any one fails, a single flag is set to false, and that flag suppresses all pricing output sitewide rather than just the offending band.

Every component that could render a figure checks that flag and renders an unavailable state instead. The cost calculator goes further: while the flag is false, its JavaScript is not written into the page at all, so there is no client-side route to a number.

After the build, a check scans every page of the finished HTML for anything shaped like a currency figure, including inside structured data. If it finds one while the dataset is unreleased, the build fails. Scanning the finished HTML rather than the source is deliberate. A figure introduced through a component, a data file or a content page is caught the same way, because by then they are all just HTML.

Finally, the same check inverts once the data is released. A page carrying a figure must also carry the qualifier, must mention GST, and must state that the figure is not a quote. Otherwise the build fails again.

What is not published here, and why

The dataset also holds benchmark figures published by other Australian agencies, gathered on 31 July 2026 and attributed to their sources. They are real, and they are other companies’ claims about their own pricing.

They are not rendered anywhere on this site in its current state. While our own figures are suppressed, any dollar amount on a pricing page reads as ours, no matter how carefully it is labelled. The check described above enforces a blanket rule that would have to be weakened to allow an exception. Those figures belong alongside our own verified bands, in comparison content, where the contrast is the point rather than a hazard.

Changes to the dataset

Every change to the figures, the scopes, the sample sizes or the publication state is recorded in changes to the pricing dataset. A dataset that can be edited silently is not more trustworthy than an unsourced figure; it is the same thing with extra steps.

Website design, website development, and why WordPress development costs land lower in the same band

Website design and website development are often quoted as one figure, which is exactly why this dataset separates them by band rather than blending them into an average. Two projects in the same band — a standard business website, say — can still land at very different points inside its low-to-high range, driven by the business’s own goals rather than a generic figure. Complexity is the biggest single factor. The number of page templates, custom integrations to a booking system or a CRM, and how many products the site actually needs to represent, all push a project toward the top of its band. That is true regardless of which agency or freelancer quotes it, particularly when the brief itself under-specifies the integrations needed. WordPress development costs generally sit lower than a fully custom build for the same scope. That is one reason “custom designed website” and “standard business website” are recorded as separate bands, rather than one blended figure.

Why Sydney market rates, regional Australia and agency pricing type are not separate bands

The dataset does not split figures by city. A Sydney agency and a regional Australian one both feed the same band if the delivered scope matches. Location-based price variation is real but secondary to scope. Splitting by market before the sample size supports it would produce bands too thin to publish under the ten-project rule above. The same applies to agency type. A solo WordPress developer and a larger digital agency both contribute to the same band, if their delivered project matches its stated scope. What a professional, itemised quote actually promises to deliver matters more to a business comparing quotes than who delivers it.

Hidden costs, ecommerce prices and price surprises the scope field is designed to surface

A headline price that omits ongoing costs — maintenance, hosting, third-party integrations billed separately — is one of the more common ways a website’s website costs quietly grow after signing. The scope field recorded with each band exists specifically so a hidden cost doesn’t get silently folded out of the comparison. That is also why “ongoing maintenance, per month” is its own separate band, rather than an assumed inclusion in the build figure. Framing the number as an investment rather than a cost doesn’t change what it actually buys.

Reading the figures once they exist

The bands are indexed on what websites cost in Australia, and the reasoning that makes them usable is on why two quotes for the same site differ.

Evidence for this page

This page exists because the demand below was measured, not assumed. The figures are search-market data about the topic — they are not prices.

Entity this page targets
website pricing methodology australia
Measured Google volume
no data
Keyword difficulty
no data
Advertiser cost per click
no data
AI assistant volume
no data
Advertiser competition
no data
Measured on
31 July 2026
Search results inspected for intent
No
1 other phrasing resolve to this same page

how website cost data is collected

Source: research/pricing-bands.json · Direct inspection of the dataset file and its publication guard · pulled 31 July 2026.

Provenance

Written by Australian Website Design. Published 2026-07-31, last updated 2026-07-31.

Sources