Faits : A. La société Z._ Sàrl, à Genève, se consacre à l'organisation de voyages en Afrique et dans d'autres régions. Au cours de l'année 2006, elle a organisé plusieurs voyages à l'intention de X._ et de sa famille. Les prix acquittés par la cliente se sont élevés au total d'environ 215'000 francs. Par télécopie du 10 janvier 2007, la société a adressé à sa cliente un itinéraire « provisoirement réservé » au Kenya pour la « famille X._ », du dimanche 22 juillet au jeudi 16 août 2007. Une confirmation devait être transmise sans délai car les hébergements choisis étaient « très prisés ». Le prix de l'ensemble des prestations énumérées s'élevait à « environ » 101'150 fr., vols internationaux en sus. Les modalités de l'offre étaient exposées comme suit: Toutes nos offres sont sujettes aux disponibilités des camps/lodges au moment de la réservation, aux fluctuations des cours de change ainsi qu'aux augmentations des contreparties. Sur acceptation d'une offre, un dépôt de 25% non remboursable est demandé pour garantir les réservations. Le solde du séjour est payable huit semaines avant le départ, après quoi vous recevrez votre itinéraire final avec contacts et justificatifs. Dans le cas où nous ayons à augmenter le coût du séjour lors de la facture finale (différence de cours de change ou augmentation du prix des vols internes - coûts imprévisibles), nous nous réservons le droit de facturer un complément au coût total. Si vous désirez payer le montant total lors de la réservation, ce petit risque peut être évité. Si vous désirez payer le montant total lors de la réservation, ce petit risque peut être évité. - . Une assurance de voyage couvrant les frais en cas d'annulation est indispensable. Selon la gérante de la société, la cliente a donné son accord par téléphone le 16 janvier 2007. La gérante et la cliente ont ensuite communiqué par messages SMS. La cliente a demandé « Bonjour, tjr ok vacances aout ? » et « Bonjour, tjr ok pr afrique ? », respectivement le 19 mars et le 27 mai 2007. Le 20 mars, elle s'est fait rappeler la date du départ; le 31 mai, parce qu'elle envisageait l'invitation d'amis, elle a demandé le nombre des chambres à sa disposition dans l'un des hébergements. Le 31 mai 2007, la société a établi et transmis une facture au montant de 101'150 fr. pour l'itinéraire concerné, « payable à réception », sous déduction de 4'420 fr. qui devaient être restitués à la cliente en relation avec un autre voyage. Par message SMS du 12 juin, la cliente a demandé l'accord de la gérante en vue de payer « tout en juillet », en raison de l'importance de la somme et d'un manque de liquidités. La gérante a répondu le lendemain qu'elle devait payer l'un des hébergements le 23 juin au plus tard. Par message du 2 juillet, la cliente a fait savoir qu'elle renonçait au voyage pour des raisons familiales. Une correspondance s'est poursuivie au sujet des frais d'annulation réclamés par la société. La cliente envisageait un report du voyage à l'année suivante ou un voyage plus bref et réduit à deux personnes. En définitive, aucun accord n'a été trouvé et la cliente s'est refusée à tout paiement. Deux établissements touristiques au Kenya ont adressé à la société leurs factures relatives à des prestations que celle-ci avait commandées pour le compte de sa cliente, l'une datée du 5 juillet 2007 pour 11'800 dollars étasuniens, l'autre du 30 juillet pour 25'845 dollars, soit 37'645 dollars au total. B. Le 4 septembre 2009, Z._ Sàrl a ouvert action contre X._ devant le Tribunal civil de l'arrondissement de la Côte. La défenderesse devait être condamnée à payer 45'155 fr., 4'615 fr.50 et 100 fr. avec intérêts au taux de 5% par an, respectivement dès le 16 novembre 2007, le 28 novembre 2007 et le 28 novembre 2008. La défenderesse a conclu au rejet de l'action. Elle avait préalablement obtenu l'autorisation d'appeler en cause son époux, dont elle avait par ailleurs entrepris de divorcer; elle a pris des conclusions récursoires contre lui. La demanderesse a modifié ses conclusions en ce sens que la défenderesse et l'appelé en cause devaient être condamnés à payer solidairement les montants déjà en litige. L'appelé en cause n'a pas procédé. Le tribunal s'est prononcé le 18 janvier 2013. Selon son jugement, la demanderesse n'a droit qu'au remboursement des sommes réclamées par les deux établissements kenyans, et ce remboursement doit lui être alloué dans la monnaie correspondante, nonobstant les conclusions articulées en francs suisses. Le tribunal a donc condamné les deux époux à payer solidairement 37'645 dollars étasuniens à la demanderesse, sous déduction de 4'420 fr., avec intérêts dès le 16 novembre 2007; le taux d'intérêts n'est pas précisé. Le tribunal a condamné l'appelé en cause à relever la défenderesse de 13'175,75 dollars, sous déduction de 1'547 fr., avec intérêts dès la même date. La défenderesse a appelé du jugement pour réclamer d'être libérée de toute obligation envers la demanderesse; cette partie-ci a conclu au rejet de l'appel et à la confirmation du jugement. La Cour d'appel civile du Tribunal cantonal a statué le 16 mai 2014; elle a rejeté l'appel et confirmé le jugement. C. Agissant par la voie du recours en matière civile, la défenderesse requiert le Tribunal fédéral de réformer l'arrêt de la Cour d'appel en ce sens qu'elle soit libérée de toute obligation envers la demanderesse. La demanderesse conclut au rejet du recours. Les parties ont spontanément déposé une réplique et une duplique.