Jeremy Marsh, a skeptical investigative journalist who writes for
Scientific American, exposes spirit guide Timothy Clausen as a fraud on national television by documenting a hidden transmitter used to feed Clausen personal details about audience members. The exposé airs on ABC's
Primetime Live. At a celebratory gathering, Jeremy's agent, Nate Johnson, tells him that television networks are considering making him a regular contributor. Jeremy plans to travel to Boone Creek, North Carolina, to investigate mysterious lights in a cemetery. Alvin Bernstein, a friend and freelance cameraman, plans to join him later.
Jeremy is divorced and living alone in Manhattan. His marriage to Maria, a publicist, deteriorated because of his constant traveling. After their second anniversary, a doctor revealed that Jeremy is essentially unable to father children. Maria left, and the divorce became final seven years earlier. Jeremy grew up in Queens as the youngest of six brothers in a working-class Italian-American family. His journalism career began when his father was swindled by a con man; Jeremy tracked him down and wrote an exposé that saved the family home.
Jeremy drives to Boone Creek, a small, aging town in Pamlico County with a largely shuttered downtown. He finds Cedar Creek Cemetery in a slight valley behind Riker's Hill. The grounds are neglected and sinking. While photographing the site, he sees a woman with striking violet eyes walk past. When he calls out, she tells him he shouldn't stare, that women prefer subtlety, and walks away laughing.
At Herbs, a restaurant in a restored Victorian, Jeremy meets Doris McClellan, the owner who invited him to town by letter. Doris tells him the cemetery's legend: In the 1890s, a woman named Hettie Doubilet cursed Cedar Creek Cemetery after county officials refused to hear her protest against a railroad planned through a nearby Black cemetery. Blue lights began appearing on foggy winter nights, believed to be the spirits of enslaved ancestors. Doris describes herself as a diviner capable of predicting the sex of unborn babies. When she holds Jeremy's hands and tries to read him, she abruptly stops, her expression suggesting she has intuited something deeply personal. She wants the mystery debunked and opposes the mayor's plan to exploit the lights for tourism.
At the library, Jeremy discovers that the woman from the cemetery is Lexie Darnell, the librarian and Doris's granddaughter. Lexie is well read, witty, and resistant to Jeremy's flirtation. She declines his invitation to coffee but helps him find research materials, including local history books and old diaries that may hold answers.
Over the following days, Jeremy researches the mystery while growing closer to Lexie. He identifies a geographic alignment between the paper mill across the river, the railroad trestle, Riker's Hill, and the cemetery. During lunch on Riker's Hill, Lexie reveals that her parents died when she was three after their car went off a bridge; she was raised by Doris. She once lived in Manhattan with a boyfriend who cheated on her. At the boardwalk, they study the trestle and paper mill, and Lexie predicts fog that evening.
Meanwhile, Deputy Rodney Hopper, who has pined for Lexie for years, confronts Jeremy at breakfast with thinly veiled hostility. Mayor Tom Gherkin, an energetic businessman, throws an enormous party in Jeremy's honor. Throughout the evening, Jeremy watches Lexie interact warmly with the townspeople and finds himself falling for her.
After the party, Jeremy and Lexie visit the cemetery to observe the lights. In the dark, Lexie tells him about seeing the lights as an eight-year-old: She had nightmares about her parents drowning, so Doris brought her to the cemetery, and the nightmares stopped. Near midnight, the fog brightens dramatically, churning and spreading before receding in seconds. It is the first phenomenon in Jeremy's career that he cannot immediately explain. At her door afterward, Lexie stops him from coming inside, saying she will be the one hurt when he leaves. Moved by her honesty, he respects her wish.
The next morning, Lexie is gone, leaving only a brief note. Jeremy finishes his research, confirming his theory by cross-referencing train schedules, paper mill operations, and moon phases. Doris gently tells him Lexie left because she wanted to. Recalling that Lexie mentioned a family cottage near Hatteras Lighthouse on the Outer Banks, Jeremy drives to catch a ferry but misses the last departure, so he pays fishermen to take him across the Pamlico Sound. He finds Lexie on the beach and greets her with her own teasing words from their first meeting.
At the cottage, Jeremy shares a secret he has never told anyone: He cannot father children. Lexie responds fiercely, insisting his ex-wife was wrong to leave and that being a good parent has nothing to do with biology. They dance to Billie Holiday, kiss, and spend the night together. In the predawn hours, Jeremy finds Lexie with Doris's notebook of birth predictions open to the entry foretelling Lexie's own birth. She worries they don't truly know each other and may never get the chance.
Back in Boone Creek, tensions mount. Alvin has been arrested by Rodney after a confrontation at a tavern involving Rachel, the waitress from Herbs; Lexie mediates his release. Lexie grows distant, referring to herself and Jeremy as "friends." In the rare-book room, Jeremy finds an essay by Owen Gherkin, the mayor's father, reaching the same conclusion Jeremy did: The lights come from the paper mill's illumination reflecting off the train as it crosses the trestle. The mayor has known all along. Jeremy confronts Lexie, accusing her of complicity. She fires back that she pointed him toward the diaries from the start, then tells him he always assumed she would uproot her life for New York. Unable to deny it, Jeremy watches her leave.
The next morning, Mayor Gherkin visits Jeremy and explains he promoted the ghost legend as the only plan he had to keep the dying town alive. Lexie arrives to apologize and return the diary. When Jeremy says he loves her, she tells him she is going to marry Rodney, who is honest, hardworking, and present. She drives away.
Back in Manhattan, Jeremy struggles to move on. His investigation proves too mundane for television without the diary's revelation, which he keeps to himself. He strikes a deal with Gherkin: The town will stop claiming the lights are supernatural, and Jeremy will never publish anything about the deception. Then, on a snowy Monday, Doris appears at his apartment. She tells him Lexie is not marrying Rodney; the claim was a lie. Doris says she came to see Jeremy's face and determine whether he loves Lexie.
Jeremy races to the airport and barely makes the last flight to Raleigh, where he discovers Doris seated behind him. He drives to Boone Creek and searches for Lexie before realizing where she must be. At Cedar Creek Cemetery, under a crescent moon, he finds her at her parents' graves. After a long silence, she repeats the teasing words from their first meeting. Jeremy tells her that women prefer a man who will follow them to the ends of the earth, and he kisses her.
In the epilogue, set days later, Jeremy and Lexie sit together on Riker's Hill. Jeremy has arranged to work remotely from Boone Creek. Rodney and Rachel have begun dating. Lexie asks Jeremy if he still doubts the existence of miracles, then gently places his hand on her stomach: She is pregnant with a girl, a pregnancy that medical science deemed all but impossible, confirmed by Doris's lifelong gift for predicting the sex of unborn babies.