Deal Stage Field Internal Value Broken


I am trying to add a new deal stage to a pipeline and from what I can see the internal value used to be a user populated value. But when I add a new deal stage now the internal value is a GUID. We have to have these user defined. How do I change the internal value?


If you need to modify the stageId of a stage, you’ll need to update the pipeline using the Deal Pipelines API.

Do you need the id’s to match as part of an integration? If you’re creating or editing the stages in the HubSpot app, the stageId will always use the GUID values since you’ll only see the label when working in the app.


I guess I can work with that but why am I unable to modify those values using the HubSpot app?


The internal values don’t appear inside the app, since you’d only see the label when viewing or updating a deal record, and in general we’ve seen that just showing the user-facing label when editing or creating stages reduces confusion.


From my understanding the HubSpot app didn’t used to work that way. There used to be a field available to change that value. Now you’re telling me that if I want to change it I have to find the corresponding GUID in HubSpot and write custom code to reference the API in order to change it. Wow! What a pain.

What happens when some “easily confused” person goes into the system and deletes and then recreates the Deal stage? Our push system breaks and I have to go through this process all over again. What happens when fields are added to map other deal stages? I have to be notified, stop my automatic push process, run this process all over again and then push a back-log.

Our people here are not so easily confused. And not being allowed to edit the id except through the API is a serious design flaw. Was a permission flag not ever considered? How do I get the older HubSpot app way of doing this so I don’t waste my day writing custom API calls to change a simple value?


The new UI for editing deal stages was part of the update to allow multiple deal pipelines. It’s a new screen that’s separate from the screen used to edit deal properties (which does show the internal name), and it doesn’t have an option to see the internal name for the stage, but I will be passing this feedback along to our CRM team to see if it’s something we can add.

Can you tell me more about your integration? How were you previously handling new stages or modified stages? When you do have a new stage, was it usually added to HubSpot or to your system first?


We have an ERP system that we use for everything but marketing purposes. That’s where HubSpot comes in. What we do is push any new or modified contacts, deals and additional data up to HubSpot using our IDs to try and keep the system in sync. Our marketing team is not allowed to make changes to anything that would require passing those changes back to our ERP. However, with the new events API that may change.

To be specific about the deals, we reference the deal stage with a pre-defined id that is stored in our system. When HubSpot allowed for a customized stage id, everything was fine, but since that UI field has been depreciated, we can no longer match up the deal’s stage id and the push of data fails. Any new stage ids would be added to HubSpot first and then in our ERP system to keep the data pushes from breaking.


Thanks for that explanation, it definitely helps with understanding how that process worked with the previous UI.

Would it be possible to automate adding new stages, so that users would only have to create the stage in one place? If you’re working mostly in your ERP, you could create the new stages in your ERP, then push the updated list of stages to HubSpot using the update endpoint I mentioned in the earlier post:

Even if you add the stage to HubSpot first, it would be possible to get the new stage from HubSpot by periodically polling the Pipelines API for updates.