Kingfisher, U.S.A. hosts about 40,000 ghosts—mostly victims of the former sanatorium—who live and work beside the living, until Mayor Tracy relocates them to an abandoned neighborhood. Sean Hammerschmidt, Austin Vesely, a Perfect Pizza Base driver, makes a routine delivery to Ghost Town, only to have his throat slit by an unseen killer.
Sadie Sheridan, Rae Gray, a reporter for the Kingfisher Chronicle, attends Tracy's press conference about Sean's murder, but is abruptly interrupted by Debbie, Kelli Simpkins, a member of the activist group Justice 40,000. Their leader, Vera Marcus, Marilyn Dodds Frank, leads a protest outside Perfect Pizza—built on the mass grave left by the sanatorium—as her group marches to demolish Halcyon Square and lay the city’s ghosts to rest. Detectives Marsh and Bradley begin investigating and learn that Sean was running drugs for dealer Big Cheese, Y'lan Noel.
Perfect Pizza's owner Jack, Paul Scheer, insists on keeping the shop open despite his staff’s reluctance. Determined to solve Sean's murder, his ex-girlfriend and former coworker Astrid, Zazie Beetz, returns to work, rejoining employees Scooter, Heather, and Joe, a ghost. Astrid confronts Big Cheese, who is questioned by the detectives and explains that Perfect Pizza used to be Yummy Yummy Chinese, whose delivery drivers were killed in a previous string of murders. The prime suspect was fellow driver Dax Lycander, a werewolf who had left town, played by Chance the Rapper, Chance the Rapper.
On another delivery through Ghost Town, Scooter’s throat is slit, and Dax is spotted nearby. Vera and Debbie are revealed to be colluding with Tracy, bribing him to blame the murders on the ghosts and rally public support for demolishing Halcyon Square. Sadie visits Perfect Pizza with her own research into the Yummy Yummy murders, while Marsh and Bradley close in on Dax. In a junkyard chase, Dax saves Bradley from being crushed and is arrested, though he maintains his innocence.
Reuniting with Sean’s ghost, Astrid learns he remains a drug addict, and before long she is stabbed from behind and becomes a ghost herself. Dax escapes police custody, and Sadie realizes Vera and her coven are witches; they have inducted Heather as their newest member. Sadie brings the discovery to Marsh, who remains skeptical and insists Dax is guilty. Tracy publicly declares the murders are not the work of ghosts, upsetting the coven’s plans.
Heather sneaks into the basement of Perfect Pizza, and Dax abducts Sadie, urging her to tell the world about his innocence. In the basement, Sadie, Jack, and Joe encounter the ghost of sanatorium janitor Carl, who reveals the building sits atop a portal to hell that the coven intends to use to enslave an army of ghosts. Vera kills Tracy, who is revealed to be a ghost, and the coven reveal themselves as witches.
The town’s frustrated ghosts begin terrorizing the living, while a vengeful Astrid kills most of the coven. Dax is hesitant to help Astrid stop Vera, but Bradley changes his mind. The witches prepare to access the portal; Debbie enters Perfect Pizza to confront Jack, who waits. He blows up the restaurant, hoping to halt the coven, but the explosion opens the portal instead. With Sadie watching, Astrid attacks the witches but is overpowered, and Dax arrives in werewolf form to intervene. Marsh shoots Vera dead, and Bradley arrests Heather as the portal closes.
Sadie is promoted to television news anchor, while Jack—now a ghost—reopens a new pizza restaurant with Dax and fellow ghosts Scooter, Joe, Carl, and Astrid.