My mistakes were two fold:
1. I was passing the userID instead of the "Name" property
2. I was testing, coding, testing, coding... but I never pushed the user profile timer job... duh. There's a quick Sync and a full sync defaulted to minutes and hours respectively.
And to answer myself from above, if it lives on the root, no WebURL is needed.
The next problem I'm running into is trying to update a user profile property with a type of multi-value string. Any thoughts? Or will this continue to look like I'm talking to myself?