New Features

  • Background processing for submitted listings: New automated system monitors submitted listings in the background using Action Scheduler. Automatically checks listing status, respects API rate limits with intelligent throttling, handles 429 rate limit responses gracefully, and updates listing status once Amazon completes processing. Submitted listings automatically transition to “online” when approved or are flagged with detailed errors if issues are detected.
  • JSON delete feeds: Replaced legacy CSV product removal feed with unified JSON delete feed system for better SP-API compliance. Trash items now processed through same JSON feed pipeline as regular listings using DELETE operation type.

API & Performance Improvements

  • Improved rate limit handling for getItemOffers: Implemented exponential backoff with automatic retries (5, 10, 20 seconds) when rate limits hit. Optimized batch sizes from 19 to configurable smaller batches (default 10) and added dynamic delay adjustment based on rate limit detection.
  • Feeds page optimization: Excluded data column from database fetch on feeds list page, dramatically improving load times for large feed histories. Data column also excluded from search queries, reducing page load time by 80-90% for merchants with hundreds of feeds.
  • Throttling control improvements: Enhanced batch processing for pricing updates with configurable batch sizes and delays, proper 429 error handling with retry logic, and improved logging for debugging rate limit issues.

Bug Fixes

  • UTF-8 encoding in JSON feeds: All values now properly UTF-8 encoded before being added to JSON feeds, preventing database errors with special characters and accented characters in product data.
  • Array indexing in JSON feeds: Fixed arrays like bullet_point having gaps in indices (e.g., [0,1,4] instead of [0,1,2]). New reindexArrays() method ensures sequential indexing for bullet_point, generic_keyword, special_features, department, lifestyle, target_audience_keyword, ingredients, and image locator arrays.
  • EAN matching not finding matches: Corrected searchCatalogItems() to use only EAN identifier type when searching by EAN, instead of incorrectly including SKU in the search parameters.
  • Zero values in JSON feed data: Fixed JsonFeedDataBuilder class not being able to set value to 0. Zero values now properly preserved when explicitly set instead of being filtered as empty.
  • JSON feed data type handling: Improved handling of arrays and strings in JSON feed data processing to prevent type mismatches and submission errors.
  • RuntimeException during initAPI(): Added proper error handling for uncaught RuntimeException during API initialization. Method now returns false when it fails to initialize SP API client.
  • Product type exception handling: Added exception handler to the saving of ProductType objects to prevent complete operation failures when unexpected API responses occur.
  • Product-level SP-API attributes not saving: Fixed issue where product-level SP-API attributes weren’t being properly saved to the database.
  • Catalog search type safety: Added type checking to ensure $identifiers argument is a string when calling searchCatalogItems(), preventing type-related errors.
  • Schema access errors: Fixed “Call to a member function getSchema() on null” error by adding proper null checks.
  • Edit Profile page warnings: Fixed “Undefined array key” warning that appeared on the Edit Profile page.
  • CSV property mapping: Added mappings for some properties not included in the CSV map provided by Amazon.
  • Profile conversion mapping: Fixed External Product ID not getting mapped when converting profiles between formats.
  • Order update button: Prevented double-clicking on Update Orders buttons to avoid duplicate API calls.
  • Feeds page search: Restored search functionality on Feeds page that was broken by performance optimization.
  • Submitted listings auto-approval: Check listing errors action now automatically marks submitted listings as online if no issues are found.
  • LiLo feed type detection: Added debug code for troubleshooting LiLo feeds being created instead of JSON feeds.
  • PRODUCT type handling: Set request type to Offer when putListingsItem is called with the PRODUCT product type.

Technical Changes

  • Added amazon_product_types to required tables check during runtime initialization
  • Updated .gitignore and added .gitattributes for better repository management
  • Added deployment scripts for production releases
  • Removed console.log statements from production code
  • Deprecated CSV ProductRemoval feed builder in favor of JSON delete feeds
  • Enhanced logging for JSON feed generation and API rate limiting