One format. Four ways to connect.
Use the same field names in CSV, XML and JSON files. For PostgreSQL, create a read-only view that provides these columns.
Required fields
| Field | Type | Description |
|---|---|---|
| id | Text | A unique, permanent product identifier within your project. |
| name | Text | Product name. |
| price | Number | Selling price. Use a decimal point: 1299.90. Do not include a currency symbol. |
| currency | Text | Three-letter currency code: TRY, USD, EUR. Currency conversion is not performed. |
Optional fields
| description | Product description; recommended for better suggestions. |
| brand / category | Brand and category. |
| url / image_url | HTTPS product page and image URLs. |
| available | true / false. Defaults to true. Products marked false are not recommended; this controls sale availability independently of stock. |
| in_stock | true / false. Stock status; unknown if omitted. Out-of-stock visibility follows your project settings. |
| compare_at_price | Original price before discount (optional). Can be crossed out when higher than the current price. |
| min_age / max_age | Minimum and maximum age; may be left empty. |
| attributes | A JSON object with extra attributes. Use JSON text in CSV and child elements in XML. |
JSON example
{
"products": [
{
"id": "sku-001",
"name": "Architectural Model Set",
"description": "An 800-piece display model for adults.",
"price": 1299.9,
"compare_at_price": 1599.9,
"in_stock": true,
"currency": "TRY",
"available": true,
"brand": "Example Brand",
"category": "Maket",
"url": "https://example.com/products/sku-001",
"image_url": "https://example.com/images/sku-001.jpg",
"min_age": 18,
"max_age": null,
"attributes": {
"pieces": 800,
"color": "Krem"
}
}
]
}How imports work
Each file or source represents the project's entire catalog. Existing IDs are updated, new IDs are added and missing products are removed. Price changes do not require new vectors; product text changes do. Invalid rows prevent the import. Correct the report and upload again.
Files must use UTF-8, contain no more than 50,000 products and be at most 20 MB. Feed URLs must use HTTPS; private network addresses are rejected. PostgreSQL requires TLS verification and a SELECT-only user. Use a file or HTTPS feed if your server is not publicly reachable.
Automatic feed updates
Add your HTTPS feed URL under Sources and choose JSON, XML or CSV. Schedule up to six daily times in your time zone, or an interval of 1, 6, 12 or 24 hours. The first import starts immediately. Edit, pause or run the schedule manually at any time.
Each feed must contain the full catalog. Prices, discounts, stock and sale availability are refreshed on each import. Send available=false to stop selling a product and in_stock=false when stock runs out. Removing a product from the feed removes it from the catalog. Empty or invalid feeds do not delete existing products. Each project supports one automatic source.
Schedules are checked every minute. Updates missed while the service is offline are combined into one fresh import when it restarts. Failed imports appear in the dashboard and retry at the next scheduled time.
PostgreSQL view example
CREATE VIEW product_feed AS
SELECT sku::text AS id, title AS name,
description, sale_price AS price, 'TRY' AS currency,
is_active AS available
FROM products;
-- Bu view'a yalnızca SELECT yetkisi olan bir kullanıcı bağlayın.Adapt this example to your database's field names. Navlu does not create tables or views in your source database.