Over-worked, harried and terrified of being put in foster care, seventeen-year-old Katie Gibbs (Lucy Hale) does her stepmother and stepsiblings' bidding without complaining. She's constantly harassed by Gail. The film starts with a dream where she is recording a music video for her hit single "Run This Town." Victor then wakes her up and she makes breakfast. In the scene, it's revealed how badly she's treated by Gail (Missi Pyle), and her stepsister Bev (Megan Park). At school, Guy Morgan, the owner at the Massive Records Company President enrolls his son into the school where Gail is headmistress. Katie sneaks her own-made tape into Guy's briefcase. Guy wants his son, Luke (Freddie Stroma), to produce the showcase and start following in his footsteps which Luke is less than excited about.
Back at home, Bev Van Ravensway, Katie's stepsister, starts to practice singing so she can win a recording contract with Guy, but realizing she is terrible. Her mother gets a call from Guy and is shocked to hear that he loves Katie's Demo CD. Gail lies and says that it was Bev's CD and that Katie had stolen it. Meanwhile, Victor, Katie's stepbrother, takes her clothes and towel while Katie takes a shower and locks her out of the house. Katie then tries all the ways she know to go back in, but fails. She was desperate so she wore the door mat of the house. She waits outside and meets Luke for the second time, who gives her his jacket. Bev opens the door and invites Luke in, while Gail goes to Katie's room and forces her to sing. Gail drives Luke out of the house and starts planning to use Katie's voice to get Bev a record deal. Bev, at first reluctant, gives in to Gail's urging and agrees in order to win Luke's affection.
At school, Katie and Angela hear Luke singing his song and Katie is entranced. Katie writes a song in response to his song and admits she kind of likes him. Angela tells her to sing it to him at the Bollywood Ball that night and gives Katie a costume to wear. They hear Gail shouting outside and Angela hides just as Gail opens the door. Seeing the costume Katie has, Gail makes her stay home and babysit Victor for the night. After Victor reveals to Katie by hidden cameras, that Bev wants Luke and is going to try to win him over at the ball, she asks Tony, Gail's guru to watch him. Tony reveals he's not actually a guru but a method actor who couldn't refuse Gail's money and is only actually half Indian. At the party, Katie leads Luke outside and sings, which makes Luke fall for her. Meanwhile Angela distracts Gail by challenging her to a dance off. After the dance battle, Gail feels sick and leaves. Katie escapes and hurries home, only to find Gail already waiting for her. Gail threatens to expel Angela so she won't get into Juilliard if Katie does not sing for Bev, Katie agrees to save Angela.
Luke tries to find "The Girl with a Beautiful Voice," but instead walks in on Bev lip syncing using Katie's voice in the music room and mistakes her for the girl. Luke falls for Bev and invites her to write a song with him. At her house, Katie greets Luke at the door, heading out to throw away Gail's ruined portrait and they connect again. Luke tells Katie he doesn't like that she keeps disappearing. Bev sweeps him away and diverts his attention on Katie to her instead. She somehow gets Victor to help her trick Luke. Her brother gives her and Katie devices that allow Bev to hear Katie, so that she can help her during the date. Katie creates a song on the spot and while Luke sings her song to Bev, she falls harder for him. Bev and Luke kiss, breaking Katie's heart. Victor sees Katie's distress. Luke believes he is in love with Bev because of her voice and talent for song writing, which actually belong to Katie.
At the showcase, Tony and Victor sabotage Bev in the middle of the song, forcing Gail to make Katie sing live backstage. Luke sees Katie being dragged by Gail and questions her, eventually putting together that it was her all along and the one helping Bev write a song with him on their date. Luke takes a camera and starts to film Katie, thus exposing Bev. Gail tries to shut the camera but is stopped by Tony, who shocks her with the cables. Katie is able to finish the song and sing "Bless Myself" as well. Guy tells Luke that he wants him to start making Katie's album with her. Gail escapes and tries to make Guy see reason, but fails. Bev tells Gail to "give it up." Gail is then seen singing Katie's song at a ranch just to be laughed at by the people, a reference to a scene earlier in the movie of a similar situation. The cast are then seen dancing to Katie's hit single, Tony chasing Luke around because he stole his clothes.
- Lucy Hale as Katie Gibbs, the Cinderella character, and the protagonist in the film.
- Freddie Stroma as Luke Morgan, the Prince Charming character who wants to make an album with Katie.
- Jessalyn Wanlim as Angela, Katie's best, and the Fairy Godmother character in the film.
- Missi Pyle as Gail Van Ravensway, Katie's stepmother and the antagonist in the film.
- Megan Park as Beverly "Bev" Van Ravensway, Katie's stepsister.
- Matthew Lintz as Victor Van Ravensway, Bev's younger brother.
- Manu Narayan as Tony (Ravi)
- Titus Makin Jr. as Mickey O' Malley, the Duke character in the film, and Luke's best friend.
- Dikran Tulaine as Guy Morgan, the Kingly character in the film, and Luke's father.