🎧 Reviewed by LD | Rating: 4.4/5 | Steam: 🔥 | Standalone
⚠️ This is a full spoiler review. If you haven’t read Forget You Saw Her yet — go read it first. We’ll be here when you’re done.
The Opening
Okay. I need you to understand something before we get into this. I went in thinking this was a missing person thriller. What I got was so much more than that, and also so much darker than I was prepared for. Forget You Saw Her by Noelle Ihli is the kind of book that sits with you. It crawls under your skin, makes you feel icky and stays there.
The Full Story — Spoilers Included
Sabina Gets the Call
Sabina Turpin — married to Joel, living what looks like a regular life — gets a letter requesting a DNA sample. Police found a body. They need to know if it’s Andrea, a young woman who has been missing for three months.
Here’s the thing about Sabina and Andrea: Sabina gave her up for adoption when she was just a teenager. Her parents pressured her into it. And then, as life sometimes twists the knife in extra hard, she found out she couldn’t have any more children after that. Endometriosis. So Andrea was it. And now Andrea is missing. Andrea does not know she is adopted and Sabina has never spoken to her since.
The DNA comes back as not a match. The body isn’t Andrea. But Sabina can’t just let it go. She decides she needs to get herself to Utah and find out what happened. She can’t give up on her again.
Andrea — Three Months Earlier
Now we go back. Three months before Sabina gets that call, we’re in Andrea’s head. And let me tell you, it is brutal right from the start.
Andrea’s adoptive parents are Bunny and Dennis. Dennis has a drinking problem. Bunny is not such a kind woman. Neither of them should have been allowed within fifty feet of a child, let alone been given one.
It’s Andrea’s 17th birthday. She gets home from school to find that Dennis is home early. She tries to sneak in but he hears her. He comes after her. She tries to run, hits her head on the banister, and then Dennis strangles her with the dog leash he keeps in his back pocket — for the sole purpose of abusing Andrea. He kills her on her birthday.
As she dies, she hears him say: “You were never really ours.”
And that’s when she realizes she was adopted. She had suspected, but never knew for sure.
She’s dead. But she’s still there, sort of floating outside her own body, watching. Andrea is a ghost now. And she is furious.
Andrea Watches from the Other Side
Dennis dismembers and then buries Andrea’s body under a concrete hot tub pad at a construction site he’s working at. Andrea stays at their house in ghost form, watching. Bunny stands in their house talking about how Andrea was a brat and ungrateful. I just don’t know what kind of people actually exist in the world.
Andrea hangs around the house, learning that she can make small things happen — noises, disturbances, but only one person can sense her at a time.
She remembers things too. The first time Dennis beat her. How she used to take his abuse to protect her dog. And she remembers the laundry room, the one Bunny called her “bedroom.” No space for a proper bed. The door that would creak open at night while the washing machine ran to cover the sound of Dennis coming in. The book doesn’t spell everything out graphically. It doesn’t need to. You understand exactly what it’s telling you.
Sabina Arrives in Utah
Sabina shows up at Bunny and Dennis’s door. She convinces Bunny to let her in and talk to her. Bunny says Dennis won’t like it but she manages to get Bunny to show her Andrea’s room — and is horrified. It’s a laundry room. Bunny is fully unbothered. And they’ve already packed up all Andrea’s stuff, three months in, like she was never there.
Dennis tries to kick Sabina out, but she holds her ground. She tells him she’s Andrea’s mother. And while she’s there, she feels something — like Andrea is close, like Andrea is trying to tell her things.
She calls Joel from her car and completely loses it. She’s already certain that something terrible happened in that house. Imagine being the loving mother who gave up your daughter thinking she would get a better life, only to end up with these people.
The Coffee Shop, Nadia, and Paloma
Still sensing Andrea’s guidance, Sabina refuses to leave until Dennis and Bunny give her the name of one of Andrea’s friends. They grudgingly mention “that family down at the weird coffee shop.” Sabina goes.
She’s standing there looking at a poster of Andrea’s face, ready to cry, when the woman at the till stops and stares at her. Her name is Nadia. And she can’t look away, because Sabina looks just like Andrea. Nadia immediately shuts the business down and sits Sabina down to talk.
Nadia has always hated Bunny and Dennis. Her daughter Paloma was close with Andrea and had been worried about her long before she disappeared. And then Nadia starts telling Sabina about Isabelle.
Isabelle’s Story
Dennis goes by “Brother Beaumont” at his church, where he’d worked his way into a leadership role. Isabelle was a young woman in that congregation. He put her through what he called a “purity test” — asking about her desires and sexual habits, then sliding his hand up her leg. She ran home, certain her parents would know what to do.
Instead of facing consequences, he called her parents and told them she had sex with her boyfriend and had threatened him. Her parents believed him over her. Because of course they did.
As soon as Isabelle was old enough, she refused to go back to church. Her parents told her that even if Dennis did what she said, she needed to forgive him. She moved out. Accidentally ended up in sex work. And one day Dennis showed up as a client. He didn’t recognize her until he saw her face. And then he didn’t leave. He threatened her into silence afterward and took a photo to hold over her. She packed everything that same night and slept under a bridge.
Dennis found her. And he killed her. Police ruled it an overdose because of pills found on her body.
Isabelle is now a ghost too.
The Earring
When Sabina had been at Dennis’s house, she’d absentmindedly grabbed an earring she found — just knew it was important. At the coffee shop, Paloma arrives from school, sees it on the passenger seat of Sabina’s car, and goes still. Those were the earrings Paloma gave Andrea for her birthday.
They now know Andrea went home that night, contrary to Dennis’s story that she never came home after school. She didn’t run away. Sabina and Nadia and Paloma go to the police. The detective tells them the evidence is inadmissible — because the earring was removed from the house, they can’t use it.
The Justice for Andrea Movement
Nadia changes the missing poster to “Justice for Andrea,” because they all believe she’s dead now. It sparks a movement. Meanwhile, Sabina goes through old social media posts and finds a suspicious comment — new account, zero friends, just created to reply. She recognizes the profile photo. Andrea recognizes it too. It’s Dennis, trying to control the narrative online.
Then Sabina gets hit out of nowhere with a restraining order. Dennis and Bunny told police she refused to leave and was snooping in their yard. Camera footage and everything. This man is calculated. He has been doing this for years.
Andrea and Isabelle Find Each Other
Sabina’s driving when Andrea notices Dennis is following her. And that’s when Andrea runs into Isabelle and the two ghosts start figuring out that they can actually communicate, share memories, sense each other.
Andrea asks it straight: did Dennis kill you?
Isabelle says yes.
Andrea checks on Dennis and sees he has a tracker on Sabina’s car. She also sees a package of zip ties sitting open, and that is terrifying. She makes his phone ring from her own phone — the one sitting in police lockup since the day she died. He answers it shaking. He hears her dying gasp. He runs.
Ghost Intel and the Backpack
Because of the fake profile comment, Sabina goes to the underpass looking for someone who knew Isabelle when she lived on the street. She finds Marley, who doesn’t immediately recognize anything. Then the wind kicks up and Sabina notices a backpack with the name “Izzy.” That’s Isabelle, moving the wind.
Sabina convinces Marley to go to the police about the backpack. Later, Joel calls — police have identified Isabelle from their social media page.
The Bite Mark
Sabina has a dream about Isabelle dying. When she wakes up, something from the dream won’t let her go — Isabelle saying look at me, look at me. So she studies a photo and spots a bite mark on Isabelle’s lip. Something overlooked because police thought she was just another overdose.
Mary, Isabelle’s mother, calls Sabina after being contacted by police. Sabina tells her about the bite mark and encourages her to demand an autopsy. But the second Sabina mentions Dennis, Mary shuts down completely.
Isabelle, watching from the other side, understands. If Mary admits Dennis did this, that means she didn’t believe her own daughter. That means it’s her fault. That’s a weight no parent can face easily.
Isabelle Visits Her Family
Isabelle goes to the cemetery to wait for her mom. When Mary finally arrives, she breaks down. She admits that when Isabelle told her what happened with Dennis, she did go to church leadership. The elder told her to just trust in God — that no church elder would ever do such a thing.
Isabelle, watching this, feels something shift. Her mom had actually tried. She just didn’t know who to trust. And instead of anger, Isabelle feels a rush of love for her. It’s one of the quietest, most gutting scenes in the book.
Mary’s eyes snap open, like something changed.
Amy Sue
Nadia updates the Facebook page to include Isabelle’s case. A fake account makes a dismissive comment. Then a message arrives from “Amy Sue” — no profile photo, no history. She says she knows something about both Andrea and Isabelle but won’t talk to police. Meet at my apartment at 10pm. Don’t tell anyone.
The message quickly disappears. The address goes with it. Sabina is spiraling, panicking, trying to remember the address — and then almost out of nowhere it surfaces perfectly in her mind. She says “thank you, baby.” She knows it’s Andrea.
The Final Night
Sabina is going, even though she knows she shouldn’t. She drives past Dennis’s house to confirm he’s there — he spots her and throws his fist toward the car. At least she knows he’s home.
She calls Nadia and asks her to come, but Nadia is determined they should call the police — so Sabina lies about the meeting time, tells her it’s midnight instead of 10. Then she calls Joel and asks him to stay on speaker. They have a code word for all good and another for need help.
Meanwhile, Andrea is at Dennis’s house doing everything she can to keep him distracted — getting him electrocuted, getting him bit by a spider, anything. She runs out of “ghost juice” right as Dennis finally checks the tracker and realizes Sabina is at the apartment building where he raped Isabelle. She is getting too close. He grabs his keys and leaves without a word to Bunny.
For what it’s worth, Bunny has been having doubts. She said to Dennis: “What if Andrea didn’t run away after all?” A little late, Bunny. A little late.
Sabina arrives at the apartment. It’s Rita — Isabelle’s old work friend. Sabina gives Joel the all-clear signal and goes inside.
Rita tells her everything. She and Isabelle lived in the same building. She had a regular client who would wheeze when he got worked up — Dennis, aka Wheezy. He always used a specific knock and one night she heard his knock upstairs at Isabelle’s door and heard what was happening. When she was outside later, Isabelle came out pale, gone, like she didn’t want to live inside her own body anymore.
And then Rita says the thing she’s been carrying: Dennis came looking for Isabelle after she fled, and he threatened to kill Rita if she didn’t say where she’d gone. Rita told him. She feels responsible for Isabelle being murdered.
Andrea finally gets through to Isabelle. Rita is Amy Sue. Dennis is outside. He is here to kill Sabina.
Dennis
Sabina tries to call the police. Rita, terrified, knocks the phone out of her hand — she can’t have the police sniffing around. Sabina understands. She leaves.
Dennis is waiting and he pounces. He gets a cord around her neck. She’s going under and then she hears Andrea’s voice, clear as anything: “Go dead weight.”
She sees her. Andrea, right there, guiding her through the fight. She breaks free.
She runs. Dennis catches her again with a piece of glass against her throat this time. And then he starts telling her, while he hurts her, everything he did to Andrea. Like it’s something to be proud of.
Isabelle is there, trying to attack him but she can’t make contact. But then other ghosts appear. A group of them. They’ve been watching. One asks Isabelle: did this man take your life?
Yes.
Take his power now.
And Andrea repeats the exact words Dennis said to both of them when he killed them: “Shhh, don’t fuss. The more you fuss, the worse it will be.”
The ghosts make him hear it. All of them together. He is terrified. He runs. Rita calls 911.
Then Sabina is outside her own body, just like Andrea was when she died. She can see Andrea and Isabelle. She and Andrea actually get to talk. Andrea tells her where she’s buried. Sabina shares every memory she has of her daughter. And then the EMTs bring Sabina back.
The ghosts take off after Dennis. They all join hands, and the one who led them tells Isabelle: make him see you.
He sees her. He jerks the wheel. He crashes.
Dennis Beaumont is dead.
The Aftermath
Sabina wakes up in the hospital and tells the detective everything. Dennis is dead. He will never stand trial. Sabina is glad he’s gone and gutted at the same time that he’ll never have to actually answer for it — and that complicated grief felt completely real to me.
Bunny is in custody. Isabelle’s family agrees to the autopsy. Andrea is dug up from under that hot tub pad and Sabina buys her a cemetery plot near her and Joel so they can visit anytime. Joel, at the hospital, admits he felt Andrea guiding him too since he arrived and thought he was losing his mind.
Isabelle’s official cause of death is changed. Broken ribs. Dennis’s DNA. She’s vindicated — and she feels it. Eventually she decides she’s ready to cross over. She’s spent enough time on this side getting to know family members and animals who passed before her, and now she’s actually excited to meet more people on the other side.
Andrea is not ready yet. There are new memories to be made. So she stays.
The Steam Rating Breakdown
🔥 / 5 — Zero steam. This is a thriller, not a romance. What it does have are dark content elements that are handled with care rather than gratuitous detail: Dennis’s abuse of Andrea is deeply disturbing and deliberately kept ambiguous rather than explicit; Isabelle’s assault is referenced but not depicted in graphic terms. The book doesn’t shield you from the horror of what happened, but it’s not sensationalized either.
The Ending Explained — Satisfied or Disappointed?
Satisfied — with a small asterisk. Dennis dies in a car crash, which means he never has to sit in a courtroom and face a single thing he did. Sabina carries that disappointment and so did I. But the ghost resolution feels exactly right. Isabelle getting her vindication and crossing over on her own terms is beautiful. And Andrea staying behind because she’s just not ready yet? Completely honest. She’s seventeen. She just found her mom. Of course she’s not ready.
Would I Reread It?
No. And the only reason is how dark this book is — not because of anything Noelle Ihli did wrong. She handled incredibly heavy material with real care. But once you’ve walked through what Andrea and Isabelle went through, there’s no version of me that goes back in. It’s a one-time read. Go through it, feel all of it, then let it go.
Who Is This For
If you want a thriller that actually shakes you — not because of cheap twists, but because of how real the horror feels — this is it. This is for readers who can sit inside something dark and uncomfortable without flinching. If you love ghost stories built around justice instead of haunting, dual POVs that make you feel like you’re watching two worlds collide, and books that make you angrier and sadder and more hopeful all at the same time, read this. Just be ready for it.
Where to Get This Book

📖 Physical Book
Amazon US | Amazon CA | Bookshop.org
🎧 Audiobook
Audible US | Audible CA | Libro.fm
🎁 New to Audible? Get 3 months free (US)
🎁 New to Libro.fm? Get 2 free audiobooks
Ready for more from LD? Find them here
Plot Twisted. 🔥
More like this
- Buried Deep by Margot Hunt
- Before She Disappeared by Lisa Gardner
- The Girl’s Trip by Ally Condie
- Still See You Everywhere by Lisa Gardner
🎧 | Standalone | Genre: Thriller | Steam: 🔥