{"id":268720,"date":"2025-12-30T02:12:57","date_gmt":"2025-12-30T02:12:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/keygin-sync\/"},"modified":"2026-03-12T19:05:36","modified_gmt":"2026-03-12T19:05:36","slug":"keygin-erp-sync","status":"publish","type":"plugin","link":"https:\/\/de.wordpress.org\/plugins\/keygin-erp-sync\/","author":23423773,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.8","stable_tag":"1.0.8","tested":"6.9.4","requires":"5.8","requires_php":"8.2","requires_plugins":null,"header_name":"Keygin Erp Sync","header_author":"HasselCode","header_description":"Automatic synchronization between WooCommerce and Contifico ERP.","assets_banners_color":"576a84","last_updated":"2026-03-12 19:05:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/hasselcode.com\/producto\/keygin-erp-sync-pro\/","header_author_uri":"https:\/\/hasselcode.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":205,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"thiago95","date":"2025-12-30 02:18:16"},"1.0.6":{"tag":"1.0.6","author":"thiago95","date":"2026-02-20 01:24:28"},"1.0.7":{"tag":"1.0.7","author":"thiago95","date":"2026-03-12 00:07:03"},"1.0.8":{"tag":"1.0.8","author":"thiago95","date":"2026-03-12 19:05:36"}},"upgrade_notice":{"1.0.8":"<p>This release includes important security fixes, performance optimizations, and compliance updates required for WordPress.org guidelines. All users are strongly recommended to upgrade.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3429373,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3429373,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3429373,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3429373,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6","1.0.7","1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.PNG":{"filename":"screenshot-1.PNG","revision":3429373,"resolution":"1","location":"assets","locale":""},"screenshot-2.PNG":{"filename":"screenshot-2.PNG","revision":3429373,"resolution":"2","location":"assets","locale":""},"screenshot-3.PNG":{"filename":"screenshot-3.PNG","revision":3429373,"resolution":"3","location":"assets","locale":""},"screenshot-4.PNG":{"filename":"screenshot-4.PNG","revision":3429373,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"API settings and synchronization options","2":"Connection status screen","3":"Logs viewer","4":"Active scheduled tasks display"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[253004,12827,6601,171167,286],"plugin_category":[45],"plugin_contributors":[253005],"plugin_business_model":[],"class_list":["post-268720","plugin","type-plugin","status-publish","hentry","plugin_tags-contifico","plugin_tags-erp","plugin_tags-inventory","plugin_tags-stock-sync","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-thiago95","plugin_committers-thiago95"],"banners":{"banner":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/banner-772x250.png?rev=3429373","banner_2x":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/banner-1544x500.png?rev=3429373","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/icon-128x128.png?rev=3429373","icon_2x":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/icon-256x256.png?rev=3429373","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/screenshot-1.PNG?rev=3429373","caption":"API settings and synchronization options"},{"src":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/screenshot-2.PNG?rev=3429373","caption":"Connection status screen"},{"src":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/screenshot-3.PNG?rev=3429373","caption":"Logs viewer"},{"src":"https:\/\/ps.w.org\/keygin-erp-sync\/assets\/screenshot-4.PNG?rev=3429373","caption":"Active scheduled tasks display"}],"raw_content":"<!--section=description-->\n<p><strong>Keygin Erp Sync<\/strong> is a WordPress plugin that integrates <strong>Contifico<\/strong> with <strong>WooCommerce<\/strong>, allowing store owners to automatically synchronize products, inventory levels, and stock output movements.<\/p>\n\n<p>The plugin is designed for use with the Contifico API available in Ecuador.<\/p>\n\n<p>Key capabilities include:<\/p>\n\n<ul>\n<li>Synchronizing products from Contifico to WooCommerce<\/li>\n<li>Automatically updating stock levels based on Contifico inventory<\/li>\n<li>Updating product name, description, and SKU<\/li>\n<li>Creating products in WooCommerce when they do not exist<\/li>\n<li>Registering inventory output movements in Contifico when a WooCommerce order is completed<\/li>\n<li>Supporting real warehouses configured in Contifico<\/li>\n<li>Detailed logging for troubleshooting<\/li>\n<\/ul>\n\n<p>This plugin is intended for stores that need WooCommerce to always reflect the real inventory available in Contifico, reducing manual work and preventing stock inconsistencies.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><p><strong>Product synchronization<\/strong><\/p>\n\n<ul>\n<li>Name<\/li>\n<li>Description<\/li>\n<li>SKU<\/li>\n<li>Stock<\/li>\n<li>Automatic creation of missing products<\/li>\n<\/ul><\/li>\n<li><p><strong>Inventory synchronization<\/strong><\/p>\n\n<ul>\n<li>Contifico inventory has priority<\/li>\n<li>WooCommerce stock is adjusted automatically<\/li>\n<\/ul><\/li>\n<li><p><strong>Automatic stock outputs<\/strong><\/p>\n\n<ul>\n<li>Inventory output is registered in Contifico when an order is completed in WooCommerce<\/li>\n<\/ul><\/li>\n<li><p><strong>Warehouse support<\/strong><\/p>\n\n<ul>\n<li>Retrieves warehouses from the Contifico API<\/li>\n<li>Allows selecting the warehouse used for stock and outputs<\/li>\n<\/ul><\/li>\n<li><p><strong>Scheduled synchronization<\/strong><\/p>\n\n<ul>\n<li>Runs every 12 hours, or 24 hours<\/li>\n<li>Uses a custom cron system<\/li>\n<\/ul><\/li>\n<li><p><strong>Logging system<\/strong><\/p>\n\n<ul>\n<li>Event logs visible in the admin panel<\/li>\n<li>Detailed logs stored as files<\/li>\n<li>Logs are removed automatically on uninstall<\/li>\n<\/ul><\/li>\n<li><p><strong>Admin interface<\/strong><\/p>\n\n<ul>\n<li>Connection status display<\/li>\n<li>Synchronization frequency display<\/li>\n<li>Logs<\/li>\n<li>Clear logs button<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Contifico API to synchronize products, inventory levels,\nwarehouses, and register inventory output movements when WooCommerce orders are completed.<\/p>\n\n<p>API Endpoint:\nhttps:\/\/api.contifico.com\/sistema\/api\/v1\/<\/p>\n\n<p>This endpoint is used to retrieve and send data as required for product and inventory\nsynchronization. No data is sent until the site administrator configures valid API\ncredentials within the plugin settings.<\/p>\n\n<p>Data sent:\n- API Key and API Token (authentication)\n- Product identifiers and inventory data\n- Order-related data required to register stock outputs<\/p>\n\n<p>When data is sent:\n- During scheduled automatic synchronization\n- When a WooCommerce order is marked completed<\/p>\n\n<p>Service provider:\nContifico (by Siigo)<\/p>\n\n<p>Terms of service:\nhttps:\/\/www.siigo.com\/ec\/terminos-y-condiciones\/<\/p>\n\n<p>Privacy policy:\nhttps:\/\/www.siigo.com\/ec\/politicas-de-uso\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the plugin as a <code>.zip<\/code> file.<\/li>\n<li>Go to WordPress Dashboard \u2192 Plugins \u2192 Add New.<\/li>\n<li>Click \u201cUpload Plugin\u201d and select the downloaded file.<\/li>\n<li>Install and activate the plugin.<\/li>\n<li>Open the <strong>Keygin Erp Sync<\/strong> menu in the admin panel.<\/li>\n<li>Enter your <strong>Contifico API Key<\/strong> and <strong>API Token<\/strong>.<\/li>\n<li>Click <strong>Test Connection<\/strong>.<\/li>\n<li>Select the warehouse to be used.<\/li>\n<li>Save the settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20with%20contifico%20ecuador%3F\"><h3>Does this plugin work with Contifico Ecuador?<\/h3><\/dt>\n<dd><p>Yes. The plugin was built specifically for the Contifico Ecuador API.<\/p><\/dd>\n<dt id=\"are%20product%20prices%20synchronized%3F\"><h3>Are product prices synchronized?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses Contifico price types.<br \/>\n    pvp1 is used as the regular price and <code>pvp2<\/code> as the sale price.<\/p><\/dd>\n<dt id=\"does%20the%20contifico%20api%20support%20pagination%3F\"><h3>Does the Contifico API support pagination?<\/h3><\/dt>\n<dd><p>No. The API returns all products in a single response.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20product%20does%20not%20exist%20in%20woocommerce%3F\"><h3>What happens if a product does not exist in WooCommerce?<\/h3><\/dt>\n<dd><p>The plugin creates it automatically with name, description, SKU, and stock.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20api%20connection%20fails%3F\"><h3>What happens if the API connection fails?<\/h3><\/dt>\n<dd><p>The error is logged and automatic synchronization is disabled to avoid unexpected behavior.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20generate%20logs%3F\"><h3>Does the plugin generate logs?<\/h3><\/dt>\n<dd><p>Yes. Logs are available in the admin interface and stored as files.<\/p><\/dd>\n<dt id=\"can%20logs%20be%20deleted%3F\"><h3>Can logs be deleted?<\/h3><\/dt>\n<dd><p>Yes. Logs can be deleted manually and are also removed when the plugin is uninstalled.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.8 (2026-03-12)<\/h4>\n\n<ul>\n<li>Fixed: Missing translators comments in all translation strings with placeholders.<\/li>\n<li>Fixed: Output escaping in log table pagination.<\/li>\n<li>Fixed: Direct database queries replaced with WP_Query and get_posts with pagination.<\/li>\n<li>Fixed: Removed deprecated load_plugin_textdomain() call.<\/li>\n<li>Fixed: Nonce verification added to all form submissions and AJAX requests.<\/li>\n<li>Fixed: Variables prefixed with 'keygin_' to prevent global namespace collisions.<\/li>\n<li>Fixed: Optimized meta queries with no_found_rows, cache disabling, and type hints.<\/li>\n<li>Fixed: Replaced unlink() with wp_delete_file() in uninstall script.<\/li>\n<li>Fixed: Added proper validation and unslash for $_SERVER['REQUEST_TIME_FLOAT'].<\/li>\n<li>Fixed: set_time_limit() now used with proper capability checks.<\/li>\n<li>Removed: Debug functions (trigger_error, print_r) from production code.<\/li>\n<li>Improved: Performance of product and stock sync with chunk processing and transients.<\/li>\n<li>Improved: Admin settings page layout and select field options.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Security: Added translators comments for all translatable strings with placeholders<\/li>\n<li>Security: Improved output escaping across all admin views<\/li>\n<li>Security: Added nonce verification for all form submissions<\/li>\n<li>Security: Enhanced input sanitization and validation<\/li>\n<li>Fix: Corrected text domain mismatches in translation functions<\/li>\n<li>Fix: Replaced direct filesystem operations with WP_Filesystem methods<\/li>\n<li>Fix: Updated database queries to use prepared statements<\/li>\n<li>Tweak: Added proper prefixes to all global variables<\/li>\n<li>Tweak: Improved code organization and WordPress coding standards compliance<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Improvement: Refactored admin views into a modular structure. Added new \/partials directory containing header.php for the header section and log-table.php for displaying the sync logs table, improving code organization and maintainability.<\/li>\n<li>Improvement: Enhanced support information section with additional details and resources for users.<\/li>\n<li>Fix: Corrected translation file issues to ensure proper localization of all text strings.<\/li>\n<li>Tweak: Various minor UI improvements and adjustments across admin views for a cleaner and more consistent user experience.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Security: Added proper capability checks (current_user_can) across admin actions and UI components.<\/li>\n<li>Security: Improved nonce verification and input sanitization for admin forms.<\/li>\n<li>Admin: Hardened logs management screen without changing functionality.<\/li>\n<li>Admin: Improved safety when clearing logs and rendering notices.<\/li>\n<li>Admin: Added safeguards when loading admin assets.<\/li>\n<li>Code: Internal refactor to comply with WordPress Plugin Review guidelines.<\/li>\n<li>Code: No functional or behavioral changes introduced.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<p>(Current Development Version)\n- Security &amp; Compliance: Refactored codebase to fully comply with WordPress.org Plugin Directory Guidelines.\n- Admin UI: Replaced native JavaScript alert() usage with standard WordPress admin notices.\n- JavaScript: Rewrote admin JavaScript for improved structure, validation, and WordPress coding standards compliance.\n- Internationalization: Fixed and completed all translation strings. Added \/languages directory and ensured all user-facing strings (PHP and JavaScript) are fully translatable. JavaScript strings are localized using wp_localize_script().\n- Asset Loading: Removed inline  and  tags from PHP views. All scripts and styles are now correctly enqueued.\n- AJAX: Improved security, nonce validation, and error handling for the keygin_test_connection AJAX action.\n- General: Code cleanup, improved inline documentation, and adherence to WordPress PHP and JavaScript coding standards.<\/p>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed plugin internal slug to match the official WordPress.org slug: keygin-erp-sync<\/li>\n<li>No functional changes<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed unused Domain Path header to comply with Plugin Check recommendations<\/li>\n<li>No functional changes<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>WooCommerce integration with Contifico<\/li>\n<li>Product and stock synchronization<\/li>\n<li>Uses only original or GPL-compatible code<\/li>\n<li>API connection is established only after explicit administrator configuration<\/li>\n<\/ul>","raw_excerpt":"Automatically sync products and inventory from Contifico to WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/268720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=268720"}],"author":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thiago95"}],"wp:attachment":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=268720"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=268720"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=268720"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=268720"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=268720"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=268720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}