# Dynamic Product Ads

## Dynamic Product Ads — Datafeed Onboarding

{% hint style="info" %}
This guide covers everything you need to integrate your product catalog with Appier Dynamic Product Ads. If you have any questions during setup, please reach out to <support@appier.com>.
{% endhint %}

***

### Overview

**Dynamic Product Ads** allow Appier to automatically display the most relevant products to each user based on their browsing behavior and preferences. To power this personalization, Appier requires a data feed, which is a structured file containing your product catalog information.

This page explains how to prepare your feed, how to deliver it to Appier, and what to expect during the onboarding process. Once you have reviewed the guide, please refer to the [#onboarding-checklist](#onboarding-checklist "mention") and share it with Appier to kick off the integration.

***

### File Specifications

#### Supported File Formats

Appier accepts product feeds in the following formats:

| Format | Extension | Notes                                             |
| ------ | --------- | ------------------------------------------------- |
| CSV    | `.csv`    | Recommended for most clients                      |
| XML    | `.xml`    | Also accepted; must follow standard XML structure |
| TSV    | `.tsv`    | Tab-separated values                              |
| RSS    | `.rss`    | RSS 2.0 feed format                               |
| JSON   | `.json`   | Flat JSON array of product objects                |

#### File Encoding

Please use **UTF-8** encoding for all feed files.

#### Feed Types

| Type             | Description                                   | Recommended Frequency      |
| ---------------- | --------------------------------------------- | -------------------------- |
| **Full Feed**    | Contains your entire product catalog          | Daily                      |
| **Partial Feed** | Contains only updated or newly added products | Hourly or as changes occur |

For most clients, Appier recommends starting with a **daily full feed**. Once the integration is stable, you may switch to a partial feed for more frequent updates.

#### File Format Examples

**CSV Example**

```csv
id,title,image_link,link,price,sale_price,currency,availability,google_product_category,description
P001,Blue Running Shoes,https://example.com/images/P001.jpg,https://example.com/products/P001,3200,2560,TWD,in stock,Apparel & Accessories > Shoes,Lightweight running shoes with breathable mesh upper.
P002,Cotton T-Shirt,https://example.com/images/P002.jpg,https://example.com/products/P002,890,890,TWD,in stock,Apparel & Accessories > Clothing > Tops,Classic fit cotton t-shirt available in multiple colors.
```

**XML Example**

```xml
<?xml version="1.0" encoding="UTF-8"?>
<products>
  <product>
    <id>P001</id>
    <title>Blue Running Shoes</title>
    <image_link>https://example.com/images/P001.jpg</image_link>
    <link>https://example.com/products/P001</link>
    <price>3200</price>
    <sale_price>2560</sale_price>
    <currency>TWD</currency>
    <availability>in stock</availability>
    <google_product_category>Apparel &amp; Accessories &gt; Shoes</google_product_category>
    <description>Lightweight running shoes with breathable mesh upper.</description>
  </product>
</products>
```

***

### Field Descriptions

The table below lists all product fields. Fields marked as **Mandatory** are required for the feed to process correctly.

> **Important:** If your field names differ from Appier's standard field names, please indicate your field name in the **"Your Field Name"** column and share the mapping with Appier.

<table><thead><tr><th width="175.5390625">Appier Field Name</th><th width="228.3671875">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><strong>Mandatory</strong></td><td>A unique identifier for each product. Do not change this ID once assigned. Max 32 half-width characters. Only ASCII characters (range 0x21–0x7e) are allowed.</td></tr><tr><td><code>title</code></td><td><strong>Mandatory</strong></td><td>The product name. Max 50 full-width or 100 half-width characters. Use unique, descriptive titles for best ad performance.</td></tr><tr><td><code>image_link</code></td><td><strong>Mandatory</strong></td><td>URL of the main product image. Minimum 600×600 px recommended. Square format preferred. Provide consistent image sizes across all products.</td></tr><tr><td><code>link</code></td><td><strong>Mandatory</strong> <em>(web)</em></td><td>The URL of the product detail page on your website.</td></tr><tr><td><code>ios_url</code></td><td><strong>Mandatory</strong> <em>(app)</em></td><td>Deep link URL for iOS, redirecting users directly to the in-app product page. Required if you have an iOS app and want to support deep linking.</td></tr><tr><td><code>android_url</code></td><td><strong>Mandatory</strong> <em>(app)</em></td><td>Deep link URL for Android, redirecting users directly to the in-app product page. Required if you have an Android app and want to support deep linking.</td></tr><tr><td><code>price</code></td><td><strong>Mandatory</strong></td><td>The original retail price of the product, before any discount.</td></tr><tr><td><code>sale_price</code></td><td><strong>Mandatory</strong></td><td>The current selling price of the product, after any discount applied.</td></tr><tr><td><code>currency</code></td><td><strong>Mandatory</strong></td><td>Currency code in <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> format (e.g., <code>USD</code>, <code>JPY</code>, <code>TWD</code>, <code>KRW</code>).</td></tr><tr><td><code>availability</code></td><td><strong>Mandatory</strong></td><td>Set to <code>in stock</code> if the product is available, or <code>out of stock</code> if it is not.</td></tr><tr><td><code>google_product_category</code></td><td><strong>Mandatory</strong></td><td>Product category using hierarchical format. Use <code>></code> (with spaces) to separate levels. For example: <code>Category_A > Category_B</code>. Multiple non-hierarchical categories can be separated by commas: <code>Category_A > Category_B , Category_X</code></td></tr><tr><td><code>description</code></td><td>Optional <em>(strongly recommended)</em></td><td>A description of the product. Max 2,500 full-width or 5,000 half-width characters. Avoid using ALL CAPS. Avoid short or repetitive descriptions.</td></tr><tr><td><code>extra_image_link</code></td><td>Optional</td><td>Additional product image URLs. Minimum 600px recommended. Supports up to 10 URLs, separated by a vertical bar <code>|</code>. Example: <code>image_link_1|image_link_2|image_link_3</code></td></tr><tr><td><code>keyword</code></td><td>Optional</td><td>Comma-separated list of keywords associated with the product.</td></tr></tbody></table>

***

### Integration Methods

Appier supports three methods for receiving your product feed. Choose the option that best fits your technical setup.

#### Method A — HTTP/HTTPS Link (Recommended)

Provide a direct download URL to your feed file. This is the simplest method.

**Requirements:**

* The URL must allow direct file download without requiring login or session authentication.
* The file should be accessible at a stable, permanent URL.
* If your server requires IP allowlisting, please request us to share Appier's server IP.

**Supported URL examples:**

```
https://www.example.com/feed/products.xml
https://feed.example.com/products_feed.txt
```

***

#### Method B — FTP Pull (Appier pulls from your FTP server)

If your feed is hosted on an FTP/SFTP server, Appier can pull the file automatically on a scheduled basis.

**What to provide to Appier:**

* FTP server address and port
* Username and password (or SSH key)
* File path and filename

> **IP Allowlisting:** If your FTP server requires IP restrictions, please whitelist Appier's server IP. Contact us for the IP address.

***

#### Method C — FTP Push (You push to Appier's FTP server)

Appier can provide you with credentials to upload your feed directly to our FTP server. This is useful if your system does not support outbound HTTP requests.

**What Appier will provide:**

* FTP server address
* Your dedicated account credentials
* Target file path

**Guidelines:**

* Please use a **fixed filename** (e.g., `products.csv`) rather than a date-stamped filename (e.g., `products_20250101.csv`). This ensures Appier's system can locate the latest file reliably.
* Upload the file to the designated path before the scheduled sync time.

***

### Sync Schedule

Appier syncs your datafeed on a configurable schedule. The recommended setup is:

| Feed Type    | Recommended Frequency                             |
| ------------ | ------------------------------------------------- |
| Full Feed    | Once daily (e.g., 02:00 AM local time)            |
| Partial Feed | Hourly, or triggered after bulk inventory updates |

Appier will work with you to configure the optimal sync schedule during onboarding.

***

### Onboarding Checklist

To get started, please share the following information with Appier before or during your onboarding session. This helps us complete your datafeed integration setup smoothly.

<table><thead><tr><th width="273.70703125">Item</th><th>Details</th></tr></thead><tbody><tr><td>Data source link</td><td>The URL or FTP path where your feed file is hosted</td></tr><tr><td>Transfer method</td><td>HTTP/HTTPS link, FTP Pull, or FTP Push</td></tr><tr><td>Refresh frequency</td><td>How often you plan to update the feed (e.g., daily, hourly)</td></tr><tr><td>Estimated product count</td><td>Approximate number of products in your catalog</td></tr><tr><td>Authentication requirements</td><td>Any credentials, tokens, or IP allowlisting needed to access the feed</td></tr><tr><td>Field name mapping</td><td>If your field names differ from Appier's standard names, please provide the mapping</td></tr></tbody></table>

***

### Need Help?

If you have any questions or run into issues during integration, please email us at <support@appier.com>.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.adcloud.appier.com/creatives/dynamic-product-ads.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
