Hairston will make $2.5 million each year and can earn $1.25 million each year in performance bonuses based on plate appearances and roster days, according to a source.
Hairston will fit into the Cubs' mix as a platoon corner outfielder. The other teams that had been talking to Hairston's agent, Casey Close, are the New York Mets, New York Yankees and Atlanta Braves, according to the source.
The 32-year-old Hairston's deal includes incentive clauses that could increase the value to $6 million, pending a physical.
Hairston played for the Mets in 2012, putting up his best power numbers. The outfielder had 48 extra-base hits, including a career-high 20 home runs, in just 377 at-bats.
Hairston made $1.1 million last season before becoming a free agent for the first time in his career. He most likely will platoon with left-handed hitters Nate Schierholtz in right field and David DeJesus in center.