There are lots of words and phrases you can use, but the easiest one is just to call them a hypocrite:
Hypocrite (n)
a person who indulges in hypocrisy.
Hypocrisy (n)
The practice of claiming to have moral standards or beliefs to which one's own behavior does not conform; pretense.
Some useful phrases you might like also are:
[a pot] calling the kettle black (idiom) - someone accusing someone of something that they themselves do
a wolf in sheep's clothing (idiom) - someone who tricks you into believing that they are one thing when they are in fact the opposite.
a fraud - someone who is entirely not who they claim to be (esp. someone who does so for criminal ends)
a sham - someone who is entirely not who they claim to be (esp. someone who pretends to be famous/successful/wealthy but is not).
a charlatan - somewhat archaic form of hypocrite
Someone who is duplicitous says one thing but does another (esp. focus on what they said being wrong).
Someone who is two-faced says one thing but does another (esp. with focus on what they did being wrong).
With the exception of the idioms, you can add superlatives if you want:
I found out that Sophie is a total fraud!
I found out that Joseph is a massive hypocrite!
James does what!? That's sickeningly duplicitous.