---
title: Apache Unomi Stories
layout: default
---

<div class="container">

    <div class="jumbotron p-3 p-md-5 text-white bg-primary mt-5">
        <h1 class="display-4">Great Apache Unomi stories!</h1>
        <p class="lead">How and why Apache Unomi is used.</p>
    </div>

    <div class="row mb-5 mt-5">
        <div class="col">
            <h2 class="pb-2 mb-1 font-italic border-bottom">Powered by Apache Unomi</h2>
            <p>Products using Apache Unomi</p>
        </div>
    </div>

    <div class="row m-5">
        <div class="col">
            <h4 class="pb-2 mb-1">Jahia jExperience</h4>
            <p>Jahia is the initial contributor of Apache Unomi and is using it as an engine to integrate content and
                data in their Customer Data Platform (jExperience) and Digital Experience Platform (Jahia) while
                respecting privacy through Unomi's native GDPR support. They are also leading the Customer Data Platform
                specification being worked on at the OASIS Context Server Technical Committee. Apache Unomi is the
                reference implementation of that standard.
            </p>
            <p>"Apache Unomi, thanks to its strong foundation in Apache Karaf and ElasticSearch, is a very modular and,
                completely open and performant CDP engine that is a very important foundation of our products. We love
                Apache Unomi, we work hard to encourage others to adopt it, we are here to help and we are deeply committed
                to helping our customers succeed with it." - Serge Huber, Jahia CTO.</p>
            <a href="https://www.jahia.com" target="_blank">www.jahia.com</a>
        </div>
    </div>

    <div class="row m-5">
        <div class="col">
            <h4 class="pb-2 mb-1">Ninetailed Personalization Platform</h4>
            <p>Ninetailed use Apache Unomi to provide a complete view of the visitors; to discover new visitor segments,
                choose from personalization recommendations, so their customers can test their ideas and grow the
                traffic they already have.</p>
            <p>"Apache Unomi was chosen as our CDP due the logical and plugin architecture, because it is an Apache
                Open Source project and specially because of its Privacy (GPDR consent management) features.
                This lets the user own their data, but also marketers and developers improve the user journey to help
                the users in their decision process and brand experience" – Andy Kaiser, Ninetailed founder</p>
            <a href="https://ninetailed.io/" target="_blank">ninetailed.io</a>
        </div>
    </div>

    <div class="row mb-5 mt-5">
        <div class="col">
            <h2 class="pb-2 mb-1 font-italic border-bottom">Commercial Support</h2>
            <p>Companies offering commercial support for Apache Unomi</p>
        </div>
    </div>

    <div class="row m-5">
        <div class="col">
            <h4 class="pb-2 mb-1">Yupiik</h4>
            <p>Yupiik is an expert team with a solid experience in digital and information technologies, heavily
                involved in the Apache Software Foundation. Their team are the developers and contributors of many well
                known Apache projects, such as Apache Karaf, Apache ActiveMQ, Apache Camel, Apache Unomi, and many
                more.</p>
            <a href="http://www.yupiik.com/" target="_blank">www.yupiik.com</a>
        </div>
    </div>

    <div class="row mb-5 mt-5">
        <div class="col">
            <h2 class="pb-2 mb-1 font-italic border-bottom">Calling for more stories</h2>
            <p>If you want your own application or solution powered or based on Apache Unomi to be features here, please
                create a
                <a href="https://github.com/apache/unomi-site/blob/master/src/main/webapp/stories.html" target="_blank">pull
                    request on this page</a> or send a message on the <a href="community.html">users mailing list</a>
            </p>
        </div>
    </div>

</div>

