# Customised Quote Numbering

**URL:** <https://community.hubspot.com/t/customised-quote-numbering/129462>\
**Category:** CMS Development\
**Tags:** professional\
**Created:** [April 8, 2025, 7:00am UTC](https://community.hubspot.com/t/customised-quote-numbering/129462 "2025-04-08T07:00:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DGreyling](https://avatars.discourse-cdn.com/v4/letter/d/3ec8ea/32.png) [@DGreyling](https://community.hubspot.com/u/DGreyling)\
**Post date:** [April 8, 2025, 7:00am UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/1 "2025-04-08T07:00:16Z")

</div>

Hi there,

I have been trying to find out how to change the quote numbering from the original given HubSpot quote numbers, into my own dynamic numbering that would continue the quote numbers from my previous system. I see it is so simple to change invoice numbers, but there is no way to change/customize the quote numbers.

---

<div class="post-metadata">

**Author:** ![DianaGomez](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/dianagomez/32/48035_2.png) [@DianaGomez](https://community.hubspot.com/u/DianaGomez)\
**Post date:** [April 8, 2025, 7:49am UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/2 "2025-04-08T07:49:44Z")

</div>

Hi @DGreyling,

Thanks for reaching out to the Community!

While it’s not possible right now, this idea has already been suggested in our Ideas Forum:[Configure quote number format](https://community.hubspot.com/t5/HubSpot-Ideas/Configure-quote-number-format/idi-p/257608). You can show your support by upvoting it and adding details about how you’d use this feature in the comments.

Best,  
Diana

---

<div class="post-metadata">

**Author:** ![nickdeckerdevs1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/nickdeckerdevs1/32/5198_2.png) [@nickdeckerdevs1](https://community.hubspot.com/u/nickdeckerdevs1)\
**Post date:** [April 8, 2025, 7:00pm UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/3 "2025-04-08T19:00:13Z")

</div>

You would need to create a new property for your internal IDs and then surface them on the quote template (if they need to be there)  
The new property you would create should be a unique value property (if that is possible)  
Then you could set this up a few different ways. Here are the high level details of each and I can dig into more details if you need!  
Use HubDB to manage invoice ids:  
-- basically you use a hubdb table, create a row with your current Invoice Number into a column on the table. I would create Current Invoice Id.  
Then inside a workflow / custom code action you would trigger on new invoice, you reach out to hubdb table, get the current invoice id, add 1 to it, then update your Invoice with that value. Once you confirm that the invoice id has been updated, then you update your hubdb column value with the new ID value/publish table.  
-- In a workflow upon invoice creation, use search api query and the invoice search api to get most recent invoice that has one of your invoice IDs, then add +1 to that, then update your current invoice id ([invoice api search](https://developers.hubspot.com/docs/reference/api/crm/commerce/invoices#post-%2Fcrm%2Fv3%2Fobjects%2Finvoices%2Fsearch), [search query stuff](https://developers.hubspot.com/docs/guides/api/crm/search#make-a-search-request))  
-- Use a serverless function with a database/json storage that will keep track of this value and present you with the new one, updating the same way as above. Might be easy to use a webhook to deliver this data to your created serverless function  
Generally all of these options will need some sort of backup functions if there is a failure on update, because you could have multiple invoices created at a time causing a race condition

---

<div class="post-metadata">

**Author:** ![HubDoPete](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/hubdopete/32/106153_2.png) [@HubDoPete](https://community.hubspot.com/u/HubDoPete)\
**Post date:** [April 9, 2025, 1:47pm UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/4 "2025-04-09T13:47:45Z")

</div>

Hi Dane,

@nickdeckerdevs gives you a great description of using custom code with HubDB to create an incrementing number. Although he mentions Invoice a few times, it’s equally applicable to Quotes.

But as some additional tips, there are caveats to beware of regarding Quotes:

1. Custom properties are not searchable

2. Quotes are often cloned

3. Published quotes cannot be edited.

We wrote an app called DoQuote to solve a range of Quote-related issues in HubSpot Quotes. One of the simplest things it does is add a incrementing quote number, like Q00123. I’m not suggesting you need DoQuotes, but from our developing it, we learned a few tips that you should find useful if you code the workflow actions as Nick suggests:

If possible , write your code to “pre-pend” the quote number to the start of the quote name. So if the quote is “ABC Company - New deal”, write your code to edit the name to “Q000123 - ABC Company - New Deal”

It makes the quote number visible and searchable so that sales reps can see multiple quotes on the deal, and easily talk with the customer about Quote 123.

In your workflow that assigns the number, also check if the deal name starts with “Qxxxxx -”. If not, pre-pend it. (and always store the quote number in a custom property too, like Nick suggests, especially for the next part - de dupe)

Secondly, if sales reps clone a quote, you will have a duplicate quote number. So this is more complex to solve. Write your code to pull a search request, to see if more than one quote record is returned with the same quote number. If so, generate a new quote number and update the new quote name and property with the new unique quote number, so you don’t have duplicate quote numbers.

Finally - beware if the quote is published. You need your workflow to run and to set the quote number before the quote is published. Once published, a quote cannot be edited - so check for that status and set a task to rectify the quote number. This is not super elegant which is why we ended up writing an app, but hopefully it’s rare if your users are aware to not publish the quote until it has a quote number in the title.

I hope this helps!

best

Pete

---

<div class="post-metadata">

**Author:** ![nickdeckerdevs1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/nickdeckerdevs1/32/5198_2.png) [@nickdeckerdevs1](https://community.hubspot.com/u/nickdeckerdevs1)\
**Post date:** [April 9, 2025, 9:40pm UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/5 "2025-04-09T21:40:20Z")

</div>

OMG Pete -- the last project I did with this was for invoice numbers, so I guess that is why I kept saying that. Thanks for following up and adding some of those details. I’ve used custom objects for these items where searching is happening, and HubDb when I just need to increment.  
One thing I would add -- and this is something I have done before when we had multiple items associated to a deal that needed these IDs -- and I do this a lot in HubSpot, but we create a custom property on the deal (searchable) and we push JSON data to it.

```lia-code-sample
[
 {
 "hs_deal_id": "12345678",
 "hs_quote_id": "87654321",
 "unique_id": "dd1738",
 "quote_name": "Tech Innovations Inc. - $25,000"
 },
 {
 "hs_deal_id": "12345678",
 "hs_quote_id": "87654322",
 "unique_id": "dd1739",
 "quote_name": "GreenTech Solutions LLC - $15,500"
 },
 {
 "hs_deal_id": "12345678",
 "hs_quote_id": "87654323",
 "unique_id": "dd1740",
 "quote_name": "Global Enterprises Ltd. - $32,100"
 }
]

```

Generally the use cases for this is when you are trying to reduce graphql associations, reduce serverless calls and make stuff happen faster -- we can pull in the data on this object and not need to have the assocations or any of that. Great for autocomplete, using in workflow custom code actions, etc. Then when a new item is added, in the workflow you can just read the json, update it, then push it back to the property.  
I’ll also add the items about prepending the quote id to the deal name is super awesome. Generally I have workflows set up for clients that modify the deal name throughout the lifecycle of the deal as more information gets updated. It is super useful for visibility and as you said makes it searchable!  
**Cloning** -- have fun with that! Generally we handle this with a checkbox “Clone Most Recently Updated Quote” -- Sometimes this means unpublishing then publishing. Check the box and trigger the workflow to duplicate the quote, updating that ID to the newest available. I’ve found that to be the best way and prevents users from messing up the inner workings.  
Also Pete, would you mind sharing your app? I’d love to check it out! Great stuff.

---

<div class="post-metadata">

**Author:** ![HubDoPete](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/hubdopete/32/106153_2.png) [@HubDoPete](https://community.hubspot.com/u/HubDoPete)\
**Post date:** [April 10, 2025, 9:16am UTC](https://community.hubspot.com/t/customised-quote-numbering/129462/6 "2025-04-10T09:16:32Z")

</div>

Thanks Nick, great additional insights and tips thank you!

Saving JSON for search is an interesting twist too. We’ve looked at that for similar reasons on saving extra calls, but normally save it as a hidden property so that users cannot see and edit (for data integrity). It’s rare but a handy tip!

On the cloning of Quotes, our main issue has been that even though we provide a custom UI extension app like DoQuotes for creating quotes, some sales reps will still go to HubSpot’s Quote List screen and clone quotes there. We can’t disable such features so our workflows are a ‘catch and fix’ 🙂

Happy to liaise with you to try out DoQuotes if you wish. We haven’t listed it on HubSpot marketplace as it’s waiting on future HubSpot app dev features to flesh out the UI. The most recent thing we added is multi-quote, so every company (reseller) on a deal gets a quote based on their price tier. Send me a DM and I can set you up or try it [here](https://marketplace.hubdo.com/en-US/apps/424044/doquotes-plugin-(beta)).

best,

Pete
