Faits: A. A.a. La société X._ SA, sise dans le canton de Genève, est active dans le transport de marchandises. Par contrat de travail du 14 août 2009, elle a engagé Z._ pour le 1er novembre 2009 en qualité d'employée de commerce-transitaire. Les tâches de cette dernière consistaient notamment à accomplir des formalités douanières, préparer des instructions à l'attention des sous-traitants transporteurs et agents et gérer les envois import-export. Auparavant, l'employée travaillait pour un autre transporteur aux côtés de A._, qui a également été engagé par X._ SA moyennant l'apport d'un portefeuille de clients. Le mari de l'employée travaille pour une autre société de transport dénommée W._ SA, fait dont l'employeuse avait connaissance. A.b. Le 4 novembre 2009, l'employée a envoyé à son ancienne adresse électronique professionnelle une copie d'un courriel indiquant que la cliente U._ souhaitait désormais traiter avec sa nouvelle employeuse X._ SA plutôt qu'avec l'ancienne. Ce fait a provoqué la colère de la cliente, qui jugeait inadmissible de divulguer des données confidentielles. A.c. Le 10 mai 2010, l'employée a reçu de sa supérieure hiérarchique le courrier électronique suivant, concernant la sous-traitance: " Je vous prie de bien vouloir me soumettre les offres que vous demandez à W._ et à d'autres. J'ai l'impression que vous donnez tout d'office à W._ sans demander ailleurs. Me mettre en copie pour chaque demande d'offre (...) ". Durant toute la période où Z._ a oeuvré à son service, X._ SA a sous-traité des affaires à W._ SA pour un montant total de 512'706 fr. Selon un employé cadre chez W._ SA, ces sous-traitances concernaient en particulier trois clientes, dont U._ et V._ SA; les ordres émanaient de Z._ ou d'une collègue (B._) pour la cliente V._, et de A._ s'agissant des deux autres clientes. La cliente U._ a donné l'instruction de ne plus travailler avec W._ SA. Constatant que son ordre n'avait pas été respecté, elle a mis fin au mandat de l'employeuse. Z._ s'est occupée de la cliente V._ à la satisfaction de son employeuse, qui a vu augmenter le nombre de mandats confiés par cette entreprise. Une relation de confiance particulière s'est nouée entre la cliente et l'employée. A.d. A compter du 1er janvier 2010, le salaire de l'employée a passé de 5'600 fr. à 6'500 fr. par mois, en même temps qu'elle était nommée responsable d'un département. En août 2010, l'employée est tombée enceinte. Elle est ensuite partie en vacances du 4 au 18 octobre 2010. Pendant cette période, elle a confié à W._ SA l'ensemble des livraisons de la cliente V._. Le 13 décembre 2010, l'employeuse a invité l'employée à se mettre totalement à jour pour le 3 janvier 2011 dans le classement, la facturation et le bouclement des dossiers; elle a exigé qu'à l'avenir, il n'y ait plus de retard. Le 15 décembre 2010, l'employée a touché une prime de 3'000 fr. et reçu des félicitations pour le bon travail effectué avec la cliente V._, qui avait généré un bénéfice de 85'812 fr. pour l'année 2010. A compter du 29 décembre 2010, l'employée s'est trouvée en incapacité de travail totale liée à sa grossesse; le certificat médical prévoyait un arrêt de travail jusqu'au 31 janvier 2011. L'employée s'est encore rendue sur son lieu de travail les 29 et 30 décembre. Selon ses propres dires, elle a organisé le trafic de marchandises pour la cliente V._, trafic qui devait reprendre le 3 janvier; elle admet avoir demandé à W._ SA de s'occuper des formalités douanières, comme elle l'avait fait à l'occasion de ses vacances d'octobre; A._ lui aurait donné son accord. L'employeuse explique qu'après avoir appris l'incapacité de travail de son employée, elle s'est inquiétée de l'organisation des transports à venir pour sa cliente V._. Le 4 janvier 2011, elle a appris par un tiers sous-traitant que le dédouanement avait été effectué par W._ SA. Celle-ci lui aurait révélé que dorénavant, le trafic de V._ passait par elle, sur instruction de Z._. Par lettre du 5 janvier 2011, l'employeuse a licencié l'employée avec effet immédiat. En substance, elle se référait aux avertissements verbaux qu'elle avait donnés à réitérées reprises les derniers mois et aux doutes qu'elle nourrissait déjà sur la loyauté de l'employée. Or, elle avait appris la veille avec stupéfaction que l'employée avait donné des instructions à l'un de ses clients importants pour qu'il cesse de lui confier des mandats et s'adresse dorénavant à sa concurrente directe, W._ SA, qui employait le mari de l'employée. Cette attitude rompait définitivement tout lien de confiance. A.e. L'employée réglait un certain nombre d'affaires privées durant son temps de travail, aux moyens d'outils professionnels. Il n'apparaît toutefois pas que cette manière de faire aurait excédé de façon notable ce qui est usuellement admis dans les relations de travail. Par ailleurs, l'employée a détruit un certain nombre de documents dans sa messagerie électronique. Le contenu de celle-ci a été reconstitué par une entreprise spécialisée mandatée par l'employeuse. B. B.a. L'employée a contesté les motifs du congé. Le 23 mars 2011, elle a déposé une requête de conciliation au greffe du Tribunal des prud'hommes du canton de Genève. Elle a accouché le 28 avril 2011. Après avoir obtenu une autorisation de procéder à l'issue de l'audience de conciliation, l'employée a déposé une demande le 4 juillet 2011, concluant à ce que l'employeuse soit condamnée au paiement de 119'281 fr. 95 plus intérêts à titre de salaire, vacances non prises, indemnités pour licenciement immédiat injustifié et tort moral. Par courrier du 3 avril 2012, elle a déclaré retrancher de ses conclusions les montants de 26'000 fr. (pour autant qu'elle touche des prestations de l'assurance maternité) et de 12'083 fr. La défenderesse a conclu au rejet de l'action, en invoquant à titre subsidiaire la compensation. Par décision du 10 août 2012, le Tribunal des prud'hommes a admis l'action à concurrence de 29'114 fr. 55 brut, en invitant la partie concernée à déduire les cotisations sociales. Les motifs du jugement sont en substance les suivants: le licenciement immédiat était injustifié; l'employeuse aurait dû respecter le prochain terme contractuel, soit le 31 octobre 2011. L'employée avait droit à un solde de salaire. En revanche, elle ne pouvait prétendre à une indemnité pour licenciement injustifié ou pour tort moral, dès lors qu'elle avait adopté un comportement "fortement suspicieux" [sic], qui pouvait légitimement susciter "quelques doutes" auprès de l'employeuse. Celle-ci n'avait aucune créance à opposer en compensation. B.b. L'employeuse a déféré ce jugement à la Cour de justice, en requérant le rejet de l'action. Par réponse et appel-joint, l'employée a conclu au paiement de 19'500 fr. supplémentaires à titre d'indemnité pour licenciement injustifié et à la confirmation du jugement pour le surplus. L'autorité d'appel a partiellement fait droit à l'employée en lui allouant une indemnité de 8'000 fr. nets plus intérêts, en sus du montant de 29'114 fr. 55. C. L'employeuse saisit le Tribunal fédéral d'un recours en matière civile dans lequel elle conclut derechef au rejet de l'action de l'employée. Elle produit un bordereau de pièces en précisant qu'il s'agit d'un "extrait des pièces de la procédure", c'est-à-dire du dossier cantonal, lequel a été transmis à la cour de céans. L'employée intimée conclut au rejet du recours. L'autorité précédente se réfère à son arrêt.