Description
Most hosting companies sell from a WordPress site and bill from something
else, so the pricing page drifts away from what customers are actually
charged. This plugin reads your plans, prices and domain availability straight
from your own Keel installation, so it cannot.
Sixteen shortcodes, every one reading your own installation: pricing tables, a
price inline in a sentence, a full plan page, your product groups, an order
button carrying the plan and term the visitor chose, domain prices, a working
domain search, your network status, your announcements, your knowledgebase
with its own search, the promotions really running, a currency switcher, a
comparison table, a contact form that opens a real ticket, and your Trustpilot
rating. All but two are blocks as well.
It holds no key and stores no customer data. Keel’s storefront API is
unauthenticated by design: a price list is public, and a key shipped inside a
downloadable plugin is not a secret. The plugin is read only and can change
nothing in Keel.
Three things stay off until you turn them on: the knowledgebase and
announcements at the Keel end, the Trustpilot rating here.
External services
Everything below leaves the browser or your server. None of it carries
anything personal, and three of the four are off unless you turn them on.
-
Your own Keel installation, at the address you enter in Settings then
Keel. Read only, anonymous, server to server: your plan list, your domain
prices, and whether one name is free. What is sent is the domain typed into
the search box, and a request header naming this plugin, its version and
this site’s own address, so that your Keel can tell which of your sites is
asking. Nothing is sent to us or to any address but the one you entered. -
A captcha provider, only if your Keel requires a solved challenge on
domain searches, and only on a page carrying a search: Google reCAPTCHA,
hCaptcha or Cloudflare Turnstile, whichever you chose in Keel. Script URLs
and policies are under “What exactly does a captcha load?” below. -
Trustpilot’s widget, only with
[keel_reviews mode="widget"]. The
browser loads
https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js.
Terms
https://corporate.trustpilot.com/legal/for-reviewers/terms-of-use-for-consumers
and privacy
https://corporate.trustpilot.com/legal/for-reviewers/privacy-policy-end-user -
Your public Trustpilot profile, only with
[keel_reviews mode=”cached”]. Your server reads the rating from the page
you name and holds it six hours. Nothing loads in the browser, no cookie is
set, and the request names only this plugin and its version, not your site.
Same terms as above.[keel_reviews] is off by default, and with it off neither 3 nor 4 happens.
Screenshots



Blocks
This plugin provides 9 blocks.
- Keel network status Whether anything is broken right now, and what planned work is coming, read from Keel.
- Keel knowledgebase Your help guides, read from Keel, with a page for each one under this page.
- Keel product groups Your catalogue's groups, each with its cheapest recurring price, for a menu or a landing page.
- Keel offers The discount codes that are really on, read from Keel so a banner cannot promise what the basket refuses.
- Keel announcements Your news, planned maintenance and incident notices, read from Keel.
- Keel domain search Lets a visitor check whether a domain name is free. Keel asks the registry; this does not speak WHOIS.
- Keel domain prices What each domain extension costs to register, transfer and renew, read from Keel.
- Keel plan One plan in full, including the choices and extras its order form offers, read from Keel.
- Keel pricing table Your live hosting plans and prices, read from Keel.
Installation
Keel lives on a hostname of its own, beside this WordPress site:
https://example.com– your WordPress sitehttps://clients.example.com– Keel
- Install and activate the plugin.
- Go to Settings Keel.
- Put in the address Keel is on, the one your customers use to sign in. No path. Leave the Storefront box empty.
- The Connection section on that screen tells you straight away whether it worked, which storefront Keel answered for, whether a domain search will run, and the group slugs to paste into a shortcode.
FAQ
-
What do I put in `product` if my plans have no slugs?
-
The id, which Settings Keel lists beside every plan. A plan converted from
another billing system often has no slug yet, and the storefront says so by
sendingnull– so the shortcode takes either, exactly as Keel’s own order
form does, and a page and the order form it links to therefore always resolve
the same plan. -
Can Keel go in a subdirectory of my WordPress site?
-
No. Keel identifies a company by hostname, and the table it reads has no path
in it at all, so a path cannot say which company a request is about. Give Keel
a hostname of its own. -
What do I put in the Storefront box?
-
Nothing. The address identifies your storefront, and it is the one identifier
you cannot get wrong. The box is a compatibility route for an installation that
does not yet know the address you entered.If you do fill it in with a name belonging to a different company from the
address, Keel refuses the request and the settings screen explains it, rather
than showing one brand’s prices and sending the buyer to another brand’s order
form. -
Your Keel is asking for a solved challenge. That challenge is on for domain
searches whatever the per-form switch says, because the search is the one thing
on a storefront that can cost you money at a registrar.This plugin draws the box for reCAPTCHA v2, hCaptcha and Turnstile. It cannot
draw invisible reCAPTCHA v3, which has no box. Settings Keel says which
one you are on. Either pick one of the three on Keel’s captcha screen, or clear
the captcha keys there and let Keel rely on its own cache and daily lookup
ceiling. -
A price I just changed is still showing the old figure
-
Prices are cached for five minutes so a busy pricing page does not ask Keel on
every hit. It will catch up on its own, or press Clear the cache on the
settings screen. -
Keel is down. What do visitors see?
-
The last prices this site managed to read, for up to a week, rather than a
blank space or an error. The settings screen and a notice in your admin say
that is what is happening, for as long as it is happening.Domain availability is never served from an old copy. A week-old “available”
would sell a name somebody else already registered, so a lookup that fails
says it failed. -
Can visitors order without leaving my site?
-
No, and that is deliberate. Payment, tax and terms belong in one place. Each
plan links to your Keel order form. -
What exactly does a captcha load?
-
Only the provider your Keel is set to, and only on a page with a domain
search. Google reCAPTCHA ishttps://www.google.com/recaptcha/api.js, terms
https://policies.google.com/terms, privacy https://policies.google.com/privacy.
hCaptcha ishttps://js.hcaptcha.com/1/api.js, terms
https://www.hcaptcha.com/terms, privacy https://www.hcaptcha.com/privacy.
Cloudflare Turnstile is
https://challenges.cloudflare.com/turnstile/v0/api.js, terms
https://www.cloudflare.com/website-terms/, privacy
https://www.cloudflare.com/privacypolicy/. With no challenge required by your
Keel, none of them is loaded at all. -
How do I show a pricing table?
-
[keel_pricing group=”shared-hosting”] draws cards side by side.
[keel_pricing group=”shared-hosting” layout=”comparison”] puts the plans
across the top and what each includes down the side. Add
featured=”advanced-hosting” to mark one. Both read the same plans, so two
pages cannot disagree.Rows come from what each plan says it includes, entered in Keel as a label
and a value. Use the same label across a group and the rows line up. Only
“yes”, “no”, “true”, “false”, “included” and “none” become a tick or a cross;
anything else prints as you typed it. -
Can I compare plans from different groups?
-
Yes:
[keel_compare plans="basic,advanced,business"]compares exactly those,
in the order you name them.[keel_compare groups="shared,reseller"]compares
the cheapest plan in each group.One table shows one billing period, because a column priced in a different
period is a figure the eye compares and the small print does not correct. Name
it withcycle="1:year", or leave it out and the period your named plans
share is used. If they share none, the shortcode is left unexpanded on the
page so the problem is visible, and an administrator is told why. -
Can a visitor see prices in their own currency?
-
[keel_currency_switcher] offers the currencies your installation really
prices in, and the order form opens in the one they chose. -
Can somebody with no account reach support?
-
[keel_enquiry] opens a real ticket in a real department, with no account
needed. -
Does an affiliate link still pay out?
-
Yes. A visitor arriving with
?ref=or?aftid=has it carried through to
your Keel order form, including on the landing page itself. It is done in the
browser rather than in PHP, so a cached page cannot credit one visitor’s
affiliate for everybody else’s sales.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“KeelLayer Connector” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “KeelLayer Connector” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.8.1
- Security: the enquiry form now carries a nonce and checks it.
[keel_enquiry] could be submitted from another site, so a cross-site
request was able to open a ticket in your support desk. A page carrying the
form is now kept out of the page cache, so the nonce on it is always one
this site will accept. - Query string, cookie and
$_SERVERvalues are sanitized where they are
read rather than where they are used. - Markup built inside the plugin is escaped where it is echoed.
- The Trustpilot terms and privacy links in this readme pointed at addresses
that redirect three times; they now name Trustpilot’s own current pages. - The settings-page confirmation after “check now” and “clear the cache” is
shown only for a signed redirect from this plugin.
1.8.0
- A visitor can now reach your support desk without an account.
[keel_enquiry] opens a real ticket in a department you have marked as
public. Keel has had a public enquiry form since the website builder was
written and it addressed the message by SECTION – a row in Keel’s own page
tree – which a WordPress site has none of and never will, so this was
unreachable from a marketing site. An internal queue is never offered and
is refused even when named directly, and the ticket is attached to no
customer account however the address matches. [keel_currency_switcher]offers the currencies your installation
really prices in, and carries the choice into the order form. No rate is
applied to anything: each figure is the one Keel holds for that currency, so
a switched price is the price the invoice will carry.[keel_compare]draws a comparison table from the catalogue. The
comparison page is the one page on a hosting site that is always out of date,
because it is the one kept by hand.- An affiliate link that lands on your marketing site now pays out. The
code is remembered and added to links pointing at Keel, sixty days, first
touch winning, matching Keel’s own rule. Affiliatant’s parameter is read as
well as Keel’s. - Documented
[keel_tld_pricing]and[keel_domain_search]by name. Both
have worked since 1.0.0 and the description talked about what they do
without ever telling anybody what to type.
1.7.0
- A plan row can be switched between monthly, annual and biennial, and
nothing on the page is calculated to do it. Every figure the toggle
writes was formatted here from a price Keel sent, so a toggled price is the
same number the invoice will carry. A script that multiplied a monthly
figure by twelve would produce a price nobody could reconcile. - The toggle offers only the terms EVERY plan in the row sells. Offering
one that a single plan does not would leave that card showing its monthly
price under an “Annually” heading, and a visitor reading four cards cannot
tell which one failed to change. Fewer than two terms in common and there is
no toggle, which is a group sold on one term rather than a fault. cycle=still pins a row to one term and now suppresses the toggle with
it, because the attribute is an instruction and a control that overrode it
would make the page disagree with its own heading.- The card opens on the term the toggle opens on. Without a
cycle=the
cheapest recurring price was shown, which on a group sold quarterly as well
as annually put a quarterly figure under a pressed “Annually” button. - The control ships
hiddenand a theme’s script removes the attribute, so a
reader with no JavaScript is shown one complete price and never a dead
control.
Earlier versions are in changelog.txt, which ships with the plugin.
