Zach Shallcross waits on a beach in Thailand to do what everyone knew he was going to do all along. PHOTO CREDIT: All photos Craig Sjodin/ABC

So ABC, can we finally cut the crap?

The (un)reality series “The Bachelor” had a “Pay no attention to the man behind the curtain” moment on Monday’s season finale, very nearly openly revealing just how much of a sham it is.

That it did so at the expense of a brokenhearted woman is to its producers’ shame, as well as ours for going along with the nonsense season after season after season.

To no one’s surprise, even those of us who don’t read the spoilers, Zach Shallcross proposed to Canadian nurse Kaity Biggar in the episode, sending Vermont account executive Gabi Elnicki home — but not before Gabi called him out for stringing her along.

Gabi reacts to being told she’s not the one for Zach.

As she stood on the proposal platform in Krabi, Thailand, getting the “I’ve been falling in love with you, but . . . ” speech from Zach, Gabi made him stop: “I’ve known it was coming,” she said of the breakup. “What I don’t know is why you didn’t tell me when you knew.”

Zach claimed that he didn’t “fully” make his decision until the night before in bed, but Gabi interrupted: “You’ve known, you’ve known.”

And there’s the crux. Sure, Bachelors can compartmentalize, they can have feelings for multiple women, but don’t tell me that with a potentially life-changing decision like a proposal on the line they wait until the last possible moment to make up their minds.

The “I can’t decide between two women” conceit is a fiction that Zach agreed to uphold as part of making a TV show. Gabi laid bare the toll it takes on the woman who, in her words, is “strung along” for the sake of sticking to the formula.

“I never thought someone who said they were falling in love with me would make me go through that,” Gabi told host Jesse Palmer after she watched the debacle in front of a studio audience.

“That last day, when you prepare a speech and you have hours and hours and hours of interviews, and you get ready and you spend all morning waiting and waiting and waiting, and I remember having the thought in the back of my head, ‘Zach would never make you go through this.’

“Even though I had that gut feeling of (not being the one) I didn’t think somebody who cared about me would make me go up there, and go through all of that stress and anxiety, and just the entire day just to — I mean I felt humiliated.”

But Zach made her go through it; Zach played the game.

And that wasn’t even the worst of the betrayal.

Gabi told Jesse that until she watched the fantasy suites episode she didn’t know Zach had told “everyone” about them having sex, a decision they had agreed was going to be just “between us.”

“So for me to see that, it was beyond a TV show for me,” Gabi said crying. “I feel ashamed from a moment that felt like love to me.”

She added, “I thought it was love, I thought it was more than a TV show. I get it, sex sells, but now I’ve become a narrative and it’s really painful . . . it’s a part of me that I’ll never get back that I shared with him and it’s extremely violating that the entire nation knows everything.”

Gabi lays out her pain for Zach on the “Bachelor” finale.

And what did Zach have to say for himself? Not much.

Time was short because the finale was on a schedule but, hey, we really, really needed to have Sean and Catherine Lowe in the hot seat so Sean could pretend that, yes, Zach had a tough choice to make, even though Sean and everybody else knew he’d made it weeks ago. Also, so “The Bachelor” could once again trot out its only real success story in 27 seasons. It’s funny, though, that Sean gives God more credit for his life with Catherine than “this sometimes silly reality TV show.”

But back to Zach. He told Gabi there was no excuse for the way he handled things, the last thing he wanted to do was hurt her, he was sorry from the bottom of his heart, etc.

It was a variation of what he said to Ariel Frenkel when she took him to task earlier for not telling her he’d had sex with Gabi — she didn’t find out until she watched the episode — and for arbitrarily making sex a no-go when he and Ariel had their fantasy suite date.

Ariel was her usual poised, mature self talking to Zach.

“I want to know why the other women were given grace and honesty and I wasn’t given that respect,” Ariel said to applause and cheers.

Also, “by putting sex off the table you made the entire week about sex” — which, no doubt, was the producers’ intention.

“I want you to understand you also took away my agency . . . You took away my ability to even have a conversation. If you had waited you would have found out I was on the same page as you” about not having sex that week, Ariel told Zach.

I have nothing but good things to say about Ariel and Gabi, who were both done dirty by a franchise that has proven over and over again that it will sacrifice anybody’s well-being, particularly women’s, if it means creating a juicy plot line.

But they weren’t the only women disrespected on Monday.

Sure, Kaity got the “prize,” engagement to Zach, but ABC also did her a dirty by upending the usual order of things, by interspersing the “After the Final Rose” interviews with footage of the events in Thailand instead of leaving “ATFR” to the final hour like they did in the old days.

Zach pops the question to Kaity in Thailand.

How were viewers supposed to enjoy the emotional and, for Zach and Kaity, joyous proposal just minutes after we watched Gabi pour out her anguish onstage?

Once the seemingly genuinely happy couple were together in the hot seat, Zach told Jesse, “When I saw her at the last chance date, I saw her and I thought to myself, ‘It’s you, it’s always been you,’ and I want to spend the rest of my life with this woman.

“And obviously, the show, had to wait it out a little bit, couldn’t say anything. I just knew she was my wife.”

And since Gabi’s last chance date came after Kaity’s, or at least was presented that way in the episode, it certainly puts the lie to all that “I didn’t make up my mind till the night before the proposal” nonsense, doesn’t it?

What else can I say? Kaity and Zach said they’re moving in together in Austin, Texas, in the summer and hope to get married in 2025. I wish them well. I hope they make a go of it.

The episode ended with a sneak peek of Charity Lawson’s “Bachelorette” season as we watched her brother, Nehemiah, turn up at the mansion and put on a disguise so he could become the “undercover brother” and find out more about the men.

Frankly, given the franchise’s overall level of disrespect, I think it will take more than a caring brother to protect her from the drama that will be inflicted on her in her season.

Will I continue recapping “The Bachelor” and “The Bachelorette”? I’m not sure right now that I have the stomach for it, but I’ve been here before and got sucked back in. I will definitely be back in May to follow “Bachelor in Paradise Canada.”

You can comment here, visit my Facebook page or follow me on Twitter @realityeo