The Montenegro international was wanted by four clubs but has opted for a move to the Scottish Premiership champions.
Haksabanovic, 23, made just two cup appearances during his three-year spell at West Ham from 2017, has most recently been training in Sweden after a loan spell at Djurgarden and did not want to return to Russia.
He becomes Celtic’s eight summer signing, with Jota, Cameron Carter-Vickers, Alexandro Bernabei, Aaron Mooy, Benjamin Siegrist, Moritz Jenz and Daizen Maeda also joining.
“It feels amazing,” he told Celtic TV. “What I know about Celtic is only good things and I’m very happy to be here.