Common Media Client Data

An end user's media player understands playback behavior better than a content delivery network (CDN) can from its limited server-side data. So, we offer support for Common Media Client Data (CMCD). This is an open specification created by the Consumer Technology Association. A media player can use it to send its expanded playback information to ‚ÄčAkamai‚Äč (and other CDNs) for storage in logs. These logs can help with troubleshooting. More data = more help fixing problems. ‚ÄčAkamai‚Äč‚Äč customer support can quickly access this log data to help reduce troubleshooting time.

1 - Send CMCD data from the client

You'll want to set up your media player to send CMCD data from a requesting client. Data can be sent to ‚Äč‚ÄčAkamai‚Äč using either of these methods:

  • As a custom HTTP request header.
  • As an HTTP query argument.

Guidelines are laid out in the CMCD specification. Look to it for the latest recommendations on transmitting information in your requests.


A single request shouldn't include both CMCD headers and query arguments. If one does, ‚Äč‚ÄčAkamai‚Äč ignores the query argument.

CORS-restricted clients and CMCD data

A CORS-restricted client (such as a web application running inside a browser) has to make a preflight OPTIONS request against a CDN before it can request an object that includes custom CMCD headers. So, the HTTP query argument method is recommended for browser clients, while the custom HTTP request header method is recommended for all other clients.

2 - Set up your AMD property

Make sure your property is set up to receive CMCD data, based on how the client is sending it.

Use custom HTTP request headers

You can incorporate support for CMCD headers in multiple ways.


Create a new ‚ÄčAkamai‚Äč property

If this is a new property, support for CMCD is automatically added to the Default CORS Policy Rule. The CMCD-Request, CMCD-Object, CMCD-Status, and CMCD-Session request headers are included in the Select Header Name field for the Modify Outgoing Response behavior, that's set up for Access-Control-Allow-Headers.

Create a new version of an existing ‚ÄčAkamai‚Äč property

If the property contains the Modify Outgoing Response Header behavior, either standalone or as part of the Default CORS Policy Rule, ‚Äč‚ÄčAkamai‚Äč‚Äč will automatically add the CMCD-Request, CMCD-Object, CMCD-Status, and CMCD-Session request headers if the following apply:

  • Action is set to Modify or Add.
  • Select Header Name is set to Access-Control-Allow-Headers.
  • New Header Value is not set to *. This is a wildcard indicating all headers.

Add a separate instance of Modify Outgoing Response Header behavior

If you're not employing the Default CORS Policy rule, you can include the Modify Outgoing Response Header behavior in another rule. If this is the case, this behavior's settings need to be set as follows:

  • Action. Set this to Modify or Add. The former will replace any Access-Control-Allow-Headers in a request with what's set in New Header Value. The former will add what's set there to any Access-Control-Allow-Headers received in a request.
  • Select Header Name. Set this to Access-Control-Allow-Headers.
  • New Header Value. Enter the CMCD headers: CMCD-Request, CMCD-Object, CMCD-Status, and CMCD-Session.

Use query arguments

If you’d prefer to use query arguments, you need to do a couple of things.


Set the Cache Key Query Parameters behavior

You need to be sure that CMCD query arguments are not cached. CMCD data changes with each request. Caching these arguments will increase the load on your origin server and affect performance. Make sure that the Cache Key Query Parameters behavior in your delivery property is set up using either of these methods:

  • Exclude all parameters (Recommended). This is the default setting for this behavior in a new ‚ÄčControl Center‚Äč property.
  • Include only specified parameters. If you need to cache some of your query arguments, set Behavior to this setting and set Parameters to only the query arguments you need cached. Ensure that all CMCD-related query arguments are left out.

Avoid CMCD headers

Ensure that requests from the player don't include CMCD headers, as they'll take precedence.