Title: Kukuriya
Author: Pifto Works
Published: <strong>September 14, 2026</strong>
Last modified: October 15, 2026

---

Search plugins

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

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

# Kukuriya

 By [Pifto Works](https://profiles.wordpress.org/piftoworks/)

[Download](https://downloads.wordpress.org/plugin/kukuriya.0.16.4.zip)

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

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

## Description

**Kukuriya** turns the links to one product at several stores into a single “product”
that you manage in one place, and shows it in your posts as a product card or a 
comparison table. Searching, inserting, designing and keeping prices current all
happen in the Block Editor. The Classic Editor is supported too, through a button
that inserts a shortcode.

It is for people moving from Pochipp or Rinker, people who cannot use the Amazon
API yet, and anyone who links to several stores from one site.

#### Key features

 * **One product, several stores**: each product holds its links to Amazon, Rakuten
   Ichiba, Yahoo! Shopping and more. A card shows one button per store, in the order
   you choose
 * **Add products from the editor**: search Amazon, Rakuten Ichiba or Yahoo! Shopping,
   or paste a product page URL (SiteStripe short URLs `amzn.to` / `amzn.asia` work
   too). Products the store APIs cannot find, such as A8.net or afb items, can be
   registered by hand
 * **3 card templates**: Card (the default), Simple (image, name and one button,
   no price) and Compact (the whole card is one link), plus a comparison table block
   for up to 10 products
 * **Comparison tables you can shape**: reorder the rows, add rows from custom fields
   or free text, mark cells with ◎ ○ △ ×, highlight the cell that decides it, put
   the products down the side instead of across the top, and set the button text
   and colour per column
 * **Design controls**: 4 presets (Neo / Outline / Glass / Bold), an accent colour
   and per-store button colours, frames, button styles, an optional “See reviews”
   link, and animated effects that pause for visitors who prefer reduced motion.
   Set them for the whole site, for one product or for one block
 * **Custom fields**: per-product spec fields in 5 types (text / number / select/
   yes-no / date)
 * **CSV import / export**, with a dry run that checks the file first
 * **Migration from Pochipp and Rinker**: copies the settings, products and affiliate
   IDs, then rewrites the cards inside your posts. The last step **cannot be undone**,
   so take a full site backup before you run it
 * **Automatic price refresh**: Amazon, Rakuten Ichiba and Yahoo! Shopping prices
   are fetched again every 6 hours. Prices older than 24 hours are hidden, as Amazon
   and Rakuten require
 * **Click tracking on your own site (anonymized)**: the dashboard shows which products,
   stores and posts get clicked. IP addresses and user agents are hashed, and no
   cookies are used. It can be turned off under “Measurement”
 * **Optional product description generation** through a text generation API that
   you configure yourself
 * **Optional credit**: off by default. When turned on, a small mark and the name“
   Kukuriya” appear at the bottom right of cards. It is never a link
 * **Translatable**: every string can be translated (text domain: `kukuriya`)

#### Supported ASPs (all built in — enable the ones you use)

 * **Amazon** (Creators API, 15 marketplaces. A tracking ID alone is enough to make
   links)
 * **Rakuten Ichiba** (Rakuten Ichiba Item Search API)
 * **Yahoo! Shopping** (Shopping Web Service V3, with ValueCommerce affiliate links)
 * **Moshimo Affiliate** (link conversion; a way to earn from Amazon and Rakuten
   without their APIs)
 * **Mercari** (Mercari Ambassador: your afid is added to Mercari links)
 * **Manual entry (A8.net / afb / ValueCommerce, etc.)** (for products and services
   without a product API)

#### Usage notes

 * The Amazon Creators API needs credentials for your own account (a central proxy
   is not allowed under its licence)
 * Amazon gives API access only to accounts with at least 10 qualifying sales in
   the last 30 days. Until then, a tracking ID alone or the Moshimo Affiliate route
   can be used
 * Please follow the terms of service of each ASP

### External services

This plugin talks to the shopping services whose connectors you turn on, using credentials
that you supply. Nothing is sent anywhere until you enter credentials and enable
a connector, and no data is ever sent to the plugin author.

#### Amazon Creators API (Login with Amazon)

Used to search Amazon and to get a product’s title, image, price and availability
for your cards and their price updates. It is used only if you turn on the Amazon
connector and enter your own Credential ID and Credential Secret. With only a tracking
ID entered, no request is made.

It sends your Credential ID and Credential Secret to get an access token (`api.amazon.
com`, `api.amazon.co.jp` or `api.amazon.co.uk`, depending on the marketplace). Then,
on each product search, each scheduled price refresh (every 6 hours) and each card
render that misses the cache, it sends the search keyword or ASIN with that token
and your tracking ID. If you paste a SiteStripe short URL (`amzn.to` or `amzn.asia`)
into the editor, your site also makes one request to that address to find the product
it points to.

This service is provided by “Amazon.com, Inc.”: [terms of use](https://affiliate.amazon.co.jp/help/operating/agreement),
[privacy policy](https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=GX7NJQ4ZB8MHFRNJ).

#### Rakuten Web Service (Rakuten Ichiba Item Search API)

Used to search Rakuten Ichiba at `openapi.rakuten.co.jp` and to get a product’s 
title, image, price and availability. It is used only if you turn on the Rakuten
connector and enter your own Application ID and Access Key. It sends them, with 
your Affiliate ID and the search keyword or item code, on each product search, scheduled
price refresh and card render that misses the cache.

This service is provided by “Rakuten Group, Inc.”: [terms of use](https://webservice.rakuten.co.jp/guide/rule),
[privacy policy](https://privacy.rakuten.co.jp/).

#### Yahoo! Shopping Web Service

Used to search Yahoo! Shopping at `shopping.yahooapis.jp` and to get a product’s
title, image, price and availability. It is used only if you turn on the Yahoo connector
and enter your own Client ID. It sends the Client ID with the search keyword or 
item code, on each product search, scheduled price refresh and card render that 
misses the cache.

This service is provided by “LY Corporation”: [terms of use](https://www.lycorp.co.jp/ja/company/terms/),
[privacy policy](https://www.lycorp.co.jp/ja/company/privacypolicy/), [developer guidelines](https://developer.yahoo.co.jp/guideline/).

#### ipify (only when you press “Find my outbound IP address”)

Rakuten asks you to register the IP address your server calls its API from. The 
Rakuten connector settings have a button that looks this address up. Pressing it
sends a plain request, with no credentials or site data, to `api.ipify.org`, which
replies with your server’s outbound IP address. The answer is cached for a day. 
If you never press the button, this service is never contacted.

This service is provided by “ipify”: [terms of use and privacy policy](https://www.ipify.org/).

#### A text generation API of your choosing (optional, off by default)

The optional “generate a product description” button sends a prompt with the product’s
title, price and categories, plus the API key you entered, to the endpoint **you**
entered. The plugin ships no endpoint, no key and no default address. If the setting
is empty, nothing is sent. The service is provided by the company you configure,
under its own terms of use and privacy policy.

#### Your analytics service (optional, off by default)

If you turn on click measurement under “Measurement”, the reader’s browser reports
clicks on purchase buttons through the analytics tag that you or your theme already
installed. This plugin adds no tag, and your server sends nothing. It sends the 
product ID, the product name (first 60 characters), the product code at the store(
such as the ASIN, for buttons that go to a product page), the store, whether the
link went to a product page or to search results, and which card in the article 
it was. If you also turn on card views, it sends that a card was shown on screen,
with the same product ID and card position. The service is provided by the analytics
company you already use, under its own terms of use and privacy policy.

#### Moshimo Affiliate impression pixel (only when you route a store through Moshimo)

Moshimo hands out each ad as a link that counts clicks plus a 1×1 image that counts
how often the ad was shown. If you enter a Moshimo partnership ID (a_id) and route
a store through Moshimo, this plugin outputs both, once per placement, so that your
Moshimo dashboard reports impressions. Your visitor’s browser loads the image from`
i.moshimo.com` when the page is shown, so Moshimo sees the visitor’s IP address,
user agent, page and any Moshimo cookies. Your server sends nothing. Without an 
a_id or a Moshimo route, the image is never output.

This service is provided by “Moshimo Co.,Ltd.”: [terms of use](https://af.moshimo.com/af/www/terms/shop),
[privacy policy](https://www.moshimo.co.jp/company/privacy).

#### ValueCommerce impression pixel (only when you enter a ValueCommerce sid and pid)

ValueCommerce works the same way. If you enter a sid and pid in the ValueCommerce
or Yahoo! Shopping connector, this plugin outputs a 1×1 image next to each link 
it converts through ValueCommerce. Your visitor’s browser loads it from `ad.jp.ap.
valuecommerce.com` when the page is shown, so ValueCommerce sees the visitor’s IP
address, user agent, page and any ValueCommerce cookies. Your server sends nothing.
If the sid or pid is empty, the image is never output.

This service is provided by “ValueCommerce Co., Ltd.”: [terms of use](https://www.valuecommerce.ne.jp/st_affiliate/terms.html),
[privacy statement](https://www.valuecommerce.ne.jp/privacy/).

#### Services this plugin does NOT contact

A8.net, afb and Mercari are supported by building the affiliate URL on your own 
server from the IDs you enter. The plugin makes no request to them. Their addresses
appear only as the destination your visitors’ browsers go to when they click a link.
Moshimo Affiliate and ValueCommerce work the same way for the link itself; the only
addresses contacted are the impression images above.

### Source code and build

The admin screens and editor blocks are written in TypeScript and SCSS and compiled
with `@wordpress/scripts` (webpack). The uncompiled sources are included in this
plugin under `assets/src/`, next to the compiled output in `build/`, together with`
package.json`, `webpack.config.js` and `tsconfig.json`.

To reproduce the compiled files, with Node.js 20 or later:

    ```
    npm install
    npm run build
    ```

No third-party JavaScript libraries are bundled. Everything the scripts use at runtime(`@
wordpress/element`, `@wordpress/components`, and so on) is provided by WordPress
itself.

### Privacy Policy

Kukuriya stores the following anonymized data for click tracking (in the `wp_bcore_clicks`
table):

 * HMAC-SHA256 hash of the IP address (64 hex chars)
 * HMAC-SHA256 hash of the User-Agent (64 hex chars)
 * Referrer host name only (no path / query)
 * An opaque per-tab session ID generated client-side in `sessionStorage` (optional)
 * Product ID / post ID / which store button / product page or search / card position/
   timestamp

Raw IPs, raw User-Agents, and full URLs are never stored. No cookies are used. Rows
are deleted after 90 days. Recording can be switched off under “Measurement”.

External communication happens only with the services you configured, as listed 
under “External services”. No data is sent to the plugin developer (Pifto Works).

## Screenshots

[⌊A product card in a post. Price, discount, sale label and every store button in
one block.⌉⌊A product card in a post. Price, discount, sale label and every store
button in one block.⌉[

A product card in a post. Price, discount, sale label and every store button in 
one block.

[⌊Several cards in one article. Three card templates, chosen per block.⌉⌊Several
cards in one article. Three card templates, chosen per block.⌉[

Several cards in one article. Three card templates, chosen per block.

[⌊A comparison table built from saved products.⌉⌊A comparison table built from saved
products.⌉[

A comparison table built from saved products.

[⌊Picking a product in the Block Editor. Search what you already saved, or query
Amazon, Rakuten and Yahoo! Shopping.⌉⌊Picking a product in the Block Editor. Search
what you already saved, or query Amazon, Rakuten and Yahoo! Shopping.⌉[

Picking a product in the Block Editor. Search what you already saved, or query Amazon,
Rakuten and Yahoo! Shopping.

[⌊Block settings. Template, store buttons and the look of the card, per block.⌉⌊
Block settings. Template, store buttons and the look of the card, per block.⌉[

Block settings. Template, store buttons and the look of the card, per block.

[⌊The product list. Search, link health, where each product is used, and how many
extra stores it has.⌉⌊The product list. Search, link health, where each product 
is used, and how many extra stores it has.⌉[

The product list. Search, link health, where each product is used, and how many 
extra stores it has.

[⌊Editing one product, with a live preview of the card.⌉⌊Editing one product, with
a live preview of the card.⌉[

Editing one product, with a live preview of the card.

[⌊Design settings. Presets and tokens that apply across the site.⌉⌊Design settings.
Presets and tokens that apply across the site.⌉[

Design settings. Presets and tokens that apply across the site.

[⌊The dashboard. Price refresh status and the last seven days of clicks.⌉⌊The dashboard.
Price refresh status and the last seven days of clicks.⌉[

The dashboard. Price refresh status and the last seven days of clicks.

[⌊Migrating from Pochipp. Products, then article content, in numbered steps.⌉⌊Migrating
from Pochipp. Products, then article content, in numbered steps.⌉[

Migrating from Pochipp. Products, then article content, in numbered steps.

## Blocks

This plugin provides 3 blocks.

 *   Kukuriya Link Place a link you registered in Kukuriya. Articles only hold the
   key, so changing the link later updates every article.
 *   Kukuriya Comparison Insert a comparison table of up to 10 Kukuriya products.
 *   Kukuriya Product Insert a product card managed by Kukuriya.

## Installation

#### Basic setup

 1. Search for `Kukuriya` under “Add New” in the Plugins screen, install, and activate
 2. Open the “Kukuriya” admin menu, and in the “Connectors” tab turn on the ASPs you
    use and enter each connector’s API keys (for example, Rakuten needs an Application
    ID, an Access Key and an Affiliate ID)
 3. Add the “Kukuriya Product” block in the post / page editor, then search and insert

#### Admin tabs

 * **Dashboard**: price refresh cron status and recent click summaries
 * **Custom fields**: CRUD for your own spec fields
 * **CSV import / export**: bulk migration of existing product data
 * **Migration**: import from Pochipp

#### Using the manual-entry connector route

ASPs that do not provide a product API, such as A8.net and afb, can be handled with
the built-in manual-entry (Generic) connector by registering a URL template manually.

## FAQ

### Is it free?

Yes. Everything in this plugin is free and fully functional GPL v2+ open source,
including every built-in connector. Nothing here is locked behind a licence.

A separate paid add-on plugin (Kukuriya Pro, distributed from piftoworks.com) adds
sale campaigns and bulk editing. It is not required, and none of its code is part
of this plugin.

### Are API keys stored securely?

Yes. All API keys are encrypted with AES-256-GCM, protected by a key derived from`
AUTH_KEY` in `wp-config.php`. Keys are separated per connector ID, so API keys cannot
be decrypted even with direct database access.

### Can I migrate from Pochipp or Rinker?

Yes. You can import Pochipp data (CPT `pochipps`) or Rinker data from the “Migration”
tab in the admin screen. The primary ASP is determined automatically in the order
of Amazon ASIN / Rakuten item code / Yahoo `seller_id + itemcode`, and each post
is converted into a Kukuriya product with Universal Link offers. A dry-run mode 
lets you check counts and errors before committing.

**Take a full backup of your site before you start.** The migration runs in three
steps, and the third one **replaces the Pochipp or Rinker cards inside your posts
with Kukuriya cards**. There is no undo for that step: putting the old cards back
means restoring your posts from a backup. Every step can be run as a dry run first,
and you can limit a run to a single post while you check the result, so there is
no need to do the whole site at once. The plugin also asks you to confirm that you
have a backup before it will run the last step on every post.

Generic CSV import is also supported, for migrating from other tools.

### Does the plugin send data to third parties?

No data is ever sent to the plugin developer (Pifto Works). Product API calls go
directly to each ASP, using the API keys that you configure yourself. See the “External
services” section above for exactly what is sent, to whom, and when.

### Does click tracking protect visitor privacy?

Clicks are recorded in your own database only (the `wp_bcore_clicks` table); nothing
is sent to the plugin developer. IP addresses and User-Agents are stored as HMAC-
SHA256 hashes (salted from `AUTH_KEY`) and the original values cannot be recovered.
Referrers keep the host name only (path / query are discarded). No cookies are used—
a per-tab session ID lives in `sessionStorage` and disappears when the tab closes—
so cookie consent management is not required. Rows are deleted after 90 days. Recording
is on by default and can be switched off under “Measurement”.

### What happens to my data when I uninstall?

By default, the 5 `wp_bcore_*` tables (`credentials` / `offers` / `clicks` / `custom_fields_def`/`
custom_fields_value`) and related options / cron events are deleted. To keep the
data, set the option `bcore_keep_data_on_uninstall` to `true` before deleting the
plugin.

The products and the self-made links you registered are ordinary posts (custom post
types `bcore_product` / `bcore_link`) and are left in place, the same way WordPress
leaves posts when a plugin is removed. Delete them from the database if you want
a clean slate.

### Does it work on Multisite?

It works technically, but this version targets per-site operation. Network-wide 
aggregation and cross-site management are not implemented.

### Is there product caching?

Yes. Each connector’s API responses are cached short-term via the WP Transient API.
The price refresh cron persists into the `wp_bcore_offers` table independently of
the cache, so front-end rendering stays fast at all times.

### Can I write a connector for a new ASP myself?

Yes. You can distribute an independent WP plugin that implements `PiftoWorks\Kukuriya\
Contracts\ConnectorInterface`. Register it with the core via the `kukuriya_register_connectors`
hook, and it can use the core’s search UI, price refresh cron, click tracking, and
other infrastructure as-is.

### Does it work with the Classic Editor?

Yes. The “Kukuriya” button above the Classic Editor opens the same product picker
as the Block Editor. Pick a product and a template, and the `[bcore_product]` shortcode
is inserted where you were typing. Comparison tables can be placed with the `[bcore_comparison]`
shortcode.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Kukuriya” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Pifto Works ](https://profiles.wordpress.org/piftoworks/)

“Kukuriya” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/kukuriya/contributors)
for their contributions.

[Translate “Kukuriya” into your language.](https://translate.wordpress.org/projects/wp-plugins/kukuriya)

### Interested in development?

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

## Changelog

#### 0.16.4

 * Fixed: opening the product picker in the editor, or the Products tab, could take
   several seconds on sites with many posts and products. The “Used in” column was
   worked out for each product separately by searching the content of every post,
   50 times per page, whenever its 10-minute cache had expired. The posts are now
   scanned once for the whole page, and the picker’s “Saved products” tab no longer
   asks for it at all.

#### 0.16.3

 * Fixed: on sites with more than about 200 products, some products were never refreshed,
   so their cards showed no price. The price refresh picked products in ID order,
   50 at a time, four times a day, and the products at the end of the list never
   got a turn. Products are now refreshed oldest-first, and the refresh runs every
   hour instead of every 6 hours. Each product is still fetched at most once every
   6 hours, so the number of requests to the stores does not change.
 * Changed: the “Refresh now” button on the dashboard also works oldest-first, so
   pressing it repeatedly moves through all products instead of refreshing the same
   ones.
 * Changed: the dashboard shows how often each product’s price is refreshed (every
   6 hours) rather than how often the background job runs.

#### 0.16.2

 * Changed: when you search a store again for a product with a broken link, the 
   search box now starts with a short keyword made from the product name – usually
   the maker and the model number – instead of the whole name. Long store titles
   full of features found other products or nothing. The original name is shown 
   under the search box, so you can add or remove words.

#### 0.16.1

 * Fixed: the page cache was not cleared when a price refresh only changed a product’s
   own price, or when it found a broken link. Pages served from a cache plugin could
   keep showing an old price or a button to a missing page. The “Refresh now” button
   on the dashboard now clears the cache in the same way.
 * Changed: a store with a broken link is no longer counted as “needs fixing” when
   it has a link URL override, because its button already goes to the URL you entered.
   Its price stays hidden, since it was not confirmed by the store.
 * Changed: on a broken store’s row in the product editor, the product page URL 
   box can no longer be edited. Changing it did not fix the button. The editor points
   to “Add from a product page URL” instead.
 * Changed: the Moshimo settings mention Amazon before Rakuten Ichiba, in the same
   order as everywhere else.
 * Fixed: some field labels in the admin screens, such as “Amazon” in the affiliate
   route settings, were shown in capital letters.
 * Added: the manual registration connector links to its step-by-step guide on kukuriya.
   jp.

#### 0.16.0

This release comes from going through the plugin three times as three different 
people – someone moving from Pochipp, someone moving from Rinker, and someone placing
their first product link – and fixing what got in their way.

 * Added: migration from Rinker. Copy the settings, import the products and rewrite
   the cards in your posts, in the same numbered steps as the Pochipp migration.
   Synced patterns are rewritten too, and cards left in widgets or other places 
   are listed with links to edit them.
 * Added: a migration is marked as finished from the current state of the site, 
   and a large notice tells you when it is safe to deactivate the old plugin.
 * Added: products that cannot be found by search can be registered by hand from
   the product picker (“Register by hand”), with an image from the Media Library.
   When registering by URL fails, the notice links straight to it with the URL filled
   in. An ad code from A8.net and the like can be pasted as it is; only the link
   is used.
 * Added: for products you registered yourself, the price, the product page URL 
   and the text of the “View product” button can be changed on the Products tab.
   The “View product” button can be moved and turned off in the block’s button order
   like any store button.
 * Added: a Classic Editor button that opens the same product picker, then lets 
   you choose the template while looking at a preview of the card.
 * Added: a Help tab, a “Getting started” panel on the dashboard, and a one-time
   notice after activation that points to the Kukuriya screen.
 * Added: when click measurement is on, a click on a button that goes to a product
   page also sends the product code at the store (such as the ASIN), so Analytics
   CORE can match clicks with the rewards reported by each affiliate service. Search
   links and custom buttons send no code.
 * Added: an optional setting under “Measurement” that also sends card views to 
   Analytics CORE (off by default), so each card position’s clicks can be compared
   with how often it was seen.
 * Added: an Amazon tracking ID alone is enough. Without Creators API credentials,
   the Amazon button links to Amazon search results and still earns. The same applies
   to a Rakuten affiliate ID without API keys.
 * Changed: the “Pochipp compatible” template has been removed. Cards that used 
   it are shown with the Card template, which is now the default. The Simple template
   is now a light card: image, name and one button, without a price.
 * Changed: the product name is now larger than the price on cards, and there is
   more room between the image and the text.
 * Changed: stores are listed in the order Amazon, Rakuten, Yahoo! Shopping everywhere
   in the admin screens.
 * Changed: the comparison table editor is now a grid shaped like the published 
   table, with a wide-screen mode, labelled inputs per product and explanations 
   for each row. Price and rating rows can hold your own text.
 * Changed: the Rakuten settings follow Rakuten’s “app list” (Application ID, Access
   Key, Affiliate ID in one box), the Amazon settings put the tracking ID first,
   and the Moshimo and ValueCommerce settings say what they are for and what to 
   paste.
 * Changed: many screen texts in the Japanese translation were rewritten in plain
   words, and the price refresh panel shows hours and the number of products instead
   of seconds and offers.
 * Fixed: settings that cannot work are refused with the reason before they are 
   saved – a Japanese tracking ID without “-22”, a Rakuten Application ID pasted
   into the Affiliate ID field, or a link that is not an ad link of that service.
 * Fixed: when Rakuten refuses a request because the server’s IP address is not 
   registered, the connection test and the product search say so, instead of reporting
   a wrong key. Rakuten’s expiry date can be pasted as Rakuten shows it.
 * Fixed: the “See reviews” link is no longer shown for a product whose store page
   has disappeared. It comes back as soon as the product is fixed, including when
   the Amazon link is fixed with a URL override.
 * Fixed: a product you registered yourself now shows its price on the card. The
   price you entered was saved but never displayed.
 * Fixed: with only an Amazon tracking ID, the Amazon search button disappeared 
   from cards.
 * Fixed: when a card or a product has its own button order, the block settings 
   say that changes on the Design tab do not reach it, and offer to go back to the
   site setting.
 * Fixed: the editor explains why a price is not shown – older than 24 hours, not
   fetched yet, or not entered for a product you registered yourself.
 * Fixed: a product with a broken link now says how to fix it, in the product list
   and in the product editor.
 * Fixed: lists show store, product and post names instead of internal names and
   numbers, and untitled posts as “(No title) #123”.
 * Fixed: in the Classic Editor, choosing a product made the whole screen disappear.
 * Fixed: a card for a product without an image no longer breaks its layout, and
   a product whose link is broken no longer links its image and name to the missing
   page.

#### 0.15.2

 * Fixed: a second store’s price could be shown long after it had stopped being 
   fetched, with a “checked at” time that was wrong and sometimes in the future.
   When a store stopped returning a price – out of stock, for example – Kukuriya
   kept the old price and took the time of the failed attempt as the time the price
   was fetched. Prices are now judged by the last time they were actually fetched,
   so they disappear 24 hours later as intended. The card itself, with its buttons,
   stays.
 * Fixed: the click summary on the dashboard no longer says that no clicks have 
   been recorded when the table under it lists recent clicks. If there were none
   in the last 7 days, it now says so.
 * Changed: recent clicks on the dashboard are listed by the time they happened,
   newest first.

#### 0.15.1

 * Added: when links are converted through ValueCommerce – with the sid and pid 
   in the ValueCommerce connector, or in the Yahoo! Shopping connector – Kukuriya
   now outputs ValueCommerce’s impression image next to each converted link, as 
   it already does for Moshimo. ValueCommerce hands out each ad as a link plus a
   1×1 image, and until now only the link was output, so the impression count in
   your ValueCommerce dashboard stayed at zero. Nothing is output when the sid or
   pid is empty, so a site that uses LinkSwitch is not counted twice. See “External
   services” for what ValueCommerce receives.
 * Fixed: the connection test for Yahoo! Shopping or Rakuten no longer warns that
   links will not be converted when you send that store’s links through another 
   provider in Monetization route (ValueCommerce or Moshimo) and that provider is
   set up. It now says which provider converts them.
 * Changed: the link at the bottom of the Moshimo Affiliate settings is no longer
   labelled as an API key guide. Moshimo has no API key; you paste an ad link.

#### 0.15.0

 * Fixed: a comparison table no longer sends readers to a product page that has 
   been marked as gone. Product cards already switched such a button to a search
   for the product, but the table ignored the mark and kept linking to the discontinued
   page. A column now goes where the card’s buy button for that store would go –
   usually a search for the product at the same store, or the card’s first button
   when that store has none – and if the card would have no button at all, the product
   is shown without a link. Clicks on such a column are counted for the store it
   now leads to.
 * Fixed: a comparison table shows another store’s current price when the product’s
   own price has expired, as product cards already do. It used to show a dash even
   when a different store had a fresh price. The price is taken from the same store
   as the column’s button wherever possible, so the price and the link do not point
   at different shops.
 * Changed: the note under a price in a comparison table now names the store the
   price came from, as it already did on a product card (“as of 2026/09/25 10:00
   | via Rakuten Ichiba”). Now that a column can switch to another store’s price,
   the note is what tells readers whose price they are looking at.
 * Fixed: a comparison table that is wider than the page can be scrolled with the
   keyboard. It only scrolled with a mouse or touch, so the columns off to the right
   could not be reached without one. The table area now takes focus, shows an outline
   when it has it, and is announced to screen readers as a comparison table that
   scrolls sideways.
 * Fixed: the star rating on a product card no longer shows its screen-reader text
   on themes that do not hide it. The extra words relied on a class the theme was
   expected to define, and on themes without it the card read “Rating ★4.5 out of
   5, (128 reviews)”. The rating is now described by a label on the element itself,
   as it already was in comparison tables, so it no longer depends on the theme.
 * Fixed: posts that contain only `[bcore_link]` shortcodes load the plugin’s stylesheet.
   Without it, banner images in those links were not scaled down and spilled past
   the edge of the screen on phones. Links printed from other places, such as widgets
   or excerpts, are covered as well. The block version was not affected.
 * Fixed: a custom link with its own rel value keeps “sponsored” and “noopener”.
   Writing rel=”nofollow” replaced the defaults instead of adding to them, so the
   link lost the value that marks it as an ad and the safeguard for links that open
   in a new tab. The values you enter are kept and the missing defaults are added.
 * Fixed: a search link can no longer take a page down because of a store template.
   Search addresses were filled in with PHP’s sprintf, so a stray percent sign in
   a template supplied through the `kukuriya_store_catalog` filter made PHP 8 stop
   with an error and the page did not render. Only the `%s` placeholder is replaced
   now.
 * Fixed: sale classes passed in through the `kukuriya_product_render_options` filter
   are reduced to characters that are valid in a class name before they are printed.
   They were added to the card’s class attribute as they came, so a quotation mark
   in the value could break out of it.
 * Changed: the “Find my outbound IP address” button now makes its request the same
   way as every other request in the plugin, which refuses to follow a redirect 
   to a private or local address. It still contacts only `api.ipify.org`, and only
   when you press the button.
 * Fixed: the Pochipp migration could read a card and the Pochipp card right after
   it as a single card. The second card was then neither converted nor listed among
   the cards that could not be converted.
 * Fixed: a Pochipp block whose closing comment is missing, which usually comes 
   from hand editing, no longer takes the text after it with it. The migration treated
   everything up to the next closing comment – paragraphs and other cards included–
   as part of that block and replaced all of it with one card. Such a block is now
   left as it is, and the cards after it are converted or reported as usual.
 * Fixed: the Pochipp migration never saves a post it could not read to the end,
   and never saves a post that would come out empty. A very long card, or text containing
   broken characters, could make the matching fail partway, and in rare cases the
   post was written back empty. Such posts are now left untouched and listed with
   the reason.
 * Fixed: uninstalling the plugin also removes the record that the Pochipp settings
   were imported. When it was left behind and the plugin was installed again, the
   migration screen treated the site as already migrated and would not move past
   that step.
 * Added: the Products screen opens a single product for editing when its address
   carries `&product=` and the product’s ID, so a link from elsewhere in the admin
   can land straight on that product. If the product cannot be opened, the list 
   is shown as usual and the parameter is taken out of the address.
 * Changed: the Moshimo connector links to its own setup guide. It used to point
   at the index of the guides.
 * Added: for developers, `kukuriya_product_link( $product_id, $store )` returns
   the link a reader would follow for a product: the same link as the card’s buy
   button for that store – the product page through your monetization route, or 
   a search link only when that search earns – and an empty string otherwise. `kukuriya_product()`
   returns the plain product URL, which earns nothing, so an add-on that lists products
   had no proper link to give them. Escape the result when you print it.
 * Added: for developers, `PiftoWorks\Kukuriya\Links\PlacementScanner::by_kind()`
   sorts what a post contains – cards, comparison tables, links, inline product 
   links and any Pochipp cards still left – using the same rules the migration uses
   to rewrite them, and says whether it could read the whole post. `PlacementScanner::
   RULES_VERSION` goes up whenever those rules change, so anything that stores the
   result knows when to rebuild it.

#### 0.14.1

 * Fixed: changing a monetization route, saving connector credentials or saving 
   the design settings now clears your page cache. Until now only saving a product
   did. If you switched a store to a different network, pages already in the cache
   kept handing out the old links, which earned nothing, and there was nothing on
   screen to say so. The same applies to the scheduled price refresh: cached pages
   kept showing the old price and the old “as of” date, past the 24-hour limit the
   card is supposed to respect.
 * Fixed: a store button that cannot be monetized is no longer shown as a bare search
   link. Kukuriya ships with Amazon, Rakuten and Yahoo! Shopping enabled and falls
   back to a search link for stores with no product data, so a site that had only
   set up Rakuten was publishing plain Amazon and Yahoo! search links. They sent
   visitors away and earned nothing. Buttons for products you have actually registered
   are unaffected.
 * Fixed: a store whose route cannot work is shown in the monetization route list
   with the reason, instead of disappearing from it. A store with no credentials
   of its own and no working route was dropped from the list entirely, so the setting
   could not be corrected and nothing explained why its links were not being converted.
   Migrating from Pochipp could leave a store in exactly that state.
 * Fixed: the route list also refuses combinations that cannot work, such as routing
   Amazon through the Rakuten connector. These were accepted and produced broken
   links.
 * Fixed: pasting a Moshimo ad link into the wrong merchant section is now refused,
   naming both merchants. Moshimo issues a different set of IDs per merchant and
   its ad link carries the advertiser number, which Kukuriya already knows; it was
   reading only the partnership ID and ignoring the rest. An Amazon ad link pasted
   into the Rakuten section therefore read as “set up”, the links still redirected,
   and nothing was ever tracked.
 * Fixed: the click-measurement endpoint now only accepts beacons sent from your
   own site, and its rate limit is applied atomically where an object cache is available.
   Anyone could previously post arbitrary values to it and distort the click figures
   in your dashboard. Nothing about what is stored has changed: addresses and user
   agents are still hashed, never kept in the clear.

#### 0.14.0

 * Added: when a store is routed through Moshimo Affiliate, Kukuriya now outputs
   Moshimo’s impression tag alongside the link. Moshimo hands out each ad as a pair–
   a link that counts clicks, and a 1×1 image that counts how often the ad was shown–
   and until now only the link was output. The impression count in your Moshimo 
   dashboard therefore stayed at zero and the click-through rate could not be read.
   Commissions and clicks were never affected; they are counted by the link itself.
 * Added: the tag is output once per placement – next to each purchase button, each
   inline product link and each comparison-table button – and only if you have entered
   a Moshimo partnership ID (a_id) and chosen Moshimo as the route for that store.
   Your visitors’ browsers then load an image from `i.moshimo.com` whenever such
   a page is shown. The “External services” section above describes exactly what
   Moshimo receives.
 * Changed: the Moshimo connector asks for three values instead of sixteen. The 
   p_id, pc_id and pl_id that Moshimo issues per advertiser are the same for every
   site and every partnership, so the plugin now holds them and asks only for the
   a_id of each of the three advertisers. Values you saved in an earlier version
   are still read, and still take precedence.
 * Changed: the Yahoo! connector links to its own setup guide, which walks through
   the Yahoo! Developer Network and the ValueCommerce registrations separately. 
   It used to point at the index of the guides.
 * Fixed: the “saved” banner in the settings screens disappears on its own. It used
   to stay until you saved again or touched a field, covering the top of the page–
   the admin bar included – for as long as you left it alone. All six screens are
   affected.
 * Fixed: the cross in a comparison table is the same size as the circles beside
   it. The multiplication sign used until now is a Latin-width character, so at 
   the same font size it looked smaller than the full-width circles – most noticeably
   in Yu Gothic, the usual default on Windows.

#### 0.13.9

 * Added: the product list now shows, for each store, whether its button opens the
   product page or only searches for the name. Until now the list showed a number,
   and finding the gaps meant opening products one at a time.
 * Added: those store labels are buttons. Press one and Kukuriya searches that store
   for the product, so you can fill a gap without leaving the list.
 * Added: a filter that leaves only the products still searching at a store you 
   pick, so you can work through the gaps one store at a time.
 * Fixed: the new column no longer lists a store whose button does not appear on
   the site. Mercari can only be linked directly through a URL override, so without
   an ambassador ID its button is never rendered, yet the list described where that
   button would go.
 * Fixed: error messages from the connectors are translatable. Until now a missing
   Rakuten application ID, an Amazon rate limit and similar problems were shown 
   in English regardless of the site language.
 * Fixed: the product list no longer spills past the panel on narrow screens. The
   table scrolls sideways instead.
 * Fixed: the tabs across the top wrap onto a second line on narrow screens. They
   used to be squeezed into one row until each label broke into a vertical stack
   of single characters.

#### 0.13.8

 * Added: a button in the Rakuten connector settings that looks up your server’s
   outbound IP address. Rakuten asks for it when you register an application as 
   an “API / backend service”, and it is not the address your own domain resolves
   to. The value can be copied with a click, and nothing is sent anywhere until 
   you press the button.
 * Added: an optional expiry date for your Rakuten application. Rakuten does not
   tell you when the key is about to stop working, so the settings screen starts
   reminding you 30 days ahead. If a call does fail, the connection test now names
   both of the causes that produce the same error and how to tell them apart.
 * Added: links from each connector’s settings to the setup guide for that service,
   and to the terms of the company providing the API (Amazon / Rakuten / Yahoo!).
 * Changed: “no affiliate ID is set” is no longer folded into the green success 
   message of a connection test. It is shown as a warning of its own, and it appears
   as soon as you save the credentials rather than only after you run a test.
 * Changed: connector settings are grouped under headings that separate the keys
   used to fetch product data from the keys used to earn a commission.
 * Changed: the migration screen and the FAQ now say plainly that the last step 
   rewrites the cards inside your posts and cannot be undone, and that a full backup
   is the way back.

#### 0.13.7

 * Changed: the hint that appears when a comparison table scrolls sideways is now
   a light chip with dark text instead of a dark bar. It sits over the buttons in
   the last row, and the dark version read as though it were covering them up.

#### 0.13.6

 * Changed: the “scroll sideways” hint on a comparison table is shorter, and the
   buttons underneath show through it. The old line ran long enough to sit on top
   of them.

#### 0.13.5

 * Changed: the Amazon button is a brighter orange out of the box. The old one read
   as brown next to the other stores. Sites that picked their own Amazon colour 
   under Design are unaffected.

#### 0.13.4

 * Fixed: the store buttons in a comparison table ran together into one solid bar.
   Each button was overflowing its column by the width of its own padding on themes
   that do not set border-box sizing for you, Twenty Twenty-Five among them. Most
   themes do set it, and those were never affected.
 * Fixed: a column label such as “Top pick” covered the product name next to it 
   once a table had several columns. A table that uses a label now keeps room for
   it above every heading, so the names still line up with each other.

#### 0.13.3

 * Fixed: the sample card on the Design screen carried a real manufacturer’s name
   as its brand line. It is a made-up name now. Nothing on your site changes — the
   name only ever appeared in that preview, before you pick a product.

#### 0.13.2

 * Changed: cards and buttons have much squarer corners out of the box. The 14px
   radius made every card look like a pill, which fought with most themes. Sites
   that set their own radius under Design are unaffected.
 * Changed: a one-line (compact) card is now one link the whole way across. The 
   row used to be dead except for the round arrow on the right, and nothing said
   so.
 * Changed: the column headings in a comparison table are the same size as the product
   names below them. They were smaller, which read as though the headings mattered
   less than the rows.
 * Fixed: the store buttons in a comparison table disappeared. The link that rewrites
   inline product mentions was also rewriting the buttons the table had already 
   drawn, and stripped the class that made them look like buttons.
 * Fixed: a product name in a comparison table was drawn in your theme’s link colour
   and weight, so it looked like body text that happened to be linked instead of
   the name of the thing in that row.
 * Fixed: on a phone, the store name inside a button (Amazon, Rakuten, and so on)
   was set thin and narrow while the button around it stayed large.

#### 0.13.1

 * Fixed: cards no longer turn dark on their own. Following dark mode was on by 
   default, but the browser setting it follows has nothing to do with your theme,
   so a card could go black in the middle of a light page. It is off by default 
   now, and the setting says what it actually follows. Sites that already saved 
   a choice keep it; turn it back on under Design if your theme follows the browser
   too.

#### 0.13.0

 * Changed: every on/off control in the admin screens is now a two-part “Off | On”
   switch, with the chosen side filled in. The round sliding knob did not say which
   side was on, and the pale colour made it worse.
 * Changed: a product opens in a window of its own instead of unfolding underneath
   the list. With a full page of products the editor used to sit far below the fold,
   so editing meant scrolling past fifty rows first.
 * Changed: that window is now divided into sections you open one at a time — card
   overrides, micro-copy, link URLs, custom buttons, sale, posts using it, and store
   buttons — all closed to begin with. Roughly forty fields used to stand in one
   flat column. Sections that can be counted show how many things are set in them.
 * Changed: the store section was rebuilt. It now lists every store a product can
   be fetched from, one row each, and says where that store’s button goes: straight
   to the product page, or to a search for the product name. Only the stores that
   had been registered were shown before, which made a card with four buttons look
   as though it had one.
 * Changed: the comparison table list is one card per table, with the post title
   on a line of its own. As a seven-column table the product column swallowed the
   width and the rest collapsed into single letters stacked vertically.
 * Changed: product lists take a page number, and have First and Last buttons, so
   a site with thousands of products is not paged through one screen at a time.
 * Changed: sliders are thicker, with a grab handle you can actually hit — a 3px
   line with a 14px dot was hard to hold with a mouse and worse on a touch screen.
 * Fixed: the product image on a card sat above the middle of the row, so it crowded
   any label above it and left a gap below. It is centred now.
 * Fixed: the icon beside “See reviews” was an empty outline. It has the three dots
   inside it that make it read as a speech bubble.
 * Fixed: the card preview on a product’s screen ignored the site-wide design settings,
   so button colours there did not match the front end.
 * Fixed: rows that put a text field next to a button had the two at …

## Meta

 *  Version **0.16.4**
 *  Last updated **13 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 **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/kukuriya/) and [Japanese](https://ja.wordpress.org/plugins/kukuriya/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/kukuriya)
 * Tags
 * [affiliate](https://kea.wordpress.org/plugins/tags/affiliate/)[amazon](https://kea.wordpress.org/plugins/tags/amazon/)
   [rakuten](https://kea.wordpress.org/plugins/tags/rakuten/)[yahoo](https://kea.wordpress.org/plugins/tags/yahoo/)
 *  [Advanced View](https://kea.wordpress.org/plugins/kukuriya/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ Pifto Works ](https://profiles.wordpress.org/piftoworks/)

## Support

Got something to say? Need help?

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