---
title: "Product feed (Prisjakt, Shopello, etc.)"
url: "https://support.acendy.com/en/article/product-feed"
language: "en"
last_updated: "2026-05-28T09:37:21.203Z"
---

# Product feed (Prisjakt, Shopello, etc.)

The product feed exports your product catalog in a structured format so comparison sites and shopping platforms can index your products. Once enabled, feeds are regenerated automatically on a schedule and can also be triggered manually.

* * *

## Supported platforms

The product feed module supports four feed targets. Each one has its own toggle, so you can enable only the ones you need.

| Feed | Platform | Feed ID |
| --- | --- | --- |
| Price Hunt (Prisjakt) | Prisjakt Nordic | `pjakt` |
| Price Guide (Prisguide) | Prisguide | `pguide` |
| Shopello | Shopello | `shopello` |
| Other | Generic / other integrations | `other` |

* * *

## Enabling the feed

The feed module has a master switch plus individual toggles per platform. **Both** the master switch and the platform toggle must be active for a feed to be available.

1.  Go to **Modules → Extras** in the control panel.
2.  Find **Product feed (Prisjakt, Shopello, etc.)** and install it if it isn't already.
3.  In the module settings, set **Active product feeds** to `true`. This is the master switch.
4.  Enable the individual feeds you want: **Price Hunt**, **Price Guide**, **Shopello**, and/or **Other**.

Changes take effect the next time the feed is regenerated.

* * *

## Feed URLs

Each enabled feed is available at a predictable URL:

```
https://yourstore.no/produktfeed.php?id={feed-id}
```

| Platform | URL parameter |
| --- | --- |
| Price Hunt (Prisjakt) | `?id=pjakt` |
| Price Guide (Prisguide) | `?id=pguide` |
| Shopello | `?id=shopello` |
| Other | `?id=other` |

Example: [`https://yourstore.no/produktfeed.php?id=pjakt`](https://yourstore.no/produktfeed.php?id=pjakt)

The endpoint checks that the corresponding feed is enabled before returning data. Requests for a disabled or unknown feed ID return an empty response.

* * *

## Feed format

Feeds are delivered as tab-separated values (TSV) with a header row. Each row is one product or product variant.

| Column | Description |  |  |
| --- | --- | --- | --- |
| `productid` | Internal product ID |  |  |
| `url` | Direct link to the product page |  |  |
| `manufacturer` | Brand or manufacturer name |  |  |
| `title` | Product name (max 80 characters, HTML stripped) |  |  |
| `description` | Product description (HTML stripped;<br>`<br>`<br>tags preserved in the "Other" feed) |  |  |
| `price` | Price including VAT, formatted in the store's default currency |  |  |
| `image` | Absolute URL to the product image |  |  |
| `category` | Full category path, pipe-separated (e.g. \`Clothing | Men | Jackets\`) |
| `quantity` | Stock quantity |  |  |
| `attributes` | Variant combinations, semicolon-separated (e.g.<br>`Color-Red(199),Size-L(199);`<br>) |  |  |
| `ean` | EAN barcode (if EAN module is active) |  |  |
| `model` | Product model number |  |  |

Products use the active store language and default currency. If a product has a current special price, that price is used instead of the regular price.

* * *

## How regeneration works

Feed files are pre-generated and cached — the feed endpoint serves the cached version whenever one exists. This keeps response times fast for comparison sites that poll frequently.

Feeds are regenerated on a schedule by a cron job that runs across all active stores. It queues a background job for each enabled feed type on each store. The queue worker picks up the job, generates the TSV output, and writes the file to disk.

**Typical regeneration frequency:** every few hours, though the exact schedule depends on your server configuration.

If no cached file exists (e.g., after first activation), the feed is generated on-demand when a request comes in and the result is logged to the feed generation log.

* * *

## Stock handling

By default, the feed reports the stock quantity directly from the database. Two settings let you change this behavior.

### Ignore stock

When **Override stock numbers** (`PRODUCTFEED_IGNORE_STOCK`) is enabled, every product in the feed reports a quantity of `1` regardless of actual stock. This is useful if you want all in-catalog products to appear as available without exposing real inventory levels.

Enable this under **Modules → Extras → Product feed settings**.

### External stock

If part of your inventory is tracked outside Mystore (a third-party warehouse, an ERP system, or a manual count), you can add that quantity to each product using a product tag. When the feed is generated, the tag value is added to the database quantity.

**Example:** a product has 10 units in the Mystore database and an `external_stock` tag with value `50`. The feed reports `60`.

#### Enabling external stock

⚠️ Enabling external stock needs to be done by Mystore - please contact support

1.  In the product feed module settings, set **Combine external stock** to `true`.
2.  Optionally, set **External stock tag** to a custom tag key if you're not using the default (`external_stock`).

#### Setting stock values on products

Add a tag to each product that has external inventory. The tag must use the key you configured (default: `external_stock`) and a numeric value.

You can do this through the product tags interface in the control panel, or via a bulk import.

**Requirements:**

-   The **Product tags** module must be enabled.
-   Tags with `products_id = -1` are template rows and are ignored.

#### How it interacts with "Ignore stock"

If **Override stock numbers** is also enabled, external stock has no effect — all products report `1` regardless.

* * *

## Excluding products from feeds

You can tag individual products so they're completely omitted from all product feeds.

#### Enabling product exclusion

1.  In the product feed module settings, set **Permitted exclusion of products** to `true`.
2.  This creates an `exclude_from_feed` tag template, which then appears in the product tags interface.

#### Excluding a product

Open the product in the control panel, find the **Tags** section, and set the `exclude_from_feed` tag to `true`. The product will be skipped the next time the feed is regenerated.

**Note:** Exclusion applies to all product feed types (Prisjakt, Shopello, Other, etc.) at once. It's not possible to exclude a product from one feed but not another.

**Screenshot goes here: \[Product edit page with the exclude\_from\_feed tag enabled\]**

#### Requirements

-   The **Product tags** module must be enabled.
-   Exclusion only takes effect after the next feed regeneration. Trigger a manual refresh if you need the change to
