> For the complete documentation index, see [llms.txt](https://native-app-co.gitbook.io/omnibus-owl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://native-app-co.gitbook.io/omnibus-owl/core-features/lowest-price-widget.md).

# The lowest price widget

The storefront block that shows the lowest price in the last 30 days on your product pages, and how to customise it.

The lowest price widget is the storefront element that displays your Omnibus-compliant reference price — for example:

> **Lowest price in last 30 days: €45.00 (12.06.2026)**

It appears on your product pages, updates automatically when shoppers switch variants, and shows prices in each market's own currency.

## The two theme pieces

Omnibus Owl adds two items to your theme (both set up during [installation](/omnibus-owl/getting-started/installation.md)):

| Theme item                        | What it does                                                                        | Where                                 |
| --------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------- |
| **Price Radar** (app embed)       | Invisible. Loads the app on your storefront and powers the widget. Must be enabled. | Theme settings → App embeds           |
| **Past Lowest Price** (app block) | The visible price line. You place it where you want it to appear.                   | Add block inside your product section |

## How it decides when to show

* **By default, the widget shows only on discounted products** — those with a compare-at (strikethrough) price set. This matches the directive's focus on price reductions. You can switch it to show on **all products** in [Settings](/omnibus-owl/reference/settings.md).
* It's hidden everywhere if you turn the app off (a kill-switch used automatically when a trial expires).
* In the theme editor's preview, the widget always shows — even with sample data — so you can style it before any real history exists.

## How the lowest price is calculated

For the shopper's market, Omnibus Owl looks at all recorded prices within the **30-day window** and picks the lowest. By default the current price is excluded from that calculation (so the reference price reflects the *prior* low). If the product held a single price for the whole window, that price is used, with its date clamped to the start of the window.

Everything is calculated in the shopper's **country and language context**, so prices, currency, and formatting match the market they're browsing.

## Customisation options

### In the theme editor (visual styling)

On the **Past Lowest Price** block:

| Setting                | Default | Controls                     |
| ---------------------- | ------- | ---------------------------- |
| **Horizontal padding** | 0 px    | Left/right spacing (0–50 px) |
| **Vertical padding**   | 0 px    | Top/bottom spacing (0–50 px) |
| **Font size**          | 14 px   | Text size (8–32 px)          |
| **Text color**         | #000000 | Colour of the price line     |

### In the app settings (behaviour & text)

Configured on the **Settings** tab of the **Omnibus Lowest Price** page — see the full [Settings reference](/omnibus-owl/reference/settings.md):

* **Show on all products vs. discounted only**
* **Date format** — e.g. `%d.%m.%Y` → `12.06.2026`
* **Include current price** in the lowest-price calculation
* **Info tooltip** — a small "?" that explains the price line to shoppers

### Wording & translations

The exact sentence and the tooltip text are fully editable, per storefront language, on the **Languages** tab of the **Omnibus Lowest Price** page. Both can include the lowest price, its date, and the current and original price through [placeholders](/omnibus-owl/integrations/markets-and-translations.md#placeholders). Omnibus Owl ships professional translations for 20 languages out of the box. See [Multi-market & translations](/omnibus-owl/integrations/markets-and-translations.md).

## Placing the widget manually in theme code

The **Past Lowest Price** app block is the easiest way to add the widget, but it can only go where your theme accepts app blocks. If you want the price line somewhere else — inside a custom section, a quick-view drawer, a product card — you can add the widget element directly to your theme code (**Online Store → Themes → Edit code**):

{% code overflow="wrap" %}

```liquid
<omnibus-lowest-price data-product-id="{{ product.id }}" data-variant-id="{{ product.selected_or_first_available_variant.id }}"></omnibus-lowest-price>
```

{% endcode %}

Leave the element empty — Omnibus Owl fills it in on the storefront with the same price line the app block shows.

| Attribute         | Value                                                            |
| ----------------- | ---------------------------------------------------------------- |
| `data-product-id` | The numeric ID of the product                                    |
| `data-variant-id` | The numeric ID of the variant whose lowest price should be shown |

Use whichever Liquid product variable is available where you paste the snippet — `product` on product templates, `closest.product` inside theme blocks, or the loop variable (often `card_product`) inside product cards.

Things to know:

* **The Price Radar app embed must be enabled.** It powers the element; without it nothing is displayed.
* **It follows your app settings** — discounted-only vs. all products, date format, include current price, and your label wording and translations all apply, exactly as they do for the app block.
* **Variant switching works** as long as the element sits inside the same theme section as the product form.
* **Styling is up to your theme.** The padding, font size and colour settings belong to the app block, so a manually placed element inherits the surrounding text style. Target it in your CSS with `omnibus-lowest-price { … }`.
* The price line is loaded after the page renders, one request per element — keep that in mind before adding it to very large product grids.

{% hint style="info" %}
The **Info tooltip** styling ships with the app block. If you use only the manual element on a page, either turn the tooltip off in [Settings](/omnibus-owl/reference/settings.md) or add your own CSS for it.
{% endhint %}

## Currency & markets

The widget always displays prices using your store's money format and the shopper's market currency — which of your store's two money formats is used depends on the [placeholder in your label](/omnibus-owl/integrations/markets-and-translations.md#placeholders). Because history is stored per country, a shopper in Germany sees the German-market reference price in euros while a shopper in Sweden sees the Swedish-market price in kronor — automatically.

{% hint style="info" %}
The widget re-renders instantly when a shopper switches variant on the product page (supported on Horizon, Prestige/Maestrooo, Pipeline and other modern themes) — no page reload needed. The refreshed line uses exactly the same calculation, money format, currency and timezone as the one shown on page load.
{% endhint %}
