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 = activatedare 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
lastModifiedDatefield and it matches the value stored during the last import, the vehicle is skipped (counted as "skipped"). - If
lastModifiedDateis 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
- Go to the plugin's admin dashboard or System & Help tab.
- Look at the last import run time and the result counts: inserted, updated, skipped, errors.
- A high "skipped" count is normal when change detection is active and most listings have not changed since the last run.
- 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:
- Confirm the listing status is
activatedin the AutoScout24 management interface. - Confirm the listing is marked as live.
- 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:
- Go to the Import & Limits tab in the plugin settings.
- Check the Max vehicles per cron run setting. A value of
0means unlimited. - If the limit is lower than your total catalogue size, increase it or leave it at
0to 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
- Go to the plugin Settings tab.
- Confirm that the Seller ID(s) field contains the correct IDs, one per line or comma-separated.
- 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:
- Check the log for any
wp_insert/wp_update errorentries for that listing ID. - Verify the raw API response for the listing using the AutoScout24 API documentation or the API provider's developer tools.
- 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.
- If AI-generated content is enabled and an AI lock (
_as24ci_ai_locked = yes) has been set on a post, the import will not overwritepost_contentorpost_excerptfor that vehicle. This is by design to preserve manually curated descriptions.
Configuration reference
| Setting | Effect on import |
|---|---|
| Seller ID(s) | Determines which seller accounts are queried. Required. |
| Default post status | New 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 author | WordPress user assigned as author of imported posts. |
| Import images | When disabled, no images are downloaded. Default: enabled. |
| Max images per vehicle | Limits how many images are downloaded per vehicle. 0 = no limit. |
| Max vehicles per cron run | Limits how many vehicles are processed per automated run. 0 = unlimited. |
| Image queue mode | When enabled, only the first image is downloaded immediately; remaining images are queued. Default: enabled for cron/REST runs. |
| Full sync | When enabled, vehicles no longer present in AutoScout24 are deleted from WordPress after each import. Default: disabled. |
Operational notes
- The importer tracks
_as24ci_last_modifiedand_as24ci_content_hashpost 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_idpost 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
| Symptom | Likely cause | Check |
|---|---|---|
| Import returns 0 inserted, 0 updated | API returns no active/live listings for the seller | Verify listing status in AutoScout24 |
| All vehicles show as "skipped" | Change detection: nothing has changed since last run | Normal behavior; verify by changing a listing in AutoScout24 and re-running |
| Non-zero error count in last run | Specific listings failed to import | Check log for get_listing_details error or wp_insert/wp_update error |
| Vehicle count lower than expected | Inactive or unlive listings are filtered out | Confirm listing status in AutoScout24 |
| Import stops before processing all vehicles | Max vehicles per run limit reached | Increase or remove the limit in Import & Limits settings |
| Import does not start | Import lock is still active from a previous run | Wait 40 minutes or delete the as24ci_cron_import_running transient |
| Vehicle data is not updating | Change detection finds no change | Verify lastModifiedDate or content has actually changed in the API response |
| AI content is overwritten after import | AI lock is not set on the post | Enable AI lock on the post, or the AI automation will set it after generating content |
| AI content is not updated | AI 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 unexpectedly | Full sync is enabled and the API returned an empty or partial set | Check full sync settings and the log for "Full sync completed" entries |