Technical Implementation Guidelines

This is a summary of the technical and production steps that a publisher will need to follow to participate in CrossMark.

Create a CrossMark Policy Page and assign it a DOI

The publisher should create a page on their website explaining that they are participating in the CrossMark service and have committed to maintaining version of record copies of content that displays the CrossMark logo. This page should have a DOI to enable persistent linking. This page should also explain the publisher’s policies on corrections, retractions, withdrawals and other updates, and contain definitions and explanations of any additional custom metadata fields that are being used. The page may also include links to other relevant policies such as author submission guidelines, peer review guidelines, etc.

For more information on creating and depositing a CrossMark Policy Page please see this separate section of the site.

Deposit CrossMark metadata

CrossMark metadata should be deposited as part of a regular CrossRef DOI deposit, but can also be deposited as stand-alone data to help publishers populate their backfiles.

Click here for detailed documentation for how CrossMark fits into the Crossref deposit schema.

For CrossMark-only deposits, the schema and schema documentation related to resource-only deposits can be found here: /

Example deposit files can be downloaded from here. Look at the included README for an explanation of what the files illustrate.

The minimum required CrossMark metadata comprises:

  • The DOI of the content the CrossMark is being applied to
  • The DOI for the publisher’s CrossMark Policy Page
  • The DOI of any piece of content that is being updated

Provide DOIs for items being corrected or updated

The Terms & Conditions for CrossMark stipulate that “updates” should only be deposited for changes that are likely to effect “the interpretation or crediting of the work.” In other words, updates should only be deposited for editorially significant changes. Updates should not be deposited for minor changes such as spelling corrections, formatting changes, etc.

There are 12 defined types of accepted “update” within CrossMark. The values for these are:

  • addendum
  • clarification
  • correction
  • corrigendum
  • erratum
  • expression_of_concern
  • new_edition
  • new_version
  • partial_retraction
  • removal
  • retraction
  • withdrawal

If an update does not fall into one of these categories it should instead be placed in the Record Tab of the dialogue box by being deposited as an assertion.

When deposited content corrects or updates earlier content the DOI(s) of the corrected content must be supplied in the CrossMark metadata. See the CrossRef unixref documentation section on “updates” for examples of how this is recorded in the CrossMark metadata.

When a correction is made in situ (i.e. replaces the earlier version completely), then the DOI of the corrected content will be the same as the DOI for the original CrossRef deposit.

Record the DOI in HTML metadata

The publisher should ensure that the DOI is embedded in the HTML metadata for all content to which CrossMark logos are being applied as follows:

 <meta name="dc.identifier" content="doi:10.5555/987654321"> 

Apply the CrossMark logo widget to your HTML pages

Crossref supplies a templated HTML/JavaScript code widget which will embed the CrossMark logo and dialog functionality into publisher web pages. The latest version of the widget (v1.5) is displayed below. This may change based on feedback so do check to ensure you are using the latest version and that it points to our production server:

HTML Widget:

  • v1.5 is the current version. This implements HTTPS, and can be used both on HTTP and HTTPS sites. You should always access the widget files with HTTPS even if your site is HTTP.
  • v1.4 is now deprecated. Improvements include better isolation from publisher css and removing some lint from scripts.  Older versions of the widget will continue to work, but we recommend that you use the most recent version.  Note that the widget has been tested with jQuery versions 1.4.4 through 1.9.1 and jQuery UI versions 1.8.7 through 1.10.2.
  • v1.3 is now deprecated. This and older versions of the widget will continue to work, but they may conflict with your existing css and scripts.
<!-- Start CrossMark Snippet v1.5 -->
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src=""></script>
<a id="open-crossmark" href="#" style="padding: 3px 0 13px 0;"><img style="border: 0; display: none;" id="crossmark-icon" src="" alt="Crossmark Logo" /></a>
<div id="crossmark-dialog" style="display: none;" title="">
<!-- the external CrossMark data is loaded inside this iframe -->
<iframe id="crossmark-dialog-frame" frameborder="0"></iframe>
<!-- End CrossMark Snippet -->

Changing the logo in the Widget
Note that you can change the CrossMark logo that is used simply by changing the “src” attribute of the “img” element with the id “crossmark-icon” to point to one of the following:


  • /images/logos/cm_sbs_018_click.png
  • /images/logos/cm_sbs_018_plain.png
  • /images/logos/cm_sbs_024_click.png
  • /images/logos/cm_sbs_024_plain.png
  • /images/logos/cm_sbs_036_click.png
  • /images/logos/cm_sbs_036_plain.png
  • /images/logos/cm_sbs_048_click.png
  • /images/logos/cm_sbs_048_plain.png
  • /images/logos/cm_sbs_072_click.png
  • /images/logos/cm_sbs_072_plain.png


  • /images/logos/cm_stacked_028_plain.png
  • /images/logos/cm_stacked_036_plain.png
  • /images/logos/cm_stacked_038_click.png
  • /images/logos/cm_stacked_046_click.png
  • /images/logos/cm_stacked_048_plain.png
  • /images/logos/cm_stacked_060_click.png
  • /images/logos/cm_stacked_064_plain.png
  • /images/logos/cm_stacked_074_click.png
  • /images/logos/cm_stacked_094_plain.png
  • /images/logos/cm_stacked_108_click.png

Please follow these guidelines on the use of CrossMark logos.

Apply CrossMark Logo and Metadata to PDF content

For publishers who are implementing CrossMark, the last phase of implementation is often the application of CrossMark logos and metadata to PDFs. The first PDFs with CrossMarks went live in March 2012 and you can see the examples from IUCr on this site.

The following article shows the CrossMark metadata and Logo on a PDF.

Add CrossMark metadata to PDF content

Crossref has created an open source tool called “pdfmark” for embedding metadata in PDF files. Minimally, this metadata must include the DOI of the content and the CrossMark domain(s).

So, the appropriate metadata was added to the above PDF with the following command:

java -jar pdfmark.jar -d 10.5555/12345678 sample_crossmark_article_pdf_w_crossmark.pdf

A minimal XMP file for the above PDF would look like this:

<?xml version="1.0" encoding="UTF-8"?>
<?xpacket begin="?" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
<rdf:RDF xmlns:rdf = ""
xmlns:pdfx = ""
xmlns:pdfaid = ""
xmlns:xap = ""
xmlns:xapRights = ""
xmlns:dc = ""
xmlns:dcterms = ""
xmlns:prism = ""
xmlns:crossmark = "">
<rdf:Description rdf:about="">
<?xpacket end="w"?>


Note: It may appear redundant to apply CrossMark elements both in their own ‘CrossMark’ namespace as well in the ‘‘pdfx’ namespace, but the latter is necessary to ensure the CrossMark elements appear in the PDF dictionary, a specific requirement for some search engines. PDF mark was updated in May 2012 to include metadata in a PDF’s document information dictionary, again to account for search engine requirements. Any metadata found in the pdfx namespace will be copied over to the document info dictionary. Simply make sure that CrossMark metadata is in the pdfx namespace in the XMP provided to the tool.

Apply linked CrossMark logos to PDF content

CrossRef has created “pdfstamp”, an open-source command line tool that makes it possible to add an image or “stamp” to any location on a PDF and to link that image to a chosen URL.

The link structure for CrossMark links from PDFs looks like this:
The doi argument is pretty self-explanatory.

The domain argument tells the CrossMark system what kind of static content the link is coming from. This will change for different static formats (e.g. epub, etc.)

The date_stamp argument tells the CrossMark system the date on which a last “Major Version” of the PDF was generated. In the vast majority of the cases, this will just be the date on which the article was published. However, in cases where a publisher makes significant corrections to a PDF in-situ (they do not issue a separate correction or new version of the document with a new DOI) then the date_stamp should reflect when the PDF was regenerated with the corrections. The system will then use the date_stamp in order to tell whether the researcher needs to be alerted to updates or not. The date_stamp argument should be recorded in the form yyyy-mm-dd. (ISO 8601)