Heureka Product Feed
Heureka.cz (and its Slovak counterpart Heureka.sk) is the largest price-comparison shopping portal in the Czech Republic and Slovakia. Millions of shoppers visit Heureka to compare prices and read reviews before buying.
The Heureka Product Feed app generates a live XML product feed in the format Heureka requires. Once you register the feed URL in your Heureka merchant account, Heureka fetches your products on a schedule and makes them eligible to appear in search results, product listings, and price comparisons — all without manual exports or uploads.
Requirements
- PHP 8.3.0+
- Joomla! 6.x
- J2Commerce 6.x
Purchase and Download
This plugin is a separate add-on available from the J2Commerce Extensions Store. It is not included with the core J2Commerce 6 component.
- Purchase and download the
app_heurekaproductfeed.zippackage from the J2Commerce website. - Go to System -> Install -> Extensions.
- Upload the
app_heurekaproductfeed.zipfile. - The plugin installs and enables automatically.
Enable the App
Once installed, confirm the plugin is enabled:
Option A: Click the J2Commerce icon at the top right corner -> Apps
Option B: Go to Components on the left sidebar -> J2Commerce -> Apps
Look for Heureka Product Feed, click the X and it will turn into a green checkmark. The app is now enabled.
Configure the App
Click the Heureka Product Feed title next to the green checkmark to open the settings screen.
Click the Toggle Inline Help button in the toolbar to reveal a description beneath each field as you configure it.
Feed Settings tab
Feed URL
The Feed URL field displays the unique link that Heureka uses to fetch your product data. This is a read-only display — copy it using the Copy URL button next to the field.
You will paste this URL into your Heureka merchant account when setting up your data source. See Submitting the Feed to Heureka.cz below.
Store Title
| Field | Description | Default |
|---|---|---|
| Store Title | An optional store name that appears inside the feed to identify it. Leave blank if you do not need a custom label. | (blank) |
Category Prefix
| Field | Description | Default | Options |
|---|---|---|---|
| Category Prefix | Selects the Heureka marketplace. The selected value is prepended to every product category path in the feed. | Heureka.cz | Heureka.cz, Heureka.sk |
Use Heureka.cz for Czech listings and Heureka.sk for Slovak listings. If your store targets both portals, configure two separate plugin instances.
Default Delivery Days
| Field | Description | Default |
|---|---|---|
| Default Delivery Days | The number of business days for delivery shown on every product in the feed when no product-level value is set. | 5 |
Default VAT Rate (%)
| Field | Description | Default |
|---|---|---|
| Default VAT Rate (%) | The VAT percentage to include in the feed. Leave blank to omit the VAT element from the feed entirely. | (blank — omitted) |
Default Heureka CPC
| Field | Description | Default |
|---|---|---|
| Default Heureka CPC | Your default Heureka cost-per-click bid, as a decimal number. Set to 0 or leave blank to omit the bid element from the feed. | (blank — omitted) |
Default Heureka Category
| Field | Description |
|---|---|
| Default Heureka Category | The fallback Heureka category path used when a product has no category assigned at the product or category level. Enter a pipe-separated path such as Electronics | Cameras. This is the last resort in the category resolution chain — see Setting the Heureka Category for full details. |
Excluded Products
| Field | Description |
|---|---|
| Excluded Products | A product selector where you can pick individual products to leave out of the feed. Use this for test products, discontinued items, or anything not suitable for public comparison on Heureka. |
Include Unpublished
| Field | Description | Default | Options |
|---|---|---|---|
| Include Unpublished | Controls whether products that are unpublished in Joomla are included in the generated feed. | No | Yes, No |
Leave this set to No in almost all cases. Set to Yes only if you need to preview feed entries for products not yet live on your site.
Cache Duration (minutes)
| Field | Description | Default |
|---|---|---|
| Cache Duration (minutes) | How long the generated feed XML is cached on the server before it is regenerated. Heureka typically fetches feeds once a day, so 60 minutes balances server performance with freshness. Set to 0 to disable caching entirely. | 60 |
When the feed is cached, changes you make to products or settings may take up to this many minutes to appear in the feed Heureka fetches. To force an immediate refresh, clear the Joomla cache: Home Dashboard -> Cache -> Delete All.
Feed Token
| Field | Description | Default |
|---|---|---|
| Feed Token | An optional secret token that restricts access to the feed URL. When a token is set, the feed only responds correctly when &token=YOUR_TOKEN is appended to the URL. Leave blank to allow anyone with the URL to fetch the feed. | (blank — public access) |
When you enter a token, the Feed URL field updates to show the full URL including the token parameter. Copy that updated URL and use it when registering the feed with Heureka.
Delivery Methods tab
The Delivery Methods tab lets you declare the shipping carriers and costs that appear in the feed. Heureka uses this information to show estimated delivery costs on its comparison pages.
Click Add Item to create a delivery entry. Each entry has three fields:
| Field | Description | Example |
|---|---|---|
| Carrier | The shipping carrier from Heureka's official carrier list. Select the carrier that matches your shipping methods. | DPD |
| Delivery Price | The flat delivery cost for this carrier, in your store currency (up to 2 decimal places). Enter 0 for free delivery. | 4.99 |
| Cash on Delivery Price | An additional surcharge when the customer pays on delivery. Leave blank or 0 to omit. | 1.50 |
You can add multiple entries for different carriers.
Fallback Carrier
If no delivery methods are configured in the list above, the feed uses the fallback carrier settings. This ensures the required DELIVERY element is always present in the feed.
| Field | Description | Default |
|---|---|---|
| Fallback Carrier | The carrier used when no delivery methods are configured above. | Own Transport |
| Fallback Delivery Price | The delivery price for the fallback carrier. | 0 |
Setting the Heureka Category
The Heureka category tells Heureka where to list each product in its taxonomy. Every product in the feed must have a valid category path.
The plugin resolves the category for each product using a four-tier fallback chain, from most specific to most general:
- Product-level override — If a Heureka category is set directly on an individual product, that value is used. This is the highest priority.
- Category-level override — If no product override exists, the plugin checks whether the Joomla content category the product belongs to has a Heureka category assigned.
- Joomla category hierarchy — If neither the product nor its category has a Heureka category, the plugin builds a path automatically from the product's Joomla content category ancestry. For example, a product in a category nested as Home > Electronics > Cameras produces
Electronics | Cameras. - Plugin default — If none of the above produce a result, the Default Heureka Category from the plugin settings is used as a last resort.
In every case, the Category Prefix (Heureka.cz or Heureka.sk) is automatically prepended to the path.
For most stores, setting the Default Heureka Category in the plugin settings is enough to get started. Refine individual products or categories only when you want a product to appear in a more precise taxonomy node than its Joomla category path provides.
Setting a Heureka Category on a Product
- Go to J2Commerce -> Catalog -> Products.
- Open the product you want to edit.
- Click the J2Commerce tab, then the Apps tab.
- Locate the Heureka Category field and type the full category path — for example,
Electronics | Cameras | DSLR Cameras. - Click Save or Save & Close.
This value overrides everything else in the fallback chain for that product.
Setting a Heureka Category on a Content Category
- Go to Content -> Categories.
- Open the category you want to edit.
- Click the J2Commerce tab (or the tab where J2Commerce fields appear).
- Locate the Heureka Category field and enter the category path.
- Click Save & Close.
This value applies to all products in that category that do not have their own product-level override.
Submitting the Feed to Heureka.cz
After configuring the plugin, register the feed URL in your Heureka merchant account:
- Copy the Feed URL from the top of the plugin settings screen (use the Copy URL button).
- Log in to your Heureka merchant account (Heureka.cz or Heureka.sk depending on your marketplace).
- Navigate to the XML feed or product feed settings section of your merchant account.
- Paste the Feed URL and save it as your data source.
- Heureka will fetch the feed on its next scheduled run.
Heureka must be able to reach your feed URL from the public internet. A URL on a local development server (such as localhost or a private IP address) will not work for a live fetch. During development, you can visit the feed URL in your browser to download the XML and review it manually.
Once Heureka has fetched your feed successfully, your products will appear in the product management section of your merchant account, where you can review any validation warnings before your listings go live.
How It Works
When Heureka (or anyone with the feed URL) requests the feed:
- The plugin checks whether a valid cached feed exists within the Cache Duration window. If so, it serves the cached XML immediately.
- If no valid cache exists, the plugin queries your J2Commerce product catalog, applying the Excluded Products filter and the Include Unpublished setting. Products with a price of zero or that have hidden visibility are automatically excluded from the query.
- For each product, the plugin resolves the Heureka category using the four-tier chain described above.
- If a product has multiple sellable variants (for example, different sizes or colors), each variant becomes a separate feed entry. All entries for the same product share a group ID so Heureka knows they belong to the same base product.
- If a product has an active time-limited sale price lower than its regular price, the sale price is used as the listed price in the feed.
- The plugin outputs a valid Heureka SHOP XML document. Each product entry includes:
- Product name, URL, and main product image
- Up to 10 additional product images
- Price, category path, and delivery information
- Product description (HTML tags stripped)
- EAN barcode (if a valid 13-digit barcode is set on the variant)
- Manufacturer name and SKU
- VAT rate and Heureka CPC bid (when configured)
- The output is cached for Cache Duration minutes before the next regeneration.
Tips
- Set a Default Heureka Category before going live. Products with no resolvable category fall back to a generic placeholder, which may trigger validation warnings in your Heureka merchant account.
- Match the Category Prefix to your target portal. Use
Heureka.czfor Czech andHeureka.skfor Slovak listings. Using the wrong prefix may cause category mismatches on the portal. - Check the feed in a browser first. Visit the Feed URL directly in your browser. You should see XML starting with
<SHOP. If you see an error or blank page, confirm the plugin is enabled and J2Commerce is installed correctly. - Enter EAN barcodes on your products. Products with a valid 13-digit EAN (barcode) are matched more accurately in Heureka's catalog, which improves visibility in comparison results.
- Use the Excluded Products field for internal products. Any test, non-sellable, or draft product in your catalog should be excluded to avoid spurious Heureka listings.
- Secure your feed with a token if your pricing is commercially sensitive and you prefer not to expose it publicly. The token is included automatically in the Feed URL shown in the plugin settings once you save it.
- Free delivery? Enter
0as the Delivery Price for a carrier entry to indicate free delivery for that carrier.
Troubleshooting
Feed changes are not showing up on Heureka
Cause: The feed is being served from cache and has not regenerated since you last made changes to your products or settings.
Solution:
- Wait for the cache to expire (determined by the Cache Duration setting in minutes).
- To force an immediate refresh, clear the Joomla cache: Home Dashboard -> Cache -> Delete All. The next request to the feed URL will regenerate a fresh feed.
A product shows the wrong category on Heureka
Cause: The plugin is resolving the category through the automatic fallback chain rather than a specific override you intended to set.
Solution:
- Identify which tier of the category fallback chain is currently supplying the category for that product.
- To fix a single product, open the product in J2Commerce -> Catalog -> Products, click the Apps tab, and set the Heureka Category field to the correct path.
- To fix all products in a Joomla category, open the category in Content -> Categories, click the J2Commerce tab, and set the Heureka Category field there.
A product is missing from the feed
Cause: The product is being excluded by one of several automatic filters.
Solution:
Check each of the following in turn:
- The product is published in Joomla (or Include Unpublished is set to Yes in the plugin settings).
- The product has a price greater than zero. Products with a zero price are never included in the feed.
- The product is not listed in the Excluded Products field in the plugin settings.
- The product's visibility is set to visible (not hidden) in J2Commerce.
The feed URL returns an error or blank page
Cause: The plugin is disabled, J2Commerce is not installed, or a Feed Token is set but missing from the URL you are testing.
Solution:
- Go to J2Commerce -> Apps and confirm Heureka Product Feed shows a green checkmark.
- If you set a Feed Token, make sure you are using the full URL — including
&token=YOUR_TOKEN— that appears in the plugin settings after saving. - Clear the Joomla cache: Home Dashboard -> Cache -> Delete All.