# XML product feed

The XML product feed gives the agent your catalogue when your shop runs on a platform without a native connector, or when product questions are all you need. Voice Logica reads the same XML feed you publish for Skroutz, refreshes it on a schedule, and the agent searches it during the call: a caller asks for a product in their own words and the agent tells them the name, a short description and whether it is in stock. The feed is catalogue-only. It does not recognise callers, read orders or place orders; for that, use [WooCommerce](https://docs.voicelogica.ai/integrations/eshops/woocommerce/), [Shopify](https://docs.voicelogica.ai/integrations/eshops/shopify/), [Magento](https://docs.voicelogica.ai/integrations/eshops/magento/), [OpenCart](https://docs.voicelogica.ai/integrations/eshops/opencart/) or [PrestaShop](https://docs.voicelogica.ai/integrations/eshops/prestashop/).

There is no Catalogue card and nothing to connect under **Integrations**. The feed is set on the agent itself: **My Agents - agent - Skills - Tools & Workflows - Eshop Integration (XML feed)**. Each agent that should answer product questions gets its own feed settings.

  <ShotPlaceholder
    src="/assets/integrations/xml-feed.png"
    name="xml-feed-connect"
    alt="Eshop Integration (XML feed) settings with Feed URL, Refresh interval and Product identifier field"
    capture="Eshop Integration (XML feed) settings on the agent."
  />

## What you need before you start

A product feed URL in the Skroutz XML format (developer.skroutz.gr/el/feedspec/) or the Google Merchant format. Most Greek shop platforms and Skroutz or Google Shopping plugins already generate one. The URL must be reachable from the internet without a login or IP restriction, and must return XML (gzip or zip is fine), not a JSON or HTML page.

## Supported feed formats

| Layout | Example |
|--------|---------|
| Skroutz, under any root name | `<mywebstore><products><product>` (also `webstore`, `store`, `storedata` or any other root) |
| Products list at the root | `<products><product>` |
| Products directly under the root | `<catalog><product>` or a single `<product>` |
| Google Merchant (RSS) | `<rss><channel><item>` with `g:` tags such as `<g:id>`, `<g:price>` |
| Atom | `<feed><entry>` |

The fields the agent uses, per product. The name in brackets is the accepted alternative, and Google `g:` tags work as they are:

| Field | Used for |
|-------|----------|
| `id` (`g:id`) | Identifies the product between refreshes |
| `name` (`title`) | What the agent reads out |
| `link` | The product page |
| `price_with_vat` (`price`) | The price |
| `availability` (`instock` Y/N, `quantity`) | Whether it is in stock |
| `description` | Matching loosely worded requests |
| `category` (`product_type`) | Narrowing the search |
| `manufacturer` (`brand`) | Brand questions |
| `mpn`, `ean` (`gtin`), `sku` | Codes callers read out, see **Product identifier field** |
| `image` (`image_link`) | Product image |

Any other tags in a product are kept as extra product data.

## What you enter

- **Feed URL** (required) — The full address of the XML feed, starting with `https://` or `http://`, for example `https://myshop.example/feeds/products.xml`.
- **Refresh interval** — How often the catalogue is re-read, from 30 minutes to 7 days. Default 1 day.
- **Product identifier field** — The product code the agent matches when a caller reads one out: **MPN** (default), **EAN**, **SKU**, **Skroutz ID**, **Group Code** or **None**. Pick the code your customers see.
- **AI-enhanced product vectors** — Off by default. When on, the agent can match loosely worded requests to products using their descriptions. Results are only as good as your descriptions.
- **Vector field** — Shown when the option above is on. The feed field the matching is built from.
- **Feed supports incremental sync** — Turn on only if your feed accepts a `?modifiedSince=` parameter. Otherwise every refresh reads the whole catalogue, which is the safe default.

## First setup

1. Open **My Agents**, pick the agent, then **Skills - Tools & Workflows**.

2. Turn on **Eshop Integration (XML feed)** and click **Configure**.

3. Paste the **Feed URL**, choose the **Refresh interval** and the **Product identifier field**, and click **Save** in the settings window.

4. **Save** the agent. The feed can only be synced or viewed after the agent is saved.

5. Click **Sync now** on the card to read the feed straight away instead of waiting for the first scheduled refresh. Give it a few minutes, then click **View products** to confirm your products are there.

6. Call the agent (or use **Try this agent**) and ask for a product the way a customer would, for example "Do you have a smart kettle?". The agent should name matching products from your feed and say whether they are available.

## What the agent can do

| Job | What happens on the call |
|-----|--------------------------|
| Product questions | Searches the catalogue as soon as the caller mentions a product or reads out a product code, trying several spellings and the English term at once, and reads back name, short description and availability. |
| Follow-up questions | Searches again when the caller narrows the request ("a smart one", "in black"). |
| Alternatives | Suggests similar products only when the caller asks for alternatives. |

## Troubleshooting

**Sync now or View products says to save the agent first**

The feed settings are stored with the agent. **Save** the agent after entering the **Feed URL**, then use **Sync now** or **View products**.

**The tool switched itself off and we got an email about access denied**

The feed returned 403 (forbidden), so Voice Logica turned the tool off on that agent and emailed your company's notification addresses. The feed is behind a login, an IP restriction or a firewall rule. Make it publicly reachable, then turn **Eshop Integration (XML feed)** back on and **Save**.

**We received E-shop Sync Failed emails**

Each failed refresh sends an email numbered out of 3. After 3 failures in a row the tool is turned off on the agent. Open the **Feed URL** in a browser to check that it loads and is valid XML, fix the feed, then turn the tool back on and **Save**. A successful refresh resets the count.

**The sync failed with &quot;No products found in the feed&quot;**

The feed loaded but its layout is not one we read. The error names the root tag it found, for example `root found: <shopdata>`. Change the feed to one of the [supported formats](#supported-feed-formats), most simply `<products><product>` inside any root, then **Sync now**.

**The agent cannot find a product when the caller reads out its code**

The agent matches spoken codes against the **Product identifier field**. Set it to the code your customers actually see (for example **SKU** if that is printed on your site), **Save** and **Sync now**. For **MPN**, **EAN**, **Skroutz ID** and **Group Code** only the digits are kept; **SKU** keeps letters and dashes.

## Next Steps

[Get an integration working](https://docs.voicelogica.ai/integrations/) - how company connections and agent tools fit together.  
[Tools & Workflows](https://docs.voicelogica.ai/agent-configuration/built-in-tools/) - where this tool lives.  
[WooCommerce](https://docs.voicelogica.ai/integrations/eshops/woocommerce/) - [Shopify](https://docs.voicelogica.ai/integrations/eshops/shopify/) - when you also need caller recognition and orders.
