Elle s'est faite connaître à l'adolescente en tant qu'actrice dans Madame est servie et plus tard, elle a incarné Phoebe Halliwell dans Charmed de 1998 à 2006. En 2013, elle a commencé à apparaître dans la série britannique Mistresses avant de jouer dans Insatiable sur Netflix en 2018.
Elle a commencé à jouer à l'âge de huit ans après avoir décroché un rôle dans une tournée nationale de la comédie musicale Annie, où elle a été sélectionnée parmi 1 500 candidates.
Elle a interprété Jennifer Mancini dans Melrose Place de 1997 à 1998 et a été invitée à jouer un rôle dans le clip musical de la chanson "Josie" de Blink-182.
Elle a épousé l'agent artistique David Bugliari en 2009 et le couple a un fils Milo et une fille nommée Elizabella.
Elle a joué dans 178 épisodes de Charmed avec Rose McGowan et est devenue productrice au début de la cinquième saison de la série.