iPhone contacts aren't syncing to iCloud
This is what worked for me after speaking with a very helpful Apple senior tech agent:

Open Settings> Mail, Contacts, Calendars> Contacts – Default Account = must contain a check next to iCloud.That’s it! Now all future contacts created on your iPhone (on your iPad, do the same as above), will also appear in iCloud and Outlook (if you’ve also set up Outlook). 

If you have contacts that are already only on your iPhone/iPad then you’ll want to: Open Phone> Contacts> Groups (top left corner)> Hide All Contacts (top left corner). Then select/Checkmark all email accounts/accounts you see listed and make sure that iCloud it NOT check marked here while you’re fishing for all those rogue contacts. Click done and what will then be displayed, are contacts that you saved somewhere other than iCloud. Then recreate these contacts you see, one by one, by going into iCloud.com, your other iDevice or Outlook on your desktop and create them as new contacts. For best results I recommend that you DO NOT press save for the new contact until you FIRST press delete* on the non-iCloud contact you are about to make a copy of. Of course press delete only after you’ve copied all of the contact data.


To delete a contact on your iPhone/iPad: Contacts> select the contact> tap Edit (top right corner)> Scroll to the bottom and select Delete Contact.