<img src="https://img.shields.io/badge/%20-Beta-green.svg" /> This is a **beta** offering.

By using this documentation, you are agreeing to abide by the terms of the <a href="https://www.jwplayer.com/beta-program-agreement/" target="_blank">JWP Beta Program Agreement</a>.

A **placement** serves as the container where a visitor's video experiences occur and is linked to a strategy. A <a href="https://docs.jwplayer.com/platform/docs/monetization-create-a-strategy" target="_blank">strategy</a> uses a set of rules to determine the specific experiences displayed within that placement.

It is through embedding a placement on your web pages that a visitor begins to interact with a strategy.

<br />




## Create a placement

### Dashboard

  1. On the <a href="https://dashboard.jwplayer.com/p/strategies" target="_blank">**Placements**</a> list page, click **Create Placement**. A new placement details page appears.

  2. Click the default name (_Untitled Placement Name_) to rename the placement. Though not required, giving a placement a unique name allows it to be quickly distinguished from other placements.

  3. Click **Save**.

<br />

### API

Use the following recipe to create a placement.

💰
ADVERTISING: Create a placement
Open Recipe


<br />




## Deploy a placement

  1. On the <a href="https://dashboard.jwplayer.com/p/strategies" target="_blank">**Placements**</a> list page, click the name of the placement. The placement details page appears.

  2. Under **Embed Scripts**, deploy the placement with either the **Header Method** or **Inline Method**.

    Integration Embed TypeDescription
    **Header Method****(Strongly Recommended)** Site-specific embed script added to the `<head>` element that locates and loads strategies into placement-specific `<div>` elements
    **Inline Method**Embed script that loads a strategy into a specific placement on the page

    <br />

    

    • Whether using a content management system (CMS), Google Ad Manager (GAM), Tag Manager, or some other method, the `<div>` must be on the page on the initial DOM load.

    • A given placement ID can only be used in one `<div>` element per page. However, a placement ID can be used on multiple pages.

    • If the placement ID is invalid, the `<div>` element will remain empty.

  3. (Optional) [Provide custom data](🔗) to be used when <a href="/platform/docs/monetization-define-an-experience#content-experience" target="_blank">evaluating rules for a placement</a>.

<br /><br />

### Provide custom data

Custom data can be added for a specific placement:

<!--

  • **Global-level custom parameters**: These parameters apply to all placements, such as a user's subscription status.

-->

  • **Placement-level custom parameters**: These parameters apply to a specific placement, such as a placement-level behavior.

<br />

Expand each of the following options to learn about the possible ways to add custom data:

<details><summary><strong>Query Parameters</strong><br /></summary>

<br />

Custom data is added through a query string appended to the embed URL

<!-- Non-indented, hand-coded table enables embedding code snippets in a table cell that can be copied. -->

<table> <thead> <tr> <th> Topic </th> <th> Details </th> </tr> </thead> <tbody> <tr> <td width="30%"><strong>Parsing</strong></td> <td width="70%">Only at page load</td> </tr> <tr> <td><strong>Supported Data Types</strong></td> <td>Strings</td> </tr> <tr> <td><strong>Requirements</strong></td> <td> <ul> <!-- <li>Global-level custom parameters are prefixed with <code>custom.global</code></li> --> <li>Placement-level custom parameters are prefixed with <code>custom.{placement-id}</code>, such as <code>custom.abcd1234</code> in the example below.</li> <li>Custom parameters <strong>must be lowercase</strong>.</li> </ul> </td> </tr> <tr> <td><strong>Data Override Rules</strong></td> <td> <strong>Overridden by</strong>: <ul> <li>HTML Attributes</li> <li>jwDataStore</li> </ul> </td> </tr> <tr> <td><strong>Example</strong></td> <td>



<!--



-->

</tr> </tbody> </table>

<br /><br />

</details>

<details><summary><strong>HTML Attributes</strong> <em>(Required for Header Method)</em></summary>

<br />

Custom data is added through data attributes added to a JW placement `<div>` element

<!-- Non-indented, hand-coded table enables embedding code snippets in a table cell that can be copied. -->

<table> <thead> <tr> <th> Topic </th> <th> Details </th> </tr> </thead> <tbody> <tr> <td width="30%"><strong>Parsing</strong></td> <td width="70%">Only at page load</td> </tr> <tr> <td><strong>Supported Data Types</strong></td> <td>Strings</td> </tr> <tr> <td><strong>Requirements</strong></td> <td> <ul> <li>The JW placement has <code>data-jw-placement-id</code> defined.</li> <!-- <li>Global-level custom parameters are prefixed with <code>data-jw-global-</code>.</li> --> <li>Placement-level custom parameters are prefixed with <code>data-jw-</code></li> <li>Custom parameters <strong>must be lowercase</strong>.</li> </ul> </td> </tr> <tr> <td><strong>Data Override Rules</strong></td> <td> <strong>Overrides</strong>: <ul> <li>Query Parameters</li> </ul> <strong>Overridden by</strong>: <ul> <li>jwDataStore</li> </ul> </td> </tr> <tr> <td><strong>Example</strong></td> <td>

<!--



-->



</tr> </tbody> </table>

<br /><br />

</details>

<details><summary><strong>jwDataStore</strong></summary>

<br />

Custom data is added through attributes added at the page level.

<!-- Non-indented, hand-coded table enables embedding code snippets in a table cell that can be copied. -->

<table> <thead> <tr> <th> Topic </th> <th> Details </th> </tr> </thead> <tbody> <tr> <td width="30%"><strong>Parsing</strong></td> <td width="70%">At every rule evaluation</td> </tr> <tr> <td><strong>Supported Data Types</strong></td> <td>All types</td> </tr> <tr> <td><strong>Requirements</strong></td> <td> <ul> <li>Custom parameters are stored in <code>jwDataStore.custom</code>.</li> <!-- <li>Global-level custom parameters are stored in <code>jwDataStore.custom.global</code>.</li> --> <li>Placement-level custom parameters are stored in <code>jwDataStore.custom.{placement-id}</code>, such as <code>jwDataStore.custom.bcd1234</code> in the example below.</li> <li>Custom parameters <strong>must be lowercase</strong>.</li> </ul> </td> </tr> <tr> <td><strong>Data Override Rules</strong></td> <td> <strong>Overrides</strong>: <ul> <li>Query Parameters</li> <li>HTML Attributes</li> </ul> </td> </tr> <tr> <td><strong>Example</strong></td> <td>

<!--



-->



</tr> </tbody> </table>

<br />

</details>

<br />

<!-- Removes the automatic page-to-page navigation at the bottom of the page -->

<style> .rm-Pagination { display: none; } </style>