The two clubs have been in discussions for a number of weeks now, finally settling on a fee of £4.5m, which could rise to £6.5m.
"Shane is one of the most talented young strikers outside of the Premier League and I'm delighted to welcome him to the club," West Brom manager Roy Hodgson told the club's official website.
"He is a goal scorer and a hard-working player who has a very good attitude to the game.
"The great thing about him is that even though he is still only 24 years old, he has six years' worth of experience of Premier League, Championship and international football and has margin for improvement in his game."
Sunderland, West Ham United and Leicester City all reportedly had bids turned down for the Republic of Ireland international.