1921: England. Florence Cathcart (Rebecca Hall) is a published author on supernatural hoaxes who works with the police to expose charlatans and debunk supernatural phenomena, having begun her foray into her profession upon the death of her lover in World War I. Upon a visit from Robert Mallory (Dominic West), a teacher from a boarding school with the request to investigate the recent death of a student, Walter Portman, and to determine if and how it is related to sightings of a ghost of a child, she travels to the school hoping to explain the sightings and the death. The ghostly sightings are at first thought to be a prank played by one of the boys at the school. Florence deduces that one of the teachers was the last to see the boy alive and questions him until he admits to putting the young boy outside to "man up", thus scaring the young boy and causing him to have an asthma attack. The school is closed for half-term with the only occupants being Robert, Maud (Imelda Staunton) the housekeeper and Tom, a lonely child, who tells Florence his parents live in India which takes too long for him to travel to.
As Florence leaves, an unexplained hand reaches for Florence from a pond after which she faints and falls into the pond. Florence is rescued by Robert. Afterwards of the characters clearly treat the incident as a suicide attempt. which may or may not be a suicide attempt but Florence recovers and hears another unexplained noise, and becomes determined to put to rest supernatural apprehensions. Florence and Robert start developing a mutual attraction. More unexplainable supernatural events start to manifest and subsequently the story is unwound through revelations. Edward Judd (Joseph Mawle), the grounds keeper, earlier known to have a grudge against Robert, is jealous and attempts to rape Florence in the woods. Florence, assisted by the supernatural accidentally kills him by the butt of his own gun.
Robert is revealed to be able to see and communicate with some of his own ghosts, which form an unexplored tangent to this story. Tom is revealed to now be a ghost and was Florence's half brother and Maud's son. Florence and Tom grew up in the house that is now a boarding school. While Florence and Tom were young, their father became mad and killed Florence's mother, Tom and himself while also trying to kill Florence. Florence had blocked these memories of her childhood. Maud, who also sees Tom, explains that Tom is lonely and that he needs his family; Maud poisons herself and Florence, intending for their ghosts to join Tom. Florence, however, tells Tom that she will not be happy if she dies now and that she will always be with Tom. Tom then helps Florence by bringing her medicine to throw up the poison.
As is common in many ghost stories, it is not clear if Florence is a ghost for the epilogue. Some viewers believe the curative is to no avail, and Florence dies. The film can be interpreted that the only adult that can see Florence is Mallory as it has been established earlier that Mallory is also haunted; the headmaster speaks of her as if she is not there. Only the children can see ghosts, and only the children can see Florence when she leaves the schoolhouse a lonely child (of the kind who could see Tom) acknowledges her. Maud and Tom are gone, and she says though she can't see them, they are not forgotten, raising the possibility they are now at peace.
The more straightforward interpretation is that the antidote was successful: the headmaster ignores Florence because of the negative publicity for the school (and he mentions only one death); Florence and Mallory share a cigarette at the film's conclusion; she is leaving by car (Mauds aim was to keep her at the house); and she talks of writing another book.