# 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>`id`</td><td>Internal identifier of the product in the shop. Unique, but not meant for visitors.</td></tr> <tr><td>`name`</td><td>Product name.</td></tr> <tr><td>`article_no`</td><td>Article number as maintained in the shop.</td></tr> <tr><td>`description`</td><td>Full description, contains HTML from the shop.</td></tr> <tr><td>`short_description`</td><td>Short description.</td></tr> <tr><td>`stock`</td><td>Stock level as a number.</td></tr> <tr><td>`in_stock`</td><td>Yes/no — more convenient for conditions in the builder than the numeric value.</td></tr> <tr><td>`seo_url`</td><td>Readable address of the product, relative to the shop.</td></tr> <tr><td>`shop_url`</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>`created_at`</td><td>Creation date.</td></tr> <tr><td>`updated_at`</td><td>Date of the last change.</td></tr> <tr><td>`main_image`</td><td>The first image of the product — the normal case for cards and grids.</td></tr> <tr><td>`price`</td><td>Price details, see below.</td></tr> <tr><td>`images`</td><td>All images as a list, with a maximum count.</td></tr> <tr><td>`attributes`</td><td>Attributes as a list.</td></tr> <tr><td>`variations`</td><td>Variations as a list.</td></tr> <tr><td>`merkmale`</td><td>Characteristics as a list.</td></tr> </tbody></table>

<div class="callout info" id="bkmrk-description-contains">`description` 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 `short_description`.

</div>## Price

<table id="bkmrk-price_netnet-price-a"> <tbody> <tr><td>`price_net`</td><td>Net price as a number.</td></tr> <tr><td>`price_gross`</td><td>Gross price as a number.</td></tr> <tr><td>`formatted_net`</td><td>Net price as a ready-made string with currency.</td></tr> <tr><td>`formatted_gross`</td><td>Gross price as a ready-made string with currency.</td></tr> <tr><td>`rrp`</td><td>Recommended retail price, if maintained in the shop.</td></tr> <tr><td>`has_discount`</td><td>Yes/no — whether the price is below the recommended retail price.</td></tr> <tr><td>`currency`</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>`id`</td><td>Identifier of the image.</td></tr> <tr><td>`sort_order`</td><td>Order as maintained in the shop.</td></tr> <tr><td>`url_small`, `url_medium`, `url_large`</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>`id`</td><td>Identifier of the attribute.</td></tr> <tr><td>`name`</td><td>Label — in the language from the plugin settings, if translated.</td></tr> <tr><td>`value`</td><td>Value.</td></tr> <tr><td>`formatted`</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>`id`</td><td>Identifier of the variation.</td></tr> <tr><td>`article_no`</td><td>Article number of the variation.</td></tr> <tr><td>`stock`</td><td>Stock level of the variation.</td></tr> <tr><td>`in_stock`</td><td>Yes/no.</td></tr> </tbody></table>

## Characteristic

<table id="bkmrk-merkmal_id%2C-merkmal_"> <tbody> <tr><td>`merkmal_id`, `merkmal_name`</td><td>Identifier and label of the characteristic, "colour" for instance.</td></tr> <tr><td>`wert_id`, `wert_name`</td><td>Identifier and label of the value, "blue" for instance.</td></tr> <tr><td>`sort_order`</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 `merkmale`, `merkmal_id`, `merkmal_name`, `wert_id` and `wert_name` 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.12.1.</small>

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