I had this same problem. I don't know if this will resolve you, but basically I needed to understand that a Conversion Action is not the physical string label of it. For instance, I had a Conversion Action with a label "Upsell 1". I couldn't pass "Upsell 1" as the conversion action at least in the REST API. (You might be using gRPC/SOAP, which might be different here, by the way.) Instead, I had to find the numerical ID for that conversion action labeled "Upsell 1". The trick is to go into Google Ads Manager, find the Conversion Action, click to edit it, and then look in the URL at the ctID parameter. Click Cancel on that Edit when you write down that ID.
Moreover, you have to put that numeric ID into a string that looks like so (as far as my PHP code is concerned):
"customers/$sLinkedCustomerID/conversionActions/$nConversionID"
...where $nConversionID is that number from the ctID parameter in the URL that you saw.
The docs don't appear to tell you this, do they?
The other thing to denote is the confusion of Customer IDs. Use this rule of thumb:
- Used 2 Adwords accounts? One for developer and one for the actual account you want to change? If so, then the URL for the API call as well as the actual conversion needs the Customer ID to be the Linked Customer ID, while the header for the REST API call needs to be the Login Customer ID (ie, the developer account used for making the API calls).
---OR---
- Used 1 Adword account for both API call and where you want to make the change? If so, then the Linked Customer ID and Login Customer ID should be the same value.