Giter Club home page Giter Club logo

ceddl's Introduction

What is this?

A collection of Java POJOs that implement the CEDDL specification.

What is the CEDDL?

CEDDL stands for Customer Experience Digital Data Layer. Version 1.0 of the specification was produced by the Customer Experience Digital Data Community Group and defined in the W3C Community Group Final Report.

It is important to note that the Customer Experience Digital Data Community Group is a Community Group, which means the group "may produce Specifications," however "these are not standards-track documents but may become input to the standards process."

In other words, the CEDDL is not an official W3C standard.

Well then why should I care?

Surfacing marketing data is hard. The amount of data available, how to structure it, and how to present it, consistently, can be overwhelming. The CEDDL can be a great place to start for marketers that want to make the most of the data they have available in house to drive marketing goals. Oftentimes, this data will be presented as a data layer.

What is a data layer?

I'm glad you asked! A data layer is a common data dictionary, used across the enterprise, to feed all marketing technology systems (e.g. analytics, personalization & optimization, data management platforms, ad servers, etc.) in use by marketing programs.

Kewl. How does this work?

See the tests for examples. There are plans to create another document with further examples.

Isn't the data layer supposed to be client-side?

According to the CEDDL specification, the data layer should be presented as a JavaScript object called digitalData. However, business requirements will often dictate that behavior of the digitalData object change from page-to-page, since different sections of the website, mobile app, or other environment will often make different data available to the digitalData object.

An example would be the digitalData.cart sub-object. As a user interacts with the website, they will likely add and/or remove various items to the shopping cart, the data for which would be reflected in the digitalData.cart sub-object. This alone will usually require frequent recalculations of the objects within the digitalData.cart sub-object, and if the user purchases one or more of the items in their cart, then the digitalData.cart.item[n] array needs to be updated, various properties of digitalData.cart need to be recalculated, and then the digitalData.transaction sub-object needs to be fully populated with all of the attendant items, calculations, and properties related to the purchase.

That is hard to manage solely in JavaScript, and in modern application environments (including single-page apps), much of this can be off-loaded to the server, where it is more easily and more safely managed.

A server-side implementation also allows for a hybrid approach, whereby parts of the data layer are primarily managed server-side, while other parts (particularly items in the digitalData.event[n] array) are managed client-side. I hope to produce some examples of this shortly.

Why didn't you just use one of the other implementations out there?

Yes, there are already a few different server-side implementations of the CEDDL, written in Java, publicly available, most notably Sieger Veenstra's ceddl4j. I found the specific class methods and application of fluent-style coding in ceddl4j non-intuitive and wanted a particular style that was familiar to my expectations, but there is absolutely nothing wrong with it (indeed, I took inspiration from several of its approaches, particularly the *.security object defined in section 6.11 of the specification), and what library to use probably comes down to personal preference. ceddl4j is a great library, I just wanted something a little different.

I don't have much experience with the other implementations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.