The Scotland international moves from Dundee United for an undisclosed fee, thought to be in the region of £2m plus £800,000 in add-ons.
"I think it's a massive stage to further my career and there's no better place to play than the Premiership," said the 22-year-old striker.
"Growing up you want to play in the Premiership and I'm really grateful to have that opportunity.
"I think it's every young boy's dream to play in England at some point in their career," he added.
Rangers and Cardiff City had both pursued Goodwillie, but the Glasgow club had a string of bids for the forward rejected.