Changelog

What's changed in the Giant checkout

Every release, newest first.

RSS feed JSON Latest v3.5.0 · 16 October 2026
  1. v3.5.0 16 October 2026 Latest
    • Details: a phone number typed as +44 with the 0 kept is filed as a national number
    • Orders: a switch at an address with one fibre box carries its ONT reference and port
    • Packages: the saving against an uploaded bill is worked out against the real price
    • Packages: a short featured row is filled from the rest of the range
    • Payments: card and bank transactions are filed in WHMCS again
    • Features: the progress list is in the catalogue
    • Payment: a step-by-step progress list while the order is placed
    • Features: the feed is JSON only, the page is gone
    • Features: the domains entry describes what it does, not what runs it
    • Features: a feed of what the checkout can do, as a page and JSON
    • Changelog: releases carry semantic version numbers
    • Changelog: every release of the checkout, as a page, an RSS feed and JSON
    • Leased lines: the mobile-only business page gets its own upsell wording
    • Leased lines: the business package list upsells to a live quote
    • Leased lines: a live quoter for business customers, per brand
  2. v3.4.0 11 October 2026
    • Pre-order notifier: always checks, reports every run, and can check one now
    • Admin pre-orders: edit, watch again and delete a registration
    • Pre-orders: register interest in Full Fibre and Copper separately
  3. v3.3.0 8 October 2026
    • Customise: the install-type cards read well on a phone
    • Customise: install-type card titles in the heading colour
    • Customise: the install-type question is cards that say what each choice means
    • Packages: the date chips fit the list view column
    • Packages: a second chip for the new-line visit
    • Packages: the date chip is one line again
    • Packages: the date chip reads its dates from itself, not the card
    • Packages: the card leads with the earliest the service could go live
    • Package resync: update what it syncs, never reset what it does not know
    • Coverage: an empty cached answer is asked again past the feed's cache
  4. v3.2.0 2 October 2026
    • Stripe: card payments carry the customer's name, email, phone and address
    • Stripe intent endpoint: only for an order at the payment step
    • Checkout: payments recorded in WHMCS with their amount, fee and Stripe payment id
  5. v3.1.0 30 September 2026
    • Orders carry every custom field, admin-only ones included
    • Ordering API: config-options lists the product's custom fields
  6. v3.0.0 28 September 2026
    • Abandoned carts: the whole basket, priced and totalled
    • Admin Payments: the Direct Debit round trips, so a paid-but-unplaced order is seen
    • Checkout: payment is the last step, and the order is placed the moment it is authorised
  7. v2.19.0 27 September 2026
    • External API: networks carry logo and the range of speeds, on the catalogue and coverage too
    • External API: WHMCS credentials primed for the answers that never build a catalogue
    • External API: public bundles priced as the checkout prices them
    • External API: the marketing endpoints -- interest, brand, package, changes, popularity, promotions, bundles, feeds
    • API docs: the endpoints coming next, named so integrations can plan for them
    • External API: GET /networks -- the networks the brand sells on
  8. v2.18.0 26 September 2026
    • Packages: pre-order only -- shown and priced, but the button registers interest
  9. v2.17.0 24 September 2026
    • Package Mapper: the import preview names the network and ISP
    • Package Mapper: CSV calls name their escape character
    • Package Mapper: prices in bulk -- CSV out, CSV in, WHMCS too if asked
    • Admin config options: option and value names shown decoded
    • Ordering API: a product description older than its maps is re-read
    • Ordering API: option maps cut to the product, and ALK orders get an address
    • Ordering API: a refused config option says why
    • Abandoned carts: an order closes the person's carts, by any route
    • Abandoned carts: the reminder cap is per person, not per cart
  10. v2.16.0 23 September 2026
    • API docs: the journey drawn top-down, so it reads at page width
    • API docs: the integration guide on the page, with its diagrams
    • API docs: every ordering call with its request and answer
    • Ordering API: the VoIP number flow on a bundle
    • API docs: contracts, bundle options and acceptance on the ordering flow
    • Ordering API: contracts signed, bundles with their own options, orders accepted
    • Ordering API: order type and Installation Type are one decision
    • White-label checkout module: a metric provider, so the cart page loads
    • API docs: the Ordering section
    • Ordering API: an order end to end, with no browser
  11. v2.15.0 22 September 2026
    • API docs: addresses without a UPRN, network logos, the catalog default
    • Catalog cache: a new key for the new meaning of the flag
    • /catalog lists every mapped, unhidden package by default
    • /packages logos come from the whole catalogue feed
    • Network logos on the catalog, coverage and packages API answers
  12. v2.14.0 17 September 2026
    • An ALK in the link picks the address; the integrator API takes ALK + district
    • WHMCS custom fields named "Key|Label" are matched by either half
    • ALK-only addresses: the embed takes them, and the order carries what provisioning needs
    • api/products.php: initialise the app before asking it for products
    • Addresses without a UPRN go through the checkout by ALK and district
  13. v2.13.0 13 September 2026
    • List row: promo codes join the foot stripe
    • List row: the guarantee and install chips spaced, and centred as a group
    • List row: the tags as a stripe across the foot
    • List view refitted: six tracks that fit the page, no tile, features as chips
    • Line endings: products.php stored as LF again
    • Card price block back to the centred stack
    • Price block: no stray rule above the rise schedule
    • List view: speed and price take the room, not the description
    • List view: page width, description clamped to two lines
    • Logos back, one-off charges under the price, list given room
    • Business packages get an office tile, not a house
    • Grid and list views built to the mockup
    • List view designed on fixed tracks, so rows line up
    • Restore products.php
    • Make list view mean something on a phone
    • The logo stands in for the network name, and the name for the logo
    • Show every package's logo, Openreach included
    • Sort on a price that exists, and lay the list out as a row
    • Make the theme toggle work, and serve a logo a card can use
    • Sort and a list view on the package list
    • Fix the theme toggle: styled, pinned, one icon
    • Key the logo tokens from a file, not the environment
    • Require the token helper in the logo endpoint
    • Network logos on the cards, without naming our suppliers
    • Say when we can actually come, on the package list
    • Appointments: show the products nothing is mapped to, and link them in bulk
    • No installation dates must not be a wall
    • Stop keeping our own copy of the coverage and catalogue feeds
  14. v2.12.0 12 September 2026
    • Package Mapper: filters that match the data, sorting, and two views
    • Picking a network shows that network, fold or no fold
    • Show what WHMCS will charge, beside what the mapper shows
    • Price the ports: kept numbers are transfers in, and a transfer is a one-off
    • Say what the bill reader is doing while it does it
    • One "with us" figure, and what it includes
    • Pass the indicative total through to the page
    • Give the bill reader room for a schedule, and a reason when it fails
    • Read service schedules, and price them without an address
  15. v2.11.0 11 September 2026
    • Leave promo codes out of the catalogue
    • Only publish a promo code against products it is assigned to
    • Cap the key expiry picker at what the column can hold
    • Cache /catalog, give it its own scope, and let keys be edited
    • Stop the public API publishing whmcs_pid: null
    • Publish the whole range, not just what one address can have
    • Bring the API docs back in line with what the API returns
    • Put the annual price rise in the external API
    • Let a link carry the postcode into the checkout
    • Show contract price rises inc VAT, like every other price on the card
    • Say whose prices these are, with a logo
    • Report how long a promotion actually runs
    • Fix the zero monthly price in contract_terms, and stop stalling integrators
    • Centre the contract preloader icon
    • Ask how the money due today gets paid
    • Measure the contract step and the moment a payment agreement exists
    • Take the setup fee at the bank, not five working days later
  16. v2.10.0 9 September 2026
    • Keep the package grid in step with the network filter
    • Retry the appointment helper when it stalls
    • Fix the doubled namespace that was killing every order
    • Stop a WHMCS account that already exists being a dead end
  17. v2.9.0 8 September 2026
    • Carry the ONT reference as well as the port
    • Separate fields for the access line and the ONT port, and drop the lightbox
    • Let the circuit panel sit in its row, and size every picture the same
    • Make the enlarged picture a proper lightbox
    • Show every version of the kit, and let a tap enlarge it
    • Show what the line ends at, and keep the powered-on warning to fibre
    • Guard the merge helper against the layout's second include
    • Stop empty per-product rows cancelling the shared group rules
    • Temporary: show where a config map row came from, and its contents
    • Temporary: list every config map key, not the first four
    • Temporary: state the config map lookup's own numbers in the page
    • Report the brand and its rule count from the appointments endpoint
    • Scope order-type lookup to the brand, and say when rules sit on another
    • Make the config map loader say what happened
    • Check the saved rules, not just the ones on screen
    • Route the address check past the layout
    • Check config rules against a real address, from the page that writes them
    • Offer every order type coverage actually returns
    • Name the brand your config rules actually landed on
    • Say which brand the config rules belong to
    • Let the customer say which line we are switching
    • Put the circuit under the installation question, and call it an access line
    • Put the circuit under the options, and say what kind of line it is
    • Never guess at a .env above the document root
    • Let the .env live where the web server cannot reach it
    • Stop serving credentials over the web
    • Show the existing circuit even where the config mapper is unset
    • Only ask for an install date when an engineer is actually coming
    • Show the circuit a switch order would take over
    • Open the confirm dialog at the slot that was clicked
    • Scroll the host page to the widget on every step, and fix the list gaps
    • Stop pinning the Continue bar to the viewport when embedded
    • Rebook the appointment when a saved order is resumed
    • Make Back follow the steps the customer actually has
    • Drop a held appointment when it stops matching the order
    • Show the booked installation slot in the cart and on the confirmation
    • Widen the picker, and let them switch view or filter by time of day
    • Pick the install date from a calendar, not a list
    • Send AppointmentRequestDate with the reference, always, or neither
    • Centre the confirm dialog, and make changing the date actually re-ask
    • Give the installation date its own step
    • Stop appointment lookups calling the order-creation endpoint, and refresh stale dates
    • Ask before booking, and only once the installation type is chosen
    • Read the custom fields from the WHMCS database, as the product is typed
    • Pick the custom field the appointment reference is sent to
    • Take the appointment links from coverage instead of a mapping table
    • Map products to carrier appointments, and hold a slot for the order
  18. v2.8.0 6 September 2026
    • Let a brand order configurable option values
    • Count one-off charges in the GA4 basket, and in fraud screening
    • Clean the contract term labels and fill in the minimum term
    • Make the coverage payload safe for an aggregator to publish
    • Let a key holder see what their own key reaches
    • Add read-only integrator keys for coverage aggregators
    • Fix "show more" doing nothing on the Add-ons step
    • Show hardware on the Add-ons step too
    • Name the hardware even when a choice holds only one thing
    • Fold away extra router choices behind a "show more"
    • Count units in the "+N" chip, not lines
    • Show how many of each, and say "+2" for what has no picture
    • Stop a missing hardware shot leaving a plus pointing at nothing
    • Make the hardware tile full width and actually white
    • Trust the stock status the API worked out, and read the new listing
    • Put the hardware pictures on a white tile, and show the whole bundle
    • Show what is in the box on the Customise step
  19. v2.7.0 3 September 2026
    • Audit 2/2: one VAT rule, and stop quoting business customers twice
    • Audit 1/2: stop discarding orders, unblock first paint, clear the decks
    • Collapse the order summary on every page, not just the one
    • Fix the collapsed basket, its missing chevron, and iOS focus zoom
    • Anchor the mobile price bar, fix its contrast, and VAT the port fee
    • Keep the remove button on the same line as the port number
    • Fix port row on mobile, and guard the overflow bug site-wide
    • VoIP: check each number can be ported as it's entered
  20. v2.6.0 2 September 2026
    • Fix fatal: billcheck::money() was declared twice
    • Bill checker: random references, rebuilt email, per-line ordering
  21. v2.5.0 1 September 2026
    • Fix bill checker layout on mobile
    • Create 045_bill_check_callback.sql
    • Update bill-checker.php
    • Update sureswitch-match.php
    • Update integrations.php
    • Update payment.php
  22. v2.4.0 30 August 2026
    • Update style.css
    • Update addons.php
  23. v2.3.0 29 August 2026
    • Update addons.php
    • Update checkout.php
    • Update voip-number-picker.php
    • Update bundles.php
    • Update voip.php
    • Create voip-number-picker.php
    • Update voip-numbers.php
    • Create voip-numbers.php
    • Fix: guest checkout could place an order with an empty name (WHMCS AddClient failed)
    • Abandoned-cart marketing: PECR soft opt-in, suppression, unsubscribe, sequence
    • Admin: Abandoned Carts page with per-cart history
    • Pre-orders admin: per-preorder history timeline
  24. v2.2.0 28 August 2026
    • External API: auto-select brand from hostname, drop brand_id param
    • External API docs: enrich page + brand logo/favicon; surface speed guarantees
    • Update index.php
    • External API: hide internal whmcs_pid from public bases
    • Public API docs: /external-api/docs is now a nice HTML page, no key required
    • Public API: expose the v1 API at /external-api/ and /integrator/api/
    • Public API: coverage endpoint now returns contract terms + live promotions
    • GA4 ecommerce: forward events to the host page in embedded mode
    • docs: add GA4 ecommerce to Node rebuild spec
    • GA4 ecommerce: fire the full funnel across the pages
    • GA4 ecommerce: foundation (per-brand tag, gaEvent helper, items builder)
  25. v2.1.0 15 August 2026
    • Fix migration runner choking on semicolons inside SQL comments
    • docs: complete Node.js rebuild master spec
    • Accessibility pass: keyboard focus, skip link, reduced motion, ARIA
    • Abandoned-cart recovery: auto-snapshot at details step + hourly recovery cron
    • D8: pre-mount the Stripe card form on load (no stall when opening the Card tab)
    • Contract term change now syncs the associated Contract Length config option
    • Fix: Companies House billing offer showed before a company was selected
    • Save & Resume (CC3): email a link to pick up checkout later
    • Fix: prevent password-manager autofill from clobbering the Stripe key
    • Companies House billing offer: visible feedback on Use it / No thanks
    • Checkout UX: 'Change address' carries the postcode so it doesn't restart empty
    • Checkout UX batch 5: add-ons step required-field fix + sticky mobile CTA
    • Checkout UX: email lookup no longer traps the customer (C6)
    • Companies House: offer to pre-fill billing address for business orders
    • Checkout UX: editable contract term (C2)
    • Checkout UX batch 4: config step (Customise) restores choices on Back + sticky mobile CTA
    • Checkout UX batch 3: guest checkout, mobile autofill, neutralize dead second flow
    • Checkout UX batch 2: payment/review/completion trust + safety (Agent D)
    • Checkout UX batch 1: dedupe coverage auto-search, 'from' pricing, business ex-VAT default, product-load retry, neutral address icons, OTS reword + poll timeout
    • Company search: match field styling + resume search on re-focus
    • Add Companies House company search on business/pre-order forms
  26. v2.0.0 9 August 2026
    • Fix cron fatal: add/self-heal contract_reminder_stage column
    • Pre-order emails: full address from UPRN + honest contract-reminder promise
    • Fix front-end logo showing as text when brand loads via SELECT-* fallback
    • Fix admin Live Preview showing brand text instead of blob logo
    • Fix logos not showing in admin (blob check used wrong field)
    • Add temporary upload diagnostic to branding page
    • Fix logo/favicon upload: show rejection reason, stop wiping on failure
    • Self-heal Brevo settings save when migration 028 not applied
    • Fix logo/favicon appearing not to update (stale cache)
    • Pre-order notifications via Brevo (per brand, branded emails)
    • Update preorder.php
    • Update preorders.php
    • Self-heal pre-order whmcs_pid NOT NULL on save
    • Create 027_preorders_nullable_pid.sql
  27. v1.14.0 4 August 2026
    • Render enriched config options as picture cards on the live Extras step
  28. v1.13.0 25 July 2026
    • Extend analytics date range beyond 90 days
  29. v1.12.0 24 July 2026
    • Add Node/Next.js checkout port — foundation + address & package steps
    • Add complete Next.js rebuild specification
  30. v1.11.0 7 July 2026
    • Resolve address from UPRN via OR address-match fallback
  31. v1.10.0 4 July 2026
    • Cache-bust static assets with ?v=<mtime>
    • Update style.css
    • Update addons.php
    • Update layout.php
  32. v1.9.0 21 May 2026
    • Update layout.php
    • Update cart.php
    • Update style.css
    • Update embed.js
    • Update brand.php
  33. v1.8.0 19 May 2026
    • Update products.php
  34. v1.7.0 16 May 2026
    • Update index.php
    • Update home.php
  35. v1.6.0 13 May 2026
    • Update config-image.php
    • Update products.php
  36. v1.5.0 5 May 2026
    • Update 024_config_value_enrichment.sql
  37. v1.4.0 28 April 2026
    • Update products.php
  38. v1.3.0 19 April 2026
    • Update addons.php
    • Update 023_bundle_group_description.sql
    • Update bundles.php
    • Update products.php
  39. v1.2.0 16 April 2026
    • Update whmcsbroadbandwhitelabelcheckout.php
    • Update index.php
    • Update .htaccess
    • whmcs admin api fix
    • Update checkout.php
  40. v1.1.0 12 April 2026
    • Update home.php
  41. v1.0.0 11 April 2026
    • Update app.js
    • Update checkout.php
    • Update checkout-switching.php
    • Update ots.php
    • Update sureswitch-providers.php
    • Update sureswitch.php
    • Update sureswitch-match.php
    • ots updates
    • Update brand.php

Put this on your own site

The feed and the document carry the same list as this page.

https://join.giant.net.uk/changelog.xml
https://join.giant.net.uk/changelog.json

The JSON has version (3.5.0), tag (v3.5.0), released and notes for the latest release at the top, then releases with the same three for every release, newest first.