A price change should be one edit

Three sites I audited in one week listed more than one price for the same service. The fix: store each price once and have every page read it.

On this page
  1. Most teams find every copy by memory
  2. Lead forms drift the same way
  3. I store each fact once and have every page read it
  4. A fourth service on this site took one new entry
  5. Prices inside sentences still need a search
  6. Most platforms can store a value once
  7. Checking your own site

I audited three websites this week, and all three listed more than one price for the same service. The older prices were right once. The business changed its price, and some pages kept the old one.

The cause is how the sites store their content. On most CMS setups I see, each page is its own document with the price typed into it. The pricing page has a copy. So does each service page, the comparison page, and the landing page someone built for a campaign three years ago. When the price changes, somebody updates the pages they remember.

Most teams find every copy by memory

I see teams keep up in one of two ways. One is a document that lists every page where each price, product name and description appears. The other is the person who remembers that the campaign page exists. The document falls behind the first time someone publishes a page without adding it to the list, and the person eventually leaves. Then a buyer lands on the old campaign page, reads the old price, and your sales team opens the first call by explaining which number is real.

Lead forms drift the same way

A form built into a page is a copy of the form. A version of the lead form sits on a page nobody has opened in two years. Then marketing ops adds a field, say company size, so leads can be routed by segment. The field goes onto every form someone can find. Leads from the forgotten page arrive without it, miss the routing rule and wait in a queue nobody watches.

Copies also drift apart on the answers. If one version of the form offers “Under 50” and another offers “1 to 49”, the CRM holds two values for the same company size, and every report grouped by size splits them. Fixing it means the same hunt as the prices: find every form, then edit each one by hand.

I store each fact once and have every page read it

On the sites I build, the names, descriptions and prices of products and services live in one data file (a JSON file, or a TypeScript file that does the same job). Each page asks the file for the price when the site builds. Forms work the same way. There’s one form component, and every page that needs a form uses it, so a site with 15 lead forms has one form in its code, placed 15 times.

A change to the business then takes one edit. Change the price in the file and deploy, and every page that shows it changes in the same build. Add a field to the form component and it appears on all 15 forms, so every lead after that arrives with it. Nobody has to remember where everything is, because each fact is stored in one place.

I count where a price is stored as a marketing decision. Storing each fact once is the only way I know to be sure a change to the business reaches every page a buyer can land on and every lead in the CRM.

A fourth service on this site took one new entry

This week I also added a fourth service to this site. The rows on the home page and the services page, the llms.txt file that describes the site to AI assistants, and the “Service 04 of 04” label on each service page all came from one new entry in one file. The home page heading, “Three ways to work with me”, I changed by hand, because it’s a sentence.

I don’t generate sentences from the data file. A sentence built from a template never goes through the edit every other sentence on the site gets. So a price written into a blog post or an FAQ answer is still a copy. I keep those rare and link to the pricing page instead of repeating the number. A price change still ends with a search of the posts.

Most platforms can store a value once

You don’t need to rebuild a site to get most of this. In WordPress, an options page (Advanced Custom Fields Pro has one) can hold a price that every template reads, and a synced pattern holds a block of content that many pages share. Webflow has CMS collections and components. A HubSpot form is one form wherever it’s embedded, so editing it changes every embed. Most of the drift I find comes from pages built one at a time on platforms that could have shared the value.

Checking your own site

  • Crawl the site with a text search for each current and past price. Screaming Frog’s custom search does this, and every page it matches is a copy you’ll need to update next time.
  • Run the same crawl for your form’s embed code or ID, list every page that has a form, and compare the fields on each.
  • Check product and service names the same way, including names you’ve retired.
  • In the CRM, filter the last 90 days of leads for the newest field you added. Blank values point to a form that doesn’t have it, and the conversion page, if your CRM records one, tells you which.
Tim Speciale

Tim SpecialeWebsite and growth lead for B2B teams. I also run Better Off Growth in Maryville, Tennessee.

Book 30 minutes and tell me what your site should be doing that it isn’t.

Book a 30-minute call

30 minutes, no deck.