Build your own feeds
Guide to building your own product feeds in CSV, XML or JSON format with Shoporama's custom feed feature.
What are custom feeds?
Custom feeds let you create your own data files containing product information in CSV, XML, or JSON format. You decide which fields to include, how to name them, and which products to include. This is ideal for integration with external systems, price comparison sites, affiliate networks, or other services that require product data in a specific format.
You’ll find this feature under Products → Product Feeds in the admin panel.
Create a new feed
- Go to Products → Product Feeds.
- Click Create New Feed.
- Give your feed a name and select a format: XML, JSON, or CSV. The format cannot be changed after creation.
- Click Create Feed. You’ll be redirected to the editing page.
Edit your feed
On the editing page, you can configure all aspects of your feed:
General
- Name — an internal name to identify the feed.
- Slug — the part of the URL used to access the feed (generated automatically from the name).
- Online/Offline — whether the feed is publicly available.
- Expand Variants — if enabled, each product variant gets its own row in the feed.
Select Products (Data Source)
You can choose which products to include in the feed:
- All products — all products in your online store.
- Categories — only products from selected categories.
- Landing pages — only products on selected landing pages.
- Product labels — only products with specific labels.
Filters
You can further filter the products:
- Available for purchase: Excludes products that are out of stock. Products that can be resold even when their stock level is 0 remain in the feed.
- With image only: Excludes products without images.
- Price > 0 only: Excludes products without a price.
Product Fields
Select which fields to include in your feed. You can rename the fields to match the recipient’s requirements. Drag the rows to change their order.
Available fields include:
- Product ID, SKU, GTIN, MPN — product identification.
- Name, description (HTML and plain text) — product text.
- Price (before discount), current price, sale price — price information. Sales prices are always listed inclusive of tax, which is also indicated in the field name.
- Product URL, image URL, all image URLs — links and images.
- Brand, supplier, categories — classification.
- Stock status, stock quantity, weight — inventory and shipping.
- Related and similar product IDs and SKUs — product relationships.
- Cost price (excluding VAT) — your purchase price. Located under “Internal Fields” in the field selector because it is confidential. Read the section on cost prices further down before using it.
- Product attributes — your own profile attributes, such as season, color, material, or gender. They appear in the field selector with the names you’ve given them.
- Additional Fields — the additional fields you’ve filled out for your products. Shoporama automatically suggests the fields that exist for your products, and you can always enter a field name yourself if a field is missing from the list.
If you enable “Expand Variants,” you’ll also gain access to variant-specific fields such as variant SKU, variant GTIN, variant price, and variant stock quantity.
Global Fields (XML and JSON only)
For XML and JSON feeds, you can add global fields that appear at the root level:
- Shop URL, shop name, currency, language — online store information.
- Generation time, number of products — feed metadata.
- Custom value — free-form text that you specify yourself.
Format settings
- XML: Root element name (default: products), element name (default: product), XML namespaces (e.g., for Google Shopping format with the "g:" prefix), and CDATA for HTML fields.
- CSV: Separator (; or ,) and whether to include the header row.
- JSON: Automatically uses clean formatting with Unicode support.
Feed URL and Access
Once your feed is online, it is accessible via a public URL:
https://dinshop.dk/feed/dit-feed.xml
https://dinshop.dk/feed/dit-feed.json
https://dinshop.dk/feed/dit-feed.csv
The " Feed URL " field on the right side of the page indicates who can retrieve the feed. Click " Switch " to choose between three options:
- Open to Everyone — Anyone who knows the address can retrieve the feed. Good for general product data.
- Secret URL — Shoporama inserts a long, random key into the address so it can’t be guessed. Without the correct address, a 404 error is returned. This is the easiest solution, and it works with all feed tools.
- Username and password — the feed requires a login, just like a protected page. This is the most secure option and is supported by Channable, Google Merchant Center, and Meta, among others.
With a secret URL, the address looks like this:
https://dinshop.dk/feed/dit-feed-k7f3p9x2q4.xml
What should I choose? A secret URL is easy to share, but the address is stored in the browser history and in log files for both you and the recipient. If the feed contains information that must not be disclosed, choose a username and password. The password option requires that your online store runs on HTTPS.
If you choose a password, Shoporama will generate it for you, and you can view and copy it in the same place. You then enter the feed’s address, username, and password into your feed tool.
This is not the same as feed keys: Under “Webshop,” “Feeds,” there is a setting called “feed keys.” This applies to Google Shopping, Pricerunner, Partner Ads, and the other built-in feeds. Your own product feeds are protected on a per-feed basis, as described here. Read more in “Protect Your Feeds with Feed Keys.”
Build and Preview
Use the “Build Feed Now” button to generate the feed. You can also click “Preview” to see the result with live data.
Feeds that are published online are automatically rebuilt every hour, so your product data is always up to date.
How the feed is kept up to date
The feed URL does not fetch data the moment someone opens it. It returns the file that was written the last time the feed was built. That’s why a feed responds instantly, even when it contains tens of thousands of products. However, a change will not be visible externally until the feed is rebuilt.
The feed is built in two ways:
- Automatically once an hour. The process builds all feeds marked as Online. It doesn’t necessarily run exactly on the hour, so expect a delay of up to one hour.
- Manually, when you request it yourself. See the section below.
Two things are worth keeping in mind:
- Saving is not the same as rebuilding. When you save new fields, filters, or data sources, the configuration is saved immediately, but the file behind the feed URL remains the old one until the feed is rebuilt.
- The automatic build only applies to shops that have been set to live. If your shop is still a demo, your feeds won’t be built automatically. You can easily build them manually and test them in the meantime.
Build the feed manually
You don’t have to wait for the next automatic run. You can generate the feed from two places:
- On the edit page, the "Build Feed " box is located on the right-hand side. Click " Build Feed Now," and the feed will be built immediately.
- On the overview page, check the boxes next to one or more feeds and click “Rebuild Selected.” The feeds are built one at a time, and the button counts up as they’re being processed, e.g., 3/8.
Always save your changes first. Both buttons generate the feed based on the saved configuration, not on what you’ve just entered in the form.
Rebuild manually when you:
- Have just changed fields, filters, or data sources and want to see the result in the actual file.
- Have updated prices or inventory for many products and don’t want to wait an hour.
- Need to send the feed URL to a business partner for the first time.
The on-screen confirmation is not in itself proof that the feed was built. Instead, check the time listed under “Last Built.” If it hasn’t updated to the current time, the feed wasn’t built, and the cause is almost always one of the issues listed in the troubleshooting section below.
Preview the feed
There are two different previews on the editing page, and each answers a different question.
Structure preview: Does the structure look correct?
Below the field table is the Structure Preview box. It shows the skeleton of your feed with your own tag names and keys, and with ... in place of actual product data. It updates automatically as you add, rename, or move fields, and you don’t need to save first.
Use it to check that the structure matches the requirements specification you received from the recipient: Are the fields named exactly as they should be? Are they in the correct order? And are fields with multiple values—such as images and categories—formatted as the recipient expects?
Preview: Is the content correct?
The Preview button in the Build Feed box opens the feed in a new tab with actual product data from your store. This is the fastest way to check whether the prices are correct, whether the image URLs work, and whether the descriptions make sense. There are four things to know about the preview:
- The preview is generated on the spot and is not saved. It does not change either the file behind the feed URL or the time shown under “Last built.”
- The preview requires you to be logged into the admin panel. Therefore, the link won’t work for a partner or an agency. Send them the feed URL instead.
- The preview builds the entire feed in one go. If you have a large catalog, the tab may take a long time to respond. The automatic run processes the feed in smaller batches and does not have this issue.
- Preview always displays the saved configuration and the current product data. The file behind the feed URL is only included once the feed has been built.
Minor cosmetic differences between the preview and the built file are normal. The order of products may differ, and JSON feeds are formatted more loosely in the preview than in the file. The content per product is the same.
See when the feed was last built
The answer is listed under “Last Built,” and you’ll find it in two places:
- On the overview under Products → Product Feeds, each feed has a "Last Built " column with the date and time. If there is a dash, the feed has never been built.
- On the edit page, the same time is shown in the “Build Feed” box. If the feed has never been built, it will say “Feed not built yet” instead.
The time is set only after the feed has been fully built and the file has been written. If a feed is listed as online and the time is more than a few hours old, something is wrong.
Troubleshooting: The feed isn’t updating
Always start at the same place: open the feed, note the time under “Last Built,” click “Build Feed Now,” and see if the time changes. That way, you’ll know right away whether the feed is being built at all or if there’s a problem with the content.
"Last Built" isn’t changing
This means the feed was never fully generated. Common causes are:
- The feed has no fields. A feed without at least one field won’t be built. Add the fields, save, and try again.
- No products match. If you’ve selected a category, a landing page, or a product label with no products in it, there’s nothing to generate.
- You haven’t saved. The button generates the feed based on the saved configuration. Click Save first, then generate.
If that doesn’t help, please email support@shoporama.dk with the name of the feed and your store’s address.
The feed responds with "Feed is being generated. Please try again later."
If the feed URL responds like this, the feed was never fully generated, and therefore there is no file to deliver:
Feed is being generated. Please try again later.
The recipient receives a temporary error (HTTP 503), which most feed readers will automatically retry a little later. The solution is to build the feed manually and then open the URL again.
The feed URL returns a 404 error
- The feed is marked as Offline. Set it to online and build it.
- The file extension does not match the format. An XML feed must be retrieved as .xml, a JSON feed as .json, and a CSV feed as .csv.
- The slug is misspelled, or it has been changed since you submitted the address. Copy the address from the “Feed URL” box on the edit page.
- The feed is protected by a feed key, and the key is missing from the URL. Without the correct key, the feed returns a 404 error, even if it is online.
Products are missing from the feed
- The product is not online, or it’s in the trash. Only products that are online are included in a feed.
- A filter is excluding it. Temporarily disable the “Available for Purchase, ” “Image Only,” and “Price > 0” filters, rebuild the feed, and see if the product appears.
- The category is selected, but the product is only in a subcategory. A product is only included in the categories it is placed directly in, so be sure to select the subcategories in the data source as well.
- The data source is a landing page, and the product isn’t listed on it. Check the list on the landing page itself.
- You expect one row per variant. Enable “Expand variants,” save, and rebuild.
The price or stock level is out of date
The feed contains the figures that were current when the file was last built. After a price update, the start of a campaign, or a new inventory arrival, the feed must be rebuilt before the recipient can see the change. If it’s urgent, rebuild manually instead of waiting for the next automatic run.
The preview looks correct, but the feed doesn’t
This is the classic sign that the feed hasn’t been built since you made your change. The preview is generated on the spot, while the feed URL serves the most recently built file. Click “Build Feed Now” and check that the time under “Last Built” has changed.
The feed is updated less frequently than once an hour
Very large feeds can take a long time to build. If a run is still in progress when the next one is scheduled to start, the next one is skipped, and the feeds aren’t built until the following hour. If this becomes a recurring pattern, you can trim the feed: remove fields the recipient doesn’t use, apply a filter, or build several smaller feeds instead of one large one—for example, organized by product labels.
Cost Prices in the Feed
You can include your cost price in the feed, for example, if your feed tool needs to calculate contribution margins and bid accordingly. The cost price is the one you’ve entered under Inventory, Cost Prices, and it’s exclusive of sales tax. The selling prices in the feed, on the other hand, include sales tax, so be sure to factor that in if you’re comparing the two figures.
If you haven’t entered a cost price for an item, the column will be empty. It won’t display as zero, so you can tell the difference between “free” and “unknown.”
Important: If you select “cost price” in a feed that’s open to everyone, Shoporama will display a warning. Anyone who knows the address will be able to see your purchase prices. Enable a password or secret URL first.
Tips
- Use the Preview feature to test your feed before sharing the URL.
- Enable a password if the feed contains cost prices or other confidential information.
- XML with namespaces makes it easy to create Google Shopping-compatible feeds.
- With the variant extension, you can create feeds where each variant has its own line—useful for price comparison sites.
Frequently Asked Questions
Can I protect my feed with a username and password?
Yes. Click “Change ” next to “Access ” in the Feed URL field and select “Username and password.” Shoporama generates the password for you. This requires that your online store runs on HTTPS. Most feed tools, including Channable, Google Merchant Center, and Meta, have fields for username and password when you create the feed with them.
Can I include my purchase prices in a feed?
Yes, but make sure to secure the feed first. If you select “cost price” in an open feed, Shoporama will warn you immediately. If you’ve already shared an open feed URL, enable password protection and send the new URL to the recipient.
I can’t find one of my custom fields in the list. What should I do?
The list of custom fields is a suggestion based on your most recent products, so a field that only exists on older products may be missing. You can always type the field name yourself into the field selector, and it will work anyway.
Why is the column for a product attribute empty for some products?
Product attributes belong to the profile that the product uses. If a product has a different profile where the attribute doesn’t exist, the column will be empty for that specific product. This isn’t an error in the feed.
I’ve made changes to the feed and saved them, but the file my partner is downloading remains unchanged. What should I do?
You need to rebuild the feed. When you save, you’re only updating the configuration. Open the feed, click “Build Feed Now,” and check that the time under “Last Built” updates to the current time. The feed URL will then serve the new version. If you do nothing, the change will be reflected in the next automatic run within an hour.
How often does the feed update itself?
Once an hour. This applies to all feeds marked as “Online” in a shop that’s live. If your shop is still a demo, or if the feed is marked as “Offline,” nothing happens automatically, and you’ll need to click “Build Feed Now” yourself.
Can I make the feed build more frequently than once an hour?
Not as a setting you can configure yourself. However, you can build it manually as often as you like, and it typically takes just a few seconds for a standard catalog. If you have a business need for more frequent automatic updates, please email support@shoporama.dk, and we’ll look into it.
Can I send the preview link to my agency?
No. The preview requires you to be logged into your admin panel, so an external recipient will just see the login page. Instead, send the feed URL from the “Feed URL” field. It’s designed to be shared and provides exactly the same data.
We have many feeds. Do I need to rebuild them one by one after a major price update?
No. Go to Products → Product Feeds, check the boxes next to the relevant feeds, and click “Rebuild Selected.” They’ll be rebuilt one at a time, and the “Last Built ” column updates as they’re processed, so you can see which ones are finished. If you have multiple stores, you’ll need to repeat this in each store. If you don’t need the feeds right away, you can safely let the automatic process handle it within an hour.
The feed shows items we don’t have in stock. How do I remove them?
Set the “Available for Purchase” filter on the feed, save, and generate. Note that products that can be sold even when the stock level is 0 will still appear, because customers can actually purchase them. Also, keep in mind that the stock numbers in the feed are from the time the file was last generated, so it can take up to an hour from when an item sells out until the change is reflected in the feed.
What does the message “Feed is being generated. Please try again later.” mean?
It means the feed has never been fully generated, so there is no file to deliver yet. This typically happens right after creation, or if the feed has no fields. Add at least one field, save, click “Build feed now,” and try the URL again.
Can I view a log of what went wrong if a feed isn’t built?
Not in the admin panel. What you can see is the time listed under "Last Built," and that’s the most important thing: if it’s static, the feed wasn’t built. Go through the troubleshooting list above, and email support@shoporama.dk if you get stuck—we’ll look into it.
Do you need help getting a feed to work with a specific recipient? Email support@shoporama.dk. If you need a ready-made Google Shopping feed, you can use the built-in one instead, as described in Set Up Google Shopping Feed.
Related articles
Feed-nøgler: Beskyt dine produktfeeds med en hemmelig nøgle
Sådan slår du feed-nøgler til i Shoporama og beskytter dine produktfeeds, så kun Google, Pricerunner, og andre godkendte tjenester kan hente dine...
Cost Prices and Inventory Value
Fill in any missing cost prices to get a more accurate inventory value and profit margin. Guide to the Cost Prices page.
Split your feeds into multiple pages
Here's how to split a custom XML feed from a landing page into multiple pages. The parameter is determined by your own feed template.
Set Up a Google Shopping Feed
Guide til at opsætte Google Shopping Feed i Shoporama: kategorier, custom labels, produkt-id og katalogmatch samt lands- og sprogfeeds.
Related features
Custom Feeds
Build customized product feeds in XML, JSON or CSV. Select fields, filter products, expand variants and split feeds into pages.
Feeds
Ready-made feeds for Google Shopping, Pricerunner, Partner Ads, Kelkoo and TradeTracker. Or build your own custom feeds in XML or CSV.
Marketplace
A marketplace is a platform where multiple sellers offer products. Learn about the pros, cons and strategy for selling on marketplaces like Amazon...
Feed
A product feed exports your product data to Google Shopping, PriceRunner, Facebook and other channels. Learn about feed types, important fields and...
Google Shopping feed is included in your Shoporama shop
Get an automatic Google Shopping feed with all required fields. Included for free in your Shoporama shop. Also Pricerunner and custom feeds.
From analytics to advertising: label products directly from statistics
Label products directly from ABC analysis and dead stock - and use them automatically in your Google Shopping feed for targeted campaigns.