OpenRights Entertainment Rights & Catalog Intelligence

Free Template

Apple iTunes Metadata Template — `.itmsp` Package & metadata.xml

Sample .itmsp directory plus the metadata.xml schema you need to clone-and-edit for first-time delivery to Apple TV / iTunes. Fully-formed example covering provider, vendor ID, ratings, chapters, assets, posters, trailers, and the per-territory products block.

xmlpdf
Download XML

What you’re downloading

A skeleton .itmsp package — EXAMPLE_2026.itmsp/ containing a fully-formed metadata.xml with placeholder values and an inline README.txt that walks you through turning it into a real delivery (renaming the Vendor ID, dropping in your assets, computing MD5 checksums, validating with Transporter, uploading). It is an editable starting point, not a delivery file you ship as-is.

You can also download Apple’s own reference materials directly:

Context

A .itmsp package is the unit of first-time delivery to Apple TV / iTunes for transactional movies. It is a directory whose name ends in .itmsp, containing a single metadata.xml plus the masters, posters, captions, and other assets it references. You ship it through Apple’s Java-based Transporter CLI. The <products> block inside the XML is the part the Rights & Pricing CSV updates incrementally on already-delivered titles.

Apple’s current spec lives at help.apple.com/itc/filmspec/ (JS-walled). The mirrored 4.3 PDF above is structurally identical: bones have been stable since 2010, and newer versions only add fields (4K UHD, HDR, Dolby Atmos, ratings updates).

The schema declaration

Every metadata.xml opens with:

<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://apple.com/itunes/importer" version="film4.3">

The version string follows the pattern film<major>.<minor>. The current Apple-published version is higher than 4.3 (TV is at 5.3.4 per April 2026 partner news, films track similarly), but the <package> root, namespace, and document structure documented below are identical.

Package directory layout

For a Vendor ID of 09736156444, the package looks like:

09736156444.itmsp/
  metadata.xml                    ← the schema-validated XML
  09736156444.mov                 ← full feature master
  09736156444-preview.mov         ← trailer
  09736156444.jpg                 ← poster (world default)
  09736156444-en-US.jpg           ← territory-specific poster (optional)
  09736156444-english.scc         ← EIA-608 closed captions
  09736156444-english.itt         ← timed-text subtitles (optional)
  09736156444-french.itt          ← additional language subtitles
  …                               ← alt audio tracks, additional posters, additional trailers

Two hard rules:

  • The directory name must match the <vendor_id> in metadata.xml. If they differ, Transporter rejects the package.
  • Every asset referenced in the XML must be present in the directory with the exact filename and matching MD5 checksum.

Top-level XML structure

<package xmlns="http://apple.com/itunes/importer" version="film4.3">
  <provider>Paramount</provider>
  <video>
    <type>film</type>
    <vendor_id>09736156444</vendor_id>
    <title>Forrest Gump</title>
    <synopsis>…</synopsis>
    <production_company>Paramount Pictures</production_company>

    <rating system="mpaa" code="PG-13">
      <reason>thematic elements, drug use, language</reason>
    </rating>

    <chaptering>…</chaptering>
    <assets>…</assets>
    <previews>…</previews>
    <artwork>…</artwork>
    <products>…</products>
  </video>
</package>
ElementPurposeNotes
<provider>Your provider short nameMust match Apple’s records exactly. Capitalized identifier.
<type>Content kindfilm, tv, music_video, etc.
<vendor_id>Permanent provider-generated IDAlphanumeric + underscore. No spaces, dashes, or punctuation. Case-sensitive. Cannot start with underscore.
<title> / <title_locale>Display titleRepeat per locale for multi-language films
<synopsis>Per-locale description
<rating>System + code + reasonCross-reference the rating codes PDF. Wrong code = rejection.
<chaptering>Chapter listPer chapter: <title>, <start_time> in HH:MM:SS:FF (timecode)
<assets>All deliverable filesSee below
<previews>Trailer files per territoryWW allowed as default
<artwork>Poster files per territoryWW allowed as default
<products>Per-territory rights and pricingSee below — WW not allowed here

The <assets> block

Each asset is a <data_file> with a role:

<assets>
  <asset type="full">
    <data_file role="source">
      <file_name>09736156444.mov</file_name>
      <size>4823920128</size>
      <checksum type="md5">a1b2c3d4e5f6789…</checksum>
    </data_file>
    <data_file role="captions">
      <file_name>09736156444-english.scc</file_name>
      <size>184320</size>
      <checksum type="md5">…</checksum>
    </data_file>
  </asset>
</assets>

Apple validates the MD5 of every referenced file against the value in the XML. A mismatch fails the upload before it leaves your machine (iTMSTransporter -m verifyPackage).

The <products> block — Apple’s territory rights & pricing

This is the XML form of what the Rights & Pricing CSV updates piecemeal:

<products>
  <product>
    <territory>US</territory>                       <!-- ISO 3166 alpha-2; WW NOT accepted -->
    <cleared_for_sale>true</cleared_for_sale>
    <cleared_for_hd_sale>true</cleared_for_hd_sale>
    <wholesale_price_tier>3</wholesale_price_tier>  <!-- Apple's contracted tier number -->
    <preorder_sales_start_date>2006-02-10</preorder_sales_start_date>
    <sales_start_date>2006-03-12</sales_start_date> <!-- YYYY-MM-DD -->
    <sales_end_date></sales_end_date>               <!-- usually omitted -->
    <cleared_for_vod>true</cleared_for_vod>
    <vod_type>New Release</vod_type>
    <available_for_vod_date>2007-11-12</available_for_vod_date>
    <unavailable_for_vod_date>2008-11-12</unavailable_for_vod_date>
    <physical_release_date>2007-08-01</physical_release_date>
  </product>
  <product>
    <territory>GB</territory>

  </product>
</products>

Three things distributors get wrong:

  • WW is fine in <previews> and <artwork> but invalid in <products>. Pricing is per-country, every territory needs its own <product> block.
  • <sales_end_date> should almost always be empty. It is for limited-time licensing windows, not for indicating contract end. Apple takes content down automatically when a contract expires.
  • <wholesale_price_tier> is required when <cleared_for_sale>true</cleared_for_sale> (EST). The tier is a contract artifact, not something you choose freely.

Ship it

Apple’s Transporter (Java CLI) handles schema retrieval, validation, and upload:

# Download Apple's current Relax NG schema for local validation
iTMSTransporter -m provideSchema

# Validate before upload — runs schema check + MD5 check + size check
iTMSTransporter -m verifyPackage -f 09736156444.itmsp

# Ship it
iTMSTransporter -m upload -f 09736156444.itmsp -u <username> -p <password>

# Check status of a previously uploaded package
iTMSTransporter -m status -vendor_id 09736156444

What this template does NOT cover

  • TV episodes and seasons — different schema (<video><type>tv</type>), and TV uses a <container_id> element to tie episodes to a season. See Apple’s Transactional TV Specification.
  • iTunes Extras packages — separate format documented at help.apple.com/itc/videoextras/.
  • Asset encoding requirements — codec, bitrate, container format. See Apple’s Video and Audio Asset Guide.
  • Music videos — different XML profile.

Get New Templates

We release new templates regularly. Subscribe to get them in your inbox.