Website booking widgets

Blocks the public website embeds to show courses, dates and checkout. They read from the hub, so a seat sold in the back office, a price change or a cancelled batch shows on the website without anyone editing a page.

Open decision: how the widgets reach the public site. One answer keeps the current WordPress site and installs the widgets through a small WordPress plugin with shortcodes. The other builds the new public site, where the same blocks are native components and no embed script is needed. The snippets below work for both; the choice is tracked in Build / buy / mix. The same decision governs who writes and publishes the pages themselves: see the “Approach” switch in Website & CMS. The install options below use the same letters as that switch: A is the new public site with the built-in CMS, B is WordPress kept with the plugin.

Pages that carry these widgets

Widgets are placed on website pages; the pages are managed in Website & CMS
PageWidget on itPage stateVersionLast publishedOwner
Adding or moving a widget is a change to the page, so it goes through the page’s review and publish steps on Review & publishing. The widget’s own data (dates, seats, prices) needs no publish: it follows the hub.
Widgets live
4
on 61 pages
Bookings started, last 30 days
412
+38 vs previous 30 days
Orders placed through widgets
97
23.5% of bookings started
Hub to website delay
2 s
Last sync 10:12 today
learning.malyomar.com/courses
Piping EngineeringASME authorizedVirtual

Catalogue widget

Live

A searchable grid of published courses with filters for academy, provider, level and delivery mode. Cards show the next batch date and the lowest current price.

Show price Show next date Show seats left
Embed snippet
<div data-malyomar-widget="catalogue"
     data-academy="piping"
     data-per-page="12"
     data-lang="en"></div>
<script async src="https://learning.malyomar.com/hub/widgets.js"></script>
WordPress plugin shortcode: [malyomar_catalogue academy="piping" per_page="12"]

Used on the public site

All coursesfull catalogue, 36 published courses
Academy pages5 placements, filtered by academy
Home pagefeatured row, 4 cards
learning.malyomar.com/schedule

Upcoming sessions

Upcoming dates widget

Live

A list of open batches in date order. Status follows the hub: "Last seats" below 20% left, "Join waitlist" when full, and private batches are never listed.

Embed snippet
<div data-malyomar-widget="upcoming-dates"
     data-days="90"
     data-mode="all"
     data-full="waitlist"></div>
<script async src="https://learning.malyomar.com/hub/widgets.js"></script>
WordPress plugin shortcode: [malyomar_dates days="90"]

Used on the public site

Home pagenext 4 dates
For companiespublic dates beside the private-run offer
B-2614 is below break-even and sits fourth in the list. Pinning it to the top of the home page list for two weeks is a low-cost way to test demand before the decision date. See batch profitability
learning.malyomar.com/course?code=PD643

"Book now" block

Live

Sits beside the course description. The visitor picks a date, sets the number of seats and continues to the registration form assigned to that batch. A course without an open batch shows "Register interest" and creates a lead.

Show seats left when 5 or fewer Show early-booking price
Embed snippet
<div data-malyomar-widget="book-now"
     data-course="PD643"
     data-team-cta="true"></div>
<script async src="https://learning.malyomar.com/hub/widgets.js"></script>
WordPress plugin shortcode: [malyomar_book course="PD643"]. On Tutor LMS course pages the plugin can replace the existing enrol button.

Used on the public site

Course pages36 published course pages
Workshops & simulation1 placement, ML515
learning.malyomar.com/checkout

Checkout widget

Live

Registration form, extras, coupon and payment in one flow. The seat is held on the batch for 72 hours from the first step, the same hold a sales-placed order gets.

Accept coupon codes Allow company invoice
Embed snippet
<div data-malyomar-widget="checkout"
     data-return-url="/thank-you"
     data-methods="card,fawry,transfer"></div>
<script async src="https://learning.malyomar.com/hub/widgets.js"></script>
WordPress plugin shortcode: [malyomar_checkout], placed on one page that all "Book now" blocks link to.

What checkout writes to the hub

Used on the public site

One checkout page, reached from every "Book now" block and from payment links that sales sends. Its page name on the public site is not fixed yet.

Placements

Last 30 days
WidgetPageInstall methodViewsBookings startedOrdersLast syncStatus

Install options

Decision open
A. New public site, built-in CMSB. WordPress stays, plugin on the current site
How widgets are addedNative components, no embed scriptShortcodes or blocks in the WordPress editor
Page speedRendered with the pageWidget loads after the page, one extra script
Search enginesDates and prices are in the page itselfDates and prices are added by script; structured data needs the plugin
Tutor LMSReplaced by the learner portalStays for existing learners until migration finishes
EffortLarger, part of the full buildSmaller, sooner
Who writes and publishes pagesPlatform page editor, after approval (approach A)WordPress editor; the platform hands the work off (approach B)
Either way, the widgets and the hub API are the same, so starting with B does not block moving to A. The letters are the ones used by the “Approach” switch in Website & CMS (DEC-09). See Build / buy / mix and Roadmap.

Live sync

Connected
  • Seat sold on B-2611. Widgets show 3 seats left.
  • B-2613 reached 16 of 16. "Book now" changed to "Join waitlist".
  • Early-booking price for B-2617 published from Coupons & pricing.
  • Seat hold on B-2614 released after 72 hours without payment.
  • B-2616 start time changed. Dates list and course page updated.
Events are delivered by webhooks; keys for the website are in API & keys.

What stays in sync

Seats left and batch statusReal time
Price, early-booking and group priceReal time
Course title, outline, instructorOn publish
Registration form and extrasOn publish
Waitlist positionReal time

Appearance