North Haverhill is centered around the junction of New Hampshire Routes 10 and 116, on a bluff overlooking the Connecticut River, the western boundary of New Hampshire. It is situated in the middle of a fertile agricultural area at the western base of the White Mountains. Route 10, following the Connecticut River, connects the village of Woodsville to the north with the towns of Piermont, Orford, Lyme, and Hanover to the south. Route 116 heads east into the White Mountains, leading to the towns of Benton, Easton, and Franconia.
North Haverhill became the county seat of Grafton County when the county courthouse and related offices moved in 1972 from Woodsville into a new office complex on Route 10 just north of the North Haverhill village center. North Haverhill has a separate ZIP code (03774) from other areas in the town of Haverhill.