I'm getting the error message 'Can't set properties when vid is not a contact.' I understand that the main way to turn a vid into a contact is by submitting a form, but I am specifically avoiding the FormsAPI, because it requires email address, and we don't have our user's emails. I want to take an existing contact, and make is-contact true. How can I do that?
It's not currently possible to take an existing visitor record and turn it into a contact without an email address. While it is possible to create contact records that don't have email addresses, it's generally not best practice since HubSpot deduplicates contacts/form submissions by email address. The only direct way to accomplish what you're trying to do (create a contact record out of a visitor record) would be to use the Forms API to create a contact, and include the visitor record's usertoken to make the association.