Onboard established sellers in minutes, not weeks.
Vendors connect their Etsy and Shopify stores via OAuth 2.0 + PKCE / Admin API, pick the listings they want imported, and watch a live progress banner as titles, images (in source order), real SKUs, prices and stock flow into your Dokan marketplace. Subsequent syncs are stock-only — vendor edits to titles, descriptions, prices and images are never overwritten.
- Etsy Open API v3 — OAuth 2.0 + PKCE
- Shopify Admin API 2025-10 GraphQL
- Background queue via Action Scheduler
- Live progress banner with per-product status
- Stock-only sync — vendor edits preserved
- Per-product sync lock — opt individual products out
- Per-vendor admin enablement toggles
- OAuth tokens encrypted at rest
The two hardest problems with vendor onboarding, solved properly.
Importing a catalogue is the easy half; keeping it fresh without nuking vendor edits is the hard half. This plugin does both — resumable, observable, lockable.
Etsy OAuth 2.0 + PKCE
Vendors authorise their Etsy shop via the standard Open API v3 OAuth flow. Tokens are encrypted at rest using your site’s auth salt + AES — never stored in plaintext.
Shopify Admin GraphQL 2025-10
Vendors paste an Admin API access token. Imports run via the modern GraphQL API (not the deprecated REST endpoints), so they keep working as Shopify deprecates older versions.
Live progress banner
An AJAX-polled banner during import shows total progress, per-product success / failure / skip, and lets vendors keep working on other dashboard pages while the job runs.
Resumable Action Scheduler queue
Jobs are dispatched via as_enqueue_async_action with a job UUID. If the server restarts or PHP crashes mid-import, Action Scheduler resumes — no half-imported catalogues.
Browse-and-pick UI
Vendors see a grid of source listings with images and titles. They tick which ones to import — nobody is forced to import everything at once.
Stock-only sync, preserves edits
Subsequent syncs only update _stock and _stock_status. Vendor edits to titles, descriptions, prices, and images are never overwritten.
Per-product sync lock
Vendors can flip a per-product toggle to exclude individual products from future syncs — for items they want to manage entirely inside Dokan.
Per-vendor admin enablement
Allow Etsy import / Allow Shopify import are user-profile checkboxes. Roll out to one vendor as a trial, then enable everyone when you’re happy.
Image order preserved
First source image becomes the WooCommerce featured image; the rest land in the gallery in the source platform’s order. Real SKUs are kept.
Standard Dokan integration
Fires dokan_new_product_added after every import, so Dokan-aware add-ons (commission, analytics, notifications) auto-detect imports without changes.
Per-vendor import history
Admin sees a log of imports per vendor with success / failure / skip details, error messages, source listing IDs, and timestamps. Useful for support and audits.
Hooks-first — every cap is a filter
Image count caps, product-type whitelist, sync rate limit, history retention — all filter-overrideable. Customise without forking.
From OAuth to first imported product in under five minutes.
Activate & configure
Upload, activate, paste your licence key. Enable Etsy and/or Shopify import in Settings.
Vendors connect their stores
Vendors open the Import tab in their Dokan dashboard, run the OAuth flow (Etsy) or paste their Admin token (Shopify). Done in under a minute.
Pick listings, watch progress
Vendors browse their source catalogue, tick the listings to import, click Start. The queue runs in the background; live progress banner shows status until done.
One plugin, every feature included.
Pick monthly or save with yearly — both unlock the full feature set. One subscription per production site. Cancel any time.
- Etsy import via OAuth 2.0 + PKCE
- Shopify import via Admin GraphQL 2025-10
- Action Scheduler background queue
- Live progress banner per vendor
- Stock-only sync — vendor edits preserved
- Per-product sync lock
- Per-vendor admin enablement toggles
- Continuous updates & priority email support
- 14-day refund window
- Etsy import via OAuth 2.0 + PKCE
- Shopify import via Admin GraphQL 2025-10
- Action Scheduler background queue
- Live progress banner per vendor
- Stock-only sync — vendor edits preserved
- Per-product sync lock
- Per-vendor admin enablement toggles
- Continuous updates & priority email support
- 14-day refund window
1 production site per licence · staging / dev / .local exempt · 14-day refund window · prices exclusive of tax
Architecture & integration.
Plugin name
Dokan Vendor Etsy & Shopify Product Importer by ONVORE
Slug / text domain
dokan-vendor-etsy-shopify-product-importer-by-onvore
Requires
WordPress 6.2+, WooCommerce, Dokan Lite or Pro, PHP 7.4+ (8.x recommended), Action Scheduler
Source APIs
Etsy Open API v3 (OAuth 2.0 + PKCE); Shopify Admin API 2025-10 GraphQL (Admin API access token)
Data model
Custom tables for import queue + history; vendor credentials encrypted via CredentialVault; per-product source IDs stored in post meta.
Async runtime
Action Scheduler actions: onvore_run_import_job for imports, onvore_run_stock_sync for syncs. Resumable across reboots.
Integrations
Fires dokan_new_product_added per imported product. AJAX REST controllers under dokan-vendor-etsy-shopify-product-importer-by-onvore/v1.
Customisability
Image count cap, product-type whitelist, sync rate limit, history retention — all filter-overrideable.
Licensing & updates
Daily validation via account.onvore.com with a 72-hour grace window. Auto-updates over the same channel.
Screenshots from the plugin.
A quick tour of the main screens. Live screenshots will replace these wireframe previews shortly.
The quick answers.
Does this import a vendor’s entire Etsy / Shopify catalogue automatically?
No — vendors browse their source listings in a grid and tick which ones to import. You can absolutely import the whole catalogue, but only if the vendor actively selects every item. That’s deliberate: most marketplaces want quality-controlled imports, not a bulk dump.
What happens during subsequent syncs — do my vendors’ edits get overwritten?
No. After the initial import, syncs only update _stock and _stock_status. Titles, descriptions, prices, images, categories — everything else — stays whatever the vendor set in Dokan. This is the core promise of the plugin.
What if my vendor never wants a specific product to be synced again?
Each imported product has a per-product sync lock (in the Source & Sync section of the edit-product screen). Flip it off and that one product is skipped on all future syncs — even if other products from the same shop continue syncing.
Are variable products supported?
Not in 0.1.0. Variable products are skipped with a friendly history note (“Variable products not yet supported — coming in a future release”). Simple products with variants in the source platform are imported as simple products in Dokan.
How are vendor API credentials stored?
Encrypted at rest. OAuth tokens and Admin API tokens are encrypted via the CredentialVault layer using your site’s auth-salt-derived key. The raw token only exists in memory for the duration of an API call.
Can I limit which vendors can import?
Yes. Every user profile in WP Admin has “Allow Etsy import” and “Allow Shopify import” checkboxes. Vendors without those flags see no import UI. Roll out as a pilot to one vendor, then enable everyone.
What happens if PHP crashes mid-import or my server reboots?
Action Scheduler resumes. Imports are dispatched as async actions with a job UUID; the action handler is idempotent and skips products already imported. There’s no manual cleanup required.
Does it call Dokan’s hooks correctly?
Yes. After each successful import, the plugin fires dokan_new_product_added with the imported product. Dokan-aware add-ons (commission engines, vendor notifications, analytics) detect the imports automatically.
Your question isn't here?
Send your questionOnboard vendors with catalogues already on Etsy or Shopify — without losing your weekend.
Real OAuth, real GraphQL, real Action Scheduler queue. Pricing $12/mo or $120/yr. Cancel any time.