WordPress Amazon search shortcode: how [psfa_search] works and where to place it

Quick answer: Put [psfa_search] in a page, a post, a page-builder shortcode element, or a widget area, and PaapiPlugin renders a live Amazon search there. It takes 13 attributes, 11 of which work on the free version. A bare [psfa_search] shows the search box and nothing else until a visitor searches, which is designed behavior and not a broken install.
You installed the plugin, pasted the shortcode into a page, hit preview, and got one search field sitting in white space. No filters, no products, no obvious next step. Nothing is broken, and that confusing first minute is where this guide starts.
The WordPress Amazon search shortcode has 13 attributes, four sensible homes on a site, and a few behaviors that look like bugs until somebody explains them. The case for on-site Amazon search in the first place is a different post: Amazon product search in WordPress.
What [psfa_search] actually renders
On a page carrying a plain [psfa_search] and nothing else, a visitor gets a search field. The filter row
is not there, and hide_filters has nothing to do with it. Filters render once there is something to
filter: after the visitor searches, or when the shortcode itself carries a query or a
category.
There is no category dropdown for visitors either. The storefront picker is off, so the category
attribute is your only way to scope a widget to a department. Visitors search and filter inside the scope you hand
them.
Once a search runs, results come back in a responsive grid. Free stops at 5 pages, roughly 50 products; Premium goes to Amazon's own 10-page ceiling and adds the list layout. That depth follows your license, not your API path, so bringing your own Amazon credentials does not buy deeper pagination on free. The rest of the free tier limits are written out here.
Want products on screen the moment the page loads? Give the widget a query or a
category. Otherwise the grid waits for the visitor to type. There is one running on the
demo page.
Every attribute the WordPress Amazon search shortcode accepts
Thirteen attributes, and that is the whole list. WordPress strips anything else before the plugin sees it, so an attribute that is not in this table has no effect.
| Attribute | What it does | Values | Tier |
|---|---|---|---|
category |
Scopes the widget to one Amazon department. | Category name, case-insensitive | 5 on free |
auto_detect |
Guesses a category from the page slug or title when you have not set one. On by default. | Set category to take control |
Free |
query |
Pre-fills the search box and runs that search on load. | Any text, case-sensitive | Free |
brand |
Restricts results to one brand. | Exact brand name, case-sensitive | Free |
sort |
Sets the starting sort order. | Relevance, Price:LowToHigh, Price:HighToLow,
AvgCustomerReviews, NewestArrivals, Featured |
Free |
hide_search |
Hides the search bar. | true, 1, yes |
Free |
hide_filters |
Hides the filter panel. | true, 1, yes |
Free |
hide_category_banner |
Hides the category header above the results. | true, 1, yes |
Free |
pagination |
Chooses infinite scroll, a Load More button, or no pagination at all. | infinite (default), button, none |
Free |
count |
Number of products shown, but only when pagination is off. | 2 to 20 | Free |
min_saving_percent |
Filters to products discounted by at least this much. | 0 to 99 | Premium |
has_deal |
Filters to products with an active deal. | true, 1, yes |
Premium |
mode |
Forces the Top Products grid on when the admin toggle is off. Needs no query, no category, and an Associate tag. | top |
Free |
The four that catch people out
pagination takes three values and no others. A Load More button is
pagination="button". Anything else quietly becomes infinite scroll, so a typo here looks exactly like
the attribute being ignored.
count only limits the grid when pagination is off. Under infinite scroll or a Load More button it
changes nothing you can see. Use the two together: pagination="none" count="6".
query and brand are both case-sensitive. Amazon matches brand names literally, so
LG and lg are two different strings and one of them comes back with nothing.
hide_search="true" changes the filters as a side effect. The filter toggle lives inside the search
bar, so with the bar hidden the panel renders open and cannot be collapsed. Usually you want
hide_filters="true" next to it.
What Premium changes here
Two of the 13 are Premium: min_saving_percent and has_deal, the discount filters. Both
are also hidden on the Managed API (Beta) path even for paying
customers, because price and deal data is deliberately not carried there. On the Creators API path with your own
credentials, Premium shows them.
category is the other tier split. Free covers 5 categories: Electronics, Books, Fashion, Toys &
Games, and Home & Garden. Premium covers every category your Amazon store offers. Pass a Premium category on a
free license and the widget shows an upgrade notice instead of breaking. Misspell one and it quotes your spelling
back at you.
One more quirk before you set sort: the Managed API (Beta) path shows visitors only Relevance and
Customer Reviews. The other four options need your own Amazon credentials.
Where to put the shortcode
Anywhere WordPress expands shortcodes. In practice, four places:
More than one search widget on a page
Every [psfa_search] on a page shares one browser URL. An interactive, unscoped widget writes the current
search into that URL, and a second widget reads it back and overrides its own settings. The plugin gates that: a
widget with a fixed query, a fixed category, or hide_search="true" ignores
the page URL in both directions.
So give every widget except one a query, a category, or
hide_search="true". Keep one plain interactive box if you want shareable search URLs and a working
back button.
Four setups worth copying
A category landing page. Results and filters load immediately.
A curated block inside a longer review post. Six products, no pagination controls.
A quiet grid with no chrome. The hidden search bar makes this one URL-inert, so it is safe alongside another widget.
A Load More button instead of infinite scroll.
There is a shortcode builder in wp-admin that composes most of this and copies it to your clipboard, if you would rather click than type. The full attribute reference lives in the documentation.
What has to be in place before it returns products
The shortcode registers on every install, free or Premium, with or without credentials, so it always renders something. Whether it contains products comes down to three things.
An API connection. Either the Managed API (Beta), where the plugin holds the key and you skip Amazon credential setup, or the Creators API with your own client ID and secret. Bad credentials print an error to every visitor, not just to you, so check a logged-out view after setup. If you are staring at an OAuth error code, we decoded those separately.
An Associate tag. Required on both paths, no exceptions. It is what makes the product links pay you, and if you have not set one up yet, start with the Amazon Associates guide.
Quota, on the Managed path only. Free gives you 600 searches a month and 20 a day. Bring your own credentials and you run against your own Amazon quota instead. Premium raises the managed allowance, and the current numbers are on the pricing page.
When the results grid comes back empty
Empty grids have a handful of causes.
On the Managed API path, running out of quota and failing authentication both return an empty result with no error attached to it. To a visitor, out of quota and no matches look identical. The signal is an admin notice in your WordPress dashboard, so read that before you conclude Amazon had nothing to show.
Still on Managed: an empty first paint is by design. The server skips the product fetch and the browser asks for page one itself, so a blink of empty grid on load is normal.
If the literal text [psfa_search] shows on the page instead of a widget, that content never went through WordPress shortcode processing. Usual suspects: a raw HTML field in a page builder, an excerpt, or a deactivated plugin.
If the container renders but never fills, JavaScript is not running. A script conflict, an optimizer that mangled the bundle, or a strict content security policy each leave the pre-hydration placeholder on screen, which reads "No products found".
Exclude pages carrying the search widget from full-page caching. Results are built from the request URL, so a cache or CDN that ignores the query string will happily serve one visitor's search results to everyone who follows.
One last Managed-path habit: after changing your Associate tag, open a rendered product link and confirm the new tag is in the URL. On that path the tag lives on our side, and the resync has no failure message to show you.
Where the search widget ends and the add-ons begin
[psfa_search] is the search widget. It does not drop product boxes or comparison tables into your posts, and the plugin never rewrites your content or auto-links keywords. Product output appears where you put a shortcode.
Product Boxes and Comparison Tables are separate add-ons at $19 a year each, with their own shortcodes and their own attributes, and each needs Premium on the main plugin. The one place they touch the search widget is the capture buttons in the results grid, which only a logged-in administrator sees.
Frequently asked questions
What is the WordPress Amazon search shortcode?
psfa_search is the shortcode PaapiPlugin registers for its live Amazon search widget. Put it in a page, a post, a page-builder shortcode element, or a widget area, and it renders a search field and a grid of Amazon products carrying your Associate tag. It accepts 13 attributes.
Why does my search shortcode show no filters?
Filters only render when there is a search context. On a bare shortcode with no query and no category, the filter row stays absent until the visitor searches. Add a query or a category attribute if you want filters visible on page load. The hide_filters attribute is a separate control and is not the cause.
How do I add a Load More button instead of infinite scroll?
Use pagination="button". The pagination attribute accepts only infinite, button, and none. Any other value, including load_more, silently falls back to infinite scroll with no error message.
Can I put more than one Amazon search widget on the same page?
Yes. Every widget shares the same browser URL, so give all but one of them a fixed query, a fixed category, or hide_search="true". A widget with any of those three ignores the page URL and keeps its own settings.
Which psfa_search attributes need PaapiPlugin Premium?
Two of the 13: min_saving_percent and has_deal, the discount filters. Both are additionally hidden on the Managed API (Beta) path even for Premium customers, because price and deal data is not carried on that path. The category attribute is tier-limited too: 5 categories on the free version, and every category your Amazon store offers on Premium.
Does the shortcode work in Elementor and other page builders?
Yes. Use the builder's shortcode element. There is no dedicated Gutenberg block either; in the block editor, use the Shortcode block that ships with WordPress.
My Amazon search results are empty. What should I check first?
On the Managed API path, an exhausted quota and a failed authentication both return an empty result with no visible error, so an empty grid does not always mean Amazon had no matches. Check the admin notice in your WordPress dashboard first, then confirm your Associate tag is set and exclude the page from full-page caching.
Get the search widget live on your site
PaapiPlugin is free on WordPress.org: 5 categories, 5 pages of results, and 11 of the shortcode's 13 attributes. Premium is $39 a year for one site and adds every category your Amazon store offers, results up to Amazon's 10-page ceiling, and the appearance options.
Read the full attribute reference →Note on refunds: PaapiPlugin Premium comes with a 7-day money-back guarantee. If the plugin is unusable and we are unable to resolve the issue within 7 days of your purchase, we will refund you in full. See the Terms and Conditions for details.


