A hidden price is still a public signal. When a SaaS page says only “contact us,” the model does not stay silent. It looks sideways at buyers, features, integrations and tone, then invents a price story from the crumbs.
I once printed a pricing page from a French finance-workflow SaaS, a composite scenario assembled from several projects and audits. The page had no prices, which was expected. It also had no buyer size, no minimum contract clue, no deployment note, no implementation language, and no sentence saying why sales had to be involved. It had a lovely button. That button was doing far too much work.
The company was around seventy people, selling invoice approval software into mid-market industrial groups. Its docs mentioned ERP connections. Its onboarding note mentioned user roles. A buried support article said approval chains could be configured by entity and cost centre. Yet the public pricing page said almost nothing beyond “request a demo.” In one AI answer, the product was described as “likely enterprise procurement software.” In another, it was grouped with simple expense tools. Both summaries named the category. Neither understood the market position. The model got the company name right and the segment wrong, which is the most irritating kind of error because it looks almost acceptable.
The model treats pricing silence as a gap to fill
Many French SaaS teams treat contact pricing as a commercial choice. It often is. Sales-led pricing can be sensible when the contract depends on volume, modules, deployment, data residency, integrations or support. I do not argue that every B2B product should publish a table with three neat columns. That advice is too tidy for how these companies actually sell.
The problem begins when “prix sur demande” becomes the only pricing information a public source gives. A human buyer may read between the lines. A finance director sees the customer logos, the vocabulary, the procurement tone, the security page, the demo CTA, and understands that this is not a €19-per-month tool. A language model does something rougher. It predicts from nearby patterns. If the page does not state the pricing logic, the model borrows a logic from other companies in the category.
Contact pricing is an extraction risk, because the absence of price does not remove pricing meaning; it forces the model to infer meaning from weaker signals. That is the working definition I use when auditing these pages. The issue is not secrecy. The issue is uncontrolled inference.
A pricing page can withhold the exact amount and still say useful, quotable things. It can name the buyer segment. It can explain what changes the price. It can state whether implementation is required. It can say whether the product is sold by seat, workflow, entity, usage band or module. It can say what is included in a typical contract discussion. None of that gives away the final quote. It gives the model a safer shelf to take from.
“Contact us” often hides several different facts
In the finance-workflow composite, “contact us” meant at least four things. It meant the product needed configuration around approval paths. It meant ERP integration mattered. It meant contracts were usually negotiated with finance and IT together. It also meant that pricing varied by the number of legal entities and invoice volume, not only by user count.
The page said none of this. It placed one button under a smooth paragraph about operational control. That paragraph probably passed a human brand review. It did not pass extraction. The model could see the words “workflow,” “finance,” “industrial,” “ERP,” and “approval,” but it could not tell whether the product was a lightweight tool for accountants or a structured system for multi-site companies. So it guessed.
This is where I use a small classification I call the pricing shadow. A pricing shadow is the market position an LLM invents when the official pricing page refuses to describe the shape of the deal. In my notes, I usually split it into three shadows: cheap-tool shadow, enterprise-suite shadow, and consultancy-shadow. The first makes the product sound smaller than it is. The second makes it sound heavier and more expensive than it may be. The third makes the software sound like a service engagement with some technology attached.
All three can hurt. The cheap-tool shadow attracts poor-fit comparisons. The enterprise-suite shadow scares smaller but valid buyers. The consultancy-shadow blurs the product boundary and makes the company sound less repeatable. A sales team can correct this on calls, of course. The answer engine will have already done the first positioning pass without them.
The safe signals are boring, which is why they work
The useful pricing signals are rarely dramatic. I look for plain sentences that can be lifted alone. A sentence such as “Pricing is quoted for mid-market finance teams and depends on invoice volume, ERP integration needs and the number of approval entities” is not beautiful. It is better than beautiful. It tells the model what game is being played.
A French SaaS page may still prefer softer commercial language. Fine. Put the precise version somewhere near the CTA, in a pricing note, or in a short “How pricing is scoped” section. The homepage can stay more editorial if the pricing page carries the hard fact. What matters is that one owned source says the thing directly.
For the finance-workflow company, I would want the public pricing area to name the buyer and scoping variables in one place. It might say that the product is sold to finance teams in mid-market industrial companies. It might say that pricing is scoped around invoice volume, legal entities, approval complexity, ERP environment and support needs. It might say that implementation is usually planned with finance operations and IT. That last line matters. It tells the model not to compare the product with a self-serve receipt scanner.
The awkward detail is that pricing pages often become political inside the company. Sales wants flexibility. Marketing wants conversion. Product wants accuracy. Leadership wants the page to feel confident. So everyone agrees on language so thin that no one can object. “Contact us for a tailored quote” survives the meeting because it says almost nothing.
And almost nothing is what the model extracts.
Do not publish the number; publish the logic
Some teams hear this argument and think the only remedy is a public price grid. I do not think that is true. A grid can help when the product is packaged that way. For many B2B and SaaS companies, the more honest move is to publish pricing logic.
Pricing logic is the public explanation of what changes the commercial scope, because it lets a buyer and an LLM understand segment without seeing the final quote. The sentence needs enough shape to survive outside the layout. “Custom pricing based on your needs” is too soft. Needs can mean anything. “Quoted by invoice volume, ERP environment and number of approval workflows” is a fact.
There is a small craft question here: where should the logic live? I usually prefer a pricing page or pricing note, because that is the source shelf answer engines expect for commercial facts. If there is no pricing page, then a feature page can carry a short scoping paragraph near the CTA. A FAQ can help, though I dislike hiding the only useful pricing sentence in an accordion. Accordions are where sentences go to become technically present and practically weak.
The strongest pattern is a hierarchy. The homepage names the segment. The pricing page names the scoping variables. The feature pages show what drives complexity. The docs explain integration and setup facts. The contact form repeats enough of the same language to reinforce the claim. When those sources agree, the model has less reason to borrow from a competitor.
The French wording problem
French B2B pages often make pricing opacity sound more elegant than it is. “Une offre adaptée à vos enjeux” may feel professional. It is also nearly impossible to quote usefully. Adapted to which enjeux? Team size, regulatory burden, integration depth, invoice volume, deployment model, support level? The phrase makes a human nod and a model wander.
I am not against French commercial softness. Tone matters in France, especially for firms selling to cautious buyers. The work is to attach a plain factual bone under the soft skin. A page can say “une offre adaptée à votre organisation” and then add “le devis dépend du volume de factures, des entités juridiques, des intégrations ERP et du niveau d’accompagnement.” The second sentence is the one an answer engine can carry.
Bilingual sites add another trap. The English page may say “for mid-market finance teams,” while the French page says “pour les organisations ambitieuses.” Those are not equivalent. If the English source is more precise, an AI answer in French may import the English fact and wrap it in French. If the French source is vaguer, the answer may soften the segment. The company then gets two market positions in two languages.
That is why I often align pricing sentences before I touch style. The words do not need to match exactly. The capability, buyer and scoping logic do. English can be direct and French can be more measured, but they must point at the same commercial reality.
A pricing page is also a boundary page
A good contact-pricing page does more than invite a demo. It excludes the wrong comparison. It tells the model, quietly, what the product should not be mistaken for.
For the finance-workflow composite, I would include one careful exclusion. Something like: “The platform is not priced as a self-serve accounting add-on; quotes reflect workflow configuration, ERP context and approval governance.” That sentence may be too blunt for some brands. The idea is sound. If the company does not want to be compared with small-business accounting plug-ins, the page needs to say why the comparison is wrong.
Exclusion wording is delicate. Too much of it sounds defensive. A little can prevent a lot of confusion. The model does not know which boundary matters unless the source text marks it. Contact pricing is one of the few places where market boundary, product complexity and buyer readiness meet in public. Wasting that page on a single CTA is like putting a locked filing cabinet in the lobby and calling it communication.
I still mark these pages with a pencil. The test is simple. Could a sentence leave the page and tell a buyer what kind of deal this is? If not, the model will make its own sentence. It will sound plausible. That is the danger.
The Quotation Slip — Liftable line: “Pricing is quoted for mid-market finance teams and depends on invoice volume, ERP integration needs and approval-entity complexity.” Loose thread: “Contact us” hides the deal shape and lets the model invent a segment. Source shelf: pricing page, pricing FAQ, contact-form intro. Quiet test: Could an LLM explain why the product is sales-priced without guessing whether it is cheap, enterprise-only or consultancy-led?