Over-worked, bullied and terrified of being put in foster care, seventeen-year-old Katie Gibbs (Lucy Hale) does her stepmother and stepsiblings’ bidding with no complaints. She’s constantly harassed by Gail, her stepmother. The film starts in a dream where she records 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 Beverly, also known as 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, Katie’s stepsister, starts to practice singing so she can win a recording contract with Guy, but realizing she is terrible. Gail 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 demo CD and that Katie stole it. Meanwhile, Victor, Katie’s stepbrother, steals her clothes while she showers and takes her towel, locking her outside of the house naked. Katie then tries all the ways she know to go back in, but fails. She ends up wearing the welcome mat while waiting outside, meeting 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 with a funny excuse 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 her best friend 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 Ravi, Gail’s guru to watch him. Ravi reveals he’s not actually a guru but a method actor from New Jersey, named Tony, 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 the house, Luke is greeted by Victor and gives him a little guitar lesson after playing off-key, much to Victor’s surprise just wanting to see Bev. Katie reconnects with Luke and heads out to throw away Gail’s ruined painted portrait after Victor cut off the face with a special knife. Luke tells Katie he doesn’t like her disappearing. Bev sweeps him away and diverts his attention from 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 tries to cheer Katie up, seeing her distress. Luke believes he is in love with Bev because of her voice and talent for song writing, which actually belong to Katie. Later, Gail admits to Katie that she can have access to her dad’s savings account, forcing Katie to submit under her stepfamily’s will.
At the showcase, Victor sabotages Bev in the middle of the song with Tony’s help by crashing the Ipod having Katie’s recorded singing voice, much to Katie’s shock, forcing Gail to make Katie sing live backstage. Luke sees Katie being dragged by Gail and questions her, eventually realizing it was Katie all along helping Bev write a song with him and on their date. Luke steals the camera and films Katie, having Bev exposed. Gail tries to shut the camera but is stopped by Tony, who shocks her with the cables. Katie finishes her hit song “Bless Myself” with Victor’s assistance. Guy tells Luke he wants him making Katie’s album with her. Gail escapes and tries to make Guy see reason, but fails. He says they’ll see what the schoolboard thinks when he “gives them a ring”. Katie and Luke then kiss. Bev tells Gail to “Give it up.” Gail is then seen singing Katie’s song “Make You Believe” at a ranch just to be laughed at by the people, a reference to a scene earlier in the movie of a similar situation. At the end of the film, the cast are all seen dancing to Katie’s hit song “Run This Town,” Tony chases Luke around for stealing his clothes for a funny gag.