Skip to main content

Connect your shopping feed - Custom Feed

Introduction

Product feed synchronization automatically links your e-commerce catalog to JOIN Studio. You provide the URL of your feed (CSV, JSON, or XML), JOIN detects the columns, sets up a mapping, and keeps everything up to date every 6 hours.

The key idea: you configure your feed once. Then, every new product, price change, or out-of-stock item in your store is automatically reflected in your JOIN stories.

Why connect your feed?

This will allow you to tag your products within stories, create a unique dynamic widget for your product pages, and add products to the cart directly from the story.

Zero manual import

Products appear automatically at every sync. Your JOIN catalog always reflects your store's current state.

🔗 Set up once

The mapping between your feed and JOIN is configured at setup. It automatically applies to all subsequent syncs.

🛒 Compatible with any public CSV/JSON/XML feed exposed by your CMS:

WooCommerce, Shopify, Prestashop, Magento, Google Shopping feed… CSV, JSON or XML, JOIN detects everything.

🎨 Native variants

Colors, sizes, and materials are intelligently grouped under a parent product, just like in your store.

How it works

Here is a tutorial video .here

Feed synchronization is an automated ingestion pipeline that imports and maintains your catalog in JOIN Studio from an external URL. Concretely, there are three key components:

  1. The source: the URL of a CSV, JSON, or XML file hosted on your side.

  2. The mapping: the match between your feed columns and JOIN's standard fields (title, price, image, etc.).

  3. Markets and currencies: useful if you sell in multiple countries.

JOIN validates your feed, applies the mapping, and resyncs your catalog on a scheduled basis.

Good to know: each source URL corresponds to a single feed. Your synced products are available in Studio via the product selector. If you delete the feed, the catalog disappears from Studio, but products already tagged in your existing stories remain in place.

Before you start

To set up a feed without any issues, here is what you will need:

Element

What you need

A public and stable URL

Your feed URL must be accessible via HTTPS, without authentication, from any network. To check, open it in a private browsing window: if the file downloads without a login, you are ready.

At least 5 fields in your feed

Product identifier, title, product URL, image URL, and currency. Column names don't matter, our AI handles that, but these 5 pieces of information must exist in the source.

Which format should you choose if you're starting from scratch?

We recommend CSV: it is the simplest to generate, read, and debug. But if you already have a Google Shopping feed (XML), it will work directly, without any modification.

How to retrieve the URL of your product feed?

The idea is simple: we need a public URL (HTTPS) that points to your product catalog, in CSV, XML or JSON format. Most e-commerce platforms generate this type of feed natively or through a free extension.

Here are the most common paths depending on your platform:

  • WooCommerce: the free extension Product Feed Pro by AdTribes generates a Google Shopping feed in a few clicks. The URL appears in the feed list once created.

  • PrestaShop: we've developed a dedicated JOIN plugin that creates the feed automatically (and also integrates the tracking scripts). Documentation here.

  • Magento / Adobe Commerce / Salesforce Commerce Cloud / Shopware / other CMS: your tech team or your integrator can generate a catalog export in CSV or XML format, hosted on your own domain.

  • You already have a Google Merchant Center feed: GMC is usually connected to a feed URL that can be retrieved.

    • How to find your source URL in GMC

      1. Sign in to Google Merchant Center.

      2. Go to Products → Feeds.

      3. Click on your primary feed.

      4. Open the Settings tab.

      5. In the File retrieval or File source section, if you see a URL starting with https://, that is your source URL.

      Copy it and send it to us — that's the URL we need.

What to check:

  1. The URL must be accessible in HTTPS and without authentication (test it in a private/incognito window — a file should download without any login).

  2. The feed must contain at minimum: product ID, title, product URL, image URL and currency.

Set up your feed in 3 steps

Go to Settings → Shopping and click Add Product Feed. A wizard guides you through 3 steps.

Basic settings

Give your feed a name and provide its URL.

Field

What is expected

Feed name

A readable label for you to find it — for example Spring 2026 Catalog or FR Products.

Feed URL

The HTTPS address of your source file. A URL already used by another JOIN feed will be rejected — each feed has its own unique URL.

Currencies and markets

This step links your feed to one or more currencies and one or more markets. This is useful if you sell in multiple countries with different prices.

For each of these two fields (Currency and Market), there are two scenarios:

  • Your feed already contains the column: AI detects it automatically. Each product then keeps its own currency or market.

  • Your feed does not contain the column: you enter a fixed value that applies to all products (for example EUR for currency, or EMEA as a market label).

Tip: the fixed market value is a free-form field. You can enter anything you want (FR, Europe, B2B…) — it is only used to segment your products in Studio.

Attribute mapping

JOIN analyzes your feed and suggests a match between your columns and JOIN's standard fields. You can adjust each suggestion if it seems incorrect.

Here are the JOIN fields and column names commonly found in e-commerce feeds:

JOIN Field

Common column names

Status

product_id

item_group_id, group_id, parent_id — this is the parent product ID, not the variant ID

Required

variant_id

id, sku, gtin, variant_id — the exact ID used to attach product-page stories

Recommended

title

title, name, nom, product_name

Required

product_url

link, url, product_url, product_link

Required

image_url

image_link, image_url, main_image, image

Required

currency · price_value

price (e.g.: 19.99 EUR — currency can be extracted from the same field)

Currency required

sale_price_value

sale_price, prix_solde, promo_price

Optional

availability

availability, stock, in_stock, disponibilite

Optional · default in_stock

additional_image_urls

additional_image_link, extra_images, images (multiple columns accepted)

Optional

brand

brand, marque, manufacturer

Optional

color · size · material

color, couleur, size, taille, material…

Optional

target_country

target_country, pays, country, market

Optional · useful for multi-market

Important: your feed's column names do not need to match those above exactly. This table is just a reference to help you verify or correct what AI has suggested.

Once the first synchronization is complete, a feed card appears in your list, with:

  • the number of synced products,

  • the status OK, WARNING, or FAILED with timestamp,

  • the most common errors in case of WARNING,

  • the View errors, Edit, and Delete buttons,

  • a Domains field to associate domain names with a market (useful for multi-site stores).

Monitor your feed on a daily basis

How often does JOIN update your catalog?

Your feed is resynced every 6 hours, i.e. 4 times per day. In practice:

  • New products appear in Studio at the next sync (within 6 hours maximum).

  • Products removed from your source feed are automatically marked as inactive.

  • If a missing product reappears in your feed later, JOIN reactivates it automatically, with no action required on your part.

  • Sync duration: approximately 20 seconds for fewer than 10,000 products, 1 min 30 for 150,000 products.

Understanding statuses

Status

What it means

What to do

OK

Everything went well, all valid products were imported.

Nothing to do, your catalog is up to date.

WARNING

Some rows in the feed were skipped (missing required field, malformed value). Other products were imported correctly.

Click View errors on the feed card. You will see the most common reasons to correct the source if needed.

FAILED

The ingestion stopped, no products were imported for this run.

Check that the URL is accessible (in private browsing), that the file format is correct, and that the 5 required fields are present. If not, open a ticket with your CSM including the feed URL.

Did this answer your question?