# Fields and properties

This page lists the fields both sources deliver. In the builder you map them to the parts of your element.

## Product

<table id="bkmrk-idinternal-identifie"> <tbody> <tr><td><code>id</code></td><td>Internal identifier of the product in the shop. Unique, but not meant for visitors.</td></tr> <tr><td><code>name</code></td><td>Product name.</td></tr> <tr><td><code>article&#95;no</code></td><td>Article number as maintained in the shop.</td></tr> <tr><td><code>description</code></td><td>Full description, contains HTML from the shop.</td></tr> <tr><td><code>short&#95;description</code></td><td>Short description.</td></tr> <tr><td><code>stock</code></td><td>Stock level as a number.</td></tr> <tr><td><code>in&#95;stock</code></td><td>Yes/no — more convenient for conditions in the builder than the numeric value.</td></tr> <tr><td><code>seo&#95;url</code></td><td>Readable address of the product, relative to the shop.</td></tr> <tr><td><code>shop&#95;url</code></td><td>Full address of the product in the shop — assembled from the shop base URL. The field for "go to product" links.</td></tr> <tr><td><code>created&#95;at</code></td><td>Creation date.</td></tr> <tr><td><code>updated&#95;at</code></td><td>Date of the last change.</td></tr> <tr><td><code>main&#95;image</code></td><td>The first image of the product — the normal case for cards and grids.</td></tr> <tr><td><code>price</code></td><td>Price details, see below.</td></tr> <tr><td><code>images</code></td><td>All images as a list, with a maximum count.</td></tr> <tr><td><code>attributes</code></td><td>Attributes as a list.</td></tr> <tr><td><code>variations</code></td><td>Variations as a list.</td></tr> <tr><td><code>merkmale</code></td><td>Characteristics as a list.</td></tr> </tbody></table>

<div class="callout info" id="bkmrk-description-contains"><code>description</code> contains the markup from the shop. If your element outputs the text escaped, visitors will see the HTML tags. Use an element that allows HTML in that case, or <code>short&#95;description</code>.

</div>## Price

<table id="bkmrk-price_netnet-price-a"> <tbody> <tr><td><code>price&#95;net</code></td><td>Net price as a number.</td></tr> <tr><td><code>price&#95;gross</code></td><td>Gross price as a number.</td></tr> <tr><td><code>formatted&#95;net</code></td><td>Net price as a ready-made string with currency.</td></tr> <tr><td><code>formatted&#95;gross</code></td><td>Gross price as a ready-made string with currency.</td></tr> <tr><td><code>rrp</code></td><td>Recommended retail price, if maintained in the shop.</td></tr> <tr><td><code>has&#95;discount</code></td><td>Yes/no — whether the price is below the recommended retail price.</td></tr> <tr><td><code>currency</code></td><td>Currency code from the plugin settings.</td></tr> </tbody></table>

<div class="callout warning" id="bkmrk-on-displaying-prices">**On displaying prices:** which price actually applies in the shop depends on customer group, tiered prices and promotions. This extension reads the stored default price. If your shop works with customer-group-dependent prices, check whether the display on the website matches — and point out where appropriate that the price in the shop is the binding one.

</div>## Image

<table id="bkmrk-ididentifier-of-the-"> <tbody> <tr><td><code>id</code></td><td>Identifier of the image.</td></tr> <tr><td><code>sort&#95;order</code></td><td>Order as maintained in the shop.</td></tr> <tr><td><code>url&#95;small</code>, <code>url&#95;medium</code>, <code>url&#95;large</code></td><td>The three sizes JTL generates — each as a full address.</td></tr> </tbody></table>

All three addresses are assembled from the *shop base URL*. If it is not set, the images lead nowhere.

## Attribute

<table id="bkmrk-ididentifier-of-the--1"> <tbody> <tr><td><code>id</code></td><td>Identifier of the attribute.</td></tr> <tr><td><code>name</code></td><td>Label — in the language from the plugin settings, if translated.</td></tr> <tr><td><code>value</code></td><td>Value.</td></tr> <tr><td><code>formatted</code></td><td>Label and value as a ready-made string.</td></tr> </tbody></table>

## Variation

<table id="bkmrk-ididentifier-of-the--2"> <tbody> <tr><td><code>id</code></td><td>Identifier of the variation.</td></tr> <tr><td><code>article&#95;no</code></td><td>Article number of the variation. For a product with variation combinations, the number of the child product if the variation matches exactly one combination (a single choice, size only for instance); with several choices, the number on the variation value, if one is maintained there.</td></tr> <tr><td><code>stock</code></td><td>Stock level of the variation. For a product with variation combinations, the sum over all child products with this value — with size and colour, for instance, “size M in all colours”, just as the shop shows it.</td></tr> <tr><td><code>in&#95;stock</code></td><td>Yes/no.</td></tr> </tbody></table>

## Characteristic

<table id="bkmrk-merkmal_id%2C-merkmal_"> <tbody> <tr><td><code>merkmal&#95;id</code>, <code>merkmal&#95;name</code></td><td>Identifier and label of the characteristic, "colour" for instance.</td></tr> <tr><td><code>wert&#95;id</code>, <code>wert&#95;name</code></td><td>Identifier and label of the value, "blue" for instance.</td></tr> <tr><td><code>sort&#95;order</code></td><td>Order from the shop.</td></tr> </tbody></table>

<div class="callout info" id="bkmrk-characteristics-are-">Characteristics are optional in JTL. If your shop does not use them, the fields stay empty and the selection list in the builder is empty — that is not an error.

</div><div class="callout info" id="bkmrk-the-field-names-merk">The field names <code>merkmale</code>, <code>merkmal&#95;id</code>, <code>merkmal&#95;name</code>, <code>wert&#95;id</code> and <code>wert&#95;name</code> are German on purpose: they are the names JTL itself uses, and renaming them would break every existing layout.

</div><small>Applies to version 1.13.0.</small>

[Deutsche Fassung](https://docs.graup-it.de/link/143)