Skip to main content

The visitor's currency

Every price on the page is shown in the currency the visitor is most likely to pay in, and the same page serves everyone. There is no per-visitor render: the server writes each price into the page in every currency the plan is sold in, and the visitor's own browser picks one. This page explains which one, why you may see a different figure from a colleague abroad, and how to take control of it when a page must read in one currency.

Which currency a visitor sees​

In this order, the first that applies:

  1. A currency they chose. If they have pressed the currency toggle on any page of your site, that choice wins, on every page, until they change it. It is stored in their own browser (localStorage), never on your server, so it does not follow them to another device. You can turn the remembering off under Freemius Pricing, Settings.
  2. Their location. Otherwise the browser asks Freemius's own endpoint, https://checkout.freemius.com/geo.json, which answers with a currency code for where the visitor is. The answer is kept in their browser for an hour, so the call is not repeated on every page. Nothing about the visitor reaches your server, and the request carries nothing beyond itself (which, like any web request, includes their IP address).
  3. Your default currency. If the lookup is blocked or fails, or answers with a currency the product is not sold in, the visitor sees the default set under Freemius Pricing, Settings, which is also what the page carries before any of the above has run. A price that is not sold in your default at all shows the first currency it does have, rather than a blank.

A currency the product is not sold in is never shown: a visitor in Switzerland sees your default, not a CHF figure the plan does not have.

What you see from your own desk​

You see the figure for where you are, not the figure in your Freemius dashboard. A site owner in the UK looking at a product priced in USD, EUR and GBP sees the GBP price on every page, and so does a colleague in Germany see EUR, while the dashboard's plan table is in USD. All three are the plan's own prices, taken from the same fetch; none is a conversion.

To see the page as another visitor would, use the currency toggle if the page has one, or clear the choice and the cached lookup from your browser's site data and reload from a different location (a VPN, or a mobile connection abroad). The server-rendered figure, the one a crawler or a plain curl sees, is your default currency.

Pinning a price to one currency​

A price that must read in one currency regardless, in a sentence or on a page written for one market, takes a currency attribute:

[pflp_price currency="usd"]
[pflp_button plan="agency" currency="usd"]

A pinned price is never swapped and is not counted as a currency the page offers, so the toggle leaves it alone. A pinned button opens the checkout in that currency, and in overlay mode the overlay opens in it too. The block editor has the same choice in the price and button blocks' Currency dropdown, where "Follow the visitor" is the default. cycle pins a billing cycle in exactly the same way; see Prices.

Caches and CDNs​

Because the currency is chosen in the browser after the page has loaded, a page cache, a CDN or a static export can never serve one visitor's currency to another: every copy of the page holds every currency. That is the whole reason the swap is client-side.

Products sold in one currency​

If a plan is priced in one currency only, there is nothing to choose: the price is shown as it is, the currency toggle renders nothing, and the visitor's location is not looked up for it. Add a second currency in the Freemius dashboard and the toggle appears on its own, with no edit to the page.

The toggle itself​

What the currency toggle looks like, its five styles, its size, its spacing and the colour of the chosen option are on Toggles, which it shares with the billing cycle toggle. Pressing either one repaints the page from data it already holds, so a currency and a billing cycle can be chosen in any order with no request to your server.

What is sent where​

  • Your server never learns a visitor's currency or location.
  • The visitor's browser makes one request to checkout.freemius.com, once an hour at most, and only on pages that render a price or a toggle and only when no choice has been made. Freemius's privacy policy is at https://freemius.com/privacy/.
  • The chosen currency is added to checkout links in the visitor's browser too, so the checkout opens in the currency they were reading.