Just had a weird issue where I had an Android contact with an old number on the phone, but it didn’t show up in the web contacts version. Took me a while to realise that you can select ‘View linked contacts’ from the menu in the contact view page in the Android Contacts application to see where external numbers are coming from.
In this case, it was from Signal – Signal maintains its own database of contacts. Turns out zombie contacts in Signal populating your Google Contacts is a common problem, but this Github issue implies there’s no easy UI fix for it in the Signal side.
A modified version of the solution posted by riyapenn worked for me, although I had no saved messages from the contact in question – I suspect if you do it might work differently, so look at the full solution.
Re-sync Signal contacts
1) Go to Android Settings or Android Contacts App > Menu
2) Choose Accounts
3) Choose Signal
4) Tap on the Menu
5) Choose Remove Account (the alert of clearing data is incorrect, your messages will not be deleted)
6) Open Signal
7) Tap on the pencil icon in the blue circle
8) Choose the Menu
9) Tap Refresh