Fun one today. We’re seeing intermittent failures on a Data Action used for contact synchronization between Zoom Contact Center and Salesforce. It’s not consistent - some calls sync fine, others don’t.
The Data Action is a PUT to /api/v2/users/{userId}/customattributes. We’re updating a custom field. The error we’re getting back is consistently a ‘400 Bad Request’ with the message “Invalid or missing field value”. The payload looks right - it’s a string value, properly formatted.
Interestingly, looking at the Zoom Contact Center Data Action logs, the request appears to be correctly formatted and sent. It’s only when we check Salesforce that we see nothing was updated and the 400 error. We’re using the Zoom REST API SDK v2.1.0. Seems like the SDK isn’t handling some edge case with the field type.
The userId is dynamically pulled from the call context, and we’ve verified it’s a valid Zoom user ID. We’ve tried adding explicit content type headers to the request - no luck. It feels like a validation issue on the Zoom side, but it’s so intermittent it’s hard to pin down.
That 400 usually happens with PUT because it’s trying to overwrite the entire attribute set, not just the one field. In CIC we used to just update the specific column in the table and it was fine, but here the PUT method is way more aggressive. If you’ve got other attributes on that user, the API expects you to send all of them back or it’ll complain.
Try switching the method to PATCH instead. It only updates the fields you actually send in the body, so it’s way less likely to error out if you’re just syncing one value. Use this endpoint:
/api/v2/users/{userId}/customattributes
Just change the action to PATCH in the Data Action config and it should stop those intermittent failures.
The fix described in the earlier reply is correct. Using PUT will overwrite the entire set of attributes. For our SOC2 audit, this is a risk because we can’t allow the accidental deletion of existing compliance tags.
You should change the method to PATCH. This only updates the specific fields you send in the request body.
Is the “400 Bad Request” happening because of a missing mandatory field in the PUT body? I’m not sure if the API requires all existing attributes to be present during a PUT call. If you switch to PATCH, the other data remains untouched.
Be careful with this change because if you use PATCH for the user attributes, it is only for the metadata of the person. If you need to sync the actual call details for the reporting or the adherence, you must use the conversation attributes instead. In our NICE CXone, we have different management units for this. If you change the wrong field, the WFM analyst cannot see the correct data for the agent’s activity.
Is the PATCH method for the conversation the same as the one for the user? I think maybe the data is going to the wrong place if you don’t check the endpoint. If you update the user attribute by mistake, the historical report for the shift will be wrong. Please check if you are using the conversation ID or the user ID for the sync.