Paris may be the City of Light, but it’s also the City of Love for Emily Cooper (Lily Collins).

After moving abroad for her marketing company, the “Emily In Paris” protagonist has no problem finding eligible suitors. But she has an undeniable je ne sais quoi with one of them, Gabriel (Lucas Bravo) from the get go.

After their initial meet cute, Emily learns that Gabriel is already taken, but that doesn’t mean it’s easy to say au revoir to her feelings for the French cutie.

Over the last three seasons, Emily and Gabriel have tried hard to deny their feelings, but they continue to find themselves embroiled in a love triangle. Quelle horreur!

TODAY.com recently asked both Collins and Bravo why they think their characters always find their way back to each other.

“When Emily moved to Paris (in Season One) … when she has that meet-cute with Gabriel at the door, there’s a spark, obviously,” Collins says. “There’s something that happens in that moment that I do think changes Emily in terms of a fire within her.”

Collins described her character’s relationship with Gabriel as “very foreign to her” and says it’s “hard to let that go without ever having fully explored it.”

Bravo brings up the moment Gabriel and Emily meet, and says his character will “always see that first time he opened the door and dived into her eyes.”

“I think he saw that she was alone in a culture that’s not accessible and he wanted to protect her,” Bravo says, explaining that Gabriel also met Emily at a time where he was “a bit lost.”

“Emily will always be his person. So I feel like no matter what happens, he will always try,” Bravo concludes. “So it’s up to (Emily). It’s up to her, really.”

Before “Emily In Paris” returns for Season 4, we’re recapping Emily and Gabriel’s romantic journey thus far and outlining all the moments that’ll have you saying ooh la la.

Season 1

Emily first meets Gabriel, her downstairs neighbor, one night when she returns home and tries to enter his apartment by accident. They have a quick chat and Emily realizes that she’s on the wrong floor then goes about her way.

While eating at a nearby restaurant with her pal Mindy (Ashley Park), Emily decides to send her food back because the meat isn’t cooked to her liking. As it turns out, Gabriel is the chef and he comes to Emily’s table and encourages her to taste it.

Here is where the sexual tension (and innuendo) begin in full force. “Try his meat, Emily,” Mindy urges. Emily does and says it’s “surprisingly tender” then Gabriel walks away, thoroughly pleased with himself. “I’d bon appétit him,” Mindy then teases.

Emily and Gabriel next meet when her water runs out in the shower. He helps her talk to their landlord and translates when a service man stops by. Gabriel goes so far as to let Emily use his own shower while she waits for hers to be repaired.

Lily Collins as Emily and Lucas Bravo as Gabriel "Emily in Paris." (Marie Etchegoyen / Netflix)

Emily and Gabriel develop a friendship after meeting in their apartment building.

Emily soon meets Camille (Camille Razat), but doesn’t realize she’s Gabriel’s girlfriend.

Meanwhile, the sexual tension between Emily and Gabriel grows and Gabriel bails her out one night when she needs a last minute reservation at a restaurant for a client dinner. After the dinner, Emily runs back into the restaurant and kisses Gabriel.

A few minutes later outside the restaurant, she runs into Camille, who informs her that the chef is her boyfriend. Gabriel then comes outside and awkwardly stares at his girlfriend and his crush.

While hanging out with Camille and Gabriel, Emily sneaks a solo moment with Gabriel and says she never would’ve kissed him had she known that he was dating someone. She does, however, point out that he kissed her back. He says it was a normal reaction and they agree to forget about the kiss.

At a future date, Gabriel mentions the kiss to Emily as they’re walking back to their apartments and says, “It wasn’t just you. I felt it too.”

Emily meets a cute guy and they hang out with Camille and Gabriel, who later tells Emily he thinks he’s a “snob.

“I just think you’re wasting your time on a guy who doesn’t deserve you,” he says.

Lucas Bravo as Gabriel and Lily Collins as Emily in "Emily in Paris." (   / Netflix)

Emily and Gabriel have a complicated relationship.

Emily invites Gabriel to a work event one night and she gets swept away and kisses him then apologies. By the end of the night, Emily says they shouldn’t see each other anymore, explaining that “it’s not good for any of us.”

Meanwhile, Emily starts hanging out with a handsome man named Mathieu (Charles Martins).

One day, Emily runs into Gabriel and Camille fighting outside their apartment and learns that he’s moving to Normandy to open a restaurant. He wanted to buy the restaurant he currently works at, but didn’t want to involve Camille’s parents, who had offered to finance things for him.

Gabriel gives Emily his omelet plan as a parting gift. On his last night in Paris, she runs over to the restaurant and says she’s going to miss him. They kiss and end up heading back to their apartment building to hook up. They both agree that the night was incredible, but Emily says she doesn’t think she can see him again because they “never really had a chance.”

Emily later learns that Gabriel is staying in Paris after all because Antoine (William Abadie) suddenly agreed to back him financially so he could buy the restaurant down the street.

Emily then gets a text message from Camille saying she knows Gabriel is staying in Paris and asks if they can talk.

Season 2

Despite her one night stand with Gabriel, Emily still wants to explore her bond with Mathieu. Gabriel seems jealous when he learns that the two are going away on a trip.

When Emily gets on the train with Mathieu to head away for the weekend, she’s in their cabin and is talking to Gabriel on the phone. They both admit they don’t want to hurt Camille but Gabriel says he can’t stop thinking about Emily. She agrees but says, their night together was a “mistake.” Mathieu walks in and hears everything then leaves her to go on the trip by herself.

Camille Razat as Camille and Lucas Bravo as Gabriel "Emily in Paris." (Stéphanie Branchu / Netflix)

Camille (Camille) is Gabriel’s girlfriend when Emily meets him.

Emily meets up with Camille and they talk about Gabriel. But Emily doesn’t let on that she knows what’s going on with him.

Emily throws herself a dinner party for her birthday and invites both Gabriel and Camille in an effort to get them back together. It seems to be working, but then Camille discovers that there’s something going on between Emily and Gabriel when she finds his omelet pan in her apartment. She then confronts them in front of all the guests.

Back in Paris, Emily is tasked with publicizing the opening night of Gabriel and Antoine’s restaurant. While filming a video for social media, Emily and Gabriel start making out and are interrupted when someone enters the restaurant for a job interview.

When Camille’s mom finds out about her daughter’s breakup with Gabriel, she devises a plan to get them back together and keep Emily out of the picture.

Camille meets up with Emily and suggests they make a pact that neither of them will ever be with Gabriel. Emily begrudgingly agrees in the interest of maintaining her friendship with Camille.

Later on, Emily tells Gabriel she doesn’t want to start something with him because she’s only in Paris for a year and they have an “expiration date.”

Emily meets a British hottie named Alfie (Lucien Laviscount) in French class and they grow close. After hooking up one day, Emily wears Alfie’s blazer back home and runs into Gabriel. Alfie shows up at Gabriel’s restaurant because he forgot his phone in his blazer and remembered Emily mentioning that she hangs out at the restaurant. Gabriel is offended and thinks that Alfie is the reason Emily said they couldn’t be together.

Aflie is concerned that there may be something going on between Emily and Gabriel when one of her coworkers hints at it, so he asks Gabriel. He says there was a time when they may have gotten together but they’re just friends.

While talking with Mindy, Emily admits she’s in love with Gabriel and goes to tell him. However, she sees that Camille has moved in and they’ve rekindled their romance.

Season 3

With Gabriel and Camille back together, Emily focuses her attention on her romance with Alfie. Alas, he’s set to return to London soon, and she doesn’t seem super eager to make plans to visit him because she’s so distracted by work.

Emily misses Alfie’s going away party and he’s totally bummed. While there, however, he meets Antoine and they talk business. Unbeknownst to Emily, Antoine offers him a job and he stays in Paris.

Lucien Laviscount as Alfie and Lily Collins as Emily in "Emily in Paris." (   / Netflix)

Alfie (Lucien Laviscount) and Emily has strong chemistry.

It’s been two weeks since Emily has really talked to Alfie and she’s shocked to see him in Paris at Antoine’s office of all places. To make matters worse, Emily learns that Camille and Gabriel knew Alfie was still in town and didn’t tell her since Alfie asked them not to.

While the group is hanging out one night, Emily sings a song as a romantic gesture to win Alfie back and it works.

Things are going well for Emily and Alfie and Camille and Gabriel, but Camille complicates matters when she has an affair with a female artist named Sofia (Melia Kreiling). Emily sees them kissing one day but doesn’t tell Gabriel.

Emily and Gabriel hang out together one night when Camille is out of town and have a platonic blast. Then he opens up and says Camille hasn’t been replying to his texts quickly or at all and is worried.

On another night, Gabriel vents to Emily about his fears that he’s losing Camille. While drinking, he gets emotional and says Emily “changed my life.” She explains that she’s with Alfie and says he’s with Camille. He then says, “I love you both but I’m gonna end up with nothing.” When they run into each other a few days later, Gabriel seems to be in much better spirits.

Emily is tasked with finding a couple to be part of a proposal ad campaign and Alfie thinks of Camille and Gabriel. Gabriel is in, but Emily is concerned since he was so uncertain about their future just days ago.

Camille ends up proposing to Gabriel before he can ask and he accepts.

Things are also going well for Emily and Alfie, and Emily suggests that he tell his family about her. He says they should make things Instagram official but she has a better idea: She says they should participate in the ad campaign she’s working on to publicly launch their relationship.

Camille’s parents host an engagement party for her and Gabriel and Emily ends up confronting Camille about her relationship with Sofia.

When Emily informs Gabriel that he’s on the route to getting a Michelin star for his restaurant, he hugs her and Camille sees.

Gabriel returns to the party and tells Camille the great news then suggests that they turn the party into an impromptu wedding. Camille agrees, but when they’re saying their vows, the bride gets cold feet and whispers, “You don’t have to do this” to the groom.

Camille then says the only reason she and Gabriel are together is because she knew he was in love with Emily so she made a pact to prevent her from being with him. Camille says she saw that he was “in love” with Emily since the moment he met her.

Camille calls off the wedding. Alfie addresses Emily, saying, “I’m nobody’s second choice, Cooper. Now go get your man.”

At the end of Season 3, Emily and Gabriel talk about their feelings for each other outside and Gabriel announces that Camille is pregnant.