{
    "system": "multibrand-checkout",
    "name": "Multibrand Checkout",
    "description": "What the checkout can do, one entry per capability. Kept by hand alongside the changelog: a new capability gets an entry here with the version it arrived in. Status is live, beta or planned. toggle names the brand setting that switches it on, where there is one; the served feed adds enabled for the brand serving it.",
    "categories": [
        {
            "id": "address",
            "name": "Address and coverage"
        },
        {
            "id": "packages",
            "name": "Packages and pricing"
        },
        {
            "id": "checkout",
            "name": "Checkout flow"
        },
        {
            "id": "payments",
            "name": "Payments and billing"
        },
        {
            "id": "switching",
            "name": "Switching and provisioning"
        },
        {
            "id": "business",
            "name": "Business"
        },
        {
            "id": "tools",
            "name": "Customer tools"
        },
        {
            "id": "marketing",
            "name": "Marketing and API"
        },
        {
            "id": "notifications",
            "name": "Notifications"
        },
        {
            "id": "admin",
            "name": "Admin and operations"
        }
    ],
    "features": [
        {
            "id": "postcode-address-lookup",
            "category": "address",
            "name": "Postcode to address lookup",
            "description": "Enter a postcode, pick the exact address. Every address with a UPRN or an ALK is listed, so new-build plots Openreach has not numbered yet can still be found.",
            "status": "live",
            "since": "1.0.0",
            "url": "https://join.giant.net.uk/",
            "enabled": null
        },
        {
            "id": "deep-link-start",
            "category": "address",
            "name": "Deep links into the checkout",
            "description": "A link with a UPRN, or an ALK with its district code, or just a postcode, lands the customer on their packages with nothing to retype. Comparison sites and the brand's own website use this.",
            "status": "live",
            "since": "2.3.0",
            "url": "https://join.giant.net.uk/start",
            "enabled": null
        },
        {
            "id": "live-coverage",
            "category": "address",
            "name": "Live coverage check",
            "description": "Every package shown is one the networks say they can deliver to that address, with the qualified speeds and the earliest date the service could go live.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "coverage-retry",
            "category": "address",
            "name": "Stale coverage is re-asked",
            "description": "When the cached coverage answer has nothing the brand sells, the feed is asked again past its cache, at most once an hour per address, so a brief blip never shows a customer an empty page for an hour.",
            "status": "live",
            "since": "3.3.0",
            "enabled": null
        },
        {
            "id": "home-business-toggle",
            "category": "address",
            "name": "Home or business",
            "description": "One toggle switches between residential and business ranges, pricing and VAT display.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "package-cards",
            "category": "packages",
            "name": "Package cards",
            "description": "Speed gauge, guaranteed minimum speed, network and technology, earliest live date, price rises over the term, promotions and what every package includes. Grid or list view, sort and filter, and a recommendation wizard that asks about the household.",
            "status": "live",
            "since": "1.0.0",
            "url": "https://join.giant.net.uk/products",
            "enabled": null
        },
        {
            "id": "earliest-date-chips",
            "category": "packages",
            "name": "Earliest live date on every card",
            "description": "Each card leads with the soonest the service could be live: the no-engineer date from the coverage check and the first engineer appointment for a new line.",
            "status": "live",
            "since": "3.3.0",
            "enabled": null
        },
        {
            "id": "package-mapper",
            "category": "packages",
            "name": "Package mapper",
            "description": "Every network package mapped to its WHMCS product for home and business, with custom names, ribbons, features, featured and hidden flags, and prices kept in sync nightly.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "csv-prices",
            "category": "packages",
            "name": "Prices by CSV",
            "description": "Export every broadband package to CSV, edit the prices, import with a preview, and optionally push the new prices into WHMCS too.",
            "status": "live",
            "since": "2.17.0",
            "enabled": null
        },
        {
            "id": "preorder-only-packages",
            "category": "packages",
            "name": "Pre-order only packages",
            "description": "A package can be listed and priced but not yet orderable; its button registers interest instead and the API reports it as preorder_only.",
            "status": "live",
            "since": "2.18.0",
            "enabled": null
        },
        {
            "id": "mobile-fallback",
            "category": "packages",
            "name": "Mobile broadband fallback",
            "description": "When no fixed line is available at the address, the brand's 4G and 5G mobile broadband packages are offered instead.",
            "status": "live",
            "since": "1.6.0",
            "toggle": "show_mobile_fallback",
            "enabled": true
        },
        {
            "id": "bundles-addons",
            "category": "packages",
            "name": "Bundles and add-ons",
            "description": "Routers, mesh, backup dongles, battery backup, phone lines and extras, each priced and pictured, offered with the packages they belong to.",
            "status": "live",
            "since": "1.0.0",
            "url": "https://join.giant.net.uk/bundles",
            "enabled": null
        },
        {
            "id": "config-option-cards",
            "category": "packages",
            "name": "Configurable options as cards",
            "description": "WHMCS configurable options render as picture cards and choice cards rather than dropdowns, including install type cards that say whether an engineer visits and from when.",
            "status": "live",
            "since": "2.10.0",
            "enabled": null
        },
        {
            "id": "guided-steps",
            "category": "checkout",
            "name": "Guided checkout",
            "description": "Address, package, customise, install date, add-ons, details, switching, review, payment: one step at a time with a live order summary.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "install-appointments",
            "category": "checkout",
            "name": "Engineer appointments",
            "description": "Real appointment slots from the carrier for packages that need an engineer, held while the customer completes the order.",
            "status": "live",
            "since": "1.3.0",
            "url": "https://join.giant.net.uk/appointment",
            "enabled": null
        },
        {
            "id": "guest-checkout",
            "category": "checkout",
            "name": "Guest checkout",
            "description": "No account needed first: the WHMCS client is created with the order. Returning customers are recognised by email.",
            "status": "live",
            "since": "2.0.0",
            "enabled": null
        },
        {
            "id": "company-lookup",
            "category": "checkout",
            "name": "Companies House lookup",
            "description": "Business customers find their company by name and the registered details fill in.",
            "status": "live",
            "since": "2.0.0",
            "enabled": null
        },
        {
            "id": "contract-terms",
            "category": "checkout",
            "name": "Contract term choice",
            "description": "Term lengths per package with their prices, and the contract summary the customer accepts before paying.",
            "status": "live",
            "since": "1.4.0",
            "url": "https://join.giant.net.uk/contract",
            "enabled": null
        },
        {
            "id": "payment-last",
            "category": "checkout",
            "name": "Payment is the last step",
            "description": "The order is placed the moment payment is authorised, so a paid customer always ends with an order on file.",
            "status": "live",
            "since": "3.0.0",
            "enabled": null
        },
        {
            "id": "order-progress",
            "category": "checkout",
            "name": "Live progress while the order is placed",
            "description": "After payment is confirmed the customer watches a step list fill in: account, order, payment recorded, switch, the network order, the contract. No spinning button and no doubt about whether it is working.",
            "status": "live",
            "since": "3.5.0",
            "enabled": null
        },
        {
            "id": "abandoned-carts",
            "category": "checkout",
            "name": "Abandoned carts",
            "description": "A customer who stops part-way is emailed a resume link at one hour, a day and three days, with the full basket kept. Soft opt-in with one-click unsubscribe, and nothing sent once they have ordered.",
            "status": "live",
            "since": "2.4.0",
            "enabled": null
        },
        {
            "id": "resume-link",
            "category": "checkout",
            "name": "Save and finish later",
            "description": "A customer can email themselves a link that restores the order where they left it.",
            "status": "live",
            "since": "2.4.0",
            "url": "https://join.giant.net.uk/resume",
            "enabled": null
        },
        {
            "id": "embed",
            "category": "checkout",
            "name": "Embeddable",
            "description": "The whole checkout, the bill checker or the leased-line quoter drops into any page with one script tag, resizing itself and reporting navigation to the host page.",
            "status": "live",
            "since": "2.5.0",
            "enabled": null
        },
        {
            "id": "dark-mode",
            "category": "checkout",
            "name": "Light and dark themes",
            "description": "Follows the device, with a switch to override, and remembers the choice.",
            "status": "live",
            "since": "2.12.0",
            "enabled": null
        },
        {
            "id": "card-payments",
            "category": "payments",
            "name": "Card payments",
            "description": "Stripe card payments with 3-D Secure, the customer's details on the charge, and the amount, fee and payment id recorded against the WHMCS invoice.",
            "status": "live",
            "since": "1.0.0",
            "toggle": "stripe",
            "enabled": true
        },
        {
            "id": "direct-debit",
            "category": "payments",
            "name": "Direct Debit",
            "description": "GoCardless mandates set up in the checkout; the order completes when the mandate is confirmed, and every round trip is visible in admin.",
            "status": "live",
            "since": "1.0.0",
            "toggle": "gocardless",
            "enabled": true
        },
        {
            "id": "promo-codes",
            "category": "payments",
            "name": "Promotion codes",
            "description": "WHMCS promotions apply in the checkout with their effect on the first and ongoing payments shown.",
            "status": "live",
            "since": "1.2.0",
            "enabled": null
        },
        {
            "id": "fraud-screening",
            "category": "payments",
            "name": "Fraud screening",
            "description": "FraudLabs Pro screens every order, either monitoring or blocking above a score the brand sets.",
            "status": "live",
            "since": "2.9.0",
            "toggle": "fraudlabs",
            "enabled": true
        },
        {
            "id": "one-touch-switch",
            "category": "switching",
            "name": "One Touch Switch",
            "description": "The customer's current provider is matched through SureSwitch, the switch is raised with the order, and progress comes back by webhook.",
            "status": "live",
            "since": "1.5.0",
            "toggle": "sureswitch",
            "enabled": true
        },
        {
            "id": "whmcs-orders",
            "category": "switching",
            "name": "Orders into WHMCS",
            "description": "Every order creates the client, order, invoice and service in the brand's WHMCS with every custom field the provisioning module needs.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "voip-numbers",
            "category": "switching",
            "name": "Phone numbers",
            "description": "New numbers by area, or a port of the customer's existing number, chosen and checked in the checkout.",
            "status": "live",
            "since": "2.6.0",
            "enabled": null
        },
        {
            "id": "leased-line-quoter",
            "category": "business",
            "name": "Live leased-line quotes",
            "description": "Business customers get live carrier quotes for their site from the ITS partner panel, 100 Mbps to 10 Gbps, filter and compare them, and save the ones they want. Nothing is ordered online and nobody chases.",
            "status": "live",
            "since": "3.5.0",
            "url": "https://join.giant.net.uk/leased-lines",
            "toggle": "leased_lines",
            "enabled": true
        },
        {
            "id": "leased-line-upsell",
            "category": "business",
            "name": "Leased-line upsell on the package list",
            "description": "The business package list fetches the cheapest live leased-line price for the address and offers the comparison, including when only mobile broadband is available.",
            "status": "live",
            "since": "3.5.0",
            "toggle": "leased_lines",
            "enabled": true
        },
        {
            "id": "business-pricing",
            "category": "business",
            "name": "Business pricing ex VAT",
            "description": "Business ranges are priced and displayed ex VAT with VAT shown separately.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "bill-checker",
            "category": "tools",
            "name": "Bill checker",
            "description": "A customer uploads their current bill or keys the figures in, and gets a like-for-like comparison at their address, reviewed by a person before it is sent.",
            "status": "live",
            "since": "2.8.0",
            "url": "https://join.giant.net.uk/bill-checker",
            "toggle": "bill_checker",
            "enabled": true
        },
        {
            "id": "preorders",
            "category": "tools",
            "name": "Register interest",
            "description": "Where nothing is available yet, a customer registers for Full Fibre, Copper or both, is emailed when it arrives, and can ask for a reminder when their current contract ends.",
            "status": "live",
            "since": "1.0.0",
            "url": "https://join.giant.net.uk/pre-order",
            "enabled": null
        },
        {
            "id": "external-api",
            "category": "marketing",
            "name": "External API",
            "description": "Coverage, catalogue, networks, package detail, promotions, popularity, changes, bundles, brand and interest endpoints, with keys scoped per integrator.",
            "status": "live",
            "since": "2.13.0",
            "url": "https://join.giant.net.uk/external-api/docs",
            "enabled": null
        },
        {
            "id": "ordering-api",
            "category": "marketing",
            "name": "Ordering API",
            "description": "A partner can run the whole order from its own front end: start, options, appointments, details, summary, place. Documented with an integration guide and every call's example answer.",
            "status": "live",
            "since": "2.14.0",
            "url": "https://join.giant.net.uk/external-api/docs#ordering",
            "enabled": null
        },
        {
            "id": "catalogue-feeds",
            "category": "marketing",
            "name": "Catalogue as CSV and RSS",
            "description": "The brand's full range as a CSV file or a Google-Merchant-shaped RSS feed for ads and listings.",
            "status": "live",
            "since": "2.21.0",
            "url": "https://join.giant.net.uk/external-api/catalog?format=csv",
            "enabled": null
        },
        {
            "id": "ga4",
            "category": "marketing",
            "name": "GA4 ecommerce events",
            "description": "view_item_list, select_item, add_to_cart, begin_checkout, add_payment_info, purchase and generate_lead per brand.",
            "status": "live",
            "since": "2.2.0",
            "toggle": "ga4",
            "enabled": true
        },
        {
            "id": "changelog",
            "category": "marketing",
            "name": "Public changelog",
            "description": "Every release as a page, an RSS feed and JSON, for a brand's own site.",
            "status": "live",
            "since": "3.5.0",
            "url": "https://join.giant.net.uk/changelog",
            "enabled": null
        },
        {
            "id": "feature-feed",
            "category": "marketing",
            "name": "Feature feed",
            "description": "This list: what the checkout can do, as JSON, with whether each capability is on for the brand.",
            "status": "live",
            "since": "3.5.0",
            "url": "https://join.giant.net.uk/features.json",
            "enabled": null
        },
        {
            "id": "order-alerts",
            "category": "notifications",
            "name": "Order alerts",
            "description": "Email and SMS to the brand the moment an order is placed.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "branded-email",
            "category": "notifications",
            "name": "Branded customer email",
            "description": "Confirmations, resume links, pre-order and quote copies sent through Brevo in the brand's colours and logo.",
            "status": "live",
            "since": "2.4.0",
            "toggle": "brevo",
            "enabled": true
        },
        {
            "id": "preorder-notifier",
            "category": "notifications",
            "name": "Availability watcher",
            "description": "A daily check of every registered address, emailing the customer the first time an orderable package of the kind they chose appears, with the run reported in admin.",
            "status": "live",
            "since": "2.7.0",
            "enabled": null
        },
        {
            "id": "multibrand",
            "category": "admin",
            "name": "Many brands, one install",
            "description": "Each brand has its own domain, branding, WHMCS, payment accounts, packages and settings; staff switch between them in one admin.",
            "status": "live",
            "since": "1.0.0",
            "enabled": null
        },
        {
            "id": "analytics",
            "category": "admin",
            "name": "Funnel analytics",
            "description": "Visits, address checks, furthest step and conversion per brand, with a timeline per visit.",
            "status": "live",
            "since": "1.1.0",
            "enabled": null
        },
        {
            "id": "audit-log",
            "category": "admin",
            "name": "Audit log",
            "description": "Who changed what in admin, when.",
            "status": "live",
            "since": "1.1.0",
            "enabled": null
        },
        {
            "id": "product-creator",
            "category": "admin",
            "name": "Product creator",
            "description": "Creates WHMCS products for packages that have none, with pricing and group.",
            "status": "live",
            "since": "2.11.0",
            "enabled": null
        },
        {
            "id": "ai-agent",
            "category": "admin",
            "name": "AI agent",
            "description": "An ElevenLabs voice agent configured per brand for customer calls.",
            "status": "beta",
            "since": "2.15.0",
            "enabled": null
        },
        {
            "id": "domains-certificates",
            "category": "admin",
            "name": "Domains and certificates",
            "description": "A brand's own domain and its certificate, set up and renewed from admin.",
            "status": "live",
            "since": "1.7.0",
            "enabled": null
        }
    ],
    "version": "3.5.0",
    "brand": "Giant",
    "url": "https://join.giant.net.uk/features.json",
    "changelog": "https://join.giant.net.uk/changelog.json",
    "counts": {
        "live": 50,
        "beta": 1,
        "planned": 0,
        "enabled": 10,
        "disabled": 0
    }
}
