Title: Lestari Importer for Woo with Shopee
Author: Markas Studio
Published: <strong>June 4, 2026</strong>
Last modified: June 4, 2026

---

Search plugins

![](https://ps.w.org/lestari/assets/banner-772x250.png?rev=3560985)

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

# Lestari Importer for Woo with Shopee

 By [Markas Studio](https://profiles.wordpress.org/studiomarkas/)

[Download](https://downloads.wordpress.org/plugin/lestari.1.5.8.zip)

 * [Details](https://wordpress.org/plugins/lestari/#description)
 * [Reviews](https://wordpress.org/plugins/lestari/#reviews)
 *  [Installation](https://wordpress.org/plugins/lestari/#installation)
 * [Development](https://wordpress.org/plugins/lestari/#developers)

 [Support](https://wordpress.org/support/plugin/lestari/)

## Description

Lestari Importer turns Shopee listings into reviewable WooCommerce drafts. The companion
browser extension reads the Shopee product page the merchant is already looking 
at and sends the data, over a signed REST request, to a staging area inside the 
WordPress admin. Nothing is published automatically — every title, price, stock 
count, description, and image lands in staging first, ready for the merchant to 
edit, approve, or discard.

One paired site. One pairing code. One staging queue. No accounts to create, no 
third-party SaaS sitting in the middle of the data flow.

#### What Lestari Importer does

 * **Paired browser-extension intake** — the extension you install in your browser
   is the only thing that sends product data to your site; the WordPress plugin 
   never reaches out to Shopee servers itself.
 * **HMAC-SHA256 signed REST endpoint** — every receive call is authenticated with
   a per-site token established at pairing time and bound to the originating extension
   identifier.
 * **Review-first staging area** — incoming products are queued for human review
   with editable title, price, stock, description, categories, tags, gallery, and
   per-row variation matrix.
 * **Image sideloading with deduplication** — product images are downloaded into
   the WordPress media library, deduplicated by source URL and SHA-256 hash so re-
   imports do not flood your library.
 * **Duplicate handling** — choose to skip, update, or create a new copy when the
   importer sees a product it has imported before; detection works on a stable source-
   id postmeta key.
 * **HPOS-compatible** — the plugin reads and writes only its own staging tables
   plus WooCommerce’s standard `WC_Product` CRUD; it never touches WooCommerce orders,
   so it declares full High-Performance Order Storage compatibility.
 * **Report-a-Bug from the admin** — an optional, opt-in modal lets you send a focused
   bug report to the plugin author (only when you click Send; never in the background).
   See _Privacy & External Services_ below for the exact data sent.

#### Free vs Pro

The free plugin you are installing is the complete day-to-day importer. Lestari 
Importer Pro is an optional paid add-on, sold separately at the link below; it is**
not** bundled here and the free plugin does not depend on it.

**Free — the everyday import workflow**

 * Receive products from the paired browser extension via the signed REST endpoint
 * Staging-area review with editable title, price, stock, description, categories,
   tags, and gallery
 * Image sideloading with URL and SHA-256 deduplication
 * Duplicate handling: skip, update, or create a new copy
 * HPOS-compatible WooCommerce product creation
 * Report-a-Bug modal with opt-out diagnostics and a local 50-row bounded log
 * Clean uninstall, with an explicit “Keep my data” opt-in

**Pro — everything in Free, plus:**

 * **Variable Products** — explicit Variable import intent always creates a `WC_Product_Variable`
   parent and rebuilds the attribute/variation matrix, even when the scraper returned
   an empty variant list
 * **Per-product markup** — apply a percentage or flat-amount markup to the imported
   regular price, with live final-price preview in the staging editor and per-variant
   override
 * **Bulk-select import from a shop page** — pick multiple products at once from
   a Shopee shop URL via the extension’s selection mode
 * **Priority email support** — direct support channel for Pro licence holders

👉 **[Learn more about Lestari Importer Pro](https://studio.markashosting.com/plugins/lestari/lestari-pro/)**

#### About Shopee

Lestari Importer is **not** affiliated with, endorsed by, or connected to Shopee,
Sea Group, or any of their subsidiaries. “Shopee” is a trademark of its respective
owner and is used here only to describe the type of source data the companion browser
extension reads from the page the merchant is currently viewing.

### Privacy & External Services

Lestari Importer is built around an **inbound** data flow: the companion browser
extension, running in the merchant’s own browser, posts product data to a REST endpoint
on your WordPress site. Your site is the receiver. The plugin does **not** initiate
outbound HTTP requests during normal import operation — no telemetry, no analytics,
no automatic check-ins.

The only outbound HTTP request the plugin ever makes is the optional **Report a 
Bug** submission, and only when an administrator types into the modal and clicks
Send.

#### Data sent only when a bug report is submitted

 * The Subject and Message you type, verbatim.
 * An optional reply-to email address — only if you fill it in; left blank, the 
   submission is anonymous.
 * Up to three image attachments (drag-drop, file picker, or paste-from-clipboard).
   Images are auto-resized client-side to a 1920px longest edge with progressive
   JPEG quality steps so screenshots fit within the wire budget.
 * Optional diagnostics — opt-out, shown to you before sending: plugin version, 
   WordPress version, PHP version, MySQL version, WooCommerce version (if active),
   active theme name and version, locale, multisite flag, and PHP `memory_limit`.
 * **Never auto-collected**: site URL, administrator email, license keys, pairing
   tokens, user lists, active-plugin lists, or any WooCommerce order / customer /
   product data.

A local copy of every submission is written to a bounded log (the `lestari_importer_feedback_log`
option, capped at the 50 most recent entries, FIFO-rotated). The local log stores
per-attachment metadata only (filename, MIME, byte size) — never the image binary.

#### External service used

 * **Service:** [Markas Studio bug-report receiver](https://projects.markas.cloud/wp-json/markas/v1/plugin-bug)
 * **Purpose:** Deliver administrator-submitted bug reports to the plugin author’s
   private triage dashboard for support investigation. Data is sent only after you
   click Send — never automatically and never on any other admin screen.
 * **What is sent:** Exactly the payload described in the section above and shown
   to you under “See what will be sent” before the Send button enables.
 * **[Terms of Use](https://studio.markashosting.com/plugins/lestari/terms/)** ·**
   [Privacy Policy](https://studio.markashosting.com/plugins/lestari/privacy-policy/)**

#### Companion browser extension

The companion extension reads the Shopee product page that the merchant is viewing
in their browser and sends the extracted product data to _your_ WordPress site’s
own `/wp-json/lestari/v1/receive` endpoint, signed with the pairing token. This 
is an inbound request to your site; the WordPress plugin does not contact Shopee
servers itself. The extension is documented and downloaded from the plugin author’s
site: [https://studio.markashosting.com/plugins/lestari/extension/](https://studio.markashosting.com/plugins/lestari/extension/).

#### Data the plugin stores on your site

 * The staging area’s product rows (`wp_lestari_importer_staging`, `wp_lestari_importer_staging_items`).
 * Plugin settings (`lestari_importer_settings`, `lestari_importer_secret`, `lestari_importer_site_tokens`,`
   lestari_importer_pairing_pending`, `lestari_importer_keep_data_on_uninstall`).
 * Postmeta on each imported WooCommerce product, keyed by `_lestari_importer_source_id`(
   so duplicate detection works on re-import).
 * The Report-a-Bug bounded local log (`lestari_importer_feedback_log`, capped at
   50 rows). Attachment binaries are not included.

#### Data on uninstall

When you delete the plugin, all of the items above are removed unless you have enabled
_Keep data on uninstall_ in the Settings tab before uninstalling.

### Developer reference

The plugin exposes filters and actions so add-ons can extend its behaviour without
modifying core files:

 * `lestari/default_settings` (filter) — extend the default settings array on first
   install.
 * `lestari/admin/tabs` (filter) — register additional admin tabs.
 * `lestari/admin/render_tab` (filter) — render the body of a custom tab.
 * `lestari/admin/settings_tab_extra` (action) — append rows to the Settings tab.
 * `lestari/license/is_pro` (filter) — report Pro status from a separately-installed
   add-on.
 * `lestari/booted` (action) — fires after the plugin has finished booting.

## Installation

 1. Upload the plugin ZIP through _Plugins  Add New  Upload Plugin_, or unzip the `
    lestari` folder into `/wp-content/plugins/`.
 2. Activate the plugin via the _Plugins_ screen.
 3. Make sure WooCommerce 8.0 or newer is installed and active.
 4. Open **Lestari Importer** in the admin sidebar, generate a 6-digit pairing code,
    and enter that code in the companion browser extension.
 5. Open a Shopee product page in your browser, click the extension’s import action,
    and the product will appear in _Lestari Importer  Staging Area_ for review.

#### Requirements

 * WordPress 6.4 or newer.
 * WooCommerce 8.0 or newer, active.
 * PHP 7.4 or newer.

## FAQ

### Do I need the companion browser extension?

Yes. The extension is the only component that reads data from a Shopee page; the
WordPress plugin only receives that data over its own REST endpoint. Without the
extension, there is no source of products.

### Does this plugin call the official Shopee API?

No. The plugin does not call the Shopee Open Platform API and does not contact Shopee
servers from your WordPress site. All product data originates from the page the 
merchant is viewing in their own browser, via the companion extension.

### How secure is the pairing?

Pairing uses a 6-digit code with a short expiry. After pairing, every receive request
from the extension is signed with HMAC-SHA256 using a per-site token established
at pairing time; the extension’s installation identifier is bound to that token 
and checked on every receive call.

### Will I lose my settings if I deactivate the plugin?

No. Deactivation leaves settings, the staging area, and the pairing token intact.
Data is removed only when you delete the plugin — and even then you can opt in to
keep it via the _Keep data on uninstall_ checkbox in _Settings_.

### How are existing settings preserved on upgrade?

The activator runs an idempotent migration from earlier internal identifier namespaces
into the current `lestari_importer_*` / `_lestari_importer_*` / `lestari/*` identifiers.
The migration is a no-op on fresh installs and on installs that are already on the
current namespace.

### Where do I get support?

Free support is available through the WordPress.org support forum for this plugin.
Priority support is available with [Lestari Importer Pro](https://studio.markashosting.com/plugins/lestari/lestari-pro/).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Lestari Importer for Woo with Shopee” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Markas Studio ](https://profiles.wordpress.org/studiomarkas/)

[Translate “Lestari Importer for Woo with Shopee” into your language.](https://translate.wordpress.org/projects/wp-plugins/lestari)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/lestari/), check out
the [SVN repository](https://plugins.svn.wordpress.org/lestari/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/lestari/) by [RSS](https://plugins.trac.wordpress.org/log/lestari/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.8

 * Fixed WordPress.org plugin review blockers from the manual round-two review:
    - All admin CSS and JavaScript are now enqueued via `wp_enqueue_style` / `wp_enqueue_script`—
      no inline `<style>` or `<script>` blocks remain. The legacy-notice suppressor
      and the plugin-row “Go Pro” link styling are real on-disk assets loaded only
      where they apply.
    - The two `require_once ABSPATH . 'wp-admin/includes/…'` calls flagged by the
      reviewer (`image.php` in the media sideloader and `plugin.php` in the active-
      plugin probe) have been removed; the helpers they were guarding have lived
      in core since well before our WP 6.4 floor.
    - Two unescaped echoes in `tab-pro.php` and `tab-pairing.php` (inline SVG icons
      and the Shopee wordmark) now pass through `wp_kses()` with strict per-element
      allowlists — no `phpcs:ignore` suppression remains.
    - The External Services section of this readme links the Terms of Use and Privacy
      Policy as proper Markdown links so the WordPress.org link-validation step 
      picks them up.
 * Refreshed the readme to clarify Free vs Pro and the affiliation-with-Shopee disclaimer
   at the top of the description.
 * No database or settings migration is required.

#### 1.5.7

 * Asset cache-busting and pointer-event fixes for the staging-area glossary modal.
 * Internal QA build.

#### 1.5.0

 * Renamed plugin to “Lestari Importer for Woo with Shopee” to comply with WordPress.
   org trademark and naming guidelines.
 * Updated text domain, admin slug, REST namespace, public URLs, and the affiliation
   disclaimer to use the new canonical slug `lestari`.

#### 1.4.13

 * Report-a-Bug modal: bounded local log (50 entries, FIFO), opt-out diagnostics,
   paste-from-clipboard, and an inline “See what will be sent” preview before Send.
 * Hardened sealed daily-import counter (AES-256-GCM envelope bound to the UTC date).
 * Pro Features tab is now a factual, non-intrusive description of the optional 
   paid add-on — no form fields, no inert inputs, no urgency copy. Hidden automatically
   when the Pro add-on registers its own License tab.

#### 1.4.0

 * HPOS compatibility declaration and Cart/Checkout-blocks compatibility declaration.
 * MIME-sniff from magic bytes for sideloaded images (JPEG / PNG / WebP).

#### 1.0.0

 * First public release of the importer with paired browser-extension intake, HMAC-
   signed REST endpoint, staging area, image sideloading with deduplication, and
   configurable duplicate handling.

## Meta

 *  Version **1.5.8**
 *  Last updated **20 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [product import](https://wordpress.org/plugins/tags/product-import/)[shopee](https://wordpress.org/plugins/tags/shopee/)
   [staging](https://wordpress.org/plugins/tags/staging/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/lestari/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/lestari/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/lestari/reviews/)

## Contributors

 *   [ Markas Studio ](https://profiles.wordpress.org/studiomarkas/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/lestari/)