Skip to main content

Overview

Batch Actions let you run pipeline stages — Silver normalization or Gold scoring — on multiple products simultaneously. Instead of processing products one by one, you select a scope (individual products, a selection, or the entire catalog) and trigger the operation once.

Selecting products

Single product

From the product detail page, use the Normalize or Analyze button in the pipeline panel on the right sidebar. This runs the operation on that product only.

Selection

  1. In the catalog product list, check the boxes next to products you want to process
  2. A floating action bar appears at the bottom: X products selected
  3. Click Normalize or Analyze from the action bar

Full catalog

  1. In the catalog product list, click Select All (selects all products in the catalog, not just the current page)
  2. Click Normalize or Analyze from the action bar
  3. Alternatively, use the Batch Actions dropdown → Normalize All or Analyze All

Scope selector

The scope selector lets you define the batch target in API calls:
ScopeBehavior
"selection"Process only the specified productIds
"all"Process every product in the catalog
When scope: "all", the productIds field is ignored.

Running Silver (Normalize)

Silver normalizes fields: standardizes casing, validates URLs, detects duplicates, maps categories and brands.

Via UI

  1. Select products (or use Select All)
  2. Click Normalize
  3. A progress bar shows: Normalized X / Y products
  4. When complete, a results panel shows:
    • Fields normalized count
    • Duplicates detected
    • Broken image URLs found

Via API

# Normalize a selection
curl -X POST "https://app.alana.shopping/api/workspace/WORKSPACE_ID/catalogs/CATALOG_ID/batch/silver" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productIds": ["prod_abc", "prod_def", "prod_ghi"],
    "scope": "selection"
  }'

# Normalize the entire catalog
curl -X POST "https://app.alana.shopping/api/workspace/WORKSPACE_ID/catalogs/CATALOG_ID/batch/silver" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scope": "all"}'

Silver result structure

{
  "results": [
    {
      "productId": "prod_abc",
      "status": "success",
      "fieldsNormalized": 4,
      "duplicateOf": null,
      "urlsValidated": 3
    },
    {
      "productId": "prod_def",
      "status": "success",
      "fieldsNormalized": 2,
      "duplicateOf": "prod_xyz",
      "urlsValidated": 1
    },
    {
      "productId": "prod_ghi",
      "status": "error",
      "error": "Brand not found: 'UnknownBrand'"
    }
  ],
  "processed": 3,
  "duration_ms": 1240
}
FieldDescription
status"success" or "error"
fieldsNormalizedNumber of fields that were transformed
duplicateOfIf a duplicate was detected, the ID of the original product
urlsValidatedNumber of image/media URLs checked for reachability

Running Gold (Analyze)

Gold scores products on a 0–100 scale across 7 stages, and produces a gap list of fields that would most improve the score.

Via UI

  1. Select products (or use Select All)
  2. Click Analyze
  3. A progress bar shows: Analyzed X / Y products
  4. When complete, each product card shows a score badge (0–100)
  5. Click any product to see the full gap breakdown

Via API

# Analyze a selection
curl -X POST "https://app.alana.shopping/api/workspace/WORKSPACE_ID/catalogs/CATALOG_ID/batch/gold" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productIds": ["prod_abc", "prod_def"],
    "scope": "selection"
  }'

# Analyze entire catalog
curl -X POST "https://app.alana.shopping/api/workspace/WORKSPACE_ID/catalogs/CATALOG_ID/batch/gold" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scope": "all"}'

Gold result structure

{
  "results": [
    {
      "productId": "prod_abc",
      "status": "success",
      "score": 82,
      "gaps": ["secondaryImages", "gtin"],
      "missingFields": ["gtin"]
    },
    {
      "productId": "prod_def",
      "status": "success",
      "score": 41,
      "gaps": ["description", "gtin", "brand", "images"],
      "missingFields": ["description", "gtin"]
    }
  ],
  "catalogSummary": {
    "avgScore": 61.5,
    "scoreDistribution": {
      "excellent": 12,
      "good": 34,
      "warning": 28,
      "poor": 8
    },
    "topGaps": ["gtin", "description", "secondaryImages"]
  }
}
FieldDescription
score0–100 optimization score
gapsFields ordered by score impact (highest impact first)
missingFieldsFields completely absent from the product
catalogSummary.topGapsMost common gaps across all products
catalogSummary.scoreDistributionCount per threshold band

Progress tracking

For large catalogs, batch operations run asynchronously. Track progress via:
  • UI — live progress bar updates every 2 seconds
  • API — poll the job status endpoint:
curl "https://app.alana.shopping/api/workspace/WORKSPACE_ID/catalogs/CATALOG_ID/batch/JOB_ID/status" \
  -H "Authorization: Bearer YOUR_API_KEY"

Best practices

Gold scores rely on normalized data. Always run Silver first to ensure brands and categories are linked before scoring.
The catalogSummary.topGaps field tells you the most common gaps across your entire catalog. Address these systematically rather than product-by-product.
Processing 10,000+ products can take several minutes. Use the API to trigger batch jobs from a scheduled task during low-traffic hours.
After filling gaps, re-run Gold only on the products you edited (use scope: "selection" with productIds) rather than the entire catalog.
Last modified on March 18, 2026