Fifteen-year-old Rachel 'Rae' Bryant's aunt is killed in an automobile accident in the Ozarks. Her 17-year-old cousin Julia Grant, who has been in boarding school in Boston, comes to live to with Rae's family in Albuquerque, New Mexico. Julia is shy and reserved initially, and dresses in conservative, old-fashioned clothing. Rae and her boyfriend, Michael, and her best friend, Carolyn, attempt to ingratiate Julia into their circle of friends, and her personality begins to shift rapidly. She makes sexual advances toward Rae's brother, Peter, and carries herself as though she is far older than she is.
Rae is stricken with a series of mishaps, including an unexplained case of hives prior to a school dance, and her dog Trickle dies mysteriously. Rae discovers from a local professor in her neighborhood that the area where Julia's family was from in the Ozarks had a reputation for witchcraft and rumors of covens. Rae, suspicious of Julia, confronts her, and she is revealed to be in fact not Julia at all, but the Grants' 22-year-old housekeeper, Sarah Blane, who is a practicing witch; she caused the car accident that killed both Julia and her parents, and then posed as Julia.
Sarah and Rae begin to fight, and Rae locks her in her mother's darkroom. She flees with Mike to meet her mother in Santa Fe and prevent her from falling victim to a car accident that Sarah has invoked upon her. Rae and Mike reach her and prevent the accident from happening, but Rae's parents dismiss her claims regarding Sarah/Julia. When they return home, Sarah/Julia has vanished. The novel ends in the present, as Rae, now a sophomore in college, reflects on the events.