The OutboundMessage webhook returns null for userId on incoming calls. userID is only sent and stored for outbound calls.
To do post-processing on an incoming call, you need to know which user to assign the data/analytics to. Without userId on incoming calls, you cannot know which user the call analytics should go to.
Known issues and resolutions:
Call forwarding - do not return userID
Call answered outside GHL - do not return userID