Smart Sync in Shirely: What It Skips—and What It Does Not
“Smart Sync” can sound like a promise that every unchanged row in every import disappears from the workload. Shirely's behavior is intentionally narrower.
The skip-unchanged path applies to posts, pages, and public custom post types when the source has a mapped Record ID. WooCommerce products, taxonomy rows, and Matrix Mode rows are processed on every run.
That distinction matters when you plan performance, result counts, and repeat imports.
The three conditions for a skip
An unchanged row can be skipped only when all three conditions hold:
- The target is a post, page, or supported custom post type.
- The source row has a mapped Record ID.
- The relevant imported data is unchanged from the previously imported version.
If the Record ID is missing, the importer does not have the same stable same-store reference for this feature. If the row is a product or taxonomy, it follows a different processing path.
Use Record IDs only where they are meaningful. A WordPress ID from another installation is not a portable content identity.
Products are always processed
Product rows are not skipped by Smart Sync. A product import must still resolve identity, apply WooCommerce-specific fields, and handle relationships that can matter even when visible copy looks unchanged.
Use SKU as the normal cross-store product key. Matrix ID / External ID can identify multilingual Matrix records. Shirely 1.3 adds catalog provenance so a foreign exported ID is not blindly treated as local, but natural keys and destination QA still matter.
If you re-import a product file, expect matched rows to be processed. Do not interpret a nonzero update count as proof that the importer created duplicates.
Categories and Matrix rows are also processed
Taxonomies need hierarchy and term relationships. Matrix Mode also handles language-specific content and WPML relationships. These rows are processed rather than passed through the post/page Smart Sync skip.
For translated categories, use stable source_id and parent_source_id. For multilingual products, use the documented Matrix fields and stable source identity.
Test a repeat import on staging and inspect the actual terms, products, and language switching.
Smart Sync is not a matching strategy
Matching answers “Which existing record does this row belong to?” Smart Sync answers “For this eligible, already identified post-like record, is there an unchanged write we can skip?”
Keep those decisions separate. A bad matching key cannot be repaired by Smart Sync, and the phrase should not be used as a duplicate-prevention guarantee.
Automation changes when the import runs
The earlier manual-only description is no longer current. Shirely 1.3 can save supported imports as Automation slots and execute them with Run now, WP-Cron, or WP-CLI.
Automation does not broaden Smart Sync. The same content-type and Record ID boundaries apply. WP-Cron also does not guarantee an exact start time; use system cron with WP-CLI when timing must be predictable.
Do not overlap jobs that can modify the same products, terms, or WPML/WCML groups. A lock for one Automation slot is not global serialization for every wizard, slot, CLI, and cron process.
Read result counts in context
For a post/page/CPT job, skipped unchanged rows can be an expected sign that the source has not changed. For a product or Matrix job, processing the row again is expected.
Use preview, result counts, warnings, Run History, and a sample of destination records together. No single number proves that the whole catalog is correct.
For eligible content workflows, see the importing-data documentation and its supported data types. Catalog behavior is covered in the WooCommerce product CSV guide.