Troubleshooting
The price says "Monthly or Yearly" instead of a figure
That is the plugin telling you the truth: the plan and licence tier resolved fine, but it does not sell the billing cycle currently on show, so there is no figure to print. The words are built from the cycles it does sell, in your own labels for them.
It happens when a billing cycle toggle is on a cycle that tier lacks, or when your Default cycle under Billing cycle on the Settings screen is one that tier lacks. Three ways out:
- Pin the price with
cycle="annual", which also stops a toggle moving it. Best for a card that must always show its own figure. - Write
missing="hide"to print nothing at all instead. - Write
missing_text="..."for your own wording.
See Prices. Add the missing price in the Freemius dashboard and the figure appears by itself.
The saving badge does not show
The badge is opt in and computed, so all four of these have to be true:
- the toggle asks for it, with
badge="1"or the Show saving control; - the product's headline tier (the plan and licence tier a bare
[pflp_price]resolves to) sells both a monthly and a yearly price; - the yearly price is actually cheaper than twelve months of the monthly one;
- the billing cycle toggle itself is rendering, which needs the product to sell more than one cycle.
Nothing is printed when the saving cannot be worked out, because a saving nobody can compute is a saving the page must not claim. See Toggles.
A price renders as a blank space, or a button does not render at all
The shortcode names a row that does not exist at all: a plan name that does not match, or a licence tier the plan does not sell. A price leaves a blank space and a button renders nothing, both deliberately, and neither ever shows a zero or another row's figure.
Check it in the Shortcode builder on the product's own screen (Freemius
Pricing, Products, then the product's name): it can only build combinations your
product actually sells, and Every price this product sells underneath lists
every row the API returned. The Logs tab of the Settings screen records the
reason as a shortcode_row_missing line naming which shortcode asked and which
part did not match.
An attribute you leave out is filled in for you; one you write is not. A cycle
value that is not monthly, annual or lifetime is treated as a typo and
renders a blank, rather than as a cycle the plan does not sell.
The Shortcode builder says nothing has been fetched yet
The product has no stored prices. Check the token with Test token, save, then press Refresh now on the Status card. The Products list says the same thing in its Status column.
Test token fails
The message includes what Freemius itself said. The usual causes:
- the token belongs to a different product than the ID on the screen
- the token was copied with a space at one end
- the product ID is wrong
The Test button always tests what is in the field, never what is saved, so you can paste, test, and only save once it passes.
Prices are right in the dashboard but old on the site
- Press Refresh now, from the product's row on the Products list or from the Status card on its own screen. If the prices update, the fetch works and the webhook is the problem.
- Read the Webhook line on the Status card. Registered with Freemius with no recent delivery means Freemius has nothing to send or the delivery is not arriving; Not registered says why and a later save tries again; Not enabled by Freemius for this product means Freemius has not unlocked webhooks for it yet, which is not a fault of the token or the site.
- Show webhook URL underneath opens the URL and the six events, for checking against the Freemius dashboard under the product, then Webhooks, then Listeners.
- If deliveries arrive but nothing changes, save the product once: that refetches the product secret key, which is what proves a delivery genuine.
The features list is empty
The plan's features arrive with a fetch, and a copy stored before this plugin started reading them has none. Press Refresh now on the product's screen, or wait for the next refresh. If the list is still empty, the plan has no features in the Freemius dashboard, and the block renders nothing rather than an empty box.
An admin notice says prices could not be refreshed
The stored prices are still being shown, so your pages are not broken. The Products list shows Error for that product, and the Last error line on the Status card gives the reason and when it happened. Common causes are a token revoked or regenerated in the dashboard, and an outbound connection blocked by the host.
A toggle does not appear
Neither toggle renders a control with one option. The currency toggle is absent when the product is priced in a single currency, and the billing cycle toggle is absent when every plan of the product sells the same single cycle. Add a second currency or a second billing cycle in the Freemius dashboard and the toggle appears by itself, with no edit to the page.
Every visitor sees the same currency
- Check that the product actually has rows in more than one currency.
- A browser extension may be blocking the location lookup. That is not an error and the toggle still works.
- A price with
currency="..."is pinned on purpose and never swaps.
The checkout opens in the wrong currency
The plugin adds the currency to links pointing at checkout.freemius.com only.
A button linking anywhere else keeps whatever it was given. A [pflp_button]
with currency="..." is pinned on purpose and keeps that currency whatever the
toggle says.
The overlay checkout opens the hosted page instead
That is the deliberate fallback. It happens when the link's product or plan is not a plain number, or when the checkout script has not loaded. The hosted page carries the same product, plan, licences, billing cycle and currency, so the purchase is unaffected.
The buy button is a plain grey button
Your theme styles nothing, so the plugin's own fallback is what you see. The
button leads with wp-element-button, the class WordPress gives its own
buttons, and in most block themes that is enough. Where it is not, the fallback
is written with no specificity at all, so anything you write wins: add your
theme's button class under Button classes on the Appearance tab for every
button at once, class="..." on one shortcode, or use the block and its colour,
typography, spacing, border and shadow panels. See
Styling.
The shortcode shows as text in the editor
That is what a shortcode looks like in the editor: it renders on the published page, not in the editing screen. Use the blocks if you want to see the figure while you edit; they preview the real server-rendered markup, and a Shortcode block converts to the matching block in one click. If the shortcode shows as text on the published page too, the plugin is not active, or it was typed into a field that does not run shortcodes.
Prices refresh late on a quiet site
Without a webhook, a refresh is scheduled by a page view that finds the stored prices older than Refresh after, and the scheduled job runs through WordPress's own scheduler, which itself runs on page loads. On a site with no visitors and no server cron, both wait for the next visitor, and the worst case is about a day. The webhook removes the wait entirely.
A visitor's choice is not remembered
A currency choice is kept in the visitor's own browser, not in a cookie and not in an account, so the same person on a phone and on a laptop is two visitors. Nothing about the choice reaches your server, which is also why a cached page can never carry one visitor's currency to another.
A billing cycle choice is never remembered, on purpose. It belongs to the page being read, and a remembered cycle would contradict the price the next page was published showing.
One token does not cover all my products
Each Freemius product has its own API Bearer Authorization Token, and this plugin holds one per product. Add each product on Freemius Pricing, Products with its own token; a shortcode or block then names the product it wants, or leaves it out to use the first one configured.
Where is the log?
Freemius Pricing, Logs in the sidebar opens the Logs tab of the Settings
screen. You can change the level, clear it and download it there. On disk it is
wp-content/uploads/plugupp-live-pricing-for-freemius/plugupp-live-pricing-for-freemius.log.
No token or secret is ever written to it.
