Ask a sales team where the week goes and a surprising amount lands in the same place. Not strategy. Mechanics. Copying last quarter’s document, swapping the logo, updating the scope, changing the numbers, then reading it three times to make sure nothing from the last client survived the copy and paste.
There is an old line on sales floors. Sending Jennifer a proposal that still talks about John is not a mistake. It is a crime. The document can be flawless. The pricing can be right. But one stale name, one wrong company, one leftover detail from the previous deal, and the buyer stops reading your offer and starts wondering how carefully you work.
The hours are expensive. The mismerge is worse.
Almost none of this is carelessness. It is structure. Every field you fill in by hand is a place a mistake can live, and the more personalized your proposals get, the more of those places you create. You cannot proofread your way out of a structural problem. You can only remove the places the error hides.
That is the thread running through everything we shipped this month. Below we walk each change the way we would want it explained to us: what kept going wrong, why it needed to change now, what actually changed, and how to use it well. The numbers arrive in their own section near the end, and we are careful there about which are measured and which are modeled.
the same line, three ways
Dear John, copied by hand
Dear [contact.first_name], defined once
Dear Jennifer, always correct
01 · the foundation
Custom fields become one source of truth
What kept going wrong / the background
Personalization is what makes a proposal feel written for the buyer instead of mail-merged at them. But every personalized detail is a value someone has to get right: the client’s name, their company, the contact you are addressing, the scope, the pricing basis, the dates. For most teams those values were retyped into each new document, or carried over from the last one and edited by hand. Custom data, where it existed at all, was mostly free text with no structure and no validation. Nothing stopped a value from being spelled one way here and another way there, or from being right in the cover letter and wrong in the pricing table.
Why it needed to change now
Manual entry does not scale, and its failure mode gets worse with volume. Send five proposals a month and you can proofread your way to safety. Send fifty, under deadline, personalized, and the odds catch up with you. Two things raised the stakes at the same time. Buyers increasingly read polish as a proxy for how you will deliver, so a stale detail costs more than it used to. And the systems downstream of your proposal, your CRM and your automations, need clean structured data to work. Before proposals could become genuinely dynamic, fields had to become structured, typed, and scoped to the thing they describe.
What changed
Custom fields are now a full system for dynamic content. You define a value once, attach it to the entity it belongs to, give it a type, and reference it anywhere. Change it in one place and it updates everywhere it appears, because there is only one value. You can attach a custom field to any of five entities:
And seven data types, so each value is validated as it is entered:
boolean date decimal integer list multiple values string
Two of those entities quietly change how much you retype. A field on the contact means a returning client’s details travel with the person, so the second proposal starts already correct. A field on the proposal lets you vary a single detail per document even when the client has not changed, the exact situation that defeats copy and paste.
The quiet hero is the preset list
For list and multiple-value fields you define the allowed options in advance. Users then choose from your list instead of typing. Set up a City field with New York, New Jersey, and London, and nobody invents a fourth spelling of a city you already have. Preset values remove an entire class of error before it can be made, rather than catching it after. And any field can be made mandatory, which turns “we forgot to include it” into “we cannot forget.”
City (list)
How to use it well
- Make dynamic the three to five values you reuse in almost every proposal first. That is where most of the retyping and most of the risk lives.
- Convert repeat-offender free-text fields, the ones people spell inconsistently like region, plan, or industry, into list fields with preset options.
- Mark the deal-breakers mandatory: anything a proposal genuinely should not go out without.
Net effect on the deal: a proposal that is correct by construction, built in less time, and clean enough to feed everything downstream of it.
02 · capture and sync
Proposal inputs flow straight into HubSpot
The gap between signed and recorded / the background
Proposals do not only send information, they collect it. You ask the client for a PO number, a billing contact, a project detail, an acceptance of terms. Until now, once the client filled that in and signed, the answer lived inside the signed document. Getting it into your CRM meant a person opening the PDF, finding the value, and typing it into HubSpot by hand. That is slow, it is a fresh chance to mistype, and it introduces a lag between the moment a deal is won and the moment your systems know about it.
Why it matters now
Revenue operations runs on the quality and timeliness of CRM data. Onboarding sequences, invoicing, and account handoffs all trigger off fields in HubSpot, and they are only as reliable as the data feeding them. The best moment to capture that data is the moment of signature, when it is freshest and most complete. Leaving it trapped in a PDF, waiting on a manual copy, is where clean pipelines quietly go wrong.
What changed
You can now map an input field in your proposal directly to a custom field in HubSpot. When your client fills it in and signs, the value is saved to Fresh Proposals and synced to the HubSpot field you chose, at the moment of signing. You can keep the value in an internal Fresh Proposals variable as well, so it is available both inside the platform and in your CRM.
How to use it well
- Make the client-input fields you care about mandatory, so the data you want in HubSpot is always captured before signing.
- Map only the fields your operations, onboarding, or finance teams genuinely act on. A clean CRM is a focused one.
- Name the Fresh Proposals field and the HubSpot field consistently so the mapping is obvious to whoever maintains it later.
Net effect on the deal: the instant a deal is won, the systems that act on it already have what they need, with no one retyping and nothing waiting in an inbox.
03 · editor quality of life
Cleaner editing for dense documents
When fields crowd each other out / the background
As documents get richer, with more inputs, pricing rows, and signature blocks, elements start to sit close together. Each block has an area of influence over the space around it, and when blocks overlap that influence, the one you are trying to select is hard to reach. You click, you get the neighbor, you undo, you try again. A small friction, but the kind that shows up every time you edit a busy document.
What changed, and why it is worth it
There is now a way to fix crowded layouts and preview the result before you save, so you can see exactly how the spacing will land before committing. New documents created from scratch already avoid the issue. Existing documents with overlapping elements will be corrected too: for now that migration is applied by hand, and it will roll out automatically over time. You do not need to do anything for the automatic rollout to reach your documents.
Net effect on the deal: your team stops avoiding the dense, high-value documents because the editor no longer fights them.
04 · platform trust
Stricter protection around your data
What we saw / the background
We observed attempts to probe our services, the kind of automated poking any platform on the open internet eventually attracts. The attempts were turned down. No user data was reached. We are telling you plainly because you trust us with your pipeline, and trust is easier to keep when we do not go quiet about the boring parts of security.
What changed
We added API rate limiting that blocks patterns of use that do not look like legitimate activity. It works quietly in the background. Normal usage is entirely unaffected, and there is nothing you need to configure.
05 · support
A help center that lives in the app
Help that lives on a separate site is help you have to go looking for, usually at the exact moment you are trying to get something done. Our help guides have moved to a new home and are now reachable from inside Fresh Proposals, so you can find answers in the same place you are working. Fewer tabs, faster answers, less momentum lost.
06 · the impact, in numbers
What this moves in the sales process
Every change above points at the same outcome: less time lost to mechanics, fewer errors reaching the buyer, and cleaner data feeding the rest of your funnel. Here is how that maps to the metrics a sales leader actually watches. These figures are modeled from typical team volumes, not measured from your account, so each assumption is shown and every cell is yours to replace with real telemetry.
Why accuracy compounds
This update structures the proposal’s data. An earlier release structured the proposal’s conversation, letting buyers ask questions and request changes directly on the document instead of across scattered email. That change was measured against the same accounts’ pre-April baseline, and the pattern was clear: the more of a deal that lives on the proposal as structured information, rather than in an inbox or someone’s memory, the better it converts.
Put the two tables side by side and the argument is simple. Structure the conversation and deals recover and grow. Structure the data and the proposal is correct by construction and clean enough to power everything after it. This month is the second half of that story.
Read the whole list together and it is really one change. Fewer places for a proposal to go wrong. So the document your client opens is exactly the one you meant to send. To Jennifer. With Jennifer’s name on it.










0 Comments