You can pass other contact property values by appending &{property}={value} to the request URL, but you do need email to identify the contact.
Per the documentation, you can use an external ID in the id parameter, but you will need an email value in at least one call to associate this external ID with a contact. Once that happens, you can use only the id value going forward.
It's not possible to stop event details from being passed to HubSpot after this method is called, so you'll have to implement JavaScript logic around the trackEvent function to only fire it when you want it.