Documentation · Troubleshooting

Import Errors

This document covers failures, partial results, data issues and validation steps for the vehicle import process in the ADP Car Market Hub plugin.

When to use this document

Read this document when:

  • A manual import or an automatic import run completes but fewer vehicles than expected appear in WordPress.
  • Vehicle data (title, price, description, fields) is incorrect or missing after import.
  • The import log shows errors for specific listings.
  • Vehicles are not being updated even though the listing data has changed in AutoScout24.
  • Vehicles that were removed from AutoScout24 are still present in WordPress (or vice versa).

If the import produces no results at all and the log contains authentication or HTTP errors, start with API Connection Errors first.

Overview

The import process fetches active vehicle listings from the AutoScout24 API for each configured seller ID and creates or updates WordPress posts of the custom post type as24ci_car. Each run reports counts for inserted, updated, skipped and error outcomes.

The importer applies the following filters automatically:

  • Status filter: only listings with status = activated are imported. Inactive or deactivated listings are skipped.
  • Live filter: only listings with live = true (or where the field is absent) are imported. Unlive listings are skipped.

Change detection is used to avoid unnecessary updates:

  • If the API response includes a lastModifiedDate field and it matches the value stored during the last import, the vehicle is skipped (counted as "skipped").
  • If lastModifiedDate is absent, the plugin falls back to a content hash. If the hash is unchanged, the vehicle is skipped.

Images are handled separately. If the image queue mode is enabled (on by default for cron and REST runs), only the first image per vehicle is downloaded immediately. Remaining images are placed in an asynchronous queue and downloaded by a background worker. See Image Import Errors for image-specific issues.

Prerequisites

  • API connection is working. Verify this on the System Status page before investigating import issues.
  • At least one seller ID is configured in the plugin settings.
  • The importer has permission to write posts and upload media. See Permission Errors if access errors appear in the log.

Diagnostic steps

Step 1: Check the last run result

  1. Go to the plugin's admin dashboard or System & Help tab.
  2. Look at the last import run time and the result counts: inserted, updated, skipped, errors.
  3. A high "skipped" count is normal when change detection is active and most listings have not changed since the last run.
  4. A non-zero "errors" count indicates that specific listings failed. Proceed to Step 2.

Step 2: Read the import log

Open the plugin log file at:

wp-content/uploads/as24ci-logs/adp-car-market-hub.log

Search for lines containing error, failed or the specific listing ID you are investigating. Useful patterns to search for:

  • get_listing_details error – the plugin could not fetch the full detail for a specific listing.
  • wp_insert/wp_update error – WordPress returned an error when saving the post.
  • Import runner – summary lines at the start and end of each run.
  • Hard delete FAILED – a vehicle deletion during full sync could not complete.
  • Full sync skipped – the full sync safety guard fired because no remote listings were returned.

If verbose logging is enabled (default), you will also see per-vehicle lines such as:

Import vehicle {listing_id} (seller {seller_id}) begin.
Import vehicle {listing_id} result=inserted.
Import vehicle {listing_id} result=skipped.

Step 3: Verify listing status in AutoScout24

Listings that are skipped by the importer because they are inactive or not live will not appear in the import log as errors; they are silently excluded. If a vehicle is present in AutoScout24 but not imported:

  1. Confirm the listing status is activated in the AutoScout24 management interface.
  2. Confirm the listing is marked as live.
  3. Verify that the listing belongs to a seller ID that is configured in the plugin settings.

Step 4: Check the vehicle count cap

If automatic (cron or REST) imports are configured, a maximum vehicle count per run may be set. When this limit is reached, the run stops and the log records a "vehicle limit reached" message. Remaining vehicles will be processed on the next run.

To verify:

  1. Go to the Import & Limits tab in the plugin settings.
  2. Check the Max vehicles per cron run setting. A value of 0 means unlimited.
  3. If the limit is lower than your total catalogue size, increase it or leave it at 0 to allow unlimited processing.

Note: change detection means that, in practice, most vehicles are skipped on each run. A moderate limit is generally sufficient unless you have a very large catalogue with frequent listing changes.

Step 5: Verify the seller ID configuration

  1. Go to the plugin Settings tab.
  2. Confirm that the Seller ID(s) field contains the correct IDs, one per line or comma-separated.
  3. If multiple seller IDs are configured, confirm each is active and accessible with the configured credentials.

Step 6: Check for a stale import lock

An import lock transient (as24ci_cron_import_running) prevents overlapping runs. If a previous run was interrupted without releasing the lock, subsequent runs will be blocked for up to 40 minutes. After that period the lock is automatically cleared and the next run proceeds.

If you need to clear the lock immediately:

  • Use a WordPress transient management plugin or WP-CLI to delete the transient as24ci_cron_import_running.
  • Or wait for the 40-minute lock TTL to expire.

Step 7: Investigate data quality issues

If a vehicle is imported but its data is incorrect or incomplete:

  1. Check the log for any wp_insert/wp_update error entries for that listing ID.
  2. Verify the raw API response for the listing using the AutoScout24 API documentation or the API provider's developer tools.
  3. Check whether the field in question is mapped by the plugin. The plugin maps standard AutoScout24 listing fields to WordPress post meta. Custom or non-standard fields may not be mapped. Verify this behavior in the current plugin version before publishing.
  4. If AI-generated content is enabled and an AI lock (_as24ci_ai_locked = yes) has been set on a post, the import will not overwrite post_content or post_excerpt for that vehicle. This is by design to preserve manually curated descriptions.

Configuration reference

SettingEffect on import
Seller ID(s)Determines which seller accounts are queried. Required.
Default post statusNew vehicles are created as publish or draft. Fresh installations are seeded with draft (safe first-setup default) so you can verify mapping and layout before publishing; change it to publish in the Automation settings when you are ready.
Default post authorWordPress user assigned as author of imported posts.
Import imagesWhen disabled, no images are downloaded. Default: enabled.
Max images per vehicleLimits how many images are downloaded per vehicle. 0 = no limit.
Max vehicles per cron runLimits how many vehicles are processed per automated run. 0 = unlimited.
Image queue modeWhen enabled, only the first image is downloaded immediately; remaining images are queued. Default: enabled for cron/REST runs.
Full syncWhen enabled, vehicles no longer present in AutoScout24 are deleted from WordPress after each import. Default: disabled.

Operational notes

  • The importer tracks _as24ci_last_modified and _as24ci_content_hash post meta values for each vehicle to detect changes. If these meta values are missing or corrupted, the next run will treat the vehicle as changed and perform a full update.
  • The _as24ci_listing_id post meta value is used to match remote listings to local posts. If this meta is missing from a post, the importer will create a duplicate instead of updating the existing post.
  • Full sync (deletion of stale vehicles) is only executed when no vehicle limit was reached during the run. If a limit stops the run early, full sync is skipped to avoid incorrectly deleting vehicles that were simply not reached in that run.
  • Full sync includes a safety guard: if the remote listing set returned by the API is empty, deletion is skipped entirely to prevent accidental removal of all local vehicles.
  • The import runs with an execution time limit of 300 seconds (5 minutes) when triggered by WP-Cron or the REST endpoint. On hosting environments that restrict set_time_limit, this may not take effect. Very large catalogues may require server-cron execution.

Troubleshooting

SymptomLikely causeCheck
Import returns 0 inserted, 0 updatedAPI returns no active/live listings for the sellerVerify listing status in AutoScout24
All vehicles show as "skipped"Change detection: nothing has changed since last runNormal behavior; verify by changing a listing in AutoScout24 and re-running
Non-zero error count in last runSpecific listings failed to importCheck log for get_listing_details error or wp_insert/wp_update error
Vehicle count lower than expectedInactive or unlive listings are filtered outConfirm listing status in AutoScout24
Import stops before processing all vehiclesMax vehicles per run limit reachedIncrease or remove the limit in Import & Limits settings
Import does not startImport lock is still active from a previous runWait 40 minutes or delete the as24ci_cron_import_running transient
Vehicle data is not updatingChange detection finds no changeVerify lastModifiedDate or content has actually changed in the API response
AI content is overwritten after importAI lock is not set on the postEnable AI lock on the post, or the AI automation will set it after generating content
AI content is not updatedAI lock is active (_as24ci_ai_locked = yes)This is by design; remove the lock meta to allow the next import to refresh content
Vehicles deleted from WordPress unexpectedlyFull sync is enabled and the API returned an empty or partial setCheck full sync settings and the log for "Full sync completed" entries