Ready to return to Storybrooke, “Once Upon a Time” fans? The heroes may be heading home. That is, if things go smoothly.

Episode 20 of the ABC series picks up with Regina (Lana Parrilla) explaining that she sent Zelena (Rebecca Mader) to see Hades (Greg Germann). Of course everyone is shocked at Regina’s decision and thinks she made a huge mistake in trusting the wicked witch with the ruler of the Underworld. But Regina stands by her decision.

It looks like she made the right choice because Hades appears to tell them that Gold (Robert Carlyle) teamed up with Pan (Robbie Kay) to kidnap Zelena. Gold wants Hades to tear up the contract for his second-born child, and Hades is willing to do so. However, Hades knows that Gold won’t let Zelena go that easily. And that’s why he needs Emma’s (Jennifer Morrison) help. But why would Emma help the man trapping them all in the Underworld? Hades is so desperate to get Zelena back that he’s willing to remove everyone’s names from the headstones.

It’s an offer Emma has to seriously consider, and in the end she takes it. Just as Hades predicted, Gold doesn’t follow through on releasing Zelena when the contract is destroyed. Instead Pan reveals that they are going to remove Zelena’s heart so that he can return to the land of the living. Before Pan has the chance to remove her heart, Emma appears from behind and uses her magic to stop him. Gold, after realizing that he got what he wanted, bails on his father and disappears in a cloud of smoke to return to Belle (Emilie de Ravin). Unfortunately for him, true love does not wake her from the sleeping spell.

Happy to have his beloved back, Hades pulls Zelena in for a passionate a kiss; a kiss so powerful that it reignites the lord of the Underworld’s heart and breaks his banishment. He now has the ability to leave the Underworld and be with the living.

Emma wants Hades to follow through on his word, and Hades promises he will. A portal is opening in the ceremony and will transport everyone home. The catch is that they have to go through before nightfall.

Hades removes all the names, and the situation seems to good to be true. That’s because it is. When Emma tries to split her heart with Hook (Colin O’Donoghue) she discovers that their initial plan is not going to work. Snow (Ginnifer Goodwin) and David (Josh Dallas) were able to split their heart because David was only dead for a few moments. His soul didn’t have enough time to travel to the Underworld. The same can’t be said for Hook. His body is rotting above ground.

Emma’s not willing to give up hope so quickly, so she jumps at Hades’ suggestion to travel below the Underworld to eat the food of the gods, ambrosia. Legend has it that true love could reunite two lovers who eat it. But do Emma and Hook have true love? That’s something they’re about to find out.

Below the Underworld Emma is forced to put her heart on a scale to weigh it. If what Emma and Hook have is true love then the ambrosia tree will be revealed. However, if they don’t have true love then there will be consequences. Emma places her heart on the scale and it doesn’t move. But shortly after Emma starts to have severe chest pains. She yells for Hook to grab her heart off the scale, but he bursts into flames. Hook yells for Emma to gather the strength to grab her heart. However, Emma chooses to tackle Hook to the ground instead. That was the test they needed to prove they had true love. The tree appears, but the ambrosia is dead. Hades tricked Hook and Emma to put them on a wild goose chase while he escaped through the portal.

Above ground Regina convinces Robin (Sean Maguire) to let Zelena and Hades head to the cemetery with the baby. He doesn’t want to at first, but grudgingly hands over his daughter. To make matters worse, he walks off to get some fresh air and has his heart stolen by Gold.

Nobody knows what Gold did, but it’s only because they have bigger problems. Henry (Jared Gilmore) is using his power as the Author to help people find their unfinished business when he’s interrupted by Cruella (Victoria Smurfit). She reveals that she’s taking over as leader of the Underworld now that Hades is gone. Because she considers the heroes her enemies, Cruella wants to keep them in the Underworld forever. With the Blind Witch’s (Emma Caulfield) help, Cruella is able to trap the heroes in the library. But it was really Hades’ spell that the Blind Witch performed. Knowing he can’t live happily ever after in Storybrooke with the heroes, his plan is to bring Zelena back and leave the others behind. The catch is that Zelena doesn’t know that. She jumps through the portal with the baby when Hades convinces her that the heroes always make it back in time.

Emma knows that they’re running out of time, but promises Hook they’ll find another solution. However, Hook’s not as optimistic. He gets Emma to the elevator to return above ground to warn the others about Hades. He doesn’t join her, though. Finally coming to grips with not returning home, Hook tells Emma she has to move on. She did all she could, but her place is in Storybrooke, not the Underworld. Although she doesn’t want to lose him again, Emma ultimately agrees to go. But before she goes she makes Hook promise not to make her his unfinished business.

Emma reunites with the others, who fill her in on what Hades plotted. Meanwhile, Gold turns the tables of Pan. He pretends to give him Robin’s heart, but in reality tricks him into putting river from the lost souls inside him. The water kills Pan, giving Gold the satisfaction he needs to return home. He stores Belle in Pandora’s box and goes through the portal.

Regina and Emma join forces to break down Hades’ spell and make it to the portal in time. They all manage to pass through and the gate closes behind Emma, forever closing her off from Hook.