Final Report – Customer Experience Digital Data Layer v1.0 Ready!

The v1.0 of Customer Experience Digital Data Layer is now ready in the form of a W3C Community Group Final Report. 14 months, 102 participants, 56+ organizations’ input has helped get the specification into its current form – it is not always easy to get major industry players on the same page on any subject – it is a testament to the collaborative spirit of the community, the pressing needs of the industry and the vision laid out by industry analysts and gurus – that helped in making this specification a reality.

The specification is a start – there will be much that will be learnt through implementation, and there are areas the specification did not get into in the interests of getting something collaborative, yet meaningful, out the door. It is thus a “commencement” of this journey.

Here is a link to the Final Report:

http://www.w3.org/2013/12/ceddl-201312.pdf

13 Responses to Final Report – Customer Experience Digital Data Layer v1.0 Ready!

  1. Colm Byrne says:

    Well done! Would expect each eCommerce platform to now provide this as a standard plug-in.

  2. Maxim Uvarov says:

    Great Idea. Its a big pain to invent things all the time. And ti would be great to not spend time on this in future.

  3. Phil Pearce says:

    Great work :)

    I have summarized the 60 page document into a 2 page cheatsheet here:
    http://bit.ly/digitalDataSheet

    Please also add these variables to V2 spec. this is based on a summary of my comments here:
    http://www.w3.org/community/custexpdata/2013/05/17/first-draft-of-customer-experience-digital-data-acquisition-published-by-customer-experience-digital-data-community-group/#comments

    // NEW server attributes – The importance of these two new variables need to be made clearer in the spec:
    “environment_Identifier”: “dev”, // dev, staging or live
    “settings_ga_isDebugConsoleEnabled”: “true”, // Set document.cookie=”tag_debug=1″ on dev environment

    // NEW server attributes
    server_isDeviceFingerPrintTrackingEnable: false,
    visitXPurpose: preview (Safari browser header converted into serverside JSON response)

    // NEW global “tracker settings” section
    settings_ga_id
    settings_ga_id_secondTracker
    settings_ga_forceSSL: false,
    settings_ga_isGApremium: true, // enable GA premium specific features e.g. 21-200 customDimension/customMetrics
    settings_ga_setDomainName: “clientdomain.com”, // INSERT Top-level domain here
    settings_gtm_externalCrossDomainlinksToDecorate: “otherdomain1.com, mycart.com”,
    settings_gtm_tagTypeBlacklist

    // NEW Recommendation/Remarketing attributes
    “ecomm_pagetype”: “”, // home|searchresults|category|product|basket|purchase|other (FIXED VALUES)
    “ecomm_prodid”: “”, // e.g. 123
    “ecomm_totalvalue”: [“”], // e.g 100.00 pounds
    “ecomm_pname”: [“”], // optional – use arrays for multiple products on same page
    “ecomm_pcat”: [“”], // optional – use arrays for multiple products on same page
    “ecomm_rec_prodid”: [“”], // related productID e.g. shoe shine

    // Transaction attributes – Add local currency variable for sale page, cart page and product pages
    “transaction_currency”: “USD”, // Global currency rollup profile
    “transaction_currency_secondTracker”: “GBP”, // Local currency profile

    // page attributes
    page_httpResponseCode: , // e.g 200 or 404 or 500
    page_forumPosts: 25
    page_lastModified: 20130522
    page_createdDate: 20130502
    conversion_Type

    // page attributes for large websites:
    “settings_ga_brandName”: “big brand”, // If using multiple brand in rollup use this field
    “settings_ga_country”: “UK”, // Use 2character ISO Country list
    “settings_ga_region”: “London”, // Only needed for large localised websites

    // component attributes
    socialAction
    socialpagePath
    socialTarget

    // component js plugin – Standardise to load:
    “load_jquery”: “1.10.1”, // Load jQuery version
    “settings_ga_isInPageTrackingEnabled”: “false”, //Auto-social button tracking
    “settings_ga_isExternalLinkTrackingEnabled”: “true”, // Exit links to other websites
    “settings_ga_isDownloadLinkTrackingEnabled”: “true”, // PDF tracking
    “settings_ga_isMailtoLinkTrackingEnabled”: “true”, //
    “settings_ga_isHashUrlFragmentsTrackingEnabled”: “false”, // Append location.hash within page_virtual#url
    “settings_ga_isScrollTrackingEnabled”: “false”, // Blog content pages customHTML script
    “settings_ga_isYoutubeTrackingEnabled”: “false”, // Youtube API auto-tracking customHTML script
    “settings_ga_isFacebookAndTwitterButtonTrackingEnabled”: “false”, //Auto-social button tracking

    // CustomVariables with 3digit number for 0-200 customDimension or customMetrics with userScope=6months, sessionScope=30mins, pageScope=pageOnly
    “user_segment_cd_001_userScope_isNewRegistration”: “”, // customDimension001
    “user_segment_cd_002_userScope_isUserNewCustomer”: “”, // customDimension002
    “user_segment_cd_003_userScope_isLoggedIn”: “”, // customDimension003
    “user_segment_cd_004_userScope_class”: “”, // customDimension004
    “user_segment_cd_005_userScope_userID”: “”, // customDimension005 – aka Universal auth.user.getId
    “user_segment_cm_001_currencyScope_visitorLifetimeValue”: “” // CustomMetric value

    // inline markup
    #ID attributes on div elements

    #CLASS attributes

    #HTML5 data attributes

    #Phone number markup:

    +44 (0)1234 00000

    ——-From the DNT TPE spec…
    serverSide_httpResponseToDntRequest =
    1. obeyDNT
    2. ignoresDNT
    3. inProgressDNT
    4. notSpecified

    Here is a JSON example.

    Note: I have separated analytics-TRACKING and behavioural-TARGETING as this was missing from the DNT Preference Expression Spec status-representation example:
    http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#status-representation

    {
    “targeting”: “yes”, // IsOnlineBehaviouralTargeting for Publishers OR onsite remarketing for Advertisers enabled?
    “tracking”: “yes”, // Is AudienceMeasurementTracking enabled
    “qualifiers”: “afc”, // external “A”udit + “F”raud prevention + ad-frequency “C”apping
    “controller”: “http://www.yourdomain.com/privacy.html”,
    “same-party”: [{
    “google-analytics.com”,
    “stats.g.doubleclick.net”,
    “api.youtube.com”
    }],
    “third-party”: [{
    “googleadservices.com”
    “ads.doubleclick.net”,
    }],
    “audit”: [{
    “http://policy.cookiereports.com/caf4f823-en-gb.html” // e.g. w3.org/P3P/validator.html
    }],
    “policy”: “/privacy.html#cookies”,
    “edit”: “http://www.yourdomain.com/user-dashboard/edit-your-data”
    }

    digitalData = {
    “visitor”: {
    “returningStatus”: “new”, // new or returning visitor: used to only trigger consent message for new visitors
    “preferenceForDNT”: window.navigator.doNotTrack, // yes|no|”not specified”. MUST defaulted to “not specified”
    “anonymizeIp”: false, // hash last 3 characters of IP address in GA. Defaulted to off/false.
    “geoplugin_status”: geoplugin_status, // 403 error, 200 is look-up ok
    “geoIPcountryCode”: geoplugin_countryCode, // geo-plugin JS variable
    “geoIPcontinentCode”: geoplugin_continentCode // geo-plugin JS variable
    },
    {// Server-side USER values on login or registration
    “user”: {
    “profile”: {
    “auth_isSignedIn”: true,
    “auth_isNewRegistration”: true, // used to only trigger consent message on first registration
    “server_isDeviceFingerPrintTrackingEnable”: false, // ADDED
    “auth_userIDtoSessionIDoveride”: false,
    “profileID”: 12345
    }
    }
    }
    }

  4. Phil Pearce says:

    Please add this as a REQUIRED transaction field:

    transaction.subtotal_include_tax= true | false,
    Ref: http://tools.qubitproducts.com/uv/developers/specification/#toc_18

    Currently, I have to add this as an optional attribute via
    transaction.attributes.subtotal_include_tax

    This field is essential for correct revenue calculations.

    Also consider where a setting is needed for “,” or “.” as decimal separator, because this is different in some pares of Europe.
    http://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma

    Thanks

    Phil.

  5. Deen says:

    Page 25.

    Example of digitalData.user[n].profile[n].profileInfo is An extensible object for providing information about the user.
    digitalData.transaction.profile.profileInfo = {
    profileID: “humanbeing12345″,
    userName: “me”
    };

    Shouldn’t it be

    An extensible object for providing information about the user.
    digitalData.user[n].profile.profileInfo = {
    profileID: “humanbeing12345″,
    userName: “me”
    };

    The same error applies to digitalData.user[n].profile[n].address Object Literal

    • Phil Pearce says:

      Yes, it should be!

      I also reported this but the document is in locked-down mode :(

      Also digitalData.user[n] should NOT be an array, as it is very unlikely that more than one user profile needs to be output at any one time.

  6. Please use the W3C Final report as reference when defining your data layer, and use the cheat sheet to interpret data layers that have already been defined.

    One incongruence that I found is that the cheat sheet lists pageInstanceID as a variable that only holds only the environment (e.g. dev, test, staging, prod) while the W3C Final report lists pageInstanceID as a unique page identifier that also includes the environment (e.g. “my homepage – prod”).

    Great to see that an effort is made to create a standardized data layer. Hopefully it will continue to evolve and become widely adopted!

    • Phil Pearce says:

      Yes, I would like to see a new value for environmentIdentifier with the 3 fixed values (dev, live, staging), BUT pageInstanceID which blends environmentIdentifier and PageName was used :(

      Hopefully this will be fixed on the next version.

      Also see the Qubit spec, which the W3C spec was based on. It uses a separate variable for environmentIdentifier
      http://docs.qubitproducts.com/uv/parameters/pageenvironment.html
      http://docs.qubitproducts.com/uv/specification/

  7. Michael says:

    What tag management solutions on the market work with this data layer standards at the moment?

    • Justin says:

      Nearly all of the TMS solutions work with some form of this data layer standard. This is especially true of the client-side TMS platforms.

  8. Phil Pearce says:

    Please add support for JSON-based Serialization for rendered dataLayer values such as inline phone numbers for call tracking and SERP snippets.

    json-ld
    http://googlewebmastercentral.blogspot.co.uk/2014/04/surfacing-your-businesss-contact-and.html
    http://www.w3.org/TR/json-ld/#embedding-json-ld-in-html-documents
    http://www.google.com/webmasters/markup-tester/corporatecontacts

    Example:

    { “@context” : “http://schema.org”,
    “@type” : “Organization”,
    “url” : “http://www.your-company-site.com”,
    “contactPoint” : [
    { “@type” : “ContactPoint”,
    “telephone” : “+1-401-555-1212″,
    “contactType” : “customer service”
    } ] }

  9. Michael Spencer says:

    On page 22 under the transaction object, the last item is listed as “digitalData.cart.items[n].attributes”. I assume this is a typo and that it is meant to be “digitalData.transaction.items[n].attributes”?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Before you comment here, note that this forum is moderated and your IP address is sent to Akismet, the plugin we use to mitigate spam comments.