Unfortunately the peer id is a string and not a number and will not be synced.
I believe that this is the order of things to get it synced correctly:
1. Host and peer both define the objects that need to be synced.
2. Host creates the objects that need to be synced or their variables that need to be synced with its owners (players) multiplayer index in a local variable (not id). You get a joining players index with Multiplayer.PeerCount-1 or you loop through every peer and check if the id is matching and the index will be the loop index -1.
3. Peer: On (synced) object created send a message to the host with this objects local multiplayer index, basically asking the host for information about the player with the given index.
4. The host then uses this index to get and send all of the information back to the peer. The easiest way to do so would be to use JSON.set all of the information and then JSON.ToCompactString.
.
5. When the peer receives this message it will loop through all of the objects and check for the local index variable. If it matches the one from the message it can paste all of the data like id, name, level or whatever you just sent to the objects local variables. Do not forget to parse the JSON data from the message. Then use JSON.Get("").
.
This is a bit of a back and forth. If somebody knows a more efficient way please let me know. :D