William was born around 1895 at Loch Carron, Ross-shire, son of Archibald Macgregor, baker, and his wife Mary Hardy. This family were living in The Custom's House, Shore Street, Helmsdale, Kildonan, in the 1901 census. William's younger siblings Alice and George Alexander were born in Hemsdale. His older brother John H. Macgregor who was born in Morayshire also lived in the town.
William was with the 5th Battalion Seaforth Highlanders. He was discharged as unfit in May 1918 and died on 26th October that year. He is buried in Helmsdale Cemetery in a War Grave and is commemorated on the Kildonan War Memorial.