Title: Mercantor
Author: JaJaSolutions
Published: <strong>25 نوامبر 2025</strong>
Last modified: 26 آگوست 2026

---

جستجوی افزونه‌ها

![](https://ps.w.org/mercantor/assets/icon-256x256.png?rev=3402420)

# Mercantor

 توسط [JaJaSolutions](https://profiles.wordpress.org/jajasolutions/)

[دانلود](https://downloads.wordpress.org/plugin/mercantor.1.3.0.zip)

 * [جزئیات](https://fa.wordpress.org/plugins/mercantor/#description)
 * [نقد و بررسی‌ها](https://fa.wordpress.org/plugins/mercantor/#reviews)
 *  [نصب](https://fa.wordpress.org/plugins/mercantor/#installation)
 * [توسعه](https://fa.wordpress.org/plugins/mercantor/#developers)

 [پشتیبانی](https://wordpress.org/support/plugin/mercantor/)

## توضیحات

Mercantor is a powerful WordPress plugin that automatically syncs your WooCommerce
products to Google Merchant Center, making it easy to advertise on Google Shopping
and Google Ads.

#### Key Features

 * **Automatic Product Sync** – Products are automatically synced to Google Merchant
   Center when created or updated
 * **Real-time Change Detection** – Hash-based diffing only syncs changed products,
   saving API quota
 * **Multilingual & Multi-currency Support** – Full support for WPML, Polylang, 
   TranslatePress, and WooCommerce Multilingual
 * **Multiple Target Markets** – Sell to multiple countries with different languages
   and currencies
 * **Smart Error Handling** – Diagnostics inbox with grouped Google issues and actionable
   messages
 * **Transformation Rules** – Map and transform attributes with a rule builder and
   presets
 * **Product Feed Export** – Generate tokenized XML and CSV feeds for external tools
 * **Scheduled Sync** – Configure automatic hourly, twice daily, daily, or weekly
   sync schedules
 * **Product Identifier Management** – Track GTIN, MPN, and Brand coverage with 
   bulk import functionality
 * **GTIN Bulk Import** – Import product identifiers via CSV with SKU or product
   ID matching
 * **Background Processing** – All syncing happens in the background using WordPress
   Action Scheduler
 * **OAuth 2.0 Integration** – Secure Google account connection
 * **Guided Setup Wizard** – Step-by-step configuration to get you started quickly
 * **WP-CLI Tools** – Sync, validate, and fetch diagnostics from the command line

#### Perfect For

 * E-commerce stores using WooCommerce
 * Multi-language and multi-currency stores
 * International sellers with multiple target markets
 * Stores that need reliable Google Shopping integration
 * Merchants who want automated product feed management

#### Requirements

 * WordPress 6.5 or higher
 * WooCommerce 8.5 or higher
 * PHP 8.1 or higher
 * Google Merchant Center account

#### Documentation & Support

 * [Documentation](https://jajasolutions.de/mercantor/)
 * [Support Forum](https://wordpress.org/support/plugin/mercantor/)

### External Services

Mercantor connects to Google services that you explicitly authorize in order to 
publish and monitor your Merchant Center listings.

#### Google Merchant Center API

 * **Endpoint**: https://merchantapi.googleapis.com
 * **Purpose**: Creates, updates, and inspects Google Merchant Center product listings
   on your behalf.
 * **Data sent**: Product identifiers, titles, descriptions, image URLs, pricing,
   availability, shipping settings, and other product attributes required by Google.
   Customer or order information is never transmitted.
 * **When data is sent**: During the guided connection flow and whenever automated
   or manual sync jobs run.
 * **Authentication**: OAuth 2.0 using the `https://www.googleapis.com/auth/content`
   scope. Access and refresh tokens are stored securely in your WordPress database
   and can be revoked from the Mercantor settings page.
 * **Terms of Service**: https://policies.google.com/terms
 * **Privacy Policy**: https://policies.google.com/privacy

### Privacy Policy

Mercantor connects to the Google Merchant Center API only after you complete the
OAuth consent flow inside the plugin. We transmit product catalog data (titles, 
descriptions, pricing, availability, images, and required attributes) so your listings
stay in sync with Google. Customer, order, and analytics data are never sent. OAuth
credentials are stored in the WordPress options table using secure WordPress APIs
and can be revoked at any time through Mercantor  Settings  Disconnect Google.
 
On uninstall, Mercantor drops its custom database tables and deletes its options(
including OAuth tokens, feed tokens, and setup data) so no plugin data is retained.

### Roadmap / Upcoming

 * Stricter Content Security Policy (CSP) rollout for the admin app
 * Opt-in telemetry with diagnostics export bundle (logs, payload samples, system
   info)
 * Scheduled health checks and automated diagnostics refresh
 * In-product fix recipes and support macros for top Merchant Center errors
 * Optional GA4 tracking toggle with consent-mode compatibility

### Credits

Built with ❤️ for the WordPress and WooCommerce community.

## عکس‌های صفحه

[⌊Dashboard with sync statistics and real-time updates⌉⌊Dashboard with sync statistics
and real-time updates⌉[

Dashboard with sync statistics and real-time updates

[⌊Setup wizard for easy configuration⌉⌊Setup wizard for easy configuration⌉[

Setup wizard for easy configuration

[⌊Manual sync with real-time progress tracking⌉⌊Manual sync with real-time progress
tracking⌉[

Manual sync with real-time progress tracking

[⌊Product feed URL generation⌉⌊Product feed URL generation⌉[

Product feed URL generation

## نصب

 1. Upload the `mercantor` folder to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Navigate to ‘Mercantor’ in the WordPress admin menu
 4. Follow the setup wizard to connect your Google Merchant Center account
 5. Configure your target markets and languages
 6. Start syncing products!

#### From WordPress.org

 1. Go to Plugins > Add New
 2. Search for “Mercantor”
 3. Click “Install Now” and then “Activate”
 4. Follow the setup wizard

## سوالات متداول

### Do I need a Google Merchant Center account?

Yes, you need an active Google Merchant Center account to use this plugin.

### Does this work with variable products?

Yes, Mercantor fully supports variable products and will sync all variations.

### Can I sync to multiple countries?

Yes, you can configure multiple target countries and languages in the settings.

### Is my Google account secure?

Yes, we use OAuth 2.0 for secure authentication. Your credentials are never stored.

### What happens if a product has errors?

Mercantor will show you detailed error messages with suggested fixes in the Issues
Inbox.

### Can I export product feeds?

Yes, you can generate tokenized XML and CSV feed URLs for external tools.

### Does this work with multisite?

Currently, Mercantor is designed for single-site installations.

## نقد و بررسی‌ها

نقد و بررسی‌ای برای این افزونه یافت نشد.

## توسعه دهندگان و همکاران

“Mercantor” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

 *   [ JaJaSolutions ](https://profiles.wordpress.org/jajasolutions/)

[ترجمه “Mercantor” به زبان شما.](https://translate.wordpress.org/projects/wp-plugins/mercantor)

### علاقه‌ مند به توسعه هستید؟

[کد را مرور کنید](https://plugins.trac.wordpress.org/browser/mercantor/)، [مخزن SVN](https://plugins.svn.wordpress.org/mercantor/)
را بررسی کنید، یا از طریق [RSS](https://plugins.trac.wordpress.org/log/mercantor/?limit=100&mode=stop_on_copy&format=rss)
در [گزارش توسعه](https://plugins.trac.wordpress.org/log/mercantor/) مشترک شوید.

## گزارش تغییرات

#### 1.3.0

 * **BREAKING (Google): Migrated to Merchant API v1.** Google sunset the v1beta 
   endpoints on 2026-02-28, so every sync, diagnostics and connection call in 1.2.0
   failed. Products are now uploaded as productInputs into a Merchant Center data
   source, which Mercantor creates automatically on first sync.
 * NEW: Product deletions are now propagated to Merchant Center. Previously a delete
   job was queued but never executed a delete call, so removed products stayed in
   Google indefinitely.
 * NEW: Variation edits trigger a sync. WooCommerce fires woocommerce_update_product_variation
   from a separate data store, which was not hooked, so price and stock changes 
   on a single variation were never uploaded.
 * NEW: Automatic retry with exponential backoff for rate limits and server errors,
   instead of marking the product as permanently failed.
 * NEW: Sync and validation failures are written to the diagnostics inbox with their
   actual message, plus a last_error column on the items table.
 * NEW: WooCommerce HPOS and Cart/Checkout Blocks compatibility is now declared,
   so the plugin no longer shows as incompatible.
 * NEW: Admin notice when Google revokes access, instead of silently failing every
   sync.
 * FIX: Fatal error in the scheduled diagnostics job — DiagnosticsManager was constructed
   with four arguments in the wrong order.
 * FIX: Fatal error when importing Google issues — DiagnosticsManager called ErrorsDAO::
   insert() and ::delete_by_item_id(), neither of which existed.
 * FIX: Multilingual extraction never ran. ProductExtractor::extract_single() was
   private, so the MultilingualProductExtractor override was silently ignored and
   localized titles, descriptions, permalinks and images were dropped. Affected 
   TranslatePress most severely.
 * FIX: Product feed was always empty — the query selected three columns that do
   not exist in the schema.
 * FIX: XML feed lost every “g:” prefix because addChild() was called without a 
   namespace URI, producing a feed Merchant Center cannot read.
 * FIX: A “&” in the shop name produced an empty feed title and a PHP warning; channel
   values are now XML-escaped.
 * FIX: Feed no longer reports the SKU as a GTIN. Identifiers come from GTINResolver,
   and identifier_exists is set when none is found.
 * FIX: Feed now exports variations with their own price, stock and images instead
   of only the parent product.
 * FIX: Concurrent Action Scheduler workers no longer refresh the OAuth token simultaneously;
   the refresh is locked and happens 120 seconds before expiry.
 * FIX: Token encryption upgraded to authenticated AES-256-GCM with a format marker.
   Undecryptable values (for example after a salt rotation) now report “not connected”
   instead of sending a corrupted bearer token. Existing AES-256-CBC values are 
   still readable.
 * FIX: Encryption failure no longer falls back to storing the token in plain text.
 * FIX: ItemsDAO::update_status() keyed on the numeric row id while every caller
   passed the item_id string, so status updates hit no row.
 * FIX: ItemsDAO::upsert() reported failure on successful updates because insert_id
   is 0 on the ON DUPLICATE KEY UPDATE branch.
 * FIX: SettingsManager::set() reported failure when the value was unchanged.
 * FIX: Feed export token and OAuth state are compared with hash_equals(); the public
   feed endpoint is throttled.
 * FIX: Diagnostics now paginates through the whole catalog instead of reading only
   the first page.
 * FIX: Schema migrations run after a plugin update, not only on activation.
 * FIX: JavaScript strings are translatable — wp_set_script_translations() was never
   called.
 * IMPROVED: Action Scheduler tuning is opt-in and only raises the batch size. The
   previous filters changed concurrency and time limits globally for WooCommerce
   and every other plugin on the site.
 * IMPROVED: Admin bundle uses createRoot from @wordpress/element rather than window.
   ReactDOM, which React 19 will no longer provide.
 * IMPROVED: Tested up to WordPress 7.1 and WooCommerce 11.0; declares Requires 
   Plugins: woocommerce.
 * IMPROVED: Namespace casing unified; test suite and static analysis now run against
   the shipped source and pass.

#### 1.2.0

 * IMPROVED: Batch processing for product sync – eliminates memory issues on large
   catalogs
 * IMPROVED: Atomic batch upsert in ItemsDAO – resolves N+1 query performance bottleneck
 * IMPROVED: Paginated product queries with configurable batch size
 * IMPROVED: Extracted ContainerBuilder for cleaner plugin architecture
 * IMPROVED: Refactored sync_single_product into smaller, testable methods
 * IMPROVED: Immutable product transformation – prevents unintended DTO mutation
 * IMPROVED: React admin UI uses Context API instead of prop drilling
 * IMPROVED: Setup wizard fully typed – removed all unsafe `any` casts
 * IMPROVED: Accessible UI – ARIA labels for progress bars, keyboard-navigable issues
   inbox, semantic wizard stepper
 * IMPROVED: OAuth token encryption uses OPENSSL_RAW_DATA with graceful fallback
 * FIX: Transient-based polling replaced with direct status reads in SyncOrchestrator
 * FIX: get_pending_jobs_count() now correctly returns int instead of array
 * FIX: JSON decode errors handled gracefully in MerchantApiClient
 * FIX: PHP version requirement unified to 8.1 across all configuration files
 * FIX: empty(0) bug in ProductValidator price check
 * FIX: Memory leak from missing interval cleanup in IssuesInbox
 * FIX: Stale closure in SyncProgress resolved with useRef
 * FIX: Unsafe CSV parsing replaced with proper delimiter handling
 * FIX: Raw SQL in SyncController replaced with DAO pattern
 * FIX: Dead code removed from SyncOrchestrator
 * NEW: Error boundaries for React admin UI with graceful recovery
 * NEW: GitHub Actions CI/CD pipeline (PHP 8.1-8.3 matrix, frontend lint & build)
 * NEW: Pre-commit hooks via Husky and lint-staged
 * NEW: PHPStan level 6 static analysis with WordPress extension
 * NEW: Integration tests for ProductTransformer and ProductValidator

#### 1.1.0

 * NEW: Scheduled Sync – Configure automatic sync schedules (hourly, twice daily,
   daily, weekly)
 * NEW: Product Identifier Manager – Dashboard widget showing GTIN, MPN, Brand coverage
 * NEW: GTIN Bulk Import – Import product identifiers via CSV with SKU or product
   ID matching
 * NEW: Missing Identifiers Tab – Quickly find and edit products missing GTINs, 
   MPNs, or Brands
 * NEW: Inline Identifier Editing – Edit product identifiers directly from the dashboard
 * NEW: Identifier Export – Export all product identifiers to CSV
 * IMPROVED: Action Scheduler integration for reliable background processing
 * IMPROVED: Better error handling and user feedback
 * FIX: SyncScheduler now correctly handles invalid interval values

#### 1.0.0

 * Initial release
 * Automatic product sync to Google Merchant Center
 * OAuth 2.0 Google account connection
 * Multilingual and multi-currency support
 * Real-time change detection
 * Background job processing with Action Scheduler
 * Comprehensive error diagnostics
 * Manual sync with progress tracking
 * Product feed export (XML/CSV)
 * Guided setup wizard

## اطلاعات

 *  نگارش **1.3.0**
 *  آخرین به‌روزرسانی **1 هفته پیش**
 *  نصب‌های فعال **کمتر از 10**
 *  نگارش وردپرس ** 6.5 یا بالاتر **
 *  آزمایش‌شده تا **7.1**
 *  نگارش PHP ** 8.1 یا بالاتر **
 *  زبان
 * [English (US)](https://wordpress.org/plugins/mercantor/)
 * برچسب
 * [google ads](https://fa.wordpress.org/plugins/tags/google-ads/)[google shopping](https://fa.wordpress.org/plugins/tags/google-shopping/)
   [merchant center](https://fa.wordpress.org/plugins/tags/merchant-center/)[product feed](https://fa.wordpress.org/plugins/tags/product-feed/)
   [woocommerce](https://fa.wordpress.org/plugins/tags/woocommerce/)
 *  [نمایش پیشرفته](https://fa.wordpress.org/plugins/mercantor/advanced/)

## امتیازها

هنوز هیچ نقدی ارسال نشده است.

[بررسی شما](https://wordpress.org/support/plugin/mercantor/reviews/#new-post)

[مشاهدهٔ همهٔ بررسی‌ها](https://wordpress.org/support/plugin/mercantor/reviews/)

## مشارکت کنندگان

 *   [ JaJaSolutions ](https://profiles.wordpress.org/jajasolutions/)

## پشتیبانی

چیزی برای گفتن دارید؟ نیاز به کمک دارید؟

 [مشاهده انجمن پشتیبانی](https://wordpress.org/support/plugin/mercantor/)