Title: Manila Stack Affiliate Boxes for Southeast Asia
Author: dhlptx00
Published: <strong>October 14, 2026</strong>
Last modified: October 15, 2026

---

Search plugins

![](https://ps.w.org/manilastack-affiliate-boxes-sea/assets/banner-772x250.png?rev
=3747370)

![](https://ps.w.org/manilastack-affiliate-boxes-sea/assets/icon-256x256.png?rev
=3747370)

# Manila Stack Affiliate Boxes for Southeast Asia

 By [dhlptx00](https://profiles.wordpress.org/dhlptx00/)

[Download](https://downloads.wordpress.org/plugin/manilastack-affiliate-boxes-sea.0.2.1.zip)

 * [Details](https://wordpress.org/plugins/manilastack-affiliate-boxes-sea/#description)
 * [Reviews](https://wordpress.org/plugins/manilastack-affiliate-boxes-sea/#reviews)
 *  [Installation](https://wordpress.org/plugins/manilastack-affiliate-boxes-sea/#installation)
 * [Development](https://wordpress.org/plugins/manilastack-affiliate-boxes-sea/#developers)

 [Support](https://wordpress.org/support/plugin/manilastack-affiliate-boxes-sea/)

## Description

Manila Stack Affiliate Boxes for Southeast Asia helps bloggers and review sites 
in the Philippines, Malaysia, Thailand, Vietnam, Indonesia, and Singapore show clean,
fast product boxes with buy buttons for the shops their readers actually use.

**This plugin is not affiliated with, endorsed by, or sponsored by Shopee, Lazada,
or TikTok.** Shop names are used only to describe links you paste in yourself.

**Features**

 * **Gutenberg block and shortcode.** Insert a box with the “Manila Stack Affiliate
   Box” block or `[sea_box id="123"]`. Both use the same server-side template. The
   block picker searches your boxes (it does not stop at 100) and can list draft,
   pending, and private boxes when your account is allowed to edit them. Each non-
   public box is labelled.
 * **Multiple buy buttons per product.** Shopee, Lazada, TikTok Shop, and custom
   links, each in the platform’s colour. Every saved button gets a stable key, so
   reordering buttons does not move old click stats.
 * **Local prices.** ₱ (PHP), RM (MYR), ฿ (THB), ₫ (VND), Rp (IDR), S$ (SGD), and
   $ (USD), with an optional original (strikethrough) price. VND and IDR show the
   symbol after the amount (`150,000₫`, `150,000Rp`).
 * **Rating, badge, short description, pros and cons.**
 * **Shopee Affiliate Open API (optional).** Add your own App ID and Secret, paste
   a Shopee product URL, and the plugin can fill empty fields and create a tracked
   short link with your Sub IDs. Filled fields are left alone until you choose Replace.
   A price range is shown in the status line and is not written into the original
   price. Results are cached. If the API fails you can still fill everything in 
   by hand.
 * **SEO-safe links.** Every affiliate link gets `rel="sponsored nofollow noopener"`
   and opens in a new tab.
 * **Affiliate disclosure.** Optional text shown under every box. On a brand-new
   install it is on. A saved “off” stays off.
 * **Click counting.** Buttons on published boxes go through a local redirect that
   counts clicks per box, post, and day. It only redirects to links saved on a published
   box, so it cannot be used as an open redirect. Draft, private, and password-protected
   referrers are not stored. No IP addresses, cookies, or other personal data are
   stored. Obvious bots and browser prefetches are not counted. The redirect sends`
   Cache-Control: no-store` and `X-Robots-Tag: noindex`.
 * **Lightweight.** No jQuery on the front end, one small stylesheet loaded only
   on pages with a box, lazy-loaded images, and a mobile-first layout.

Lazada and TikTok Shop links are pasted manually (for example a deeplink from your
affiliate network). The plugin never scrapes shop pages.

The Shopee request format below is covered by unit tests and a local mock. **It 
has not been verified against a live Shopee Affiliate account.**

### External services

This plugin connects to the **Shopee Affiliate Open API** only if you save your 
own App ID and Secret, and only when a logged-in user who can edit posts clicks “
Fetch from Shopee” on a box. Visitors never trigger it.

**Endpoints** (one host per country, `POST` `/graphql`):

 * Philippines: `https://open-api.affiliate.shopee.ph/graphql`
 * Malaysia: `https://open-api.affiliate.shopee.com.my/graphql`
 * Thailand: `https://open-api.affiliate.shopee.co.th/graphql`
 * Vietnam: `https://open-api.affiliate.shopee.vn/graphql`
 * Indonesia: `https://open-api.affiliate.shopee.co.id/graphql`
 * Singapore: `https://open-api.affiliate.shopee.sg/graphql`

The plugin chooses the host from the product URL. It does not fall back to the Philippines
when the URL is a Shopee country this list does not include.

 * **What is sent:** the Shopee product URL you pasted, the item and shop IDs taken
   from it, your Sub IDs (the Settings default, or a request value when the user
   is an administrator), and your App ID with a request signature. The Secret is
   not sent. It is only used to compute the signature. The default header is `SHA256
   Credential={App ID}, Timestamp={unix}, Signature={sha256}`. If Shopee returns
   a bare signature error (code 10020) and no data, the plugin retries once with
   Signature before Timestamp, the same body, and a new timestamp. A product query
   that is rejected for `priceMin` / `priceMax` (or code 10010) is retried once 
   asking for `price` instead. A short-link validation error other than 10020, 10030,
   or 10035 is retried once with the mutation inlined and no variables object. Code
   10030 is not retried.
 * **What is received:** the product name, image URL, price range, rating, shop 
   name, product link, offer link, and a tracked short link. If the short link fails
   and the offer link is a valid https Shopee URL, that offer link is used and the
   editor is told it does not include Sub IDs.
 * **Caching and rate limit:** a successful lookup with no warnings is cached (default
   12 hours). Warnings are not cached. After a cache miss the plugin allows 30 lookups
   per user per 10 minutes and then returns HTTP 429. Changing the App ID or Secret
   clears cached lookups stored in the options table.
 * **Short links:** if you paste a Shopee short link (for example `s.shopee.ph/...`),
   the plugin sends a HEAD request to that Shopee host to find the full product 
   URL. It does not follow the redirect off Shopee.
 * **Images:** the plugin does not download or proxy product images. It stores the
   https image URL Shopee (or you) provided. Visitors’ browsers load that URL directly.
   Shopee image hosts commonly look like `cf.shopee.ph` (and the same pattern on
   other country domains) or `*.img.susercontent.com`. Any other https host is allowed.
   The plugin itself does not call those image hosts.
 * **Who can trigger this:** a user with `edit_posts` by default. Only a user with`
   manage_options` can override Sub IDs on the request. The Secret never leaves 
   the server.

No shop data is sent when visitors view your pages. When a visitor clicks a buy 
button they leave your site for the URL saved on that box.

**Service provider:** Shopee (Shopee Affiliate Program / Shopee Affiliate Open API).
The endpoints are defined in `includes/functions.php` and called from `includes/
class-seabox-shopee-client.php` (product lookup and short link) and `includes/class-
seabox-rest.php` (short-link HEAD request).

 * Shopee Affiliate Program Terms and Conditions: https://help.shopee.ph/portal/
   4/article/77295
 * Shopee Privacy Policy: https://help.shopee.ph/portal/4/article/77274

These are the Philippine documents. Shopee Malaysia, Thailand, Vietnam, Indonesia,
and Singapore publish their own terms and privacy policy in that country’s Shopee
Help Center; the one for the country of the product URL applies to that request.

Lazada and TikTok Shop are not contacted by this plugin. Buttons for those shops
are ordinary links you paste in.

### Source code

The block editor script in `build/` is compiled from the unminified source in `src/`(
included in this plugin) with `@wordpress/scripts`: run `npm install` and `npm run
build`.

## Screenshots

[⌊The box editor: product name, image, local price, rating, pros and cons, and multiple
buy buttons for Shopee, Lazada, TikTok Shop, or custom links.⌉⌊The box editor: product
name, image, local price, rating, pros and cons, and multiple buy buttons for Shopee,
Lazada, TikTok Shop, or custom links.⌉[

The box editor: product name, image, local price, rating, pros and cons, and multiple
buy buttons for Shopee, Lazada, TikTok Shop, or custom links.

[⌊Insert a box anywhere with the affiliate box block in the block editor (search"
affiliate box" in the inserter).⌉⌊Insert a box anywhere with the affiliate box block
in the block editor (search "affiliate box" in the inserter).⌉[

Insert a box anywhere with the affiliate box block in the block editor (search “
affiliate box” in the inserter).

[⌊Settings: currency, affiliate disclosure, and optional Shopee Affiliate Open API
credentials.⌉⌊Settings: currency, affiliate disclosure, and optional Shopee Affiliate
Open API credentials.⌉[

Settings: currency, affiliate disclosure, and optional Shopee Affiliate Open API
credentials.

## Blocks

This plugin provides 1 block.

 *   Manila Stack Affiliate Box Product box with Shopee, Lazada and TikTok Shop 
   buy buttons.

## Installation

 1. Upload the plugin zip in **Plugins  Add New  Upload Plugin**, or unzip it into `
    wp-content/plugins/`.
 2. Activate **Manila Stack Affiliate Boxes for Southeast Asia**.
 3. Go to **Affiliate Boxes  Settings** and choose your country and currency. Optionally
    add your Shopee Affiliate App ID and Secret.
 4. Create a box under **Affiliate Boxes  Add Box**.
 5. Insert it into a post with the **Manila Stack Affiliate Box** block, or paste the
    shortcode shown on the box screen.

## FAQ

### Where do I get a Shopee App ID and Secret?

Log in to the Shopee Affiliate dashboard for your country and open the Open API 
section. Examples of those dashboards are affiliate.shopee.ph, affiliate.shopee.
com.my, affiliate.shopee.co.th, affiliate.shopee.vn, affiliate.shopee.co.id, and
affiliate.shopee.sg. The Secret is stored only in your WordPress database and is
never sent to visitors’ browsers.

### Do I need the Shopee API?

No. Every field can be filled in manually, and any https link you paste works.

### Which Shopee regions can Fetch from Shopee use?

The product URL picks the region when it is one this plugin can call: Philippines,
Malaysia, Thailand, Vietnam, Indonesia, or Singapore. A link from another Shopee
country (for example Brazil) is refused. It is not sent to the Philippines endpoint.
Short hosts that do not name a country, such as shp.ee and shope.ee, use the country
in Settings.

### What does Fetch from Shopee do with fields I already filled in?

Empty fields are filled. Fields that already have a value stay as you typed them,
and the screen offers Replace filled fields or Keep what I typed. The top of a price
range is mentioned in the status text only. It is not saved as the original price.

### Does click counting slow my site down?

No. The redirect does one small database write and sends a 302. You can turn counting
off in Settings; buttons then link directly to the shop. Unpublished boxes already
link directly when they are previewed, because the public redirect only serves published
boxes.

### Who can see click stats and who can call Shopee?

Settings require an administrator (`manage_options`). Fetch from Shopee requires
an editor-level account by default (`edit_posts`, filter `seabox_lookup_capability`).
A Sub ID sent with that request is used only for administrators. Click Stats requires
someone who can edit other people’s posts (`edit_others_posts`, filter `seabox_stats_capability`).
Boxes themselves use the same capabilities as posts.

### Is the plugin GDPR / privacy friendly?

Click counting stores only the box ID, the source post ID when that post is published
and not password-protected, the button key, the platform, and the date, with a counter.
No IP address, account ID, cookie, or destination URL is stored. The redirect stays
on your site until it sends the visitor to the shop.

### What happens if I reorder the buy buttons?

Each button is saved with a stable key. Redirect links (`seabox_btn`) and click 
stats use that key, so reordering or removing a button keeps historical clicks on
the same shop. Older links that still pass a numeric `seabox_btn` continue to resolve
by position. A stored key that is empty or all digits is replaced the next time 
you save the box, and the old click rows move to the new key.

### Why did Fetch from Shopee say to wait?

After a cache miss, each user can run 30 lookups in 10 minutes. Cached results do
not count. Shopee can also rate-limit the App ID. Wait a few minutes and try again.
The limit can be changed with the `seabox_lookup_rate_limit` filter. A value below
1 turns the local limit off.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Manila Stack Affiliate Boxes for Southeast Asia” is open source software. The following
people have contributed to this plugin.

Contributors

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

[Translate “Manila Stack Affiliate Boxes for Southeast Asia” into your language.](https://translate.wordpress.org/projects/wp-plugins/manilastack-affiliate-boxes-sea)

### Interested in development?

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

## Changelog

#### 0.2.1

 * Renamed to Manila Stack Affiliate Boxes for Southeast Asia. New slug and text
   domain: `manilastack-affiliate-boxes-sea`. Saved blocks (`sea-affiliate-boxes/
   box`), the shortcode, the REST route, settings, and box data are unchanged, so
   existing content keeps working.
 * Plugin URI now points to https://manilastack.vercel.app.
 * Expanded the External services section with the service provider and links to
   Shopee’s terms and privacy policy.

#### 0.2.0

 * Rewrote the PHP core: per-user Shopee lookup rate limit, no cross-country fallback,
   signature and short-link retries, stable button keys with migration of numeric
   keys on save, redirect cache headers, and click attribution that ignores private,
   draft, and password-protected posts.
 * Click Stats now requires `edit_others_posts`. Titles the current user cannot 
   read are hidden.
 * VND and IDR prices place the symbol after the amount. The disclosure default 
   applies only when the setting has never been saved.
 * The block picker searches boxes and includes draft, pending, and private boxes
   the user can edit, each clearly labelled. Heading labels are translated.
 * Fetch from Shopee fills empty fields and asks before replacing anything already
   typed. A price range is shown and is not saved as the original price. Rate-limit
   and API errors are reported in the status line.
 * Front-end and editor styles are mobile-first, with visible focus and reduced-
   motion support. The box editor script no longer depends on jQuery.

#### 0.1.0

 * First release: block and shortcode, Shopee Affiliate Open API lookup and short
   links, click counting, settings and stats pages.
 * Buy buttons get a stable key used in the redirect URL and the clicks table, so
   reordering buttons does not re-attribute clicks. Numeric `seabox_btn` values 
   still resolve by index.
 * Stats page includes a per-platform click breakdown for the selected period.

## Meta

 *  Version **0.2.1**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [affiliate](https://wordpress.org/plugins/tags/affiliate/)[comparison](https://wordpress.org/plugins/tags/comparison/)
   [prices](https://wordpress.org/plugins/tags/prices/)[product box](https://wordpress.org/plugins/tags/product-box/)
   [reviews](https://wordpress.org/plugins/tags/reviews/)
 *  [Advanced View](https://wordpress.org/plugins/manilastack-affiliate-boxes-sea/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/manilastack-affiliate-boxes-sea/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/manilastack-affiliate-boxes-sea/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/manilastack-affiliate-boxes-sea/)