Skip to main content

Catalog requirements

The following sections outline the requirements for setting up catalogs with Rokt. Rokt reads feeds built to the Google product data specification and the Meta catalog specification, so in most cases you can send the feed you already produce without editing it.

File uploadDirect link to File upload

SpecificationsDirect link to Specifications

  • A UTF-8 encoded CSV file containing the products in the catalog.
  • Up to 250,000 rows in one file.

FormattingDirect link to Formatting

  • Must contain a header row.
  • Although double quotation marks are not required, Rokt recommends them to prevent values being misread. Single quotation marks are treated as part of the text.
  • Prices are a number followed by the ISO 4217 currency code, for example 123.45 USD.
  • Add any UTM parameters or third-party tags to the end of the product URL in the link column.

UpdatingDirect link to Updating

Upload a new file to refresh the catalog. Your ads update with the latest product data once the file is processed.

How Rokt handles a value it cannot useDirect link to How Rokt handles a value it cannot use

A product is rejected when something essential is missing or unusable: an ID, title, description, brand, price, availability, a working link, or a working image. A value that is too long in a descriptive field, such as title, description, product type, or a custom label, is shortened and recorded as a warning, and the product still serves. A value that is too long in an ID, link, image link, price, or brand rejects the product, because shortening it would change the product or break the link.

Scheduled fetchDirect link to Scheduled fetch

SpecificationsDirect link to Specifications

  • An HTTPS URL for a product feed you host, or that a feed provider hosts for you.
  • Uncompressed CSV, as above, up to 500 MB.
caution

Never include credentials in the URL. Enter a username and password in the source settings. Rokt stores them encrypted and uses them only when it collects your file.

FormattingDirect link to Formatting

  • The URL should include the file name but not credentials, for example https://example.com/rokt_catalog.csv.
  • Add any UTM parameters or third-party tags directly into the feed.

UpdatingDirect link to Updating

The catalog refreshes daily and your ads update on refresh. Use Fetch now to collect immediately after a change. Keep the file at a stable address, because changing it means reconfiguring the source.

Catalog APIDirect link to Catalog API

  • Send products in batches under a Rokt-issued credential. Create, replace, and remove products, and check your credential before you start sending.
  • Up to 5,000 products per request.
  • Valid items in a batch are ingested even when others in the same batch fail. Invalid items are returned in the response with the reason for each.

Required fieldsDirect link to Required fields

Products in a catalog must contain data in these fields. A product missing one of them cannot serve, and you see an error against it in your feed report.

FieldDescriptionRequirements and recommendations
idThe unique identifier of the product variation. Rokt recognizes a product by this value, so if it changes, the product is treated as new.
  • 128 characters maximum
  • Rokt recommends your SKU
  • Must be unique within the feed, and stable over time
titleThe name of the product. This appears in the caption of your ad.
  • 300 characters maximum
  • Titles over 35 characters may be truncated in the ad
  • Plain text only, no markup
descriptionDescription of the product, to help a customer reach a purchase decision. May appear in the ad caption depending on your campaign settings.
  • 5,000 characters maximum, a few hundred recommended
  • Plain text only, no markup
linkThe product's landing page URL.
  • 2,000 characters maximum
  • Starts with HTTP or HTTPS
image_linkURL of the product's main image. This is what a customer sees in your ad.
  • 2,000 characters maximum
  • 25 MB maximum
  • JPG or PNG recommended, at least 500×500 pixels
  • Starts with HTTP or HTTPS
priceSelling price of the product. Appears in the ad caption.
  • 200 characters maximum
  • A number followed by the ISO 4217 currency code, for example 123.45 USD
  • No currency symbols or thousands separators, for example 1234.56 USD, not $1,234.56
  • Same currency as every other row in the feed
availabilityWhether the product can be bought.
  • One of in_stock, out_of_stock, preorder, backorder
  • The spaced spellings in stock and out of stock are also accepted
  • Any other value is rejected rather than treated as out of stock
brandThe product's brand name.
  • 100 characters maximum
note

Send product_type, google_product_category, or both. Rokt uses your product_type first. Where you do not send one, Rokt maps your google_product_category to its own taxonomy. A product with neither is still imported, but it is held and does not show in ads until a category is set or suggested.

Rokt strongly recommends including these to improve data quality and performance. Send as many as you hold.

FieldDescriptionRequirements and recommendations
item_group_idTies the variations of one product together.
  • 128 characters maximum
  • Set the parent product's ID on every variation
  • A row without one becomes a single-variation product
google_product_categoryThe product's category in the Google taxonomy.A valid category ID or taxonomy path.
product_typeYour own product categorization.750 characters maximum.
sale_priceThe discounted price. Shown with the original struck through when lower than price.Same format and currency as price.
sale_price_effective_dateThe window a sale price applies.An ISO 8601 date range separated by a slash, for example 2026-11-01/2026-11-30. You can add a time and time zone, for example 2026-11-01T00:00-05:00/2026-11-30T23:59-05:00. Without it, a sale price always applies.
inventory_quantityUnits in stock.A whole number. Real stock depth stops Rokt serving something about to sell out.
additional_image_linkFurther images of the product.Same rules as image_link. A comma-separated list or a JSON list.
mobile_linkA mobile-specific landing page.Same rules as link.
variant_titleThe name of the variation.300 characters maximum.
conditionCondition at sale.One of new, refurbished, used.
gtinGlobal Trade Item Number.8, 12, 13, or 14 digits, numeric.
mpnManufacturer part number.70 characters maximum.
color, material, sizeVariation attributes.Send these alongside item_group_id.
size_typeApparel cut.One of regular, petite, plus, tall, big, maternity.
patternPattern or graphic print.100 characters maximum.
genderWho the product is for.One of male, female, unisex.
age_groupAge group the product is for.One of newborn, infant, toddler, kids, teen, adult, all ages.
expiration_dateThe date a product stops showing.An ISO 8601 date, for example 2026-12-31, read as midnight UTC at the start of that day. To stop at a local time, add a time and time zone, for example 2026-12-31T23:59-05:00. The only way to time-box a product from the feed alone.
cost_of_goods_soldYour cost of goods.Same format as price.
custom_label_0–custom_label_4Free-text tags for product set filters, such as a season or a priority tier.200 characters maximum each.
custom_number_0–custom_number_4Numeric tags for product set filters, for range conditions text labels cannot express.Whole numbers. No decimals or separators.
average_review_rating, number_of_ratingsReview data, which can be shown in creative.Numeric values.

Field namesDirect link to Field names

Rokt accepts the current Google and Meta field names and the older names feed tools still emit. You do not need to rename columns.

Also acceptedRead as
urllink
fullimageimage_link
statusavailability
mobileurlmobile_link
custom1–custom5custom_label_0–custom_label_4
additional_image_linksadditional_image_link

Column names are matched without regard to capitalization or surrounding spaces, and a byte-order mark written by a spreadsheet export is ignored, so a file saved as UTF-8 from Excel or Google Sheets reads correctly.

CurrencyDirect link to Currency

Currency is a property of the source and is set when you create it. Every row in that feed must use the same currency code, and a row using a different one is rejected. If you sell in more than one currency, add a source per currency.

Fields Rokt does not acceptDirect link to Fields Rokt does not accept

Commercial rate columns are dropped. Rokt does not use margin, commission, cost per sale, or revenue share data. A column naming any of them is dropped and flagged in your feed report, and the rest of the feed is processed as normal. The match ignores punctuation and spacing, so cost-per-sale, cost_per_sale, and costPerSale are treated as the same column. Rates are set in your agreement with Rokt, not in a feed.

note

cost_of_goods_sold is a supported field and is not affected by this rule. Only rate columns are dropped.

Columns that look like personal data are dropped. Rokt drops any column whose name contains email, phone, name, address, or customer, unless the column is a field Rokt reads. This catches columns such as product_name, brand_name, and customer_segment, so put the product name in title and the brand in brand. A dropped column's values are not stored, not used, and not reported back. The test is deliberately broad, because personal data copied into a report cannot be recalled.

Was this article helpful?