I'm very concerned about the use of innerHTML here, and that actually makes the whole templating stuff difficult to do.

The original code was not good either.

I'd be happy with having a static code in HTML, clone this to display a contact, and use querySelector + textContent to change the variable text.

A data-attribute could be used to indicate which property we need to take from the data object. (this is what's used in the l10n library BTW).