# 63Digital — full site content > Scotland-based software development company with 20+ years experience. Bespoke web apps, APIs, and eCommerce solutions for all business sizes. Every public page of https://63digital.com, as Markdown, in site order. The index is https://63digital.com/llms.txt. --- Source: https://63digital.com/ Bespoke software · Scotland # Custom software that works like you do. Stop bending your business around off-the-shelf tools. We build bespoke platforms that fit your exact workflows, connect the systems you already run, and scale as far as your ambition does. [Start a conversation](https://63digital.com/contact/) [See the work](#work) 2014 Established 20+ Years' experience .NET Specialists Transforming operations across the UK Gift Voucher Solutions ✶ KCR Academy ✶ Paypolli ✶ Travel Zing ✶ Cruizing ✶ My Pet Health ✶ Clarkston Colts ✶ Aqua IT ✶ econtrol ✶ Why teams choose us ## We build software that drives real business growth. No dazzle, no jargon, no features you'll never use. We listen, we understand, and we build exactly what your business needs to thrive. 01 ### Business first Every line of code earns its place. We start with your challenge and the result you need, then build the technology that gets you there — no jargon, no features you'll never use. 02 ### Integration experts Where others shy away from messy, connected systems, we lean in. Tying payments, stock, CRMs and legacy data into one clean flow is our bread and butter. 03 ### Built to scale Your platform isn't only for today. Clean, modular architecture means new capability gets added without breaking what already works. What we do ## Software, not slideware. [All services](https://63digital.com/services/) [01 Bespoke platforms Software shaped around your business — not the other way round.](https://63digital.com/services/bespoke-platforms/) [02 System integration Connect the tools you already rely on into one reliable, automated flow.](https://63digital.com/services/system-integration/) [03 Applied AI AI where it genuinely earns its place — not where it's fashionable.](https://63digital.com/services/applied-ai/) [04 eCommerce & portals Secure customer portals and commerce experiences your clients expect.](https://63digital.com/ecommerce/) Selected work ## Proof, not promises. Most of these started as small, right-sized projects — and made an outsized difference. Yours can start small too. [All case studies](https://63digital.com/work/) [![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688) Events · Ticketing Rebll Tickets Multi-tenant SaaS Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. .NET Multi-tenant Marketplace Payments](https://63digital.com/work/rebll-tickets/) [![Rebll Tickets Cloud Platform](https://63digital.com/media/xu36841f/rebll-tickets-cloud-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4bf64a0&hmac=13802ed39e92b9d9131e32206c5e287061a3835bcfe9134fc8b287353fb7bffa) Cloud · DevOps Rebll Tickets Cloud Platform Platform engineering Moving Rebll Tickets onto codified, self-healing Azure infrastructure — with migration-safe, health-verified releases and payment-grade observability. Azure Bicep DevOps Aspire](https://63digital.com/work/rebll-tickets-cloud-platform/) [![63Digital](https://63digital.com/media/9sy7zbgp/63digital-card.webp?width=960&format=webp&quality=85&v=1dd66fcb92ae210&hmac=d5e0e82bbde129b5942e6cd020c5d666f90aaaea30aab638a55aaf5e7d33f869) Digital agency · Our own site 63Digital Our own site Our own site, upgraded from Umbraco 13 to 17 LTS in one jump and rebuilt on code-owned templates: faster, free of a third-party theme, and built to be found in search and AI answers. Umbraco 17 Tailwind Performance](https://63digital.com/work/63digital/) [![eControl](https://63digital.com/media/you237cg/econtrol-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4887620&hmac=3fe7305665fe1ac73fa472ae58b57bfca63c489ad3b75d7ec89e066a32e221a3) Manufacturing · B2B eControl Mid-size platform A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week. .NET WooCommerce REST APIs Mobile](https://63digital.com/work/econtrol/) “ > We couldn't run our international business without the incredible database Alastair created and continuously cares for. He makes complex things simple. Seth Gardner · KCR Academy How we work ## A deliberate, hands-on build. 01 ### Listen We start with your challenge and the outcome you need — not a feature list. 02 ### Map We map the workflows, systems and data the solution has to fit around. 03 ### Build Clean, maintainable software, shipped in phases that de-risk delivery. 04 ### Care We stay on — maintaining, extending and improving as you grow. --- Source: https://63digital.com/services/ What we do # Software, not slideware. We build bespoke software for businesses that have outgrown their spreadsheets, their off-the-shelf tools, or the system someone built for them ten years ago. Most of what we do is .NET, and most of it involves getting systems to talk to each other when they were never designed to. [01 Bespoke platforms Software shaped around your business — not the other way round. .NET C# SQL Azure](https://63digital.com/services/bespoke-platforms/) [02 System integration Connect the tools you already rely on into one reliable, automated flow. APIs Webhooks Stripe WooCommerce](https://63digital.com/services/system-integration/) [03 Applied AI AI where it genuinely earns its place — not where it's fashionable. LLM Automation Document AI](https://63digital.com/services/applied-ai/) [04 eCommerce & portals Secure customer portals and commerce experiences your clients expect. Portals Multi-currency Reporting](https://63digital.com/ecommerce/) Getting started ## Most projects start small. Usually it's one process that eats too much of somebody's week: bookings handled over email, orders typed into three different systems, a report put together by hand every month. We fix that first, and fix it properly. Then we build from there, at whatever pace makes sense for the business. You talk to the person writing the code, not an account manager. And once it's live we stay on to look after it. Some of our client relationships go back more than five years. Platforms ## Platforms we work with [eCommerce & portals](https://63digital.com/ecommerce/) [WooCommerce](https://63digital.com/ecommerce/woocommerce/) [Shopify](https://63digital.com/ecommerce/shopify/) [CMS development & support](https://63digital.com/cms/) [WordPress](https://63digital.com/cms/wordpress/) [Umbraco](https://63digital.com/cms/umbraco/) [Software rescue](https://63digital.com/rescue/) [AI-built apps](https://63digital.com/rescue/ai-built-apps/) [Website health check](https://63digital.com/rescue/website-health-check/) [Payment integration for platforms](https://63digital.com/payments/) [Stripe](https://63digital.com/payments/stripe/) [Square](https://63digital.com/payments/square/) [Apple & Google Wallet](https://63digital.com/payments/apple-google-wallet/) [Legacy system modernisation](https://63digital.com/modernisation/) [Microsoft Access](https://63digital.com/modernisation/microsoft-access/) [Spreadsheets](https://63digital.com/modernisation/spreadsheets/) [System review](https://63digital.com/modernisation/system-review/) Integration, our specialty ## One clean flow from many moving parts. Stripe, Square, Shopify, your CRM, an Access database nobody wants to touch. We connect them so information gets entered once and shows up everywhere it's needed. If someone on your team is re-typing the same details into two systems, that's usually where we start. [Discuss your stack](https://63digital.com/contact/) --- Source: https://63digital.com/services/bespoke-platforms/ [← Services](https://63digital.com/services/) Service · 01 # Bespoke platforms Software shaped around your business — not the other way round. .NET C# SQL Azure The approach Off-the-shelf tools force you to compromise. We build clean, maintainable .NET platforms that fit your exact workflows, hold your data in one place, and stay easy to change as you grow. 1 Source of truth Faster Safer changes Scales With you What's included 01 Discovery & workflow mapping 02 Custom .NET / C# application build 03 SQL data modelling & migration 04 Role-based admin dashboards 05 Hosting, deployment & long-term care [Scope this with us](https://63digital.com/contact/) Platforms ## Platforms we work with [WooCommerce Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. 1 guide](https://63digital.com/ecommerce/woocommerce/) [Umbraco Umbraco sites built, supported and kept on the current LTS by a .NET team building on Umbraco 17 today. 1 guide](https://63digital.com/cms/umbraco/) [AI-built apps Built it with Cursor, Claude, Lovable, Bolt or Replit, and now real users and real money are involved? We make AI-built apps safe to run. 2 guides](https://63digital.com/rescue/ai-built-apps/) [Stripe Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. 5 guides](https://63digital.com/payments/stripe/) [Microsoft Access Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. 4 guides](https://63digital.com/modernisation/microsoft-access/) [Spreadsheets The spreadsheets your business runs on, rebuilt as a proper system with access control, an audit trail and search. 1 guide](https://63digital.com/modernisation/spreadsheets/) [Proof · in the field Rebll TicketsRebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.Read the case study ![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688)](https://63digital.com/work/rebll-tickets/) Other services [02 System integration](https://63digital.com/services/system-integration/) [03 Applied AI](https://63digital.com/services/applied-ai/) [04 eCommerce & portals](https://63digital.com/ecommerce/) --- Source: https://63digital.com/services/system-integration/ [← Services](https://63digital.com/services/) Service · 02 # System integration Connect the tools you already rely on into one reliable, automated flow. APIs Webhooks Stripe WooCommerce The approach Where others shy away from messy, connected systems, we lean in. Tying payments, stock, CRMs and legacy data into one clean flow is our bread and butter. Fewer Manual steps Live Data sync One Clean flow What's included 01 Integration discovery & mapping 02 API & webhook development 03 Data transformation & sync 04 Error handling & monitoring [Scope this with us](https://63digital.com/contact/) Platforms ## Platforms we work with [WooCommerce Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. 1 guide](https://63digital.com/ecommerce/woocommerce/) [WordPress WordPress sites recovered, re-hosted, integrated and maintained, including the ones other developers left behind. 2 guides](https://63digital.com/cms/wordpress/) [Stripe Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. 5 guides](https://63digital.com/payments/stripe/) [Square Square online payments and marketplace fees, built alongside Stripe and kept in lockstep. 1 guide](https://63digital.com/payments/square/) [Apple & Google Wallet Tickets, vouchers and memberships that live on the customer's phone, not in their inbox. 1 guide](https://63digital.com/payments/apple-google-wallet/) [Microsoft Access Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. 4 guides](https://63digital.com/modernisation/microsoft-access/) [Proof · in the field eControlA unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week.Read the case study ![eControl](https://63digital.com/media/you237cg/econtrol-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4887620&hmac=3fe7305665fe1ac73fa472ae58b57bfca63c489ad3b75d7ec89e066a32e221a3)](https://63digital.com/work/econtrol/) Other services [01 Bespoke platforms](https://63digital.com/services/bespoke-platforms/) [03 Applied AI](https://63digital.com/services/applied-ai/) [04 eCommerce & portals](https://63digital.com/ecommerce/) --- Source: https://63digital.com/services/applied-ai/ [← Services](https://63digital.com/services/) Service · 03 # Applied AI AI where it genuinely earns its place — not where it's fashionable. LLM Automation Document AI The approach We put AI to work only where it genuinely earns its place — automating the manual, repetitive work that slows your team down, with guardrails you can trust. Less Manual work Faster Turnaround Safe With guardrails What's included 01 Use-case discovery & feasibility 02 LLM integration & prompt design 03 Document extraction pipelines 04 Human-in-the-loop guardrails [Scope this with us](https://63digital.com/contact/) Platforms ## Platforms we work with [AI-built apps Built it with Cursor, Claude, Lovable, Bolt or Replit, and now real users and real money are involved? We make AI-built apps safe to run. 2 guides](https://63digital.com/rescue/ai-built-apps/) [Proof · in the field Marketing Reporting PlatformA reporting platform that aggregates web analytics, search, paid and rank-tracking data into branded monthly client reports — now with AI-written commentary grounded in the real numbers.Read the case study ![Marketing Reporting Platform](https://63digital.com/media/nfer3exi/marketing-reporting-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c3e83e80&hmac=44072e7cc5870ee520c22cbda51341d5d763f7f41c5400274dc19fdb756620c8)](https://63digital.com/work/marketing-reporting-platform/) Other services [01 Bespoke platforms](https://63digital.com/services/bespoke-platforms/) [02 System integration](https://63digital.com/services/system-integration/) [04 eCommerce & portals](https://63digital.com/ecommerce/) --- Source: https://63digital.com/work/ Selected work # Proof, not promises. Most of these started small: one process costing too much time, or one system that had stopped coping. A few have grown into platforms we've looked after for years. Each one covers what we built and what changed for the business. 2,000+ Students on KCR Academy's platform 100% Of Rebll Tickets' infrastructure in code 1,000s Hire records ready to move to a new platform 90%+ Faster search at Aqua IT [![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688) Events · Ticketing Latest case study Rebll Tickets Multi-tenant SaaS Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. .NET Multi-tenant Marketplace Payments](https://63digital.com/work/rebll-tickets/) [![Rebll Tickets Cloud Platform](https://63digital.com/media/xu36841f/rebll-tickets-cloud-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4bf64a0&hmac=13802ed39e92b9d9131e32206c5e287061a3835bcfe9134fc8b287353fb7bffa) Cloud · DevOps Rebll Tickets Cloud Platform Platform engineering Moving Rebll Tickets onto codified, self-healing Azure infrastructure — with migration-safe, health-verified releases and payment-grade observability. Azure Bicep DevOps Aspire](https://63digital.com/work/rebll-tickets-cloud-platform/) [![63Digital](https://63digital.com/media/9sy7zbgp/63digital-card.webp?width=960&format=webp&quality=85&v=1dd66fcb92ae210&hmac=d5e0e82bbde129b5942e6cd020c5d666f90aaaea30aab638a55aaf5e7d33f869) Digital agency · Our own site 63Digital Our own site Our own site, upgraded from Umbraco 13 to 17 LTS in one jump and rebuilt on code-owned templates: faster, free of a third-party theme, and built to be found in search and AI answers. Umbraco 17 Tailwind Performance](https://63digital.com/work/63digital/) [![eControl](https://63digital.com/media/you237cg/econtrol-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4887620&hmac=3fe7305665fe1ac73fa472ae58b57bfca63c489ad3b75d7ec89e066a32e221a3) Manufacturing · B2B eControl Mid-size platform A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week. .NET WooCommerce REST APIs Mobile](https://63digital.com/work/econtrol/) [![KCR Academy](https://63digital.com/media/kmw47h3i/kcr-academy-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4921310&hmac=073b75c27fe7dc366ead1e09e8f5aa0134bdc480802ce1e95e6a1b4648c90e79) Global training provider KCR Academy Small, focused build KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform. Stripe integration 4-currency support Automated enrolment](https://63digital.com/work/kcr-academy/) [![Aqua IT Support](https://63digital.com/media/a23ymsy2/aqua-it-support-card.webp?width=960&format=webp&quality=85&v=1dd4f48c49ee450&hmac=e5006434bae1df44fcaa7fc2ddcf8084fbf4c560ae2ee46f30d3ef3c39c71247) IT services & support Aqua IT Support Focused build A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready. Portal search Job dashboard Self-service](https://63digital.com/work/aqua-it-support/) [![Clarkston Colts](https://63digital.com/media/r00pa0dl/clarkston-colts-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4ab1950&hmac=4516b06270f2387b63440118310325557379b6b1ca4d79805c97e049ff1956b6) Community football club Clarkston Colts Days, not weeks A lightning-fast Umbraco rebuild delivered in days, not weeks — a professional, easy-to-update site for a club mid-transition. Umbraco One-click updates Built to last](https://63digital.com/work/clarkston-colts/) [![Paypolli](https://63digital.com/media/mt5whass/paypolli-card.webp?width=960&format=webp&quality=85&v=1dd4f48c36504c0&hmac=7b5f8c39bad50c73e188c14ed64b4e0744899268bf87813f974d8733584fa51c) Fintech · Payments Paypolli Multi-tenant fintech A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically. .NET Stripe Connect YARP Payments](https://63digital.com/work/paypolli/) [![Gift Voucher Solutions](https://63digital.com/media/dbfsb5dw/gift-voucher-solutions-card.webp?width=960&format=webp&quality=85&v=1dd4f48c37de3f0&hmac=b455148f0005079a6fd2a9edb7f7475a7f735ff552bb8a21964227b7231ec819) eCommerce · Gift cards Gift Voucher Solutions Multi-tenant platform A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers. .NET React Stripe Connect Multi-tenant](https://63digital.com/work/gift-voucher-solutions/) [![My Pet Health](https://63digital.com/media/9fcdqlwc/my-pet-health-card.webp?width=960&format=webp&quality=85&v=1dd4f48c3964df0&hmac=55e3ad262aeab37a2c46610eb94f725c437f848c12a04c079ef7a8d30c89ae0e) Veterinary · Consumer app My Pet Health B2B2C platform A consumer pet-health app that plugs into vets' existing practice software — syncing every pet's care record and letting owners book, pay and stay on top of their pet's health in one place. .NET Azure Mobile API Integrations](https://63digital.com/work/my-pet-health/) [![SEO Analytics Platform](https://63digital.com/media/1d0qcvu5/seo-analytics-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c3b03e90&hmac=7cb6032e5a6cc7bf5419ab41efc81d23ced0fa208ac6a0d69bf79bba9d87fdf8) SEO · SaaS SEO Analytics Platform Data-heavy SaaS A multi-tenant SaaS that aggregates data from six SEO providers, tracks rankings over time and turns them into branded, shareable client reports — with machine-learning insight and usage-based billing. .NET ML.NET SaaS Data aggregation](https://63digital.com/work/seo-analytics-platform/) [![Automated Social Video Platform](https://63digital.com/media/kr77isuw/automated-social-video-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c3ccc740&hmac=8445246fde6ff9ab825d133387d9eea3d0ab68282c3703f63558f0f633b9eff5) Media · Video Automated Social Video Platform AI video pipeline An automated pipeline that watches a live sports stream, uses AI to find the key moments, cuts them into vertical clips and publishes them to social — with no human editing in the loop. .NET FFmpeg OpenAI Video](https://63digital.com/work/automated-social-video-platform/) [![Marketing Reporting Platform](https://63digital.com/media/nfer3exi/marketing-reporting-platform-card.webp?width=960&format=webp&quality=85&v=1dd4f48c3e83e80&hmac=44072e7cc5870ee520c22cbda51341d5d763f7f41c5400274dc19fdb756620c8) Marketing · Analytics Marketing Reporting Platform Reporting platform A reporting platform that aggregates web analytics, search, paid and rank-tracking data into branded monthly client reports — now with AI-written commentary grounded in the real numbers. .NET GA4 AI Reporting](https://63digital.com/work/marketing-reporting-platform/) [![EV Charging Company](https://63digital.com/media/yq0ae4sd/ev-charging-company-card.webp?width=960&format=webp&quality=85&v=1dd4f48c401b9f0&hmac=6919dbecc48faa4ef5ea9de34fea14619f097e62c7053c4c946884e0853fe6f5) Energy · EV charging EV Charging Company Web & tablet An interactive services map — delivered as both a website component and an offline tablet app for trade shows — plus a custom-built product search for the client's catalogue. JavaScript PWA WordPress WooCommerce](https://63digital.com/work/ev-charging-company/) [![Self-Storage Operator](https://63digital.com/media/pq309a5q/self-storage-operator-card.webp?width=960&format=webp&quality=85&v=1dd4f48c41c1fc0&hmac=fb3764adfb51d9ae1f7bbe9316f5e732a327cb5344ee44d9b050dcf367148e21) Self-storage · Multi-site Self-Storage Operator Web & automation Modernising a multi-site self-storage operator's site — a database-free blog, SEO landing pages, live pricing from the back-office, automated competitor price monitoring and per-branch lead routing. PHP Automation Web scraping SEO](https://63digital.com/work/self-storage-operator/) [![Teamwear Retailer](https://63digital.com/media/tkcao5tf/teamwear-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c434fef0&hmac=0915540b227bce2f009d46cb92d751e4aeb3ca87df7324e9b3cecb047cea6211) eCommerce · Teamwear Teamwear Retailer WooCommerce An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue. WooCommerce eCommerce Personalisation Performance](https://63digital.com/work/teamwear-retailer/) [![Fine Jewellery Retailer](https://63digital.com/media/xovlrl5u/fine-jewellery-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c44e0530&hmac=7688521d43ca6e9884623f8c5f1eafd6a3bb9a9915d1741997cbd4a99848cb54) eCommerce · Jewellery Fine Jewellery Retailer Shopify A high-trust Shopify storefront for a diamond and fine-jewellery retailer — a 3D-first product gallery, FAQ rich-results schema, a context-aware header, and buyer-education content the client controls. Shopify Liquid eCommerce SEO](https://63digital.com/work/fine-jewellery-retailer/) [![Water Retailer](https://63digital.com/media/a2t1j3vt/water-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c460c9e0&hmac=0ad7e315049d757229d8a0f3f9d2aeb157bd3a3a940cb0970541a3caccc1749d) Utilities · Water Water Retailer Search & integration A single, fast site search that unifies the website and the retailer's ServiceNow content in one relevance-ranked result set — powered by Algolia and a custom indexer. Algolia Search Integration ServiceNow](https://63digital.com/work/water-retailer/) [![Emergency Vehicle Manufacturer](https://63digital.com/media/i9baz4y3/emergency-vehicle-manufacturer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c474a000&hmac=24efd65454d59d943f1c6ac92b7b7c7392d8d7a71ebfa5296c7856a1a1d825b1) Manufacturing · Emergency vehicles Emergency Vehicle Manufacturer Recovery & hosting Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence. WordPress WP Engine Recovery Maintenance](https://63digital.com/work/emergency-vehicle-manufacturer/) ## Something not working the way it should? You don't need a spec. Tell us what's slowing you down and we'll tell you honestly whether bespoke software is the answer. Sometimes it isn't, and we'll say so. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/work/rebll-tickets/ [← Work](https://63digital.com/work/) Events · Ticketing # A white-label ticketing marketplace for Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. A marketplace, not a checkout The hard part of ticketing isn't taking a card payment — it's being a marketplace: isolating every promoter's data, paying each of them into their own account, and getting the fees, VAT and reconciliation exactly right. That's what we built for Rebll. ![Rebll Tickets](https://63digital.com/media/lesp82wu/rebll-mockup.webp?width=960&format=webp&quality=85&v=1dd4f48c33ac070&hmac=6a98bef29d92c126b10e8af55fa233e29c7650b98f69952b0de66598ac54d882) 2 Payment providers Apple + Google Wallet tickets Multi-tenant White-label About Rebll Tickets is a white-label event-ticketing platform — a marketplace where event promoters get their own branded storefront, sell tickets to consumers, and are paid directly into their own payment accounts. It's genuinely multi-tenant: every promoter's data is isolated, and branding is set per promoter and per event. We built Rebll from scratch on .NET as a modular monolith, orchestrated with .NET Aspire: a consumer checkout, an embeddable sales widget promoters can drop into their own sites, a full box-office back-office, and an admin control plane — with marketplace payments, digital-wallet ticket issuance and privacy-aware marketing attribution built in. Technologies .NET 10 ASP.NET Core .NET Aspire SQL Server Integrations Stripe Connect Square Postmark Apple & Google Wallet Functions Ticketing Marketplace payments Box office Attribution Key features — White-label promoter storefronts — Stripe Connect & Square marketplace payouts — Configurable fees & VAT engine — Apple & Google Wallet tickets — Guestlists, comps & staff accreditation — Embeddable purchase widget [Start a project like this](https://63digital.com/contact/) “ > They built us a proper platform, not just a checkout — our promoters get their own branded storefront, their own payouts, and everything they need to run the door. It's the engine of our whole business. Founder · Rebll Tickets How we built it ## A multi-stage approach. 01 ### Discovery & architecture We designed a multi-tenant platform where promoters are first-class tenants — with per-promoter data isolation enforced at the database layer, and a clean, interface-driven service architecture that could grow with the product. 02 ### Ticketing & commerce We built the core: events, venues and a flexible ticket-type engine with dependencies, caps and add-ons; a session-based basket with time-limited reservations; and a configurable fees-and-VAT engine spanning platform and promoter charges. 03 ### Marketplace payments We integrated two payment providers — Stripe Connect and Square — with connected-account onboarding, payments straight into promoters' own accounts with the platform fee taken at source, automated reconciliation and payout logging. 04 ### Box office & growth We added the operational tooling — guestlists, complimentary tickets, staff accreditation with bulk upload, digital-wallet tickets — and privacy-aware marketing attribution through the Meta and TikTok server-side APIs. The impact ## What changed. ### Every promoter, their own marketplace A multi-tenant, white-label platform gives each promoter a branded storefront and payouts to their own Stripe or Square account — with their data isolated from every other tenant. ### Payments built for a marketplace Two payment providers, connected-account onboarding, platform fees taken at source and automated reconciliation — money flows to promoters directly, with a configurable platform fee taken on the way. ### Tickets in the customer's wallet Every ticket is issued as a QR code and PDF, and as an Apple Wallet or Google Wallet pass — ready for the door. ### Growth that survives the cookie crackdown Server-side conversion tracking to Meta and TikTok, with hashed data, consent gating and a durable outbox, keeps marketing attribution working as browsers lock cookies down. Go deeper ## Guides from this project [Square How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) [Apple & Google Wallet How to add Apple Wallet and Google Wallet tickets to your platform Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified.](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) Platforms: [Stripe](https://63digital.com/payments/stripe/), [Square](https://63digital.com/payments/square/), [Apple & Google Wallet](https://63digital.com/payments/apple-google-wallet/) ## Building a marketplace or multi-tenant platform? If you're building a product where many businesses sell through one platform — with their own branding, payouts and data — we've built exactly that. [Get in touch](https://63digital.com/contact/) [Next case study Rebll Tickets Cloud Platform](https://63digital.com/work/rebll-tickets-cloud-platform/) --- Source: https://63digital.com/work/rebll-tickets-cloud-platform/ [← Work](https://63digital.com/work/) Cloud · DevOps # Azure infrastructure & DevOps for Rebll Tickets Moving Rebll Tickets onto codified, self-healing Azure infrastructure — with migration-safe, health-verified releases and payment-grade observability. Infrastructure you can trust When you take real money at scale, the infrastructure is as important as the app. We made Rebll's reproducible, self-verifying and observable — so releases are boring and problems are loud. ![Rebll Tickets Cloud Platform](https://63digital.com/media/caisgbn1/rebll-cloud-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3491850&hmac=25c5cac66f930ca47c4a6b2339d7816dacc11954d0bccc6b8e59ae074d2dfaef) 100% Infrastructure as code 0 Secrets baked into images 11 Alert rules About We took Rebll Tickets — a revenue-critical events-ticketing platform handling real-money payments, driven by payment webhooks, and hit by spiky on-sale traffic — and moved it off a single self-hosted server onto reproducible, self-healing Azure infrastructure. The goal was to make the platform scalable, auditable and safe to release, without ever putting payment flows at risk. We defined the entire environment as code: modular Bicep templates provisioning Azure Container Apps, Azure SQL, Key Vault, Container Registry, storage and a full alerting stack. A gated Azure DevOps pipeline builds, runs database migrations safely at deploy time, rolls the container image and verifies the release with a health check. Observability runs on OpenTelemetry into Azure Monitor, with alert rules written around the things that actually matter — payments, payouts and webhooks. Technologies Azure Container Apps Bicep Azure DevOps .NET Aspire Integrations Azure SQL Key Vault Container Registry Application Insights Functions Infrastructure as code CI/CD Observability Release safety Key features — Modular Bicep infrastructure estate — Always-on Azure Container Apps with health probes — Gated CI/CD with approval & health checks — EF migration bundles run at deploy time — Managed-identity secrets from Key Vault — OpenTelemetry + payment-focused alerting [Start a project like this](https://63digital.com/contact/) “ > 63Digital didn't just host our platform — they turned our infrastructure into code, made every release safe, and set up alerting that tells us about a payment issue before anyone else notices. We deploy with confidence now. CTO · Rebll Tickets How we built it ## A multi-stage approach. 01 ### Codify the infrastructure We defined the whole environment as composable Bicep modules — Container Apps, Azure SQL, Key Vault, Container Registry, storage, managed identity and alerting — so the estate is reproducible, version-controlled and deletion-protected. 02 ### Safe, gated releases We built an Azure DevOps pipeline that builds and tests, packages database changes into a self-contained migration bundle, and — behind a manual approval gate — runs those migrations against Azure SQL, rolls the container image, and verifies the deploy with a health probe. 03 ### Secrets and identity Production secrets are resolved from Key Vault via a managed identity at startup, so no connection strings or keys are ever baked into an image — and the running app scales without touching a credential. 04 ### Payment-grade observability We wired end-to-end OpenTelemetry into Azure Monitor and wrote alert rules around what matters — payment failures, payout-token renewals, webhook and email failures, background-job errors — with noise-suppression for internet scanner traffic and a synthetic uptime test. The impact ## What changed. ### The whole estate, as code Modular Bicep templates define the entire environment, so it can be rebuilt or reviewed like any other code — with a resource lock and a purge-protected Key Vault guarding it against accidents. ### Releases that can't lose a migration Every production deploy runs versioned database migrations from a self-contained bundle, updates the container image and self-verifies via a health check — behind a human approval gate. ### Always-on, sized for launch night The platform runs as an always-on container with no cold starts, scaled up to 2 vCPU and 4 GB ahead of a major launch, behind a custom domain with auto-renewing TLS. It deliberately stays on a single replica, so a busy on-sale can never send customers duplicate ticket emails. ### Alerts that page on what matters Alongside the usual error and latency checks, dedicated alert rules watch payments, payout-token renewals, webhooks, emails and background jobs — so the team hears about a payment problem before a customer does. ## Outgrown a single server? If your platform has become too important to run on hope and a single box, we'll move it onto codified, self-healing cloud infrastructure with releases you can trust. [Get in touch](https://63digital.com/contact/) [Next case study 63Digital](https://63digital.com/work/63digital/) --- Source: https://63digital.com/work/63digital/ [← Work](https://63digital.com/work/) Digital agency · Our own site # A faster, code-owned Umbraco 17 site for 63Digital Our own site, upgraded from Umbraco 13 to 17 LTS in one jump and rebuilt on code-owned templates: faster, free of a third-party theme, and built to be found in search and AI answers. Eating our own cooking Everything we recommend to clients is running here: a direct Umbraco 13 to 17 upgrade, templates we own, per-template critical CSS, structured data, and guides written from real jobs. If it didn't work on our own site, we wouldn't sell it. ![63Digital](https://63digital.com/media/xfin3slu/63digital-mockup.webp?width=960&format=webp&quality=85&v=1dd66fcb9242b50&hmac=69c5a6be087e3f2ae85fae33fd6276c01489a86779707eab23199f9ec7358e5b) 13 → 17 Upgraded in one jump 1,000+ Vendor theme files removed 13 Templates with their own critical CSS About Our own website ran on Umbraco 13 with a commercial theme: uSkinned Site Builder and its Kilda theme. It worked, but Umbraco 13 reaches end of life in December 2026, every upgrade had to wait for the theme vendor's releases, and more than a thousand vendor-managed files lived in the project. It also didn't show the depth of platform work we actually do. So we did to our own site what we'd recommend to a client. We upgraded it directly from Umbraco 13 to 17 LTS, replaced the theme with code-owned templates on a bespoke Tailwind design system, and rebuilt the performance and search foundations by hand: per-template critical CSS, self-hosted fonts, responsive WebP images, structured data and generated share images. Then we added platform hubs and task guides written from real jobs, built to be found in search and cited in AI answers. Technologies Umbraco 17 .NET 10 ASP.NET Core Tailwind CSS .NET Aspire Cloudflare Integrations Cloudflare CDN Postmark email ImageSharp Functions Case studies Updates & RSS Platform guides Key features — Umbraco 17 LTS on .NET 10, upgraded directly from 13 — Code-owned templates on a bespoke Tailwind design system — Per-template critical CSS, Early Hints and responsive WebP — Platform hubs and task guides for search and AI answers [Start a project like this](https://63digital.com/contact/) How we built it ## A multi-stage approach. 01 ### Prepare on 13 Moved to the latest Umbraco 13, removed code built on APIs that v17 drops, deleted legacy media pickers and dead uSync folders, and checked every package for a v17 release. 02 ### Jump to 17 Moved to .NET 10 and Umbraco 17.4, let the migrations run on first boot, and fixed what broke. The site was booting on 17 twelve days after the first preparation commit. 03 ### Replace the theme Rebuilt the front end as code-owned templates on a bespoke Tailwind design system, with a lean content model synced through uSync and no third-party theme. 04 ### Make it fast Per-template critical CSS, self-hosted fonts with Early Hints preload, responsive WebP images, compression, cache headers and Cloudflare purge on publish. 05 ### Make it findable Hand-rolled head meta, JSON-LD, generated share images, sitemap and RSS, then platform hubs and task guides for search and AI answers. Solution showcase ## Fast, found, and ours. Every page is a template we own, with its own critical CSS, structured data and share image, from the home page to the platform guides. Home page, rebuilt on code-owned templates Work page with the featured latest case study Task guide, answer first, with author and review date Platform hubs linked from Services Updates with category filters and RSS The impact ## What changed. ### Upgraded and future-proofed A direct jump from Umbraco 13.13 to 17 LTS on .NET 10, then the obsolete navigation APIs replaced ahead of Umbraco 18, so the next upgrade won't be a rewrite. ### Free of a third-party theme The commercial theme and its thousand-plus vendor files are gone. Every template is ours, so no vendor release can hold up an upgrade again. ### Fast by construction Critical CSS inlined per template, self-hosted fonts preloaded with Early Hints, responsive WebP images, Brotli compression and long-lived caching, with the CDN cache purged on publish. ### Built to be found and cited Head meta, JSON-LD, sitemap, RSS and per-page share images, plus platform hubs and task guides written from real jobs for search and AI answers. Go deeper ## Guides from this project [Umbraco How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) Platforms: [Umbraco](https://63digital.com/cms/umbraco/) ## Want the same for your site? Whether you're stuck on Umbraco 13 or tied to a theme you can't upgrade, we'll plan the move to a faster site you own. [Get in touch](https://63digital.com/contact/) [Next case study eControl](https://63digital.com/work/econtrol/) --- Source: https://63digital.com/work/econtrol/ [← Work](https://63digital.com/work/) Manufacturing · B2B # A single production platform for eControl A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week. Built to scale eControl came to us mid-growth — breaking out of B2B into B2C, with off-the-shelf ERPs that couldn't bend to their build-to-order model. Rather than force their process into someone else's software, we built the platform around how they actually work. It has grown with them ever since. ![eControl](https://63digital.com/media/gjzp4l23/econtrol-mockup.webp?width=960&format=webp&quality=85&v=1dd4f48c176a240&hmac=1ee25aad2a56857732c7289698beaf2318b7b360e740d50b194bfddfee9cf311) 15+ Hours saved weekly 1 Source of truth 100% Order-to-install visibility About eControl manufactures and sells home oven cookers and electric conversion kits for oil cookers, serving the B2B market as the hospitality sector shifts toward electric. They run on a build-to-order model, and as the business scaled, status was living in people's heads, spreadsheets and email chains — with nothing talking to anything else. We built a web-based production and engineer management platform that consolidates the whole journey, from initial website enquiry through to installation and beyond. Integrated with WordPress, Xero and WooCommerce and paired with a dedicated engineer app, it gives management, the production team and field installers one real-time picture — and removes the manual transfer of data as an order moves down the pipeline. Technologies ASP.NET Core C# SQL Server Microsoft Azure Integrations WordPress Xero WooCommerce Functions Order capture Build scheduling Engineer dispatch Key features — WooCommerce integration — Engineer field app — Live status tracking [Start a project like this](https://63digital.com/contact/) “ > The platform gives us one view of the whole operation — from a website enquiry right through to the engineer on site. We've stopped re-keying data between systems and we're saving hours every single week. Operations Manager · eControl How we built it ## A multi-stage approach. 01 ### Discovery & integration mapping We mapped eControl's build-to-order journey end to end and audited their existing tools. WordPress was already capturing sales leads and warranty claims, Xero handled quotes and invoicing, and WooCommerce took orders — but nothing was joined up. We designed a platform to sit at the centre rather than replace what worked. 02 ### Production platform We built a web-based portal that centralises the entire production process — sales enquiries, orders, build queue, installation and warranties — with a colour-coded dashboard (red for urgent, orange for in-progress, green for complete) so every team sees status at a glance. WooCommerce orders schedule automatically into the build queue. 03 ### Engineer app & API We developed a custom API connecting the portal to a dedicated engineer mobile app. Engineers are notified the moment a job is assigned, and capture install notes and repair images straight onto the client record — no manual data transfer. 04 ### Scaling into B2C With B2B operations consolidated, we extended the platform to support eControl's move into B2C, including a create-job flow for direct customer orders, and we remain on hand for ongoing development as the business grows. Solution showcase ## From order to installation, in one place. The platform unifies WooCommerce, Xero and WordPress into one production dashboard — tracking every job from sales enquiry through build, despatch and field installation. Production dashboard Shipping view Job dashboard Create job Online orders queue Fault reports The impact ## What changed. ### One source of truth Sales enquiries, orders, build progress, installation and warranties now live in one place. Management, production and field installers all work from the same real-time picture instead of chasing spreadsheets and email chains. ### Status at a glance A colour-coded production dashboard shows urgent, in-progress and completed jobs instantly, with a shipping view ordered by despatch date — so nothing slips and the team always knows what needs attention. ### No more manual transfer WooCommerce orders schedule into the build queue automatically and data flows between systems without re-keying, cutting 15+ hours of admin every week. ### The field, connected Engineers are notified of jobs on their phones and add install notes and photos straight to the client record — closing the loop from website enquiry through to installation and beyond. Go deeper ## Platforms on this project Platforms: [WooCommerce](https://63digital.com/ecommerce/woocommerce/), [WordPress](https://63digital.com/cms/wordpress/) ## We can connect your systems too. If your operation runs on disconnected tools and spreadsheets, we'll plan a bespoke platform that fits how your business actually works. [Get in touch](https://63digital.com/contact/) [Next case study KCR Academy](https://63digital.com/work/kcr-academy/) --- Source: https://63digital.com/work/kcr-academy/ [← Work](https://63digital.com/work/) Global training provider # Improving internal efficiencies at KCR Academy KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform. Small, focused build KCR started as a small, focused project — not a sprawling enterprise system. That's the point: bespoke software is well within reach for a growing business. We scaled the platform up, one stage and one currency at a time, only as the Academy's ambitions grew. No project is too small to start. ![KCR Academy](https://63digital.com/media/xmomv4z5/kcr_mockup.webp?width=960&format=webp&quality=85&v=1dd4f48c21c7f30&hmac=3df2c92d0812f28ecc37b4f720dda18573187b7e97317189e3e315cea48cfd56) 2,000+ Students served 4 Currencies supported 0 Manual payment steps About As the sole provider of training for Kinetic Chain Release — a total-body treatment of gentle mobilisations and stretches — the Academy handles training and certification for students across the world. Through a multi-stage approach we consolidated complex, scattered business processes into a single platform: improved management of student and trainer records, with integrations that simplify communications and trainer-fee collection. The result is a real reduction in administrative overhead, freeing up the Academy's time and resource. Technologies ASP.NET Core C# SQL Server Integrations WordPress Stripe Constant Contact Functions Course booking Trainer fee collection Data consolidation Key features — Stripe integration — 4-currency support — Automated enrolment workflows [Start a project like this](https://63digital.com/contact/) “ > We couldn't run our international business without the incredible database created — and continuously cared for — by Alastair. He's built a robust, intuitive system that supports everything we do, and he makes complex things simple. Seth Gardner · KCR Academy How we built it ## A multi-stage approach. 01 ### Strategy & recovery KCR Academy had lost access to their own WordPress site — the key funnel into the booking platform. We recovered the website, domain and email accounts, then worked closely with the team so the new platform would mirror existing business practices. Owning the funnel set a strong foundation for everything that followed. 02 ### Data unification & platform Student and trainer records were spread across Access, Excel and legacy WordPress. We migrated everything into one managed database and launched the Training Course Management & Booking platform — with Admin, Training Provider and Student access levels, online student records, and email-marketing sync that updates automatically. Fully responsive, front end and dashboard alike. 03 ### Payment simplification We integrated Stripe Connect so payments are taken at the point of booking rather than invoiced in arrears — cutting manual admin sharply. The platform also handles recurring accreditation-fee payments automatically. 04 ### International expansion & support We expanded the platform to transact across USD, CAD, EUR and GBP, opening up international growth. We remain on hand for housekeeping and ongoing development — a long-term relationship that keeps the platform moving with the business. Solution showcase ## Simplicity meets sophistication. The multi-level platform handles course bookings, payment processing and student management across multiple currencies and time zones. Admin dashboard Course management Booking management Trainer management Student dashboard Find-a-trainer map The impact ## What changed. ### Time-consuming processes, simplified One platform now covers booking, course progress, accreditation status, payments and student details. With data centralised, time spent chasing payments and locating records was eliminated entirely. ### Ease-of-use at every access level From students and trainers on the front end to admins on the dashboard, the platform is intuitive and fast to navigate — saving time in management, not just in consolidated function. ### More currencies, less stress Four-currency support helps the Academy serve 50+ trainers and 2,000+ students worldwide, with payment taken at the point of booking and real scope for international growth. ### Responsive for a fast-paced business While on holiday in the US, a senior team member set up an ad-hoc course, signed students up and took full payment in USD — in minutes, with no technical help. The platform lets KCR seize opportunities without admin worry. Go deeper ## Guides from this project [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) Platforms: [WordPress](https://63digital.com/cms/wordpress/) ## We can help you improve efficiencies too. If your business has channels that could be consolidated, we'll plan a project bespoke to your objectives and timeline. [Get in touch](https://63digital.com/contact/) [Next case study Aqua IT Support](https://63digital.com/work/aqua-it-support/) --- Source: https://63digital.com/work/aqua-it-support/ [← Work](https://63digital.com/work/) IT services & support # A client portal for Aqua IT Support A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready. Five years and counting What started as a spreadsheet replacement has become Aqua's operational backbone. We built the internal platform first, proved it over a full year of real use, then opened it up to clients — and it's still evolving five years on. ![Aqua IT Support](https://63digital.com/media/okxdd22d/aqua-mockup.webp?width=960&format=webp&quality=85&v=1dd4f48c22817f0&hmac=08a100619770fce924228730ef691c938b0d973135fa2f4da73addda7d63e5a3) 90%+ Faster search 2FA Mandatory since 2022 Enterprise Ready About Aqua IT Support provides IT services to SMEs across central Scotland, built on a genuinely personal service. As their client base grew, that approach was being held back by the tools behind it: IT infrastructure managed in shared OneDrive spreadsheets, with multiple engineers editing the same files and no way to restrict access to sensitive client data. We replaced the spreadsheets with a unified client-management portal. Engineers get controlled access to a complete IT asset catalogue, jobs are prioritised on a single dashboard, and clients now have secure read-only access to their own configurations and passwords — all protected by two-factor authentication and complete audit trails. It made Aqua enterprise-ready without losing the personal touch. Technologies ASP.NET Core C# SQL Server Microsoft Azure Integrations Two-factor authenticator Email notifications Functions Asset cataloguing Job ticketing Client self-service Key features — Portal-wide search — Job prioritisation dashboard — Client self-service access [Start a project like this](https://63digital.com/contact/) “ > Finding a client's details used to mean digging through spreadsheets — now it's instant and fully auditable. The portal has become the backbone of how we run, and it lets us take on bigger clients without losing the personal service we're known for. Director · Aqua IT Support How we built it ## A multi-stage approach. 01 ### Internal platform first We started by replacing the OneDrive spreadsheets with a robust internal platform — a complete, searchable IT asset catalogue with controlled access for each engineer. This took three to four months and gave the team a single, consistent source of truth. 02 ### Careful data migration Rather than carry the spreadsheets' problems across, we migrated the data manually — auditing and correcting years of historical inconsistencies as we went, so the new portal started clean. 03 ### A year of real-world validation The platform ran internally for a full year, proving itself in day-to-day use and hardening around how Aqua actually works before any client ever touched it. 04 ### Client self-service With the internal platform proven, we added secure client-facing access — read-only views of configurations and passwords, protected by two-factor authentication and backed by complete audit trails. The platform continues to evolve five years on. Solution showcase ## Controlled, searchable, self-service. The portal gives engineers controlled access to a complete asset catalogue and a prioritised job dashboard, while clients get secure read-only self-service — on desktop and mobile. Main dashboard Client dashboard Mobile client search Asset view (mobile) Two-factor authentication Secure login The impact ## What changed. ### 90%+ faster search Instant search across every client and asset replaced minutes of digging through spreadsheets — saving hours every week and letting engineers fix more on the first call. ### Controlled access Granular per-engineer access, read-only client views, two-factor authentication and complete audit trails replaced shared files anyone could edit. ### Enterprise-ready With consistent data and auditable access, Aqua can take on larger, more complex clients without losing the personal service ethos they're known for. ### An operational backbone What began as a spreadsheet replacement now runs the business day to day — and after five years it's still being extended with new capabilities. Go deeper ## Guides from this project [Spreadsheets How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) Platforms: [Spreadsheets](https://63digital.com/modernisation/spreadsheets/) ## We can make your business enterprise-ready too. If you're outgrowing spreadsheets and shared files, we'll plan an auditable platform with proper access control that scales with you — without losing what makes your service personal. [Get in touch](https://63digital.com/contact/) [Next case study Clarkston Colts](https://63digital.com/work/clarkston-colts/) --- Source: https://63digital.com/work/clarkston-colts/ [← Work](https://63digital.com/work/) Community football club # A fast, future-proof site for Clarkston Colts A lightning-fast Umbraco rebuild delivered in days, not weeks — a professional, easy-to-update site for a club mid-transition. Giving back Clarkston Colts is a volunteer-run grassroots club. When the senior side disbanded, the new parent committee inherited a website paid for out of one departing coach's own pocket. We rebuilt it on solid foundations — and absorbed the hosting and maintenance costs so the club can focus on football. ![Clarkston Colts](https://63digital.com/media/l05noez2/colts-mockup.webp?width=960&format=webp&quality=85&v=1dd4f48c27e9c60&hmac=a197d1f7679e1f5da63020776141f53d50f6b24e7071bfd6de87f423f354bf7f) Days Not weeks 1-click Updates Built To last About Clarkston Colts is a grassroots community football club run by volunteer coaches, committee members and parents. When the senior team disbanded, the club hit a digital crisis: their existing Wix site was personally financed by a departing coach, leaving the newly forming parent committee exposed on both cost and access. The transition showed exactly why they needed reliable, accessible systems that could survive organisational change. We rebuilt the site on Umbraco with uSkinned Site Builder — a clean, professional design that makes the essentials easy to find for parents and players. Coaches can publish match reports, committee and coaching profiles are simple to update, and governance documents like the codes of conduct and club constitution are front and centre. We delivered it in days, not weeks, and absorb the hosting and maintenance so the club is never dependent on one person again. Technologies Umbraco CMS ASP.NET Core uSkinned Site Builder Integrations Contact form Social media links Functions Match report publishing Profile management Document library Key features — Days-not-weeks delivery — One-click content updates — Built to last [Start a project like this](https://63digital.com/contact/) “ > When the senior team folded we were left scrambling for a website we could actually rely on. 63Digital had us back online in days, gave us something we own and control, and even cover the running costs — and it's easy enough that any of our volunteers can keep it updated. Committee Member · Clarkston Colts How we built it ## A multi-stage approach. 01 ### Rescuing the funnel The club's Wix site was tied to a departing coach's personal account — a single point of failure on both cost and access. We got the new committee onto a platform they own and control, removing the dependency on any one individual. 02 ### Rapid build on uSkinned Using Umbraco with uSkinned Site Builder, we stood up a clean, professional, fully responsive site in just a few days — balancing speed with a robust CMS that can grow with the club. 03 ### Easy content for volunteers We set the site up so non-technical volunteers can publish match reports, update coaching and committee profiles, and keep governance documents current — one-click simple, no developer needed. 04 ### Hosted and maintained, on us 63Digital absorbs the hosting and ongoing maintenance, giving a volunteer-run club a stable, professional presence without the cost or admin overhead. Solution showcase ## Professional, and effortless to run. A clean, fully responsive site that puts match reports, club profiles and key documents within easy reach — and lets volunteers keep it all up to date in a click. Home page Match reports Who's who Club documents Committee profiles Responsive on mobile The impact ## What changed. ### Live in days, not weeks A professional, responsive site delivered fast — so the club had a stable home online almost immediately after losing the old one. ### Owned by the club The site no longer depends on one person's personal account. The committee controls its own domain, content and platform — resilient to whoever comes and goes. ### Easy for volunteers Coaches and committee members update match reports, profiles and documents themselves in a click, with no technical know-how required. ### Built to last On Umbraco and uSkinned, with hosting and maintenance covered by 63Digital, the site is built to grow with the club for years to come. Go deeper ## Platforms on this project Platforms: [Umbraco](https://63digital.com/cms/umbraco/) ## We support grassroots, and growing businesses. Whether you're a community club or a scaling business, we'll build you a fast, professional site you actually own — and look after it for you. [Get in touch](https://63digital.com/contact/) [Next case study Paypolli](https://63digital.com/work/paypolli/) --- Source: https://63digital.com/work/paypolli/ [← Work](https://63digital.com/work/) Fintech · Payments # A Stripe-powered payments platform for Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically. Fintech, done properly Payments is unforgiving — a rounding error or a double charge is a real problem for a real merchant. We built Paypolli around idempotency, a single shared fee engine and server-side money movement so the numbers always add up. ![Paypolli](https://63digital.com/media/9cr8ylgx/paypolli-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3585a90&hmac=ab47e633ba090aec77aec0274e5c37096b6aa30690f2a675899dd56c22634581) 4 Payment channels 15-min Interchange billing White-label Multi-tenant About Paypolli — first built for the taxi and private-hire trade as 'Monily Taxi Pay' — is a multi-tenant payments platform that lets merchant organisations take card payments across four channels: physical terminals, tap-to-pay on iPhone, e-commerce checkout and payment links. The platform sits in the middle as a Stripe Connect facilitator, taking a configurable margin and reclaiming interchange automatically. We designed and built the whole thing in .NET — a merchant and admin portal, two documented payments APIs, and a reverse proxy that keeps Stripe keys and fee logic on the server. The hard, correctness-critical parts of fintech — fee calculation, settlement, refunds, idempotency and reconciliation — are handled server-side, so client apps stay thin and platform secrets never leave the platform. Technologies .NET 8 C# SQL Server YARP Integrations Stripe Connect Stripe Terminal GoHighLevel Postmark Functions Payments Onboarding Interchange billing Settlement Key features — Stripe Connect payments proxy — Tap to pay on iPhone — Automated interchange billing — Self-service merchant onboarding [Start a project like this](https://63digital.com/contact/) “ > 63Digital built the engine room of our payments product — the parts our customers never see but absolutely depend on. It just works, and it's kept working as we've grown. Managing Director · Paypolli How we built it ## A multi-stage approach. 01 ### Discovery & fee modelling We mapped how money should move — from a card tap in a taxi to the merchant's payout — and designed a fee engine shared by every channel, so the numbers always agree no matter where a payment starts. 02 ### Payments proxy We built a reverse proxy that sits between client apps and Stripe, authenticating each app by API key, calculating the application fee in flight and routing funds to the right connected account — so no client app ever holds a platform secret. 03 ### Four channels, one platform Card terminals, tap-to-pay on iPhone, e-commerce checkout and payment links all run through the same core, each transaction tagged so it can be reconciled cleanly later. 04 ### Billing & settlement A background job reclaims interchange every fifteen minutes with idempotent, deduplicated charges, alongside automated reconciliation reporting, full refund handling and self-service onboarding. The impact ## What changed. ### One fee engine A single calculator, shared by the portal and the payments proxy, means the fee shown, charged and reconciled is always the same — the correctness that fintech lives or dies on. ### Funds route themselves Stripe Connect destination charges send each payment to the right merchant automatically, with the platform's margin taken on the way through — no manual transfers, no reconciliation guesswork. ### Interchange, reclaimed automatically A fifteen-minute background job builds per-merchant interchange bills and charges them with idempotency keys that make double-billing impossible. ### Built to onboard itself Merchants sign up, connect their Stripe account and go live without a human in the loop — and can be suspended or offboarded just as cleanly. Go deeper ## Guides from this project [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [Stripe How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) [Stripe How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) Platforms: [Stripe](https://63digital.com/payments/stripe/) ## Thinking about payments or fintech? If you're building a payments product or wiring Stripe Connect into your platform, we'll help you get the money movement right the first time. [Get in touch](https://63digital.com/contact/) [Next case study Gift Voucher Solutions](https://63digital.com/work/gift-voucher-solutions/) --- Source: https://63digital.com/work/gift-voucher-solutions/ [← Work](https://63digital.com/work/) eCommerce · Gift cards # A white-label gift-voucher platform for Gift Voucher Solutions A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers. White-label, end to end Multi-tenant is easy to say and hard to build. Themes, payment credentials, postage rules and analytics are all per-merchant — so every storefront feels bespoke while there's only ever one platform to run. ![Gift Voucher Solutions](https://63digital.com/media/wzoe9vb9/gift-voucher-solutions-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c372c060&hmac=0693da41e84962ecccf804499174d2258fb4f7238de0ac1a03892808a9d87a68) 7 Payment gateways Multi-tenant White-label Digital + post Voucher delivery About Gift Voucher Solutions runs branded gift-voucher storefronts on behalf of hospitality and retail merchants — each merchant's customers buy vouchers from a storefront that looks entirely like that merchant's own brand. We rebuilt the platform from the ground up and owned it through five years of development. It's genuinely multi-tenant: every merchant gets their own theme, fonts and custom code, their own payment gateway credentials, their own postage rules and their own analytics. Behind the storefront sits an ASP.NET back-office and an OAuth2-secured public API, with Azure Functions rendering and dispatching both emailed and physically-posted vouchers. Technologies ASP.NET C# EF6 Microsoft Azure Integrations Stripe Connect PayPal Worldpay Realex Esendex SMS Functions Merchant onboarding Storefronts Payments Fulfilment Key features — Branded merchant storefronts — Seven payment gateways — Digital & postal vouchers — OAuth2 public API [Start a project like this](https://63digital.com/contact/) “ > Every one of our merchants gets a storefront that looks like their own brand and takes payment through their own gateway — all from one platform we barely have to touch. Managing Director · Gift Voucher Solutions How we built it ## A multi-stage approach. 01 ### Discovery & rebuild We replaced an ageing platform with a clean, layered .NET architecture — storefront, business services, data and a shared payments abstraction — designed multi-tenant from the first commit. 02 ### Branded storefronts We built a React storefront with four themeable templates, so each merchant gets their own colours, fonts, social links and analytics without a separate codebase — white-label by design. 03 ### Payments, every acquirer We fronted seven card gateways behind a single payment abstraction, so every merchant could keep their existing acquirer, and made the whole checkout SCA-compliant as PSD2 landed. 04 ### Marketplace & fulfilment We added Stripe Connect so merchants are paid directly with GVS taking a platform fee, and automated digital and postal voucher fulfilment through Azure Functions, email and SMS. The impact ## What changed. ### Every merchant, their own brand A single multi-tenant platform gives each merchant a fully themed storefront — colours, fonts, custom code and analytics — with no separate build to maintain. ### Keep your own acquirer Seven payment gateways behind one abstraction mean a merchant never has to switch card processor to join the platform. ### Compliant as the rules changed When PSD2 and Strong Customer Authentication arrived, we reworked the entire card flow — per-merchant hashing and 3-D Secure across every gateway — so checkout stayed compliant. ### Digital and physical, automated Emailed and posted vouchers are rendered to PDF and dispatched automatically by background jobs, over email and SMS — no manual fulfilment. Go deeper ## Guides from this project [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) Platforms: [Stripe](https://63digital.com/payments/stripe/) ## Need a platform that serves many brands? If you're building a multi-tenant or white-label product — especially one that has to handle payments for other businesses — we've done it at scale. [Get in touch](https://63digital.com/contact/) [Next case study My Pet Health](https://63digital.com/work/my-pet-health/) --- Source: https://63digital.com/work/my-pet-health/ [← Work](https://63digital.com/work/) Veterinary · Consumer app # A connected pet-health app for My Pet Health A consumer pet-health app that plugs into vets' existing practice software — syncing every pet's care record and letting owners book, pay and stay on top of their pet's health in one place. Health data, handled carefully This is a consumer health app, so privacy and correctness aren't optional. We built it multi-tenant, penetration-tested, with GDPR account deletion and careful rules so bad third-party data never overwrites what a pet owner has told us. ![My Pet Health](https://63digital.com/media/a18rrjzz/my-pet-health-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3892e90&hmac=69050202dea8451c2b9a64d4cbbe1501536c83abd6b9811f4b2bce16abbcd489) 0–100 Pet health score Real-time PMS sync Multi-tenant Practices & branches About My Pet Health is a consumer pet-health app, sold to veterinary practices and used by their clients. It plugs into the practice-management software vets already run — no rip-and-replace — and gives pet owners a single, trustworthy view of every animal's vaccinations, worming, insurance and appointments. We designed and built the whole platform on .NET and Azure: a mobile-app API, a secured gateway that syncs data in from each practice's system, an internal management portal, and an embeddable multi-tenant booking widget — backed by event-driven background jobs that send reminders and push notifications at exactly the right moment. Technologies .NET 6 C# EF Core Microsoft Azure Integrations Practice Management Systems Assisi Vet PayMyVet Firebase Functions Health scoring Appointment booking Reminders In-app payments Key features — Weighted pet health score — Single & multi-pet booking — Push reminders & notifications — In-app vet payments [Start a project like this](https://63digital.com/contact/) “ > The app gives our clients a single, trustworthy view of their pet's health — and it just syncs from the systems we already use. Practice Partner · My Pet Health How we built it ## A multi-stage approach. 01 ### Discovery & integration mapping We mapped how pet data flows out of the many practice-management systems vets use, and designed a single secured gateway that could take pushes of owners, animals, treatments, reminders and balances — without asking any practice to change software. 02 ### The pet-health app We built the mobile app's API around a weighted health score, per-pet care records, appointment booking and in-app payments — with defensive validation so messy third-party data never overwrites what an owner has entered. 03 ### Booking & reminders We integrated the practices' real appointment calendars for single and multi-pet bookings, and built an event-driven reminder engine that fans out push notifications through a message queue at the right time. 04 ### Multi-tenant & compliant We made the whole thing multi-tenant across practices and branches, added an embeddable booking widget, and built GDPR-compliant account deletion with staged, ordered cleanup. The impact ## What changed. ### One view of every pet Vaccinations, worming, flea and tick treatment, insurance and appointments all sync automatically from the practice's system into one clear picture for the owner. ### A health score they understand Each pet gets a 0–100 score built from its real care record, with every factor explained in plain English — so owners know exactly what to do next. ### Booking without the phone Owners book single or multiple pets straight against the practice's live calendar, and pay their vet in-app — no phone calls, no friction. ### Built for many practices A multi-tenant architecture serves many practices and branches from one platform, with an embeddable booking widget any practice can drop into its own site. ## Building something for a connected, regulated world? If your product has to integrate with systems you don't control — and handle sensitive data carefully — we'll help you build it properly. [Get in touch](https://63digital.com/contact/) [Next case study SEO Analytics Platform](https://63digital.com/work/seo-analytics-platform/) --- Source: https://63digital.com/work/seo-analytics-platform/ [← Work](https://63digital.com/work/) SEO · SaaS # A multi-tenant SEO analytics platform A multi-tenant SaaS that aggregates data from six SEO providers, tracks rankings over time and turns them into branded, shareable client reports — with machine-learning insight and usage-based billing. Built for scale SEO reporting is deceptively heavy — many APIs, strict rate limits, millions of data points. We built a queue-based engine with batching, throttling and caching so reports come back fast without ever tripping a provider's limits. ![SEO Analytics Platform](https://63digital.com/media/1rloy4z5/seo-analytics-platform-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3a39460&hmac=1035c43388848a2674eba52b03aa9a960631cbdb2459c93e8f8216434a474d36) 6+ SEO data sources 8 yrs In production ML-driven Rank insight About This platform is a multi-tenant SaaS for SEO agencies. It tracks how clients' websites rank on Google, pulls authority, backlink, content and page-speed metrics from a range of third-party providers, and turns them into branded, shareable client reports — including a commercial view that projects revenue from rankings. We built an aggregation engine that normalises six-plus SEO data sources behind a single queue-based job pipeline, with per-provider rate limiting and credit accounting, real-time progress over the wire, and machine-learning models that predict rankings and score backlink quality. After eight years on .NET Framework, we rebuilt it on .NET 8. Technologies ASP.NET C# SQL Server ML.NET Integrations Ahrefs SEMrush Majestic PageSpeed Stripe Functions Rank tracking Reporting ML insight Billing Key features — Six-source data aggregation — Machine-learning rank prediction — Scheduled white-label reports — Usage-based billing [Start a project like this](https://63digital.com/contact/) “ > It pulls every SEO tool we pay for into one branded report, on a schedule, and even predicts where pages will land. It's the backbone of how we report to clients. Head of SEO · SEO agency How we built it ## A multi-stage approach. 01 ### Discovery & aggregation design We designed a pluggable job pipeline where each SEO data provider is a plug-in behind one queue — so rankings, backlinks, authority, page speed and content scores all normalise into a single report. 02 ### The reporting platform We built multi-tenant organisations with white-label branding, scheduled and repeatable reports, shareable public links and PDF/Excel export — with live progress pushed to the browser as long-running jobs complete. 03 ### Machine-learning insight We trained models that predict a page's ranking position from its authority, backlinks and Core Web Vitals, and classify toxic backlinks — turning years of historical data into forward-looking insight. 04 ### Scale & modernisation We tuned the queue engine for throughput — batching, rate-limiting and caching — and later rebuilt the seven-year-old codebase on .NET 8 to keep it fast to evolve. The impact ## What changed. ### One report, every source Six-plus SEO providers — rankings, backlinks, authority, page speed, content — normalised into a single branded report, with per-provider rate limiting and credit accounting handled for you. ### Rankings you can forecast A machine-learning model predicts where a page will rank from its authority, links and Core Web Vitals, turning millions of historical data points into a forecast. ### Toxic links, flagged automatically A second model scores backlink quality, automating an audit that agencies used to do by hand. ### From rankings to revenue The platform layers conversion rate and order value onto positions to project revenue — the commercial outcome clients actually care about. ## Got a data-heavy product in mind? If your platform has to pull together many third-party data sources and make sense of them at scale, that's exactly the kind of thing we build. [Get in touch](https://63digital.com/contact/) [Next case study Automated Social Video Platform](https://63digital.com/work/automated-social-video-platform/) --- Source: https://63digital.com/work/automated-social-video-platform/ [← Work](https://63digital.com/work/) Media · Video # An AI highlights pipeline for social video An automated pipeline that watches a live sports stream, uses AI to find the key moments, cuts them into vertical clips and publishes them to social — with no human editing in the loop. AI where it earns its place We used AI for exactly the part that's hard to automate — spotting the newsworthy moment — and deterministic tooling for the rest. The result is a pipeline that's fast, cheap to run and genuinely hands-off. ![Automated Social Video Platform](https://63digital.com/media/ztmohhya/automated-social-video-platform-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3bf0ba0&hmac=d2f3e3a072859266a30e227c0cbdd57fe25dde44ac76c74703c5b743e7496534) 0 Manual edits Live → social End to end GPU Accelerated About This platform turns a live sports stream into social-ready highlight clips automatically. It records the feed, transcribes the commentary, and uses an AI model to find the moments that matter — goals, penalties, cards — then cuts each one into a vertical clip and publishes it, all without a human editor. We built it on .NET as an event-driven, queue-based pipeline: a live stream is segmented, its audio transcribed, the transcript analysed by a language model with a strict function-calling schema, and each detected moment reframed from wide to vertical with GPU-accelerated encoding before being pushed to social. Technologies .NET 8 C# FFmpeg OpenAI Integrations OpenAI Whisper OpenAI o3-mini AWS S3 Ayrshare Functions Stream capture Transcription Highlight detection Publishing Key features — AI highlight detection from commentary — Automatic 16:9 to 9:16 reframing — GPU-accelerated clip encoding — Auto-publish to social [Start a project like this](https://63digital.com/contact/) “ > It watches the match and posts the highlights before we'd have finished exporting the first clip by hand. Head of Content · Sports media team How we built it ## A multi-stage approach. 01 ### Capture We resolve a live stream and record it into rolling short segments, on a timer that can wait for a scheduled kick-off before it starts. 02 ### Transcribe Each segment's audio is transcribed to a timed transcript — with both a hosted API and a local GPU model trialled for speed and cost. 03 ### Detect The transcript goes to a language model with a strict schema that returns the key moments as structured data — goals, cards, penalties — each with precise start and end times. 04 ### Reframe & publish Each moment is cut, reframed from 16:9 to a 9:16 blurred-background clip on the GPU, then uploaded and published to social with an auto-generated title and hashtags. The impact ## What changed. ### AI watches the game The system finds highlights from the commentary, not the pixels — a language model reads the transcript and returns the key moments as structured, timestamped data. ### Vertical, automatically Every clip is reframed from wide broadcast footage to a 9:16 social format with a blurred backdrop, encoded on the GPU for instant mobile playback. ### No editor in the loop From live feed to published Short, the whole pipeline runs itself — turning minutes-old action into posted clips. ### Built to reprocess An event-driven, queue-based design means any stage can be re-run on its own, so a failed step never means recapturing the stream. ## Thinking about AI or media automation? If you've got a manual, repetitive media or content process, we'll help you work out where AI genuinely fits — and build the pipeline around it. [Get in touch](https://63digital.com/contact/) [Next case study Marketing Reporting Platform](https://63digital.com/work/marketing-reporting-platform/) --- Source: https://63digital.com/work/marketing-reporting-platform/ [← Work](https://63digital.com/work/) Marketing · Analytics # Automated client reporting for a digital agency A reporting platform that aggregates web analytics, search, paid and rank-tracking data into branded monthly client reports — now with AI-written commentary grounded in the real numbers. Grounded AI, not a chatbot The AI commentary is fed the exact figures rendered on each report, section by section — so it explains what actually happened, rather than making things up. Pragmatic AI, in the one place it saves real hours. ![Marketing Reporting Platform](https://63digital.com/media/mcie4bhi/marketing-reporting-platform-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3da82e0&hmac=5940aad0116bab9ca74ee2480a81dea3696f1bb10d6d2d2b10b626ab4ed36fff) 1 Source of truth GA4-ready Data layer AI-written Commentary About This platform is the reporting engine for a digital marketing agency. It pulls data from web analytics, search console, paid search and rank tracking, and turns it into branded monthly client reports — consistent, scheduled, and maintained by a very small team. We built it around a builder-driven pipeline: each report block fetches from a data-source service, computes month-on-month and year-on-year comparisons, renders tables and charts, and caches its output. Scheduled jobs generate reports and deliver them, and a provider-agnostic AI layer now drafts the written commentary from the exact numbers on the page. Technologies ASP.NET C# EF6 SQL Server Integrations Google Analytics (GA4) Search Console Google Ads AccuRanker Functions Data aggregation Reporting AI commentary Scheduling Key features — Multi-source data aggregation — Period-over-period comparisons — AI-written section commentary — Scheduled report delivery [Start a project like this](https://63digital.com/contact/) “ > It turns a week of copy-paste into a scheduled job, and the AI drafts the commentary from our real numbers. Our reports have never been more consistent. Agency Director · Digital agency How we built it ## A multi-stage approach. 01 ### Discovery & builder design We designed a builder-driven engine where each report block is a self-contained unit — fetch, compare, render, cache — so new report types could be added without touching the rest. 02 ### Multi-source aggregation We integrated web analytics, search console, paid search and rank tracking behind one pipeline, with per-client branding, colours and configurable rules. 03 ### Surviving GA4 When Google retired Universal Analytics, we rebuilt the entire data layer on GA4 — swapping the engine while the reports kept running. 04 ### AI commentary & AI-search We added a provider-agnostic AI layer that drafts each section's commentary from the rendered numbers, and reporting on visibility in Google's AI Overviews. The impact ## What changed. ### Every source, one report Web analytics, search, paid and rank-tracking data flow into a single branded report, with month-on-month and year-on-year comparisons computed automatically. ### AI that writes the analysis A provider-agnostic AI layer drafts each section's commentary from the exact figures on the page — grounded, not generic — with the model swappable behind the scenes. ### It survived GA4 When Google forced everyone off Universal Analytics, we rebuilt the data layer on GA4 without the reports ever stopping. ### Reporting on the AI-search era The platform now measures how clients appear in Google's AI Overviews — share of voice, AI search volume and traffic value. ## Reports eating your team's week? If your team is assembling the same reports by hand every month, we'll help you automate the whole pipeline — and add AI where it genuinely helps. [Get in touch](https://63digital.com/contact/) [Next case study EV Charging Company](https://63digital.com/work/ev-charging-company/) --- Source: https://63digital.com/work/ev-charging-company/ [← Work](https://63digital.com/work/) Energy · EV charging # Interactive digital work for an EV-charging company An interactive services map — delivered as both a website component and an offline tablet app for trade shows — plus a custom-built product search for the client's catalogue. Right tool, no bloat Both builds are dependency-free by design — a vanilla-JS map with no framework, and a search built by hand rather than a paid service. Less to break, less to pay for, and fast. ![EV Charging Company](https://63digital.com/media/3u8ln5ot/ev-charging-company-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c3f4e8b0&hmac=d94333eb1bf7d2923a08ed0e398c0dee1c75323b1494301a248331c11e506eec) 1 Codebase, two apps Offline-first Trade-show ready 0 External search services About This client designs and delivers EV-charging and energy infrastructure — grid connections for renewables, battery storage, and charging for fleets, forecourts, public sites and marine. They needed two things: an engaging way to present that breadth of services, and a faster way for customers to find products in their catalogue. We built an interactive services map as a single vanilla-JavaScript runtime, delivered both as an editable website component and as an installable offline tablet app for trade shows — kept in sync with the CMS automatically. Alongside it, we replaced a sluggish default store search with a hand-built product search tuned to their catalogue, without bolting on a paid search service. Technologies JavaScript PHP WordPress PWA Integrations WordPress REST API WooCommerce Service worker Functions Interactive map Offline sync Product search Key features — Interactive services map — Offline tablet app (PWA) — Live CMS content sync — Custom WooCommerce search [Start a project like this](https://63digital.com/contact/) “ > The map looks fantastic on our stand and just works, even when the venue WiFi doesn't — and our team keeps it up to date themselves. Marketing Manager · EV-charging company How we built it ## A multi-stage approach. 01 ### Discovery We mapped the client's services and how they'd be shown — on the website, and in person on tablets at trade shows where connectivity is unreliable — and chose a single, dependency-free runtime we could ship two ways. 02 ### Interactive map We built an editable map of hotspot zones (polygon, marker, copy and call-to-action), authored in the CMS with a point-and-click polygon picker, that renders responsively from phone to 4K kiosk. 03 ### Offline tablet app We packaged the same map as an installable app with a service worker caching the app shell and imagery, so it keeps working with no connectivity — and syncs fresh content from the CMS the moment it's back online. 04 ### Custom product search Separately, we replaced the store's default search with a hand-built query tuned to the catalogue — dropping a paid dependency and giving shoppers fast, relevant results. The impact ## What changed. ### One codebase, two homes A single map runtime ships as both an embeddable website component and an installable tablet app, so there's no duplicate code to keep in step. ### It works when the WiFi doesn't An offline-first tablet app caches everything it needs, so the map keeps running on a trade-show stand even with no connection. ### Editors stay in control Hotspots, copy and calls-to-action are edited in the CMS, and the tablets pick up changes automatically the next time they're online — no app-store release required. ### Search without the subscription We built the catalogue search by hand rather than bolting on a paid engine — fast, relevant, and one less dependency to pay for. Go deeper ## Platforms on this project Platforms: [WooCommerce](https://63digital.com/ecommerce/woocommerce/), [WordPress](https://63digital.com/cms/wordpress/) ## Need something that works anywhere? If you need a slick web experience that also has to work offline — on a stand, in the field, on a tablet — we'll build it to degrade gracefully. [Get in touch](https://63digital.com/contact/) [Next case study Self-Storage Operator](https://63digital.com/work/self-storage-operator/) --- Source: https://63digital.com/work/self-storage-operator/ [← Work](https://63digital.com/work/) Self-storage · Multi-site # A smarter marketing site for a self-storage operator Modernising a multi-site self-storage operator's site — a database-free blog, SEO landing pages, live pricing from the back-office, automated competitor price monitoring and per-branch lead routing. Modernise, don't rebuild A full rebuild is rarely the right first move. We layered real improvements onto a legacy site — live pricing, price monitoring, a flat-file blog — so the business got the wins without the risk and cost of starting over. ![Self-Storage Operator](https://63digital.com/media/t6vfs5v9/self-storage-operator-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c40deef0&hmac=320efcb7d62eb6ae208aeee849b8d6aff361e95fee352ecd409e027f6a51c1b2) 20+ Storage centres Daily Competitor price checks 0 Database for the blog About This client is a self-storage operator running more than twenty centres across a major European capital and its region, serving both consumers and businesses. Their marketing site had aged — parts dated back years — and needed modern content, live pricing and better lead handling, but not a ground-up rebuild. We modernised the framework-free PHP site incrementally: a database-free Markdown blog engine, a set of use-case SEO landing pages, a live-pricing integration to their storage back-office with a size-to-price mapping, automated daily monitoring of competitors' prices, and a quote form that routes each enquiry to the nearest branch. Technologies PHP MySQL Guzzle Parsedown Integrations Back-office pricing API Competitor price feeds SMTP Functions Content Live pricing Price monitoring Lead routing Key features — Flat-file Markdown blog — Live pricing from the back-office — Automated competitor price monitoring — Per-branch lead routing [Start a project like this](https://63digital.com/contact/) “ > The site does the heavy lifting now — it quotes real prices, keeps an eye on our competitors, and sends every enquiry to the right centre. Operations Manager · Self-storage operator How we built it ## A multi-stage approach. 01 ### Discovery & modernisation plan We audited an ageing PHP site and planned a series of right-sized improvements — content, SEO, live pricing and lead handling — rather than a risky full rebuild. 02 ### Content without a database We built a flat-file Markdown blog engine: posts are plain files with front matter, published simply by uploading — no database, no CMS to maintain. 03 ### Live pricing We integrated the client's storage back-office to fetch real unit sizes and rates, and mapped a requested space to the right box and price in the quote form. 04 ### Market intelligence & leads We automated daily monitoring of competitors' prices — one via its API, one by scraping — and routed each quote enquiry to the nearest branch's inbox. The impact ## What changed. ### Publishing made simple The blog runs on flat Markdown files with no database — new posts go live on upload, so there's nothing extra to host or break. ### Real prices, not guesses The quote form pulls live unit sizes and rates from the storage back-office and maps a customer's space need to the right box and price. ### Eyes on the competition A daily job tracks competitors' prices — pulling one from its API and scraping another that has none — so pricing decisions are informed, not blind. ### Every enquiry, the right branch The multi-step quote form routes each lead to the nearest of 20+ centres, so enquiries land where they can be answered fastest. ## Sitting on an ageing site? If your site works but feels stuck in the past, we'll modernise it in the places that matter — without a big-bang rebuild. [Get in touch](https://63digital.com/contact/) [Next case study Teamwear Retailer](https://63digital.com/work/teamwear-retailer/) --- Source: https://63digital.com/work/teamwear-retailer/ [← Work](https://63digital.com/work/) eCommerce · Teamwear # A customisable teamwear store for a sports retailer An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue. Commerce that fits the product Teamwear isn't standard retail — it's personalised and bought in bulk. We shaped the store around that: crest uploads, name-and-number, squad pricing, all on a catalogue built to stay fast. ![Teamwear Retailer](https://63digital.com/media/vgrguoek/teamwear-retailer-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c4274350&hmac=922fd92177b09ca665fef8e463accff3737648562a481ea4f422dd6da7585d59) 3D Product previews Squad Bulk ordering Multi-currency Catalogue About This client sells sports teamwear, replica kit and supporter merchandise online. The challenge with teamwear is that almost nothing is off-the-shelf: fans and clubs want to personalise items — names, numbers, uploaded crests — and order in bulk for whole squads, all while the catalogue stays fast and payment and delivery stay simple. We built the store on WooCommerce, extended for personalisation and squad ordering: 3D product previews, artwork upload at checkout, name-and-number add-ons, minimum and tiered bulk-order rules, and multi-currency pricing — on a hardened, image-heavy catalogue tuned for speed. Technologies WordPress WooCommerce PHP WP Engine Integrations PayPal Packlink shipping Meta catalogue Mailchimp Functions Personalisation Bulk ordering Payments Fulfilment Key features — 3D product previews — Crest upload & name/number personalisation — Squad bulk-ordering rules — Multi-currency pricing [Start a project like this](https://63digital.com/contact/) “ > Fans can personalise their kit and clubs can order for the whole squad in one go — and the site stays fast however many photos we throw at it. Store Manager · Teamwear retailer How we built it ## A multi-stage approach. 01 ### Discovery We mapped how fans and clubs actually buy teamwear — personalised, often in bulk — and designed the store around those journeys rather than a standard product grid. 02 ### Personalisation We added 3D product previews, artwork/crest upload at checkout, and name-and-number add-ons, so a supporter can make a kit their own before buying. 03 ### Squads & currencies We built minimum-quantity and tiered bulk-discount rules for team orders, and multi-currency pricing for overseas and touring clubs. 04 ### Speed & fulfilment We hardened an image-heavy catalogue with a caching and image-optimisation stack, and wired up payments and branch-friendly shipping. The impact ## What changed. ### Make it your own Shoppers spin a kit in 3D, upload a crest and add a name and number — the personalisation that teamwear lives on, handled at checkout. ### Built for squads, not just shoppers Minimum-quantity and tiered bulk-discount rules mean a club can kit out a whole squad in one order. ### Ready for any club Multi-currency pricing serves overseas and touring clubs from the same catalogue. ### Fast, even full of photos A caching and image-optimisation stack keeps an image-heavy kit catalogue quick to browse. Go deeper ## Guides from this project [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) Platforms: [WooCommerce](https://63digital.com/ecommerce/woocommerce/) ## Selling something that isn't off-the-shelf? If your products need personalising, configuring or bulk-ordering, we'll build a store that fits how your customers actually buy. [Get in touch](https://63digital.com/contact/) [Next case study Fine Jewellery Retailer](https://63digital.com/work/fine-jewellery-retailer/) --- Source: https://63digital.com/work/fine-jewellery-retailer/ [← Work](https://63digital.com/work/) eCommerce · Jewellery # A premium Shopify storefront for a fine-jewellery retailer A high-trust Shopify storefront for a diamond and fine-jewellery retailer — a 3D-first product gallery, FAQ rich-results schema, a context-aware header, and buyer-education content the client controls. Premium, and self-serve A high-value purchase needs a storefront that feels the part and answers buyers' questions — and a client team that can keep it current without waiting on developers. We built for both. ![Fine Jewellery Retailer](https://63digital.com/media/z65oxg9t/fine-jewellery-retailer-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c441d030&hmac=01f1bbb4aff216ad269c56718a02a508f21952b4a54cb5a32be8ff7eb4f96fb1) 3D-first Product gallery Rich results FAQ schema Client-editable Content & SEO About This client sells diamonds and fine jewellery online — lab-grown and natural stones, bespoke pieces and designer collaborations. A diamond is a considered, high-value purchase, so the storefront has to feel premium and trustworthy, present each piece beautifully, answer buyers' questions, and rank well — while leaving day-to-day content in the client's hands. We heavily customised their Shopify theme: a product gallery that pins an interactive 3D model first, a FAQ system driven by content objects that also outputs structured data for Google rich results, a header that adapts to the page beneath it, and content and SEO controls driven by metafields so merchandisers change copy without a developer. Technologies Shopify Liquid JavaScript CSS Integrations Shopify metaobjects model-viewer 3D Google Tag Manager Functions Product presentation SEO Buyer education Key features — 3D-first product gallery — FAQ schema for rich results — Context-aware inverting header — Metafield-driven content & SEO [Start a project like this](https://63digital.com/contact/) “ > The store feels as premium as the jewellery, our questions show up in Google, and we can update content ourselves whenever we need to. eCommerce Manager · Fine-jewellery retailer How we built it ## A multi-stage approach. 01 ### Discovery We shaped the storefront around a considered, high-value purchase — premium presentation, buyer education and trust signals — and around keeping content in the client's hands. 02 ### 3D-first product gallery We reworked the gallery into a single carousel that pins the interactive 3D model as the first slide, so shoppers can spin a piece before they scroll. 03 ### SEO & rich results We built a reusable FAQ system driven by content objects that renders both the on-page accordion and FAQ structured data, surfacing answers as rich results in search. 04 ### Content in the client's hands We drove collection copy, FAQs and even per-collection SEO controls from metafields and metaobjects, so the client changes content and search behaviour without touching code. The impact ## What changed. ### See it before you buy The product gallery pins an interactive 3D model first, letting shoppers spin a piece before they scroll — presentation that suits a high-value purchase. ### Answers that rank A reusable FAQ system outputs structured data as well as the on-page accordion, so common questions can surface as rich results in Google. ### A header that reads the page The header adapts to the content beneath it — going solid on scroll and inverting its logo and icons so branding stays legible over dark hero imagery. ### Content without deploys Collection copy, FAQs and SEO controls are driven by metafields, so the client's team changes them without a developer. Go deeper ## Platforms on this project Platforms: [Shopify](https://63digital.com/ecommerce/shopify/) ## Selling a considered purchase? If you're selling something high-value that buyers research before they commit, we'll build a storefront that presents it beautifully and ranks for the questions they ask. [Get in touch](https://63digital.com/contact/) [Next case study Water Retailer](https://63digital.com/work/water-retailer/) --- Source: https://63digital.com/work/water-retailer/ [← Work](https://63digital.com/work/) Utilities · Water # Federated site search for a UK water retailer A single, fast site search that unifies the website and the retailer's ServiceNow content in one relevance-ranked result set — powered by Algolia and a custom indexer. Two systems, one answer Content silos are a customer's problem, not just an IT one. By indexing the website and ServiceNow into a single search, we made the boundary between the two invisible to the person looking for an answer. ![Water Retailer](https://63digital.com/media/5yy4gh3f/water-retailer-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c457a220&hmac=dddf44479aef26941a2bb15f2b1bec8ba9c890aaef23cc9e3a10ce0fd37d6ca0) 2 Content sources unified 1 Ranked result set Instant Search-as-you-type About This client is a UK water retailer whose customer-facing answers live in two very different systems: marketing and product pages on their WordPress website, and a large body of support and knowledge content in ServiceNow. Searching each separately meant customers had to know — or guess — which system held what they were looking for. We unified the two behind a single search. Algolia powers the experience, and a custom indexer we built pushes the client's ServiceNow content into the same Algolia index as the website, normalised and kept in sync. Every query now returns web pages and ServiceNow content together in one relevance-ranked result set. Technologies Algolia WordPress PHP Custom indexer Integrations Algolia ServiceNow WordPress Functions Content indexing Federated search Relevance ranking Key features — Cross-site federated search — Custom ServiceNow indexer — Unified relevance ranking — Instant search-as-you-type [Start a project like this](https://63digital.com/contact/) “ > Our customers used to have to know whether an answer was on the website or in our help content. Now they just search once and it's there. Digital Manager · UK water retailer How we built it ## A multi-stage approach. 01 ### Discovery We mapped where the retailer's answers actually lived — marketing and product content in WordPress, support and knowledge content in ServiceNow — and the moments customers were bouncing between them or giving up. 02 ### One index, two sources We chose Algolia for fast, typo-tolerant search and designed a single index that could hold both content types, with a shared schema so results rank together on merit. 03 ### Custom ServiceNow indexer We built an indexer that pulls the client's ServiceNow content, normalises it to the shared schema, and pushes it into Algolia alongside the website content — keeping the index in sync as content changes. 04 ### Unified search experience We wired the front end to the combined index, so a single search-as-you-type box returns web pages and ServiceNow content side by side in one relevance-ranked list. The impact ## What changed. ### One search, both systems Customers search once and get results from the website and ServiceNow together — no more guessing which system holds the answer. ### Ranked on merit Because both sources sit in one index with a shared schema, results are ranked by relevance across the lot, not siloed by system. ### A custom indexer, not a bolt-on We wrote the ServiceNow indexer ourselves, so exactly the right content is surfaced, normalised and kept in sync — not whatever an off-the-shelf connector happened to expose. ### Fast and forgiving Algolia gives instant, typo-tolerant search-as-you-type, so customers find the answer even when they don't spell it exactly right. Go deeper ## Platforms on this project Platforms: [WordPress](https://63digital.com/cms/wordpress/) ## Answers scattered across systems? If your content lives in more than one platform, we'll build a single search that unifies it — so your customers find what they need without knowing where it lives. [Get in touch](https://63digital.com/contact/) [Next case study Emergency Vehicle Manufacturer](https://63digital.com/work/emergency-vehicle-manufacturer/) --- Source: https://63digital.com/work/emergency-vehicle-manufacturer/ [← Work](https://63digital.com/work/) Manufacturing · Emergency vehicles # A website rescue for an emergency-vehicle manufacturer Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence. Rescue, then stabilise When a developer disappears, the danger isn't just today — it's the lapsed licence or unsupported plugin that breaks the site months later. We didn't just get it hosted; we got it to a state the client can safely build on. ![Emergency Vehicle Manufacturer](https://63digital.com/media/llb6mxle/emergency-vehicle-manufacturer-hero.webp?width=960&format=webp&quality=85&v=1dd4f48c469f1a0&hmac=a8f744a92580e276b5a5338ea59b40303d88044f7b33f1042c0eadd8a6d60479) Recovered From a bust developer WP Engine Managed hosting 77% Lighter media library About This client, a specialist manufacturer of emergency-response vehicles, came to us in a difficult spot: the developer who had built and hosted their website had gone out of business. The site was still live, but effectively orphaned — no clear control of its hosting, no visibility of which Elementor and plugin licences were active or lapsing, and no safe way to make changes. We stepped in to recover it. We took control of the site and moved it onto managed WP Engine hosting, audited and regularised the Elementor and plugin licences it depended on, and carried out the essential maintenance needed to bring it up to a known-good, safely-updatable state — including a major clean-up of a bloated media library. Technologies WordPress Elementor WP Engine WooCommerce Integrations WP Engine hosting Elementor Pro WooCommerce Functions Recovery Re-hosting Licensing Maintenance Key features — Site recovery & migration — Managed WP Engine hosting — Elementor & plugin licence audit — Safe-to-update maintenance baseline [Start a project like this](https://63digital.com/contact/) “ > When our previous developer went under, our website was left in limbo. 63Digital took it over, got it onto proper hosting and sorted out the mess — we can actually rely on it now. Marketing Manager · Emergency-vehicle manufacturer How we built it ## A multi-stage approach. 01 ### Recover & stabilise We took control of a live but orphaned site left behind when its original developer went out of business, established exactly what it was running, and got it into a known state we could work with safely. 02 ### Move to managed hosting We migrated the site onto managed WP Engine hosting, giving the client proper control, backups, staging and a stable platform — rather than infrastructure they no longer had access to. 03 ### Untangle the licences We audited the site's Elementor and plugin dependencies, identified what was licensed, lapsed or at risk, and regularised them so nothing would silently stop working or fall out of support. 04 ### Make it safe to update We carried out the essential maintenance — updates, clean-up and a 77% reduction of an oversized media library — to bring the site to a baseline where future changes can be made with confidence. The impact ## What changed. ### Back in safe hands A site orphaned by a bust developer is now under proper control, on managed hosting the client actually owns — with backups and staging behind it. ### No more licence surprises We audited and regularised the Elementor and plugin licences the site depends on, so nothing silently expires or drops out of support. ### Safe to change again Essential maintenance brought the site to a known-good baseline, so updates can be made deliberately instead of nervously. ### Lighter and faster As part of the clean-up we cut an oversized media library by 77%, from around 3GB to under 700MB, for quicker pages. Go deeper ## Guides from this project [WordPress How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [WordPress How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) Platforms: [WooCommerce](https://63digital.com/ecommerce/woocommerce/), [WordPress](https://63digital.com/cms/wordpress/) ## Inherited a site nobody can safely touch? If you've been left with a website you can't confidently update — orphaned by a developer, tangled in licences, or just fragile — we'll recover it and get it back on a stable footing. [Get in touch](https://63digital.com/contact/) [Next case study Rebll Tickets](https://63digital.com/work/rebll-tickets/) --- Source: https://63digital.com/updates/ Updates # What we've been shipping. Real releases and improvements from live client platforms — the kind of steady, hands-on work that keeps software earning its keep long after launch. [All](https://63digital.com/updates/) [Advice](https://63digital.com/updates/?category=Advice) [Launch](https://63digital.com/updates/?category=Launch) [Improvement](https://63digital.com/updates/?category=Improvement) [Integration](https://63digital.com/updates/?category=Integration) [23 Oct 2026 Advice Do you know who looks after your website?Lots of businesses aren't sure who looks after their website any more. Five questions worth being able to answer, and what to do if you can't.](https://63digital.com/updates/do-you-know-who-looks-after-your-website/) [22 Oct 2026 Launch Sports media AI that watches the game and cuts the highlightsA new pipeline watches a live match, transcribes the commentary and uses AI to find the goals, cards and penalties — then cuts each one into a clip on its own.](https://63digital.com/updates/ai-that-watches-the-game-and-cuts-the-highlights/) [14 Oct 2026 Launch Teamwear retail Spin the kit before you buy: 3D product previewsShoppers can now rotate a kit in 3D on the product page — a proper look before adding a name, number or crest.](https://63digital.com/updates/spin-the-kit-before-you-buy-3d-product-previews/) [2 Oct 2026 Improvement My Pet Health Book the whole menagerie in one goOwners with more than one pet can now book them into a single appointment, straight against the practice's real calendar.](https://63digital.com/updates/book-the-whole-menagerie-in-one-go/) [30 Sep 2026 Launch SEO SaaS Predicting Google rankings with machine learningA new model predicts where a page will rank from its authority, backlinks and Core Web Vitals — turning years of ranking data into a forecast.](https://63digital.com/updates/predicting-google-rankings-with-machine-learning/) [24 Sep 2026 Launch Rebll Tickets Your ticket, straight in Apple and Google WalletEvery Rebll ticket can now be added to Apple Wallet or Google Wallet — a tap away on the phone, ready to scan at the door.](https://63digital.com/updates/your-ticket-straight-in-apple-and-google-wallet/) [16 Sep 2026 Improvement Fine jewellery Rich answers in search: FAQ schema on every collectionEach collection now carries a reusable FAQ that renders on the page and as structured data — so answers can surface as rich results in Google.](https://63digital.com/updates/rich-answers-in-search-faq-schema-on-every-collection/) [10 Sep 2026 Launch Paypolli Tap to pay, straight from a phoneDrivers and merchants can now take contactless card payments on an iPhone alone — no separate terminal, no extra hardware.](https://63digital.com/updates/tap-to-pay-straight-from-a-phone/) [27 Aug 2026 Improvement Self-storage Monitoring competitors' prices automaticallyA daily job now tracks competitors' storage prices — pulling one from its API and scraping another that has none — so pricing decisions are informed.](https://63digital.com/updates/monitoring-competitors-prices-automatically/) [21 Aug 2026 Launch KCR Academy Embed live course availability anywhereKCR's course dates can now be dropped into any website as a live, filterable widget — always up to date, no copy-paste.](https://63digital.com/updates/embed-live-course-availability-anywhere/) [1](https://63digital.com/updates/) [2](https://63digital.com/updates/?page=2) [3](https://63digital.com/updates/?page=3) [4](https://63digital.com/updates/?page=4) [5](https://63digital.com/updates/?page=5) [Next →](https://63digital.com/updates/?page=2) --- Source: https://63digital.com/updates/the-engineer-app-now-works-offline/ [← Updates](https://63digital.com/updates/) Update # The engineer app now works offline 28 May 2026 Improvement eControl eControl's engineers spend their days in plant rooms, basements and half-built sites - exactly the places where mobile signal gives up. The engineer app used to assume a connection: without one, job updates simply failed, so engineers fell back on paper notes and re-keyed everything once they were back in coverage. Statuses arrived late or out of order, the office lost sight of where jobs stood, and a tool meant to save time was quietly creating admin. ## What we built The app now treats the network as optional. Every job assigned to an engineer is stored locally on the device, along with the details the work needs - site information, unit serial numbers and the job history so far. When an engineer changes a job status or adds notes, the change is written to a local queue first and the app carries on instantly, connection or not. A background sync engine watches for connectivity. The moment the device comes back online, queued changes are replayed to the platform in the order they were made, and each change carries its own identifier so a retry on a flaky connection can never be applied twice. Anything the server rejects is surfaced back to the engineer in the app rather than silently dropped. - Job statuses, notes and completions all work with no signal at all. - Changes sync automatically in the background - there is no send button to remember. - Idempotent retries mean patchy coverage cannot create duplicate updates. ## The outcome Engineers have stopped thinking about connectivity, because they no longer need to. Work is recorded once, at the point it happens, and the office sees an accurate picture within minutes of an engineer regaining coverage. It also completes a chain we have been building across the eControl platform: a fault report arrives on the website, flows into the CRM, becomes a job - and now gets closed out from a basement with no bars on the screen. Related case study [eControl A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week.](https://63digital.com/work/econtrol/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Client self-service portal is live](https://63digital.com/updates/client-self-service-portal-is-live/) --- Source: https://63digital.com/updates/client-self-service-portal-is-live/ [← Updates](https://63digital.com/updates/) Update # Client self-service portal is live 9 May 2026 Launch Aqua IT Support Every support request into Aqua used to start the same way: a phone call or an email. That works, but it scales badly - clients had no way to see what was already logged, no view of progress without asking, and the Aqua team spent a surprising amount of each day answering the same question: where is my ticket up to? ## What we built The new client portal gives every Aqua client a secure login into the same platform the support team works in. Clients can raise a ticket directly, attach the details that matter, and watch it move through the workflow in real time - every status change and reply visible in one place, without a phone call. Nothing about the phone has been taken away; the routine traffic just has a faster route now. Alongside tickets, clients can browse their own asset records: the machines, licences and kit Aqua looks after on their behalf. Because the portal reads from the same database the engineers use, what a client sees is always the live position - not an export from last month. - Raise and track support tickets end to end, with full history. - See every asset Aqua manages for the business, always current. - Protected by the platform's existing two-factor login. ## The outcome Clients get answers without waiting for office hours, and the support team gets fewer chasing calls and cleaner tickets, logged with the right details first time. It is also a foundation to build on: the one-click client switcher for multi-company users and the searchable equipment register both grew out of the same portal. Adoption took care of itself: once one person at a client had used it, the rest of their team followed. For an IT support business, trust is the product - and letting clients see the same live information the engineers see is the simplest way to earn it. Related case study [Aqua IT Support A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready.](https://63digital.com/work/aqua-it-support/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Tap to pay, straight from a phone](https://63digital.com/updates/tap-to-pay-straight-from-a-phone/) --- Source: https://63digital.com/updates/tap-to-pay-straight-from-a-phone/ [← Updates](https://63digital.com/updates/) Update # Tap to pay, straight from a phone 10 Sep 2026 Launch Paypolli Paypolli merchants no longer need a dedicated card reader to get paid. Using Stripe's Tap to Pay on iPhone, a phone becomes the terminal — the customer taps their card or phone against it and the payment runs through the same fee engine, settlement and reporting as every other channel. Behind the scenes it's driven by the platform's React Native app talking to our payments API, with each transaction tagged by reader type so it reconciles cleanly alongside terminal, e-commerce and payment-link takings. For a driver on a rank or a trader at a market, it removes the last piece of hardware between them and getting paid. Go deeper [How to take payments with Tap to Pay on iPhone using Stripe Terminal Stripe guide](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) Related case study [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Embed live course availability anywhere](https://63digital.com/updates/embed-live-course-availability-anywhere/) --- Source: https://63digital.com/updates/embed-live-course-availability-anywhere/ [← Updates](https://63digital.com/updates/) Update # Embed live course availability anywhere 21 Aug 2026 Launch KCR Academy Training providers can now show KCR's real course availability directly on their own sites. A lightweight embeddable widget lists live sessions grouped by course, complete with a country filter for the academy's international audience — and because it reads straight from the platform, it's never out of date. It builds on the self-resizing iframe work we did earlier, so the widget fits neatly into any page without awkward scrollbars, and it keeps a visitor's filters in place as they browse. One small embed, and a partner's website becomes a live booking shopfront. Related case study [KCR Academy KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform.](https://63digital.com/work/kcr-academy/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Track every piece of kit — photos, signatures and all](https://63digital.com/updates/track-every-piece-of-kit-photos-signatures-and-all/) --- Source: https://63digital.com/updates/track-every-piece-of-kit-photos-signatures-and-all/ [← Updates](https://63digital.com/updates/) Update # Track every piece of kit — photos, signatures and all 6 Aug 2026 Launch Aqua IT Support The new Equipment Register gives Aqua a clean audit trail for physical hardware. Kit is checked in with its make, model, serial and a photo; checked out against a named recipient with condition notes and a signature captured on screen — and every movement links back to the related support call, hardware job or project. It's staff-only and fully searchable, so anyone can see where a device is and who last handled it. For an IT support business that's constantly moving equipment between its own store, engineers and client sites, it turns a spreadsheet-and-memory process into something accountable. Related case study [Aqua IT Support A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready.](https://63digital.com/work/aqua-it-support/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Fault reports now flow straight into the CRM](https://63digital.com/updates/fault-reports-now-flow-straight-into-the-crm/) --- Source: https://63digital.com/updates/fault-reports-now-flow-straight-into-the-crm/ [← Updates](https://63digital.com/updates/) Update # Fault reports now flow straight into the CRM 15 Jul 2026 Integration eControl eControl's fault reports used to stop at the platform. Now, the moment a customer submits one, the details are pushed into their GoHighLevel CRM so the sales and support side of the business picks it up without anyone copying data across. We built it as a background job, so the customer's submission never waits on an external service — the report is saved instantly and the CRM sync happens behind the scenes, retrying if it needs to. It's another link in the chain that started with a website enquiry and now runs unbroken through to the engineer on site. Related case study [eControl A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week.](https://63digital.com/work/econtrol/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update One platform, seven currencies](https://63digital.com/updates/one-platform-seven-currencies/) --- Source: https://63digital.com/updates/one-platform-seven-currencies/ [← Updates](https://63digital.com/updates/) Update # One platform, seven currencies 22 Apr 2026 Improvement KCR Academy As KCR's network of trainers went international, the platform grew with it. Courses can now be priced per currency and payments taken and paid out in seven — GBP, USD, EUR, CAD, AUD, PLN and MXN — with Stripe Connect onboarding rolled out country by country as each market came online. The currency a student books in is load-bearing: it drives both the price they pay and the academy fee that's later reconciled, so we made it a first-class part of every booking rather than an afterthought. One codebase now serves an academy operating across four continents. Related case study [KCR Academy KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform.](https://63digital.com/work/kcr-academy/) Related services [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update One-click client switching](https://63digital.com/updates/one-click-client-switching/) --- Source: https://63digital.com/updates/one-click-client-switching/ [← Updates](https://63digital.com/updates/) Update # One-click client switching 11 Mar 2026 Improvement Aqua IT Support Some of Aqua's portal users manage IT for more than one business, and until now they were locked to whichever company came first on their account. A new client switcher in the header lets them move between the companies they're allowed to see in a single click. It only appears for client users with more than one company and completed two-factor login, and we cache the company names in the user's session so switching never costs a database hit. A small change that quietly removes a daily annoyance for the people who use the portal most. Related case study [Aqua IT Support A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready.](https://63digital.com/work/aqua-it-support/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Partial refunds, end to end](https://63digital.com/updates/partial-refunds-end-to-end/) --- Source: https://63digital.com/updates/partial-refunds-end-to-end/ [← Updates](https://63digital.com/updates/) Update # Partial refunds, end to end 19 Feb 2026 Improvement Paypolli Refunds are deceptively hard in payments, so we built them properly. Paypolli merchants can now refund all or part of a transaction, add a reason, and the platform tracks exactly how much has been returned and when — flipping a transaction's status back automatically if a refund is later cancelled and no active refunds remain. Every case is driven by Stripe webhooks so the platform's view always matches Stripe's, right down to the awkward edges like a refund arriving with no reason. It's the unglamorous correctness work that keeps merchants' books — and their customers — happy. Go deeper [How to build a Stripe Connect marketplace in .NET Stripe guide](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) Related case study [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Shareable digital accreditation badges](https://63digital.com/updates/shareable-digital-accreditation-badges/) --- Source: https://63digital.com/updates/shareable-digital-accreditation-badges/ [← Updates](https://63digital.com/updates/) Update # Shareable digital accreditation badges 15 Jan 2026 Launch KCR Academy Every accredited KCR practitioner now gets an auto-generated digital badge alongside their certificate. It's composited on the server from the accreditation details, and each one carries a public ID — so a practitioner can show it off online without ever exposing an internal record. It sits neatly next to the platform's PDF certificates, and gives the academy's network a simple, credible way to prove their standing to clients and employers. Recognition you can link to, not just a piece of paper in a drawer. Related case study [KCR Academy KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform.](https://63digital.com/work/kcr-academy/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Automated interchange billing, every 15 minutes](https://63digital.com/updates/automated-interchange-billing-every-15-minutes/) --- Source: https://63digital.com/updates/automated-interchange-billing-every-15-minutes/ [← Updates](https://63digital.com/updates/) Update # Automated interchange billing, every 15 minutes 20 Nov 2025 Improvement Paypolli Reclaiming interchange used to be the kind of thing that quietly leaks money if it's done by hand. Paypolli now does it automatically: a background job runs every fifteen minutes, aggregates each merchant's eligible transactions and raises the right bill against the right connected account. The clever part is that it can't go wrong twice — every bill gets a deterministic idempotency key, so even if a job overlaps or retries, no merchant is ever charged for the same period again. Correct, hands-off, and always on. Go deeper [How to recover Stripe interchange fees from connected accounts automatically Stripe guide](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) Related case study [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update No more duplicate serial numbers](https://63digital.com/updates/no-more-duplicate-serial-numbers/) --- Source: https://63digital.com/updates/no-more-duplicate-serial-numbers/ [← Updates](https://63digital.com/updates/) Update # No more duplicate serial numbers 8 Oct 2025 Improvement eControl Every unit eControl builds carries a unique serial number, and under busy conditions two orders could occasionally be handed the same one. We fixed it with a belt-and-braces approach: a dedicated service now generates each number with a secure random generator and checks it against the database before committing, retrying if it has to. Then we backed the whole thing with a unique constraint at the database level — so even in the rare case something slips past the application, the database itself refuses to store a duplicate. Two guarantees where there used to be none. Go deeper [Why AI-generated code breaks under real traffic (and how to fix it) AI-built apps guide](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) Related case study [eControl A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week.](https://63digital.com/work/econtrol/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update AI that watches the game and cuts the highlights](https://63digital.com/updates/ai-that-watches-the-game-and-cuts-the-highlights/) --- Source: https://63digital.com/updates/ai-that-watches-the-game-and-cuts-the-highlights/ [← Updates](https://63digital.com/updates/) Update # AI that watches the game and cuts the highlights 22 Oct 2026 Launch Sports media Highlight clipping is a race against the final whistle. The new pipeline runs it automatically: it records the live stream, transcribes the commentary, and hands the transcript to an AI model with a strict schema that returns each key moment — goal, card, penalty — with precise start and end times. Because it reads the commentary rather than the pixels, it's fast and cheap to run, and every detected moment flows straight into the next stage to be cut and reframed. The clever part is deciding what matters; the model does exactly that, and nothing else. Related case study [Automated Social Video Platform An automated pipeline that watches a live sports stream, uses AI to find the key moments, cuts them into vertical clips and publishes them to social — with no human editing in the loop.](https://63digital.com/work/automated-social-video-platform/) Related service [Applied AI Put AI to work only where it genuinely earns its place — automating the manual, repetitive work that slows your team down.](https://63digital.com/services/applied-ai/) [Next update Book the whole menagerie in one go](https://63digital.com/updates/book-the-whole-menagerie-in-one-go/) --- Source: https://63digital.com/updates/book-the-whole-menagerie-in-one-go/ [← Updates](https://63digital.com/updates/) Update # Book the whole menagerie in one go 2 Oct 2026 Improvement My Pet Health Households rarely have just one pet, so booking them one at a time was a chore. Owners can now add several animals to a single appointment, booked directly against the practice's live calendar through its booking system. Behind the scenes it uses a reserve-then-confirm handshake against the practice's real availability, grouping the slots so the whole family is seen together. One trip to the vet, one booking. Related case study [My Pet Health A consumer pet-health app that plugs into vets' existing practice software — syncing every pet's care record and letting owners book, pay and stay on top of their pet's health in one place.](https://63digital.com/work/my-pet-health/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Predicting Google rankings with machine learning](https://63digital.com/updates/predicting-google-rankings-with-machine-learning/) --- Source: https://63digital.com/updates/predicting-google-rankings-with-machine-learning/ [← Updates](https://63digital.com/updates/) Update # Predicting Google rankings with machine learning 30 Sep 2026 Launch SEO SaaS Years of tracked rankings are a training set waiting to happen. A new machine-learning model predicts a page's likely search position from around twenty signals — domain and page authority, referring domains, trust and citation flow, page-speed and Core Web Vitals, and content length. It turns the platform's historical data into something forward-looking: not just where a page ranks today, but where it's likely to land. For an agency, that's the difference between reporting the past and advising on the future. Related case study [SEO Analytics Platform A multi-tenant SaaS that aggregates data from six SEO providers, tracks rankings over time and turns them into branded, shareable client reports — with machine-learning insight and usage-based billing.](https://63digital.com/work/seo-analytics-platform/) Related service [Applied AI Put AI to work only where it genuinely earns its place — automating the manual, repetitive work that slows your team down.](https://63digital.com/services/applied-ai/) [Next update One checkout, seven payment gateways](https://63digital.com/updates/one-checkout-seven-payment-gateways/) --- Source: https://63digital.com/updates/one-checkout-seven-payment-gateways/ [← Updates](https://63digital.com/updates/) Update # One checkout, seven payment gateways 14 Aug 2026 Improvement Gift Voucher Solutions Asking a merchant to switch card processor to join a platform is a deal-breaker. So the checkout now fronts seven payment gateways — Stripe, PayPal, Worldpay Online, Worldpay Business Gateway, Realex (now Global Payments), Secure Trading (now Trust Payments) and SagePay — behind a single abstraction, each configurable per merchant. Every merchant keeps their existing acquirer and their own credentials, while there's still only one checkout to build and maintain. It's a small phrase — 'bring your own gateway' — that quietly removes one of the biggest barriers to onboarding. Related case study [Gift Voucher Solutions A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers.](https://63digital.com/work/gift-voucher-solutions/) Related services [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Reporting on the AI-search era](https://63digital.com/updates/reporting-on-the-ai-search-era/) --- Source: https://63digital.com/updates/reporting-on-the-ai-search-era/ [← Updates](https://63digital.com/updates/) Update # Reporting on the AI-search era 28 Jul 2026 Launch Agency analytics Search is changing, and reporting has to keep up. Reports can now show how a client appears in Google's AI Overviews — which keywords trigger them, the client's share of voice within them, the AI search volume behind them and the traffic value at stake. It's an early, honest picture of visibility in AI-generated search results, sitting alongside the traditional rankings clients already track. As the AI-search era arrives, they can measure it rather than guess at it. Related case study [Marketing Reporting Platform A reporting platform that aggregates web analytics, search, paid and rank-tracking data into branded monthly client reports — now with AI-written commentary grounded in the real numbers.](https://63digital.com/work/marketing-reporting-platform/) Related services [Applied AI Put AI to work only where it genuinely earns its place — automating the manual, repetitive work that slows your team down.](https://63digital.com/services/applied-ai/) [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Landscape footage into vertical Shorts, automatically](https://63digital.com/updates/landscape-footage-into-vertical-shorts-automatically/) --- Source: https://63digital.com/updates/landscape-footage-into-vertical-shorts-automatically/ [← Updates](https://63digital.com/updates/) Update # Landscape footage into vertical Shorts, automatically 24 Jun 2026 Improvement Sports media Broadcast footage is wide; social is tall. Every detected highlight is now reframed automatically from 16:9 to a 9:16 vertical clip — the sharp action scaled and centred over a blurred fill of the same frame — and encoded on the GPU for instant mobile playback. From there it's uploaded and posted to social with an auto-generated title and hashtags, so the whole journey from live moment to published Short happens without an editor touching it. Related case study [Automated Social Video Platform An automated pipeline that watches a live sports stream, uses AI to find the key moments, cuts them into vertical clips and publishes them to social — with no human editing in the loop.](https://63digital.com/work/automated-social-video-platform/) Related service [Applied AI Put AI to work only where it genuinely earns its place — automating the manual, repetitive work that slows your team down.](https://63digital.com/services/applied-ai/) [Next update How we score your pet's health](https://63digital.com/updates/how-we-score-your-pets-health/) --- Source: https://63digital.com/updates/how-we-score-your-pets-health/ [← Updates](https://63digital.com/updates/) Update # How we score your pet's health 15 May 2026 Launch My Pet Health Owners want to know, at a glance, whether they're on top of their pet's care. Every animal in the app now gets a 0–100 health score, built from its real record — worming and flea-and-tick treatment, vaccinations, weight, insurance, microchipping and vet visits — each weighted by how much it matters. Crucially, every factor comes with a plain-English explanation, so the score isn't a mystery number: it tells the owner exactly what's up to date and what needs attention. Young pets even skip the weight factor, because there's no healthy range to measure against yet. Related case study [My Pet Health A consumer pet-health app that plugs into vets' existing practice software — syncing every pet's care record and letting owners book, pay and stay on top of their pet's health in one place.](https://63digital.com/work/my-pet-health/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update From rankings to revenue](https://63digital.com/updates/from-rankings-to-revenue/) --- Source: https://63digital.com/updates/from-rankings-to-revenue/ [← Updates](https://63digital.com/updates/) Update # From rankings to revenue 30 Mar 2026 Improvement SEO SaaS Clients care about revenue, not positions. Reports can now translate the two: by layering a client's conversion rate and average order value onto the keywords they rank for, the platform projects the revenue those rankings are worth. It turns a table of positions into a commercial forecast — the language a business owner actually speaks — and makes the case for SEO investment in pounds rather than places. Related case study [SEO Analytics Platform A multi-tenant SaaS that aggregates data from six SEO providers, tracks rankings over time and turns them into branded, shareable client reports — with machine-learning insight and usage-based billing.](https://63digital.com/work/seo-analytics-platform/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Getting checkout ready for Strong Customer Authentication](https://63digital.com/updates/getting-checkout-ready-for-strong-customer-authentication/) --- Source: https://63digital.com/updates/getting-checkout-ready-for-strong-customer-authentication/ [← Updates](https://63digital.com/updates/) Update # Getting checkout ready for Strong Customer Authentication 5 Feb 2026 Improvement Gift Voucher Solutions When Strong Customer Authentication became mandatory, every card flow on the platform had to change. We reworked the checkout so hashing uses each merchant's own gateway secret rather than a shared one, and rebuilt it to match each provider's specification exactly. We also moved Stripe payments onto Checkout Sessions so 3-D Secure challenges are handled properly, and kept the other card gateways on their hosted payment pages, where the acquirer runs the authentication step — keeping the checkout compliant as the rules keep tightening. Related case study [Gift Voucher Solutions A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers.](https://63digital.com/work/gift-voucher-solutions/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Syncing with every vet's existing software](https://63digital.com/updates/syncing-with-every-vets-existing-software/) --- Source: https://63digital.com/updates/syncing-with-every-vets-existing-software/ [← Updates](https://63digital.com/updates/) Update # Syncing with every vet's existing software 11 Dec 2025 Integration My Pet Health Vets already run practice-management software, and no one wants to replace it. So the platform now plugs into it through a single secured gateway: practices push their pet owners, animals, weights, treatments, reminders, insurers and account balances straight into the app. Each branch's address is geocoded on the way in to power the app's 'find your practice' map, and defensive validation makes sure messy third-party data never overwrites what an owner has entered themselves. The vet keeps their software; the owner gets a live, trustworthy view. Related case study [My Pet Health A consumer pet-health app that plugs into vets' existing practice software — syncing every pet's care record and letting owners book, pay and stay on top of their pet's health in one place.](https://63digital.com/work/my-pet-health/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Surviving the move to GA4](https://63digital.com/updates/surviving-the-move-to-ga4/) --- Source: https://63digital.com/updates/surviving-the-move-to-ga4/ [← Updates](https://63digital.com/updates/) Update # Surviving the move to GA4 14 Aug 2025 Improvement Agency analytics Google's move from Universal Analytics to GA4 forced every reporting tool to rebuild how it reads analytics data. We rebuilt the platform's entire data layer on the new GA4 API, block by block, so client reports kept coming out on schedule throughout. It was a swap-the-engine-while-flying job — new data services running alongside the old until every report had crossed over. Clients never saw a gap; the numbers just kept arriving from the new source. Related case study [Marketing Reporting Platform A reporting platform that aggregates web analytics, search, paid and rank-tracking data into branded monthly client reports — now with AI-written commentary grounded in the real numbers.](https://63digital.com/work/marketing-reporting-platform/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Spin the kit before you buy: 3D product previews](https://63digital.com/updates/spin-the-kit-before-you-buy-3d-product-previews/) --- Source: https://63digital.com/updates/spin-the-kit-before-you-buy-3d-product-previews/ [← Updates](https://63digital.com/updates/) Update # Spin the kit before you buy: 3D product previews 14 Oct 2026 Launch Teamwear retail Replica kit is a personal thing, so we gave shoppers a proper look at it. Product pages now include an interactive 3D preview, so a fan can spin a shirt or a full kit and see it from every angle before they buy. It sits at the front of the gallery, ahead of the personalisation options, so the journey reads naturally: see the kit, then make it yours with a name, number or uploaded crest. A small thing that makes an online purchase feel a lot more considered. Related case study [Teamwear Retailer An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue.](https://63digital.com/work/teamwear-retailer/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Rich answers in search: FAQ schema on every collection](https://63digital.com/updates/rich-answers-in-search-faq-schema-on-every-collection/) --- Source: https://63digital.com/updates/rich-answers-in-search-faq-schema-on-every-collection/ [← Updates](https://63digital.com/updates/) Update # Rich answers in search: FAQ schema on every collection 16 Sep 2026 Improvement Fine jewellery Buyers of a considered purchase ask a lot of questions, so we made the answers work twice. Each product collection now carries a reusable FAQ built from the store's content objects, rendering both the on-page accordion shoppers read and FAQ structured data search engines understand. That structured data is what lets a question and its answer surface as a rich result directly in Google — winning space on the results page and answering the buyer before they've even clicked. One component, reused across collections and blog posts, editable by the client. Related case study [Fine Jewellery Retailer A high-trust Shopify storefront for a diamond and fine-jewellery retailer — a 3D-first product gallery, FAQ rich-results schema, a context-aware header, and buyer-education content the client controls.](https://63digital.com/work/fine-jewellery-retailer/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Monitoring competitors' prices automatically](https://63digital.com/updates/monitoring-competitors-prices-automatically/) --- Source: https://63digital.com/updates/monitoring-competitors-prices-automatically/ [← Updates](https://63digital.com/updates/) Update # Monitoring competitors' prices automatically 27 Aug 2026 Improvement Self-storage Pricing in self-storage moves, and checking competitors by hand doesn't scale. A daily job now tracks rivals' prices automatically: one competitor exposes a pricing API across dozens of branches, so we pull it directly; another has none, so we scrape it carefully from the page. Every run is snapshotted with a date, building a history the client can look back over, feeding an admin view where the team manages their own prices against the market. Pricing decisions made with eyes open, not in the dark. Related case study [Self-Storage Operator Modernising a multi-site self-storage operator's site — a database-free blog, SEO landing pages, live pricing from the back-office, automated competitor price monitoring and per-branch lead routing.](https://63digital.com/work/self-storage-operator/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Upload your crest, add your name and number](https://63digital.com/updates/upload-your-crest-add-your-name-and-number/) --- Source: https://63digital.com/updates/upload-your-crest-add-your-name-and-number/ [← Updates](https://63digital.com/updates/) Update # Upload your crest, add your name and number 22 Jul 2026 Improvement Teamwear retail Almost nothing in teamwear is off-the-shelf, so the store had to handle personalisation properly. Customers can now upload their own crest or artwork at checkout, and add a name and number to a shirt through product add-ons — the two things clubs and fans ask for most. It's wired into the normal checkout flow, so a personalised order is as easy to place as a plain one, and everything the printer needs arrives attached to the order. Personalisation that feels effortless for the customer and clean for the shop. Related case study [Teamwear Retailer An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue.](https://63digital.com/work/teamwear-retailer/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update We built our own product search instead of reaching for a plugin](https://63digital.com/updates/we-built-our-own-product-search-instead-of-reaching-for-a-plugin/) --- Source: https://63digital.com/updates/we-built-our-own-product-search-instead-of-reaching-for-a-plugin/ [← Updates](https://63digital.com/updates/) Update # We built our own product search instead of reaching for a plugin 11 Jun 2026 Improvement EV charging The default store search wasn't cutting it, and a paid search platform felt like overkill for a focused catalogue. So we built our own: a single, carefully-written query that searches product titles, SKUs, categories and manufacturers, with a debounced live results table as you type. Along the way we cut a dependency too — moving manufacturer data off a separate paid plugin and onto the store's native taxonomy. The result is fast, relevant search that costs nothing extra to run and behaves exactly how this catalogue needs it to. Related case study [EV Charging Company An interactive services map — delivered as both a website component and an offline tablet app for trade shows — plus a custom-built product search for the client's catalogue.](https://63digital.com/work/ev-charging-company/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update A database-free blog in flat Markdown files](https://63digital.com/updates/a-database-free-blog-in-flat-markdown-files/) --- Source: https://63digital.com/updates/a-database-free-blog-in-flat-markdown-files/ [← Updates](https://63digital.com/updates/) Update # A database-free blog in flat Markdown files 15 Apr 2026 Improvement Self-storage A marketing blog doesn't need a database behind it. We replaced one with a flat-file engine: each post is a simple Markdown file with a little front matter, parsed and rendered on the fly, published by nothing more than uploading it to the server. There's no database to back up, no CMS to keep patched, and no admin login to secure — just files. For a small, content-led site it's faster, cheaper and more portable, and it moves with the site anywhere it's hosted. Related case study [Self-Storage Operator Modernising a multi-site self-storage operator's site — a database-free blog, SEO landing pages, live pricing from the back-office, automated competitor price monitoring and per-branch lead routing.](https://63digital.com/work/self-storage-operator/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update How we cut a client's oversized images by 77%](https://63digital.com/updates/how-we-cut-a-clients-oversized-images-by-77/) --- Source: https://63digital.com/updates/how-we-cut-a-clients-oversized-images-by-77/ [← Updates](https://63digital.com/updates/) Update # How we cut a client's oversized images by 77% 26 Feb 2026 Improvement Vehicle manufacturer Manufacturers upload print-resolution photography straight into WordPress, and it adds up fast — this library had single images weighing 60 and 70 megabytes each. We ran a scripted, logged pass over 626 oversized images, capping dimensions, optimising quality and stripping metadata. Those 626 originals went from about 3GB to under 700MB — a 77% saving — with a full audit log, the folder structure preserved, and not a single failure. Lighter pages, faster loads, and a reversible, documented process rather than a risky plugin. We've written up the whole method, commands and gotchas included, in our guide: [how to reduce the size of a WordPress media library](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/). Go deeper [How to reduce the size of a WordPress media library (safely) WordPress guide](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) Related case study [Emergency Vehicle Manufacturer Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence.](https://63digital.com/work/emergency-vehicle-manufacturer/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update One search box across the website and the service portal](https://63digital.com/updates/one-search-box-across-the-website-and-the-service-portal/) --- Source: https://63digital.com/updates/one-search-box-across-the-website-and-the-service-portal/ [← Updates](https://63digital.com/updates/) Update # One search box across the website and the service portal 22 Jan 2026 Integration Utilities A water retailer's answers live in two very different places: marketing and product pages on the website, and a large body of support and knowledge content in ServiceNow. Searching them separately meant customers had to guess which system held what they needed — so we built one search that spans both. Algolia powers the front end, and a custom indexer we wrote pushes the client's ServiceNow content into the same Algolia index as the website — normalised, kept in sync, and ranked together. A single query now returns web pages and ServiceNow content side by side in one relevance-ranked list, and the customer never has to know which system the answer came from. Related case study [Water Retailer A single, fast site search that unifies the website and the retailer's ServiceNow content in one relevance-ranked result set — powered by Algolia and a custom indexer.](https://63digital.com/work/water-retailer/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Pulling live reviews onto a venue's homepage](https://63digital.com/updates/pulling-live-reviews-onto-a-venues-homepage/) --- Source: https://63digital.com/updates/pulling-live-reviews-onto-a-venues-homepage/ [← Updates](https://63digital.com/updates/) Update # Pulling live reviews onto a venue's homepage 4 Dec 2025 Improvement Hospitality For a bar or venue, reviews are the deciding factor — so they belong front and centre. We pulled live TripAdvisor ratings and on-site reviews onto the venue's homepage, updating automatically, so fresh social proof greets every visitor without anyone copying and pasting star ratings. It sits alongside a performance and image-optimisation pass that keeps a media-heavy hospitality site quick on mobile. The result is a homepage that looks after itself and earns trust the moment it loads. Related case study [Self-Storage Operator Modernising a multi-site self-storage operator's site — a database-free blog, SEO landing pages, live pricing from the back-office, automated competitor price monitoring and per-branch lead routing.](https://63digital.com/work/self-storage-operator/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update When a plugin isn't enough: a custom fixtures table](https://63digital.com/updates/when-a-plugin-isnt-enough-a-custom-fixtures-table/) --- Source: https://63digital.com/updates/when-a-plugin-isnt-enough-a-custom-fixtures-table/ [← Updates](https://63digital.com/updates/) Update # When a plugin isn't enough: a custom fixtures table 30 Oct 2025 Improvement Sports listings Off-the-shelf plugins get you a long way, until they don't. This football TV-listings site needed to show exactly which match is on which channel and when — detail its stock football plugin couldn't model — so we built a bespoke fixtures-and-broadcaster dataset behind the scenes. The listings page queries that custom table directly, grouping matches under date headers with kick-off times and channels, competition by competition. The front end stays polished and familiar; the bit that matters most is bespoke and exactly right. Related case study [Clarkston Colts A lightning-fast Umbraco rebuild delivered in days, not weeks — a professional, easy-to-update site for a club mid-transition.](https://63digital.com/work/clarkston-colts/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Automating a monthly SEO report into a live spreadsheet](https://63digital.com/updates/automating-a-monthly-seo-report-into-a-live-spreadsheet/) --- Source: https://63digital.com/updates/automating-a-monthly-seo-report-into-a-live-spreadsheet/ [← Updates](https://63digital.com/updates/) Update # Automating a monthly SEO report into a live spreadsheet 11 Sep 2025 Improvement Online retailer Producing a client's monthly SEO report by hand — copying rankings out of a rank tracker into a formatted spreadsheet — is exactly the kind of job worth automating. We built a small tool that pulls the rank-tracking data, computes month-on-month movements in position and search volume, and writes it straight into the client's spreadsheet. It caches the data locally so it isn't hammering the rank-tracker's API, self-paces to stay inside rate limits, and keeps a rolling window of history — backfilling once, then refreshing the current month each run. The monthly report now builds itself. Related case study [SEO Analytics Platform A multi-tenant SaaS that aggregates data from six SEO providers, tracks rankings over time and turns them into branded, shareable client reports — with machine-learning insight and usage-based billing.](https://63digital.com/work/seo-analytics-platform/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update A league table as a serverless widget](https://63digital.com/updates/a-league-table-as-a-serverless-widget/) --- Source: https://63digital.com/updates/a-league-table-as-a-serverless-widget/ [← Updates](https://63digital.com/updates/) Update # A league table as a serverless widget 24 Jul 2025 Launch Sports club Sometimes the right answer is a tiny one. A club wanted its league standings on its own site, always current, without paying for a data feed. We built a small serverless function that scrapes the governing body's league table, drops it into an HTML template, and publishes it as an embeddable widget. It runs on demand for a fraction of a penny, needs no server to maintain, and has been quietly carried across three .NET runtime upgrades over the years — proof that small tools deserve looking after too. The club iframes the widget; the standings are always up to date. Related case study [Clarkston Colts A lightning-fast Umbraco rebuild delivered in days, not weeks — a professional, easy-to-update site for a club mid-transition.](https://63digital.com/work/clarkston-colts/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Attribution that survives the cookie crackdown](https://63digital.com/updates/attribution-that-survives-the-cookie-crackdown/) --- Source: https://63digital.com/updates/attribution-that-survives-the-cookie-crackdown/ [← Updates](https://63digital.com/updates/) Update # Attribution that survives the cookie crackdown 20 May 2026 Integration Rebll Tickets Browser tracking restrictions have been quietly breaking marketing attribution for years, and a ticketing platform lives or dies on knowing which ad sold the ticket. So we moved Rebll's conversion tracking to the server: purchases are reported directly to Meta's and TikTok's server-side APIs, rather than relying on a browser pixel that ad-blockers and cookie limits can stop. It's built to be both accurate and privacy-respecting — customer data is hashed before it leaves the platform, tracking is gated on cookie consent, and every event goes through a durable outbox so a momentary API blip never loses a conversion. Promoters get attribution they can trust, without leaning on cookies that are disappearing. Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Migration-safe releases on Azure Container Apps](https://63digital.com/updates/migration-safe-releases-on-azure-container-apps/) --- Source: https://63digital.com/updates/migration-safe-releases-on-azure-container-apps/ [← Updates](https://63digital.com/updates/) Update # Migration-safe releases on Azure Container Apps 18 Jun 2026 Improvement Rebll Tickets The scariest part of deploying a payment platform is the database migration: get it half-applied and you've got an outage mid on-sale. We rebuilt Rebll's release so that can't happen. Each deploy packages its database changes into a self-contained migration bundle, and — behind a manual approval gate — runs it against Azure SQL, rolls the new container image, and then checks the health endpoint to confirm the app came back up. If anything fails, the release stops rather than limping on. Combined with the whole environment being defined in Bicep and secrets pulled from Key Vault at startup, deploys have gone from a held-breath event to something routine. Related case study [Rebll Tickets Cloud Platform Moving Rebll Tickets onto codified, self-healing Azure infrastructure — with migration-safe, health-verified releases and payment-grade observability.](https://63digital.com/work/rebll-tickets-cloud-platform/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Your ticket, straight in Apple and Google Wallet](https://63digital.com/updates/your-ticket-straight-in-apple-and-google-wallet/) --- Source: https://63digital.com/updates/your-ticket-straight-in-apple-and-google-wallet/ [← Updates](https://63digital.com/updates/) Update # Your ticket, straight in Apple and Google Wallet 24 Sep 2026 Launch Rebll Tickets Nobody wants to dig through their email for a PDF at the door. Rebll tickets can now be issued as Apple Wallet and Google Wallet passes, switched on per promoter, so a customer taps once and it lives on their phone — lock screen, offline, ready to scan. Alongside the wallet passes we still generate a QR code and a PDF for anyone who wants them, so every attendee gets in however they turn up. It's a small touch that makes the walk-up experience feel modern and effortless. Go deeper [How to add Apple Wallet and Google Wallet tickets to your platform Apple & Google Wallet guide](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related service [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [Next update Sell tickets from your own site](https://63digital.com/updates/sell-tickets-from-your-own-site/) --- Source: https://63digital.com/updates/sell-tickets-from-your-own-site/ [← Updates](https://63digital.com/updates/) Update # Sell tickets from your own site 5 Mar 2026 Launch Rebll Tickets Sending customers off to a separate ticketing site loses sales. Promoters can now embed the entire Rebll purchase experience directly into their own website with a single snippet — browse, pick tickets and pay without ever leaving the promoter's page. We built it to behave inside an iframe even with today's strict cookie rules, and with its own tightly-scoped access so it's safe to drop anywhere. The promoter keeps their traffic and their brand; the customer gets a seamless checkout. Go deeper [How to build a ticketing marketplace on Stripe Connect and Square Square guide](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related services [System integration Connect the tools you already rely on — payments, eCommerce, CRMs, spreadsheets — into one reliable, automated flow.](https://63digital.com/services/system-integration/) [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Tickets that depend on other tickets](https://63digital.com/updates/tickets-that-depend-on-other-tickets/) --- Source: https://63digital.com/updates/tickets-that-depend-on-other-tickets/ [← Updates](https://63digital.com/updates/) Update # Tickets that depend on other tickets 13 Nov 2025 Improvement Rebll Tickets Real events have rules: the after-party ticket only makes sense with a main ticket, the coach seat only if you've bought entry. Rebll's ticket-type engine now models exactly that — a ticket type can be made available only when another one is in the basket, with its own caps and per-order limits. It turns a pile of separate products into a coherent journey, so promoters can build up-sells and bundles that only appear when they're relevant — and customers never see options that don't apply to them. Go deeper [How to build a ticketing marketplace on Stripe Connect and Square Square guide](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Running the door: guestlists, comps and accredited staff](https://63digital.com/updates/running-the-door-guestlists-comps-and-accredited-staff/) --- Source: https://63digital.com/updates/running-the-door-guestlists-comps-and-accredited-staff/ [← Updates](https://63digital.com/updates/) Update # Running the door: guestlists, comps and accredited staff 30 Apr 2026 Launch Rebll Tickets Selling tickets is only half of running an event; the other half is the door. We built Rebll a full box-office suite: promoters can build and allocate guestlists, issue complimentary tickets, and accredit staff — uploading a whole team from a spreadsheet in one go, each with their own pass. Guestlist and staff tickets can even be issued on a schedule, so they go out at the right moment rather than by hand. It gives promoters everything they need to manage who gets in, and how, from the same platform they sell on. Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related service [Bespoke platforms Replace fragile, hard-to-change systems with clean, maintainable .NET platforms built around the way you actually work.](https://63digital.com/services/bespoke-platforms/) [Next update Getting fees and VAT right, every time](https://63digital.com/updates/getting-fees-and-vat-right-every-time/) --- Source: https://63digital.com/updates/getting-fees-and-vat-right-every-time/ [← Updates](https://63digital.com/updates/) Update # Getting fees and VAT right, every time 25 Sep 2025 Improvement Rebll Tickets Ticketing money is fiddlier than it looks: a platform fee, a promoter fee, VAT on some of it, all varying by event. We built Rebll a configurable fees-and-VAT engine that calculates the right charges on every ticket and every basket, keeping platform and promoter fees cleanly separated. Because it's driven by configuration rather than hard-coded, fees can be tuned per promoter and per event without a code change, and the VAT is handled and recorded correctly throughout. It's the unglamorous accuracy that keeps everyone's books — and the taxman — happy. Go deeper [How to build a ticketing marketplace on Stripe Connect and Square Square guide](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) Related case study [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) Related service [eCommerce & portals Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect.](https://63digital.com/ecommerce/) [Next update Do you know who looks after your website?](https://63digital.com/updates/do-you-know-who-looks-after-your-website/) --- Source: https://63digital.com/updates/do-you-know-who-looks-after-your-website/ [← Updates](https://63digital.com/updates/) Update # Do you know who looks after your website? 23 Oct 2026 Advice Ask a business owner who looks after their website and you'll often get a pause. The person who built it moved on. The agency was wound up. A nephew set it up and is now at university. Or it was always "the hosting company", and nobody is quite sure what that covers. Through our agency partners we hear the same thing again and again: lots of businesses don't have a developer looking after their site, and many would rather not have to think about one at all. That's a perfectly reasonable position, right up until something needs doing. Websites don't stay finished. The software they run on is updated constantly, often for security reasons. In October, for example, two serious flaws in PHP, the language most WordPress and WooCommerce sites run on, were patched in a hurry after details leaked early. Sites with someone looking after them were updated within hours. Sites without anyone looking after them are still waiting, and their owners probably don't know. ## Five questions worth answering 1. **Who holds the domain?** Is it registered in the business's name, on an account you can log in to? If the registration lapses, your site and your email go with it. 2. **Who holds the hosting?** Whose card pays for it, and could you get into the account tomorrow if you had to? 3. **Who applies updates?** To the CMS, the plugins and the server underneath. "It updates itself" is sometimes true and often only partly true. 4. **Where are the backups, and has anyone ever restored one?** A backup nobody has tested is a hope, not a backup. 5. **Who do you call when it breaks?** Not who you'd try. Who would actually pick up. If you can answer all five, you're in better shape than most. If you can't, you're not alone, and it's usually straightforward to fix. ## What we do about it We start with a health check. We find out what the site runs on, how out of date it is, who holds each account, and whether the backups work. You get a short, plain-English report: what's fine, what needs attention now, and what can wait. If you'd like someone to look after it from then on, we can do that. If you'd rather keep it in-house, the report tells you what to keep an eye on. If the developer has already gone and you're locked out of parts of it, our guide on [taking back a WordPress site when your developer has gone](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) covers how that recovery works, and our [software rescue](https://63digital.com/rescue/) work covers the bigger cases. **A website health check is £250 + VAT, and the £250 comes off any work you then go ahead with. Not sure who looks after your website? [Book a health check](#health-check).** Go deeper [How to take back your WordPress site when your developer has gone WordPress guide](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) Website health check ## Book a health check We find out what your site runs on, who holds each account, whether it's being updated and whether the backups work. You get a short, plain-English report. £250 + VAT, fixed price £250 off any work you then go ahead with Privacy Policy & Terms apply. [Next update The engineer app now works offline](https://63digital.com/updates/the-engineer-app-now-works-offline/) --- Source: https://63digital.com/about/alastair-murdoch/ [← About](https://63digital.com/about/) Author # Alastair Murdoch Lead developer, 63Digital Alastair leads development at 63Digital, the Scottish software studio behind bespoke platforms, integrations and websites for UK businesses since 2014. He works across the stack: .NET and ASP.NET Core platforms, Umbraco and WordPress sites, WooCommerce and Shopify stores, payment integrations on Stripe Connect, and the Azure infrastructure they run on. The guides on this site come from that work: jobs he has done, problems he has hit, and the fixes that held. Works with .NET & ASP.NET Core Umbraco WordPress & WooCommerce Shopify Stripe Connect Azure & DevOps Elsewhere [LinkedIn](https://www.linkedin.com/in/alastair-murdoch/) Writing ## Guides by Alastair Murdoch [Stripe How to let AI agents pay your business with Stripe Publish a price that AI assistants can read, and accept the single-use, spending-limited payment tokens Stripe issues on a buyer's behalf. Two open standards do this: the Machine Payments Protocol (MPP) for a quick pay-and-go, and the Agentic Commerce Protocol (ACP) for a full checkout. Your existing Stripe account takes the money, and card details never reach you.](https://63digital.com/payments/stripe/let-ai-agents-pay-you-with-stripe/) [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) [WordPress How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [WordPress How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) [Umbraco How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) [AI-built apps How to audit an AI-built app before launch Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review.](https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/) [AI-built apps Why AI-generated code breaks under real traffic (and how to fix it) AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries.](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [Stripe How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) [Stripe How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) [Square How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) [Apple & Google Wallet How to add Apple Wallet and Google Wallet tickets to your platform Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified.](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) [Microsoft Access How to extract forms, reports, queries and VBA from a Microsoft Access database Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live.](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [Microsoft Access How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) [Spreadsheets How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) --- Source: https://63digital.com/contact/ Let's talk # Book a discovery call 30 minutes to explore what's possible. No jargon, no pressure — just practical advice on your next step. [Call 07833 249419](tel:07833249419) [Email hello@63digital.com](mailto:hello@63digital.com) Studio 63 Lomond Walk, Newarthill, Motherwell, ML1 5HQ Book a discovery call 30 minutes. No pressure, just practical advice. Privacy Policy & Terms apply. --- Source: https://63digital.com/ecommerce/ [← Services](https://63digital.com/services/) Service · 04 # eCommerce & portals Secure customer portals and commerce experiences your clients expect. Portals Multi-currency Reporting The approach Secure customer portals and commerce experiences with the access control, reporting and self-service your clients expect — built to scale internationally. 24/7 Self-service Multi Currency Granular Access control What's included 01 Customer portal design & build 02 Multi-currency commerce 03 Role-based access control 04 Reporting & dashboards [Scope this with us](https://63digital.com/contact/) Platforms ## Platforms we work with [WooCommerce Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. 1 guide](https://63digital.com/ecommerce/woocommerce/) [Shopify Shopify theme development, rich product presentation and search visibility for stores that need more than a stock theme.](https://63digital.com/ecommerce/shopify/) [Proof · in the field Gift Voucher SolutionsA multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers.Read the case study ![Gift Voucher Solutions](https://63digital.com/media/dbfsb5dw/gift-voucher-solutions-card.webp?width=960&format=webp&quality=85&v=1dd4f48c37de3f0&hmac=b455148f0005079a6fd2a9edb7f7475a7f735ff552bb8a21964227b7231ec819)](https://63digital.com/work/gift-voucher-solutions/) Other services [01 Bespoke platforms](https://63digital.com/services/bespoke-platforms/) [02 System integration](https://63digital.com/services/system-integration/) [03 Applied AI](https://63digital.com/services/applied-ai/) --- Source: https://63digital.com/ecommerce/woocommerce/ [← eCommerce & portals](https://63digital.com/ecommerce/) Platform # WooCommerce development & support Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. WooCommerce WordPress Plugins Integrations In short 63Digital builds and fixes WooCommerce stores for UK businesses: personalisation and bulk-ordering rules, integrations with accounting and back-office systems, custom product search and custom payment gateways. We've written our own WooCommerce payment gateway plugin and connected WooCommerce to Xero, so we work in the code, not just the settings. At a glance 4 WooCommerce case studies 1 Payment gateway plugin we've built Xero Order-to-accounting integration [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on WooCommerce 01 ### Custom builds Product personalisation, squad and bulk-ordering rules, multi-currency catalogues. Built as proper plugins, not a pile of snippets. 02 ### Integrations WooCommerce connected to accounting, production and back-office systems, including Xero and bespoke APIs. 03 ### Payment gateways Custom gateways for payment providers with no off-the-shelf WooCommerce plugin, written to WooCommerce's gateway API. 04 ### Product search Custom WooCommerce search built into the site, with no external search service to pay for. 05 ### Fixes & rescues Broken themes after updates, plugin conflicts and stores left behind by previous developers. WooCommerce guides ## How to, from jobs we've done [How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) Proof ## Our work on WooCommerce [![eControl](https://63digital.com/media/you237cg/econtrol-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4887620&hmac=3fe7305665fe1ac73fa472ae58b57bfca63c489ad3b75d7ec89e066a32e221a3) Manufacturing · B2B eControl Mid-size platform A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week. .NET WooCommerce REST APIs Mobile](https://63digital.com/work/econtrol/) [![Teamwear Retailer](https://63digital.com/media/tkcao5tf/teamwear-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c434fef0&hmac=0915540b227bce2f009d46cb92d751e4aeb3ca87df7324e9b3cecb047cea6211) eCommerce · Teamwear Teamwear Retailer WooCommerce An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue. WooCommerce eCommerce Personalisation Performance](https://63digital.com/work/teamwear-retailer/) [![EV Charging Company](https://63digital.com/media/yq0ae4sd/ev-charging-company-card.webp?width=960&format=webp&quality=85&v=1dd4f48c401b9f0&hmac=6919dbecc48faa4ef5ea9de34fea14619f097e62c7053c4c946884e0853fe6f5) Energy · EV charging EV Charging Company Web & tablet An interactive services map — delivered as both a website component and an offline tablet app for trade shows — plus a custom-built product search for the client's catalogue. JavaScript PWA WordPress WooCommerce](https://63digital.com/work/ev-charging-company/) [![Emergency Vehicle Manufacturer](https://63digital.com/media/i9baz4y3/emergency-vehicle-manufacturer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c474a000&hmac=24efd65454d59d943f1c6ac92b7b7c7392d8d7a71ebfa5296c7856a1a1d825b1) Manufacturing · Emergency vehicles Emergency Vehicle Manufacturer Recovery & hosting Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence. WordPress WP Engine Recovery Maintenance](https://63digital.com/work/emergency-vehicle-manufacturer/) Is it a fit? ## Is WooCommerce right for you? ### A good fit when - ✓ You're already on WordPress and want your shop in the same place - ✓ You need custom checkout, pricing or ordering rules - ✓ You want to own your platform and code rather than rent it ### Probably not when - – You want a fully hosted store with no server to look after (Shopify may suit better) - – The shop is really an application with complex permissions and workflows (we'd build that bespoke) Related: [System integration](https://63digital.com/services/system-integration/), [Bespoke platforms](https://63digital.com/services/bespoke-platforms/) FAQ ## Common questions ### Can you fix a WooCommerce site another developer built? Yes. A lot of our WooCommerce work starts with someone else's site. We audit the theme, plugins and hosting first, then fix what's broken before adding anything new. ### Do you build custom WooCommerce plugins? Yes. We build custom features as plugins so they survive theme changes and updates, including a payment gateway for a provider that had no WooCommerce integration. ### Can WooCommerce integrate with Xero? Yes. We've connected WooCommerce to Xero as part of a wider order-to-installation platform for a manufacturer, so orders flow through to accounts without re-keying. ### Should I use WooCommerce or Shopify? WooCommerce suits businesses that want full control and custom logic on their own hosting. Shopify suits those who'd rather have a hosted platform with less to maintain. We work on both and will tell you which fits. Platforms ## Related platforms [WordPress WordPress sites recovered, re-hosted, integrated and maintained, including the ones other developers left behind. 2 guides](https://63digital.com/cms/wordpress/) [Shopify Shopify theme development, rich product presentation and search visibility for stores that need more than a stock theme.](https://63digital.com/ecommerce/shopify/) ## Got a WooCommerce problem? Tell us what's broken or what you want your shop to do. We'll tell you honestly whether it's a quick fix or a bigger job. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/ [← WooCommerce](https://63digital.com/ecommerce/woocommerce/) Guide # How to update a customised WooCommerce theme without losing your changes By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on WooCommerce 9.7 · WordPress 6.7 · WP Engine In short Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates. 10 of 19 Shop templates out of date if WooCommerce was updated alone 0 of 21 Out of date after the theme update 38 Files changed by one theme update 2 Theme files we had to re-fix after updates ## Before you start - ✓ A staging copy of the store - ✓ A clean copy of the exact theme version you're running, to compare against - ✓ A backup of the theme and its companion plugin - ✓ The theme's changelog for the version you're moving to - ✓ The WooCommerce Status page (Templates section) open in another tab ## 1. Find every change that's been made Compare the live theme, file by file, with a clean copy of the *exact* version it's running. Check the theme's companion plugin too: premium WooCommerce themes usually ship one for widgets and page-builder elements, and customisations often end up there. On the store behind this guide, the same product-image code had been changed in the theme and in a companion-plugin widget. ## 2. Move changes out of the main theme Where each change belongs depends on what it does: - **How shop pages look**: a child theme, a small theme layered on the main one that survives its updates and that WooCommerce checks first. - **How things behave**: the child theme or a small custom plugin, using WordPress's official extension points rather than edits to the main theme. - **Companion-plugin changes**: a child theme can't reach these, so replace the widget with your own or adjust it from a custom plugin. ## 3. If you can't move them yet, flag them Sometimes the only fix is an edit to the theme's own files. If so, make it visible. We added a clearly marked note to the project's history naming the two theme files that must be re-fixed after every update, so the next one couldn't silently undo the work, and saved the fix so re-applying it is mechanical, not archaeology. ## 4. Check WooCommerce's template list **WooCommerce › Status** in the WordPress dashboard has a *Templates* section listing every shop template your theme replaces with its own copy, flagging any written for an older WooCommerce version. On this store: | Theme / WooCommerce | Outdated templates | | --- | --- | | Old theme, WooCommerce 9.0 | 3 of 19 | | Old theme, WooCommerce 9.7 (WooCommerce updated alone) | 10 of 19 | | New theme, WooCommerce 9.7 | 0 of 21 | ## 5. Update the theme and WooCommerce together, on staging The theme release that fixed our templates changed 38 files, including almost 400 lines of the code connecting the theme to WooCommerce: far too much to review on a live store. ## 6. Re-apply your changes and test the pages that sell Re-apply anything still in the main theme, then check product pages, category grids, the mini-cart, cart, checkout, account pages and product images at every size before going live. ## What usually goes wrong From our own projects, not the manual. ### A routine theme update quietly undid a fix We'd fixed the theme's product-image code because its on-the-fly image resizing didn't work with WP Engine's offloaded media storage. The fix lived in the main theme, so the next update restored the original code. We re-applied it, this time using WooCommerce's standard single-product image size instead of resizing on the fly. ### The same fix was needed in two places The image code was used by the theme and by a widget in its companion plugin, and updates overwrite both. Find every place the code is used before you fix just one. ### Updating WooCommerce alone would have left 10 outdated templates The theme's copies of WooCommerce templates were written for older WooCommerce versions. With WooCommerce 9.7 and the old theme, 10 of 19 would have been out of date, including checkout, mini-cart and quantity input. Updating the theme at the same time brought it to 0 of 21. ### On-the-fly image resizing doesn't suit offloaded media Theme features that create image sizes when a page is requested need to save files next to the originals, which doesn't work reliably when images live in cloud storage. Use the image sizes WordPress or WooCommerce create at upload time. ## Do it yourself, or get help? If your changes are already in a child theme and the store has a staging copy, updating is routine: update, then test the checkout. If you know or suspect that someone edited the main theme or its plugin directly, or there's no staging site, get help. That's exactly how fixes get lost, and a broken checkout costs more than the update. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Teamwear Retailer An online store for sports teamwear and supporter merchandise — with 3D product previews, crest and name/number personalisation, squad bulk-ordering and a fast, image-heavy catalogue.](https://63digital.com/work/teamwear-retailer/) FAQ ## Common questions ### Why did my WooCommerce theme customisations disappear after an update? Because they were made in the main (parent) theme or its companion plugin, and updating replaces those files. Move them into a child theme or a small plugin, or keep a record of changed files so you can re-apply them. ### What does 'your theme contains outdated copies of some WooCommerce template files' mean? Your theme replaces some WooCommerce templates with its own copies, written for an older WooCommerce version. They often still work, but can miss fixes and features. Updating the theme usually brings them up to date. ### Should I update the theme or WooCommerce first? Test both together on staging. Updating WooCommerce without the theme is what leaves templates outdated. Updating the theme without re-applying your changes is what loses customisations. ### Can I use a child theme with a premium WooCommerce theme? Usually, yes, and it's the right home for template and behaviour changes. Changes to a theme's companion plugin need your own small plugin instead. Keep reading ## Related guides [WordPress How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [Umbraco How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) ## Nervous about updating your store? Tell us about your theme and what's been customised. We'll find the changes, move them somewhere safe and run the update on staging first. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/ecommerce/shopify/ [← eCommerce & portals](https://63digital.com/ecommerce/) Platform # Shopify development Shopify theme development, rich product presentation and search visibility for stores that need more than a stock theme. Shopify Liquid 3D SEO In short 63Digital develops Shopify stores that need more than a stock theme: custom Online Store 2.0 sections, 3D product galleries, metafield-driven content your team can edit, and structured data for search. Our Shopify work includes a 3D-first storefront for a fine jewellery retailer, with FAQ rich results on its collection pages. At a glance 3D-first Product gallery built Metafields Client-editable content & SEO FAQ schema Rich results on collections [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on Shopify 01 ### Custom theme sections Online Store 2.0 sections and blocks in Liquid that your team can edit in the theme editor. 02 ### Product presentation 3D models, galleries and product storytelling for products customers want to inspect closely. 03 ### SEO & structured data Metafield-driven content, FAQ schema and collection pages built to be found. Proof ## Our work on Shopify [![Fine Jewellery Retailer](https://63digital.com/media/xovlrl5u/fine-jewellery-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c44e0530&hmac=7688521d43ca6e9884623f8c5f1eafd6a3bb9a9915d1741997cbd4a99848cb54) eCommerce · Jewellery Fine Jewellery Retailer Shopify A high-trust Shopify storefront for a diamond and fine-jewellery retailer — a 3D-first product gallery, FAQ rich-results schema, a context-aware header, and buyer-education content the client controls. Shopify Liquid eCommerce SEO](https://63digital.com/work/fine-jewellery-retailer/) Is it a fit? ## Is Shopify right for you? ### A good fit when - ✓ You want a hosted store with less to maintain - ✓ Your products need rich presentation and content - ✓ Your team wants to edit content without a developer ### Probably not when - – You need custom checkout or pricing logic your Shopify plan doesn't allow - – You want to own and host every line of your platform's code FAQ ## Common questions ### Can you customise a Shopify theme without breaking theme updates? Yes. We build custom sections and blocks for Online Store 2.0, so your team edits them in the theme editor and the custom work stays separate from the base theme. ### Can Shopify show 3D product models? Yes. Shopify supports 3D models natively. We built a 3D-first gallery for a jewellery retailer, so customers see the model before the photos. ### Should I use Shopify or WooCommerce? Shopify suits businesses that want a hosted platform with less to maintain. WooCommerce suits those who need full control and custom logic on their own hosting. We work on both. Platforms ## Related platforms [WooCommerce Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. 1 guide](https://63digital.com/ecommerce/woocommerce/) ## Want more from your Shopify store? Tell us what your theme can't do yet. We'll scope the custom work and keep it editable for your team. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/ Platforms # CMS development & support WordPress and Umbraco sites built, rescued and upgraded by the developers who write the code. In short 63Digital builds, rescues and upgrades content-managed websites on WordPress and Umbraco. We've taken over WordPress sites from developers who went out of business, added federated search across WordPress and ServiceNow, and moved our own site from Umbraco 13 to 17 in one jump. The guides here are written from those jobs. Platforms ## Platforms we work with [WordPress WordPress sites recovered, re-hosted, integrated and maintained, including the ones other developers left behind. 2 guides](https://63digital.com/cms/wordpress/) [Umbraco Umbraco sites built, supported and kept on the current LTS by a .NET team building on Umbraco 17 today. 1 guide](https://63digital.com/cms/umbraco/) Guides ## How to, from jobs we've done [WordPress How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [WordPress How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) [Umbraco How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) ## Stuck with a CMS that's fighting you? Tell us what's broken or what you need next. We'll give you a straight answer on whether to fix it, upgrade it or rebuild it. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/wordpress/ [← CMS](https://63digital.com/cms/) Platform # WordPress development & rescue WordPress sites recovered, re-hosted, integrated and maintained, including the ones other developers left behind. WordPress Rescue WP Engine Algolia In short 63Digital builds, integrates and rescues WordPress sites. We've recovered a live site after its developer went out of business, moved sites to managed WP Engine hosting, built federated Algolia search across WordPress and ServiceNow, and built WooCommerce stores and a training-course booking platform on WordPress. If your WordPress site is stuck, we can take it on. At a glance 6 WordPress case studies 77% Lighter media library after a site rescue WP Engine Managed hosting migrations [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on WordPress 01 ### Site rescue Taking over sites from developers who've gone quiet: access, backups, licences, hosting and a safe-to-update baseline. 02 ### Re-hosting Moving live sites to managed hosting such as WP Engine, cleaning up media and plugins on the way. 03 ### Search Algolia search across WordPress and other content sources, in one relevance-ranked result set. 04 ### Booking & payments Custom booking and payment flows, such as course booking with Stripe and multi-currency fees. 05 ### Integrations WordPress connected to CRMs, accounting and back-office systems through custom plugins and APIs. WordPress guides ## How to, from jobs we've done [How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) Proof ## Our work on WordPress [![Emergency Vehicle Manufacturer](https://63digital.com/media/i9baz4y3/emergency-vehicle-manufacturer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c474a000&hmac=24efd65454d59d943f1c6ac92b7b7c7392d8d7a71ebfa5296c7856a1a1d825b1) Manufacturing · Emergency vehicles Emergency Vehicle Manufacturer Recovery & hosting Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence. WordPress WP Engine Recovery Maintenance](https://63digital.com/work/emergency-vehicle-manufacturer/) [![Water Retailer](https://63digital.com/media/a2t1j3vt/water-retailer-card.webp?width=960&format=webp&quality=85&v=1dd4f48c460c9e0&hmac=0ad7e315049d757229d8a0f3f9d2aeb157bd3a3a940cb0970541a3caccc1749d) Utilities · Water Water Retailer Search & integration A single, fast site search that unifies the website and the retailer's ServiceNow content in one relevance-ranked result set — powered by Algolia and a custom indexer. Algolia Search Integration ServiceNow](https://63digital.com/work/water-retailer/) [![KCR Academy](https://63digital.com/media/kmw47h3i/kcr-academy-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4921310&hmac=073b75c27fe7dc366ead1e09e8f5aa0134bdc480802ce1e95e6a1b4648c90e79) Global training provider KCR Academy Small, focused build KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform. Stripe integration 4-currency support Automated enrolment](https://63digital.com/work/kcr-academy/) [![EV Charging Company](https://63digital.com/media/yq0ae4sd/ev-charging-company-card.webp?width=960&format=webp&quality=85&v=1dd4f48c401b9f0&hmac=6919dbecc48faa4ef5ea9de34fea14619f097e62c7053c4c946884e0853fe6f5) Energy · EV charging EV Charging Company Web & tablet An interactive services map — delivered as both a website component and an offline tablet app for trade shows — plus a custom-built product search for the client's catalogue. JavaScript PWA WordPress WooCommerce](https://63digital.com/work/ev-charging-company/) [![eControl](https://63digital.com/media/you237cg/econtrol-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4887620&hmac=3fe7305665fe1ac73fa472ae58b57bfca63c489ad3b75d7ec89e066a32e221a3) Manufacturing · B2B eControl Mid-size platform A unified production platform connecting order to installation — giving the whole team real-time visibility and saving 15+ hours a week. .NET WooCommerce REST APIs Mobile](https://63digital.com/work/econtrol/) Is it a fit? ## Is WordPress right for you? ### A good fit when - ✓ Your team already knows WordPress - ✓ You need a content site with a handful of custom features - ✓ You want a large pool of developers and plugins to draw on ### Probably not when - – The 'site' is really an application with complex data and permissions (we'd build that bespoke) - – You're on a .NET stack and want your CMS there too (see Umbraco) Related: [System integration](https://63digital.com/services/system-integration/) FAQ ## Common questions ### My WordPress developer has disappeared. What should I do first? Secure access before anything else: domain, hosting, WordPress admin and any premium plugin licences. Then take a full backup before changing anything. We've taken over live sites in exactly this situation. ### Can you move my WordPress site to WP Engine? Yes. We've migrated live sites to WP Engine, auditing plugins and licences and cutting the media library down on the way. ### Can WordPress search content from other systems? Yes. We built a federated Algolia search that indexes WordPress and ServiceNow content and returns one ranked set of results as you type. Platforms ## Related platforms [WooCommerce Custom WooCommerce builds, fixes, integrations and payment gateways, from a team that writes WooCommerce plugins. 1 guide](https://63digital.com/ecommerce/woocommerce/) [Umbraco Umbraco sites built, supported and kept on the current LTS by a .NET team building on Umbraco 17 today. 1 guide](https://63digital.com/cms/umbraco/) ## WordPress site stuck? Whether your developer has gone quiet or the site just keeps breaking, tell us what's happening and we'll help you get it back under control. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/ [← WordPress](https://63digital.com/cms/wordpress/) Guide # How to reduce the size of a WordPress media library (safely) By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on WordPress on WP Engine · ImageMagick 7.1 · WP-CLI In short The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB. 626 Oversized original images shrunk 3.0 → 0.7 GB 77% smaller ~8 min To process the whole batch 0 Failures, with every file logged ## Before you start - ✓ File access (SFTP or SSH) to the site's uploads folder - ✓ A full backup of the uploads folder - ✓ An image tool that can batch-process files (we used ImageMagick 7) - ✓ A way to regenerate thumbnails (WP-CLI or the Regenerate Thumbnails plugin) - ✓ A staging site to check the result on first ## 1. Measure what's actually in the uploads folder Before changing anything, take a copy of the uploads folder and list every image by type and size. On [a manufacturer's site we recovered](https://63digital.com/work/emergency-vehicle-manufacturer/) there were **14,372 image files totalling 4.7 GB**, and 11,041 of them were thumbnails WordPress had generated. Those came to only 1.3 GB. The weight was in the originals. ## 2. Target the originals, not the thumbnails WordPress's own resized copies are easy to spot by their file names, so we set those aside and looked at originals above a size threshold. We used 500 KB, though the right cut-off depends on the site, and grouped what we found to see where the weight was: | Original size | Files | | --- | --- | | Over 10 MB | 81 | | 5–10 MB | 85 | | 1–5 MB | 292 | | 0.5–1 MB | 168 | That gave **626 target files**, about 3 GB between them. ## 3. Test the settings on the worst file first Ours was a 73 MB PNG at 10,117 × 7,152 pixels. It came out at 6.9 MB, which told us the settings were safe for the rest. ## 4. Run a logged batch into a separate folder We used ImageMagick 7, a free image tool, with three rules: cap the longest side at 2,560 pixels (only ever shrinking), strip hidden metadata such as camera details, and save JPGs at quality 82. PNGs stay lossless. The output goes to a separate folder with the same structure, never over the originals, and every file is logged with its size and dimensions before and after. Our run processed all 626 files (413 JPG, 213 PNG) in about 8 minutes with no failures. ## 5. Read the log before you replace anything This is where judgement comes in. Anything that got *bigger* keeps its original (see below), and anything that barely changed may be better in a different format. Only then do the optimised files go live. ## 6. Swap the files in and rebuild thumbnails 1. Back up the uploads folder on the server. 2. Upload the optimised originals over the old ones, with the same file names and locations. 3. Have WordPress regenerate its thumbnails from the new originals (with WP-CLI or the Regenerate Thumbnails plugin). 4. Check the pages with the heaviest images, and re-test with PageSpeed Insights. ## 7. Stop it happening again WordPress already scales down uploads larger than 2,560 pixels, but it keeps the full-size original alongside, so a 50 MB photo still costs 50 MB of storage and backups. Resize images before upload, agree expectations with whoever uploads photography, and repeat the check once a year. ## What usually goes wrong From our own projects, not the manual. ### Some PNGs got bigger after optimising 25 of the 213 PNGs grew, the worst by 12%, and 108 more saved under 5%. PNGs already under 2,560 pixels only had their metadata removed. Keep the original whenever the new file is larger, and convert large photographic PNGs to JPG or WebP instead. ### Editing an image in WordPress doubled its weight Cropping or rotating in the media editor saves a new full-size copy alongside the original. On this site a 73 MB original had a 63 MB edited twin. Include those copies when you hunt for big files. ### Print-resolution photos went straight into the library Originals up to 11,648 × 8,736 pixels had been uploaded as they came off the camera. The largest photo went from 49.8 MB to 0.5 MB once capped at 2,560 pixels. ### The saving applied to the originals, not the whole library The 3 GB to 0.7 GB result is across the 626 oversized originals. The whole uploads folder held 4.7 GB of images, mostly thumbnails. Measure both, so the number you report is the one you actually got. ### Optimising originals doesn't touch existing thumbnails Thumbnails are separate files WordPress generates. Until you regenerate them, pages keep serving the old ones, so don't skip that step. ## Do it yourself, or get help? If you're comfortable with command-line tools and have file access and a backup, you can do this yourself in an afternoon: the batch itself takes minutes. If there's no staging site, no reliable backup, or you're not sure which files are safe to replace, get help, because a bad bulk replace across thousands of images is painful to undo. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Emergency Vehicle Manufacturer Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence.](https://63digital.com/work/emergency-vehicle-manufacturer/) FAQ ## Common questions ### Why is my WordPress uploads folder so big? Usually a small number of huge originals: camera or print-resolution photos uploaded as they are. On one site, 626 files over 500 KB made up about 3 GB, while more than 11,000 thumbnails came to only 1.3 GB. ### Will optimising images break my WordPress site? Not if you keep the same file names and locations and regenerate thumbnails afterwards. Work into a separate folder, check the log, and only replace the originals once you have a backup. ### Should I use an image optimisation plugin instead? A plugin is fine for new uploads. For a large existing library we prefer a batch run outside WordPress: it doesn't load the server, it's reversible, and every change is logged. ### What size should images be for WordPress? We cap the longest side at 2,560 pixels, which matches WordPress's own threshold for large images, and save JPGs at quality 82. Keep reading ## Related guides [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) [WordPress How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) ## Want us to clean up your media library? Tell us about your site and hosting. We'll run the audit, do the swap safely, and leave you with a log of every change. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/ [← WordPress](https://63digital.com/cms/wordpress/) Guide # How to take back your WordPress site when your developer has gone By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on WordPress with Elementor · WP Engine migration plugin In short If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name. 1 Login we started with: wp-admin 6 Licences the site actually needed 77% Smaller media library after clean-up ## Before you start - ✓ An administrator login to wp-admin (check it works first) - ✓ A hosting account in the business's own name - ✓ The domain name, plus any old invoices or emails that mention it - ✓ A list of what uses the domain besides the website (email especially) - ✓ A staging copy to test plugin changes on ## 1. Check what you can still log in to Log in to wp-admin (the WordPress dashboard) and check your role under **Users → Profile**. You need to be an **Administrator**: editors can't install plugins, and a plugin is how you'll get the site out. Then list what else you can reach: the hosting account, the domain registrar, DNS and any premium plugin accounts. On [the manufacturer's site we recovered](https://63digital.com/work/emergency-vehicle-manufacturer/), wp-admin was the only thing the client could still get into. That was enough. What's on your list decides which of the steps below you need. ## 2. Set up hosting in the business's own name Open a hosting account billed to, and owned by, the business, not a person or a supplier. We moved the site to WP Engine's managed WordPress hosting, which includes backups and a staging copy, so every later change could be tried safely first. ## 3. Copy the site across from wp-admin Install the new host's migration plugin on the old site (we used WP Engine's). It copies the database, themes, plugins and uploads to the new account, with no need for access to the old server. Check the copy thoroughly on the new host's temporary address before you touch the domain. A bloated media library slows every copy and backup. This site's was around 3 GB, and we cut it by 77% as part of the clean-up (see [how to reduce a WordPress media library safely](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/)). ## 4. Find out where the domain is registered Run a WHOIS lookup on the domain, for example with [ICANN Lookup](https://lookup.icann.org/). The owner's details are usually hidden, but it shows the **registrar** (the company the domain is registered with) and the **nameservers** (who runs its DNS today): which account to recover, and where the DNS records live. ## 5. Recover the registrar account Use the registrar's account recovery process with the business's details. Old invoices and the email address the domain was bought with help. If the developer registered it on their own account, the registrar will say what proof it needs to move it to you. We guided the client to the right registrar and helped them regain access. ## 6. Point the domain at the new host First write down every existing DNS record, including the mail (MX) records, so email and anything else on the domain keep working. Then add the new host's records and check the site on the real domain. ## 7. Audit every premium licence For each premium plugin and theme (Elementor included), we look at: - who the licence is registered to; - whether it's active, expired or about to renew; - whether the site actually uses it. If you're not sure, deactivate it on staging and see what breaks. Here, every licence was registered to the old developer and many had expired. Only six were actually needed. ## 8. Re-license what you need, in your own name Buy the licences the site needs on a business email address, enter the new keys, and note the renewal dates where the business will see them. Remove plugins nobody uses rather than leaving them installed and unpatched. ## 9. Bring everything up to date on staging first With valid licences in place, update WordPress, the theme and the plugins on staging, check the site, then repeat on live. From here on, updates are routine instead of a gamble. ## What usually goes wrong From our own projects, not the manual. ### No hosting access at all With the developer out of business, nobody could reach the old server. An administrator login was enough: the migration plugin copied the whole site to new hosting without the old host's involvement. ### Every licence belonged to the developer Elementor and the premium plugins were registered to the old developer, and many had expired, so the site couldn't get updates or support. Buy licences in the business's name: one on someone else's account can lapse without you ever knowing. ### Paying for plugins the site didn't use Some licences were still being paid for, but for plugins the site no longer used. Six were essential. Audit what the site actually uses before renewing anything. ### Nobody knew where the domain was registered A WHOIS lookup showed the registrar and the current nameservers, which told the client which account to recover and who controlled the DNS. ### A 3 GB media library Oversized original images made the site slow to copy and back up. Shrinking them cut the library by 77%, to under 700 MB. ## Do it yourself, or get help? If you have an administrator login, the site is simple and you know what each plugin does, you can do this yourself with a migration plugin and a WHOIS lookup. Get help if you can't log in as an administrator, the domain is registered in the developer's name, the site takes payments or bookings, or you're not sure what depends on what: a missed licence or DNS record is what takes a site down. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Emergency Vehicle Manufacturer Recovering a live website after its original developer went out of business — re-hosting it safely, untangling its Elementor and plugin licences, and stabilising it so it can be updated with confidence.](https://63digital.com/work/emergency-vehicle-manufacturer/) FAQ ## Common questions ### My web developer has disappeared. Can I get my WordPress site back? Usually, yes. If you can log in to wp-admin as an administrator, you can copy the whole site to new hosting yourself, without the old developer or host. If you can't, start with the hosting company and the domain registrar. ### How do I find out who my domain is registered with? Run a WHOIS lookup, for example on ICANN Lookup. It shows the registrar and the nameservers, which tell you which account to recover and who runs your DNS. ### Are the premium plugin licences mine? Not if the developer bought them on their own account. When those licences lapse, updates and support stop. Buy the ones you need again in the business's name. ### Do I need every plugin the developer installed? Probably not. On the site we recovered, only six licences were actually needed. Test on staging by deactivating anything you're unsure about. ### What if I can't log in to wp-admin? Then you need the hosting account or a backup instead. Contact the host with proof that the business owns the site, and recover the domain in parallel. Keep reading ## Related guides [WordPress How to reduce the size of a WordPress media library (safely) The weight is usually in a small number of oversized original photos, not the thumbnails. Shrink those outside WordPress in a logged batch, capping the longest side at 2,560 pixels, saving JPGs at quality 82 and stripping hidden metadata, then swap them in and rebuild thumbnails. On one site that took 626 originals from 3 GB to under 700 MB.](https://63digital.com/cms/wordpress/reduce-wordpress-media-library-size/) [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) ## Developer gone, site stranded? Tell us what you can still log in to. We'll get the site, the domain and the licences back in your name. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/umbraco/ [← CMS](https://63digital.com/cms/) Platform # Umbraco development & support Umbraco sites built, supported and kept on the current LTS by a .NET team building on Umbraco 17 today. Umbraco .NET Upgrades LTS In short 63Digital builds and upgrades Umbraco sites on .NET. Our own site is built on Umbraco 17 LTS, upgraded directly from Umbraco 13, and we've rebuilt sites like Clarkston Colts' on a clean, fast Umbraco front-end. If you're still on Umbraco 13, which reaches end of life on 14 December 2026, we can plan and run your move to 17. At a glance 13 → 17 Upgraded in one jump 17 LTS The version we build on 14 Dec 2026 Umbraco 13 end of life [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on Umbraco 01 ### Upgrades Umbraco 13 and earlier to 17 LTS, including packages, .NET 10 and the new backoffice. 02 ### New builds Fast, code-owned front-ends on Umbraco, with editors firmly in control of their content. 03 ### Theme & package exits Sites stuck on a theme or package with no upgrade path, moved to clean templates you own. Umbraco guides ## How to, from jobs we've done [How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) Proof ## Our work on Umbraco [![63Digital](https://63digital.com/media/9sy7zbgp/63digital-card.webp?width=960&format=webp&quality=85&v=1dd66fcb92ae210&hmac=d5e0e82bbde129b5942e6cd020c5d666f90aaaea30aab638a55aaf5e7d33f869) Digital agency · Our own site 63Digital Our own site Our own site, upgraded from Umbraco 13 to 17 LTS in one jump and rebuilt on code-owned templates: faster, free of a third-party theme, and built to be found in search and AI answers. Umbraco 17 Tailwind Performance](https://63digital.com/work/63digital/) [![Clarkston Colts](https://63digital.com/media/r00pa0dl/clarkston-colts-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4ab1950&hmac=4516b06270f2387b63440118310325557379b6b1ca4d79805c97e049ff1956b6) Community football club Clarkston Colts Days, not weeks A lightning-fast Umbraco rebuild delivered in days, not weeks — a professional, easy-to-update site for a club mid-transition. Umbraco One-click updates Built to last](https://63digital.com/work/clarkston-colts/) Is it a fit? ## Is Umbraco right for you? ### A good fit when - ✓ You're a .NET business, or want your website on a .NET stack - ✓ Editors need structured, flexible content types - ✓ You want long-term support from an LTS release ### Probably not when - – You need a simple brochure site on the smallest possible budget (WordPress may suit better) Related: [Bespoke platforms](https://63digital.com/services/bespoke-platforms/) FAQ ## Common questions ### When does Umbraco 13 support end? Umbraco 13 is an LTS release that left active support on 14 December 2025 and reaches end of life on 14 December 2026, after which it gets no security fixes. Umbraco 17 LTS is supported until 27 November 2028. ### Can you upgrade Umbraco 13 straight to 17? Yes. We upgraded our own site directly from 13.13 to 17.4, and the database migrations ran on first boot. Our step-by-step guide covers what to prepare and what broke. ### Will my Umbraco packages work on 17? Only if they have a v17 release. Check every package before you start. On our own upgrade, a theme package without a v17 build held things up until its release shipped. Platforms ## Related platforms [WordPress WordPress sites recovered, re-hosted, integrated and maintained, including the ones other developers left behind. 2 guides](https://63digital.com/cms/wordpress/) ## Still on Umbraco 13? End of life is 14 December 2026. Tell us about your site and we'll tell you what an upgrade to 17 involves. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/ [← Umbraco](https://63digital.com/cms/umbraco/) Guide # How to upgrade Umbraco 13 to 17 By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Umbraco 17.7 · .NET 10 · uSync 17.4 In short You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features. 13.13 → 17.4 One jump, no stops at 14–16 12 days From first preparation to the site running on 17 795 Items exported by our content-sync tool, uSync .NET 8 → 10 Microsoft .NET version upgrade ## Before you start - ✓ A full database backup, and a copy of the site files - ✓ A staging copy to upgrade first, never the live site - ✓ A list of every add-on package and backoffice extension, and whether each has a version for Umbraco 17 - ✓ .NET 10 installed on every developer machine and build server - ✓ A list of your custom code, especially anything that customises the backoffice ## 1. Get onto the latest Umbraco 13 and clear out what 17 dropped Starting from the newest 13 release gives the jump a known-good base (on [our own site](https://63digital.com/work/63digital/), **13.13.1**). Then we look for what 17 no longer has: - Custom code built on Umbraco's old API controller, which is gone. It needs rewriting as standard ASP.NET Core code. - Properties using the **legacy Media Picker**. Switch them to the current one while you can still test on 13. - Leftovers such as unused sync folders from earlier versions and one-off import tools. ## 2. Check every package has a version for 17 This step decides your timeline. Our theme package had no Umbraco 17 release when we started, which held things up until it shipped. We later replaced it with templates we own, so a third-party release can't hold up the next upgrade. Expect to drop abandoned or debug-only packages. Backoffice customisations written in AngularJS must be rebuilt, because the backoffice has used web components since Umbraco 14. ## 3. Move to .NET 10 and update the packages Umbraco 17 runs on .NET 10, so the project moves up from .NET 8 (we pinned 10.0.300 so every machine builds alike). Umbraco and each package you keep, such as uSync, forms and import tools, go to their 17 versions. Seeing template changes without a rebuild during development needs one extra package. ## 4. Remove what Umbraco 17 took away A build shows what no longer exists. For us: a setup line for the old installer; Smidge, the old CSS and JavaScript bundler, which we replaced with direct links; and macros, which are gone entirely, so any template using one must be rewritten (we retired a leftover grid template). ## 5. Back up, start the site and let it upgrade the database With a backup taken, switch on Umbraco's unattended upgrade setting and start the site. Umbraco 17 then upgrades the database itself: converting Block List content, migrating rich text settings, converting dates to UTC and updating its backoffice login system (OpenIddict). Watch the log until it reports completion. Rich text editors move from TinyMCE to TipTap automatically, but check their settings afterwards. ## 6. Fix what the first start shows you The backoffice can look fine while the public site fails, because it doesn't use your templates. Load a page of every type and read the log. Our first start showed two failures, covered under *What usually goes wrong* below. ## 7. Re-sync your content with uSync If you use uSync to keep site structure under version control, let it export a fresh set for 17 on first start (ours was **795 items**) and treat that as the source of truth. Keep the old files for reference; don't import them. ## 8. Get ahead of Umbraco 18 The build also warns about features due to be removed in 18. For us the big one was how templates move around the content tree (a page's children, parent, descendants and ancestors). We replaced it now with helpers built on the newer approach, so the next upgrade won't be a rewrite. ## What usually goes wrong From our own projects, not the manual. ### Every page of the public site returned an error An invisible marker character (a UTF-8 byte-order mark) at the start of our template files stopped the template compiler (error RZ2005), which took down every front-end page at once. The backoffice was unaffected. We removed the markers and added an editor setting so they can't come back. ### Pages using an old image property broke after the upgrade A property still used the legacy Media Picker, which Umbraco 17 removed, so the site treated its value as plain text and the part of the page expecting an image crashed. Switching the property to the current media picker fixed it. Do this on 13 before you upgrade. ### uSync crashed on startup Two content files had the same identifier, because a renamed item left its old file behind, and uSync refused to import either. Deleting the stale duplicate fixed it. Check for duplicates before any full import. ### Importing a page type failed with a database error A new property's identifier clashed with a property on a different page type (SQL error 2601). These identifiers must be unique across every page type, not just the one you're editing, so give each new property a fresh one. ### The RSS feed and similar features returned nothing On a multi-language site, Umbraco only lists pages in the current language, and features that run outside a normal page visit, such as an RSS feed, don't have one. Tell them which language to use before they look for pages. ### Dates came back without a time zone Dates read from Umbraco 17 are no longer marked as UTC, so converting them to UTC shifted them. Format dates explicitly, for example in the standard RSS date format, instead of converting them. ## Do it yourself, or get help? If your site uses a handful of well-maintained packages, has no custom backoffice extensions and little custom code, a developer comfortable with .NET can do this in a few days on staging. If you rely on a theme or package with no Umbraco 17 release, have custom backoffice extensions, or can't afford the public site to go down, get help: that's where upgrades stall, and where we spend most of our time on them. Every site's mix is different, so the plan depends on what yours relies on. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [63Digital Our own site, upgraded from Umbraco 13 to 17 LTS in one jump and rebuilt on code-owned templates: faster, free of a third-party theme, and built to be found in search and AI answers.](https://63digital.com/work/63digital/) FAQ ## Common questions ### Do I have to upgrade to 14, 15 and 16 first? No. We went straight from 13.13 to 17.4. Umbraco applies the database changes for the versions in between automatically when the site first starts. ### How long does an Umbraco 13 to 17 upgrade take? For our own site it was 12 days from the first preparation work to a site running on 17. Packages without a 17 release and custom backoffice code are what add time, not the database upgrade itself. ### Will my AngularJS backoffice customisations still work? No. Since Umbraco 14 the backoffice has been built on web components, a different technology, so custom property editors, dashboards and plugins written in AngularJS have to be rebuilt. ### When does Umbraco 13 stop getting security fixes? Umbraco 13 reaches end of life on 14 December 2026. Umbraco 17 LTS is supported until 27 November 2028. ### Should I wait for the next LTS instead? The next LTS, Umbraco 21, is due in December 2027, a year after 13's end of life. Moving to 17 now keeps you supported, and 17 to 21 will be a smaller jump. Keep reading ## Related guides [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) ## Want us to run your Umbraco upgrade? Tell us about your site and packages. We'll tell you what the move to 17 involves and what it will take. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/rescue/ Platforms # Software rescue Apps and sites that are fragile, stuck or orphaned, taken on and made safe to run. In short 63Digital takes on software that other people started: apps built with AI coding tools that need to be production-ready, sites whose developer has gone, and platforms stuck on an old version or theme. We audit first, fix what matters most, and leave you with something you can safely run and change. Platforms ## Platforms we work with [AI-built apps Built it with Cursor, Claude, Lovable, Bolt or Replit, and now real users and real money are involved? We make AI-built apps safe to run. 2 guides](https://63digital.com/rescue/ai-built-apps/) [Website health check Not sure who looks after your website? We'll find out what it runs on, who holds the keys and whether the backups work. £250 + VAT, and the £250 comes off any work you then go ahead with.](https://63digital.com/rescue/website-health-check/) Guides ## How to, from jobs we've done [AI-built apps How to audit an AI-built app before launch Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review.](https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/) [AI-built apps Why AI-generated code breaks under real traffic (and how to fix it) AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries.](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) [WordPress How to take back your WordPress site when your developer has gone If you can still log in to wp-admin as an administrator, you can recover the site without the old developer or host. Copy it to hosting in your own name with a migration plugin, find your domain's registrar with a WHOIS lookup and recover that account, then re-license only the premium plugins the site really uses, in the business's name.](https://63digital.com/cms/wordpress/recover-wordpress-site-after-developer-leaves/) [Umbraco How to upgrade Umbraco 13 to 17 You can upgrade Umbraco 13 straight to 17 in one jump: update to the latest 13, confirm every package has a version for 17, move to .NET 10, update Umbraco and let it upgrade the database on first start. That part is quick. The time goes on packages without a 17 release and on custom code relying on removed features.](https://63digital.com/cms/umbraco/upgrade-umbraco-13-to-17/) [WooCommerce How to update a customised WooCommerce theme without losing your changes Before you update, find every change made to the theme and its companion plugin, and move them where updates can't overwrite them, such as a child theme or a small plugin. If you can't yet, record which files were changed so you can re-apply them. Then update the theme and WooCommerce together on staging and check for outdated templates.](https://63digital.com/ecommerce/woocommerce/update-a-customised-woocommerce-theme/) ## Got software you're worried about? Tell us what it is and what's going wrong. We'll tell you honestly whether it needs a fix, a hardening pass or a rebuild. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/rescue/ai-built-apps/ [← Rescue](https://63digital.com/rescue/) Platform # AI-built app rescue Built it with Cursor, Claude, Lovable, Bolt or Replit, and now real users and real money are involved? We make AI-built apps safe to run. AI-built apps Audits Hardening In short 63Digital audits, fixes and hardens apps built with AI coding tools so they're safe in front of real users. We build with AI every day, and our own pre-launch audits keep finding the same problems: missing transactions, race conditions, slow queries, secrets in the repo and development settings on public hosts. We find them in your app, fix them, and add the checks that stop them coming back. At a glance 96% Of commits AI-assisted on one of our own builds 1,759 Unit tests on one AI-assisted platform ~60 → ~28 Queries on a page after one N+1 fix [Talk to a developer](https://63digital.com/contact/) How we help ## What we do 01 ### Pre-launch audit A focused review of security, data integrity, concurrency, performance and deployment before real users arrive, with a prioritised list of what to fix. 02 ### Stabilise & fix We fix the findings in your codebase: transactions, locking, query performance, authentication and environment configuration. 03 ### A pipeline that holds the line Tests, secret scanning and dependency checks on every change, so fixes stay fixed while you keep building with AI. 04 ### Take over or pair Hand the app to us to run and extend, or keep building with your AI tools while we review and harden what ships. AI-built apps guides ## How to, from jobs we've done [How to audit an AI-built app before launch Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review.](https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/) [Why AI-generated code breaks under real traffic (and how to fix it) AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries.](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) Is it a fit? ## Is this for you? ### A good fit when - ✓ Your app works in demos but you're nervous about real users or real money - ✓ It was built with AI tools and nobody has reviewed the code as a whole - ✓ It takes payments, bookings or stores personal data ### Probably not when - – It's still a throwaway prototype (keep iterating, and call us before you launch) - – You want a full rebuild by default (we'll only recommend one if the code really can't be saved) Related: [Applied AI](https://63digital.com/services/applied-ai/), [Bespoke platforms](https://63digital.com/services/bespoke-platforms/) FAQ ## Common questions ### Can you fix an app built with Cursor, Lovable, Bolt or Replit? If the code lives in a repository, we can review it like any other codebase. We'll tell you up front if it's built on a stack we wouldn't take on, rather than learning on your time. ### Is AI-generated code insecure? Not inherently. We build with AI assistance every day. But it's written to make the feature work, not to survive two users at once, a retried webhook or a leaked config file. Those gaps need a deliberate review. ### What does an AI-built app audit cover? Secrets and environment configuration, authentication and access, transactions and payment flows, concurrency, query performance, tests and the deployment pipeline. Our pre-launch audit guide walks through the checklist. ### Do I have to stop using AI tools? No. Keep building with them. The fix is guard-rails: tests, code review, a pipeline that blocks secrets and known-vulnerable packages, and conventions written down so the assistant follows them. ## Built it with AI? Let's make it safe to launch. Tell us what the app does and how it was built. We'll tell you where the risks are and what it will take to fix them. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/ [← AI-built apps](https://63digital.com/rescue/ai-built-apps/) Guide # How to audit an AI-built app before launch By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Our own AI-assisted .NET builds, 2025–2026 In short Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review. 2 Audit passes it took to close the gaps 160 Security warnings on third-party packages cleared 545 Real emails one test run sent 318s → 28s Automated test run after a fix ## Before you start - ✓ Access to the full code repository, including its history - ✓ A list of every server the app runs on, and its settings - ✓ A staging copy you can break, with test payment keys - ✓ Query logging or tracing switched on - ✓ Two browsers (or two people) to test simultaneous use ## 1. Find the secrets, including the ones in history Search the whole code history, not just the current files, for passwords, keys and database connection details. On our own builds we've found a live email-provider key in a settings file, and a database connection string that was removed, then accidentally committed again. History keeps deleted secrets, so **change anything that was ever committed**, and keep secrets in the hosting platform's settings, not the code. ## 2. Check which environment the live site thinks it's in AI-built apps are usually developed in "Development" mode, and it quietly follows them to the first public server. On one of our staging servers it switched off an IP allow-list, created admin logins with well-known details, and exposed detailed error pages and a database upgrade tool. Set the environment on every server, make demo data opt-in, and keep anything that can create or delete databases out of the web app. ## 3. Walk every way into the app - Every page, including ones packages add: a login package exposed a change-password page we never meant to ship. - How passwords and PINs are stored: we replaced weakly hashed PINs with proper password hashing and a lockout (5 attempts per 5 minutes). - Whether changing the number in a document's web address opens someone else's: files behind a bare "logged in" check could be fetched in sequence. - Whether emailed login links and tokens expire. ## 4. Follow the money through one transaction Anything that saves several things (an order, its items, a payment, an audit record) must succeed or fail as a whole. We found a deposit recorded *after* its order, so a failure in between left an order marked paid with no payment. Emails and other side-effects go out only **after** the save succeeds. For payments, the app must tell the provider when a failure is worth retrying (a blanket "all fine" reply stops the retries), handle repeat notifications harmlessly, and regularly check for payments taken that never became orders. ## 5. Test what happens when two people click at once In two windows, as two users, do the same thing at the same moment: book the last item, edit the same record, pay the same order. AI-generated code almost always checks, then acts ("is it available? then book it"), which is only safe under a lock. The companion guide, [why AI-generated code breaks under real traffic](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/), covers the fixes. ## 6. Count the database calls on your busiest pages With query logging or tracing on, load the pages real users will hit and watch whether database calls grow with the number of items (the "N+1" problem). One of our pages fetched availability three times per ticket type; batching took it from about 60 database calls to about 28, and it stopped growing with the number of events. ## 7. Make the automated checks enforce it, then check they run Every proposed change should automatically run the tests, scan for secrets and check third-party packages for known vulnerabilities, blocking the change rather than just warning. One pass cleared 160 vulnerable-package warnings. Then prove each check runs: our new secret scan had a broken pattern, so it failed every time and nothing after it ran until we noticed. ## 8. Do a second pass The first round of fixes is rarely complete, whoever writes them. A second audit of our own build six weeks later found clash protection never connected on three kinds of record, and a booking safeguard other code went straight around. Self-review isn't proof either: an earlier performance report on one platform rated overselling, deadlocks and excessive queries as solved or low risk. All three turned out to be real. ## What usually goes wrong From our own projects, not the manual. ### Our new automated check failed on every run We added a secret-scanning step whose exclusion pattern was broken, so it errored immediately and nothing after it, including the build and tests, ever ran. Check a new safeguard by making it fail on purpose, then pass. ### A test run sent 545 real emails The tests started the real app, background jobs included, so 138 tests started 138 copies of the app that all sent email to one address. Limit which background jobs tests may run, and swap in an email sender that discards mail. ### Turning off Development mode broke the database setup The code that created demo logins also created essential reference data, so switching Development off would have left a new database unusable. Separate reference data (needed everywhere) from demo data (development only). ### A secret was removed, then came back A database connection string taken out in one commit was added back by a later commit that swept up every file. Stop tracking the settings file (or keep secrets outside the code) so it can't be committed again, and change the credential either way. ### The coverage report made every change wait 8 minutes Measuring test coverage across everything made the same 819 tests take 318 seconds in the automated pipeline. Limiting it to the app's own code and skipping generated code brought it to 28 seconds, with the same report. ## Do it yourself, or get help? If you have a developer comfortable with your stack, they can work through the checklist on a staging copy: most items take hours, not days, and how deep each one goes depends on what the app does. If nobody has reviewed the code as a whole, the app takes payments or personal data, or you're launching soon, get a second pair of eyes. The expensive problems are the ones that only appear with real users. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) FAQ ## Common questions ### How long does it take to audit an AI-built app? It depends on size, but the checklist itself is quick to run. The time goes on fixing what it finds, especially anything involving payments or several people acting at once. ### Can't I just ask the AI to review its own code? It helps, but a review, AI or human, isn't proof. On one of our platforms an earlier written review rated overselling, deadlocks and excessive database queries as handled; all three turned out to be real. Tests that reproduce the problem are the proof. ### What's the most common problem you find? Check-then-act logic: code that checks whether something is available, then acts on it, without locking it first. It works for one user and fails the moment two arrive at once. ### Do I need to change passwords and keys if I've deleted them from the code? Yes. Deleting a secret from the latest version leaves it readable in the code's history. Change it, then keep secrets out of the code entirely. Keep reading ## Related guides [AI-built apps Why AI-generated code breaks under real traffic (and how to fix it) AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries.](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) ## Want us to audit your AI-built app? Tell us what it does and how it was built. We'll run the checklist, fix what matters and leave the checks in place. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/ [← AI-built apps](https://63digital.com/rescue/ai-built-apps/) Guide # Why AI-generated code breaks under real traffic (and how to fix it) By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on .NET, Entity Framework and SQL Server, on our own AI-assisted builds In short AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries. 2 Orders created for one payment 9 → 4 Places in the code that changed ticket status ~60 → ~28 Database queries on one page ~15× Throughput of a payment-collection job ## Before you start - ✓ A staging copy of the database you can put under heavy load - ✓ Query logging or tracing switched on for the busiest pages - ✓ A list of every action that touches money, stock or bookings - ✓ A way to make two requests at exactly the same time (a test tool, or two people) ## 1. "Check, then act": lock what you're about to change The most common pattern in AI-generated code is to check that a slot is free, then book it. Two customers clicking together both pass the check and both get the slot. The fix is to repeat the check inside the database transaction, with the records locked in a consistent order. A check on the form still gives a friendly early message, but only the locked check is a guarantee. ## 2. Payment confirmations arriving twice: claim the work in one step After a card payment, the provider's notification and the customer's returning browser often arrive together. If each creates the order when it finds none, both get through: on one of our platforms, that meant two orders for one payment. Instead, each tries to claim the payment in one database step and only the winner builds the order, backed by a rule allowing one order per payment. A claim abandoned by a crash can be retaken after a couple of minutes, and losing the race is treated as normal, not an error. ## 3. Deadlocks: always lock in the same order Two baskets adding the same two items in opposite orders can block each other until the database gives up on one of them (a deadlock). When we removed a lock to cure one deadlock, it simply moved to other records: the answer was a consistent order, not more or fewer locks. ## 4. Lost updates: make "someone else changed this" work When two people edit a record, the second save can silently overwrite the first. A version stamp catches this only if it travels with the form and the database is told which version the person started from. A common AI mistake passes it back in a way the code quietly ignores, so the protection never fires. ## 5. Too many queries: fetch once, pass the results down A lookup per item in a list means a database call per item (the "N+1" problem), and helpers calling other helpers multiply it. One grouped query, with the results passed down, fixes it. On one page, about 60 database calls became about 28; for ten ticket types the estimate was around 150 down to about a dozen. ## 6. Batch jobs: don't lose your place as the list shrinks A job processing "expired" records 100 at a time, a page at a time, skips work: each processed batch leaves the list, so the next page starts 100 records too far in. Ours stepped over 100 still-expired records per batch. Take the first 100 each time, or have parallel workers each claim their own records. ## 7. Prove each race with a test that fails every time Races that only reproduce by luck don't get fixed. Our test tool pauses one simulated user at a chosen point in its database work, so two users can be interleaved exactly. Each known race became a test kept switched off until fixed; passing when switched on is what "fixed" means. It caught a plausible fix in an AI-drafted plan that would have left a basket reporting success while holding one ticket instead of four. ## What usually goes wrong From our own projects, not the manual. ### Concurrency protection was set up but never used Three kinds of record had a version stamp to catch clashing edits, but no form carried it and nothing handled the clash, so two people editing the same record silently overwrote each other. When you wire it up, the database has to be told which version the person started from: simply setting the value does nothing. ### A payment retry reused the same reference After a card was declined, the retry sent the same duplicate-prevention key, so the payment provider rejected every attempt and the customer couldn't pay. Use a new key only after a definite decline. Keep the same one after a timeout, or you risk charging twice. ### A failed tracking write cancelled a paid order A non-essential marketing record was saved in the same transaction as the order. When it failed, the whole order rolled back after the card had been charged. Keep side-effects out of the order's transaction, or make sure their failure is harmless. ### The concurrency test passed while the bug was live A test booking 7 and 5 tickets against 10 stayed within stock, so it passed, while two baskets were actually taking the same tickets. Test the thing you care about (who holds which ticket), not just the totals. ### The first fix over-reported success Our first fix trusted the error details after a clash and counted tickets as won that had actually been lost. After a clash, re-read the result from the database. ## Do it yourself, or get help? If your app has one of these patterns and your developer is comfortable with database transactions and locking, the fixes are well trodden. Not every app has every pattern, and the right fix depends on how it's built, so start with anything that touches money or stock. If you're seeing duplicate orders, overselling or deadlocks in production, or you're not sure where the races are, get help: these bugs rarely show up in testing and cost real money when they happen. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) FAQ ## Common questions ### Why does my AI-built app create duplicate orders? Usually because the payment provider's confirmation and the customer's browser both try to create the order at the same moment, and the duplicate check looks before it writes. The fix is to claim the payment in a single database step, backed by a rule that allows only one order per payment. ### How do I stop overselling or double-booking? Re-check availability inside the database transaction with the records locked, always in the same order, rather than relying on a check made beforehand. A check on the form is still useful for a friendly message, but it isn't a guarantee. ### What is an N+1 query? It's a database query run once per item in a list instead of once for the whole list, so a page with 50 items makes 50 or more database calls. The fix is to fetch everything in one grouped query and pass the results down. ### Why don't these bugs show up in testing? Because tests usually run one request at a time. Races need two requests interleaved at exactly the wrong moment, so you need tests that force that interleaving. Keep reading ## Related guides [AI-built apps How to audit an AI-built app before launch Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review.](https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/) [Square How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) ## Seeing duplicates, oversells or deadlocks? Tell us what's happening. We'll find the race, fix it properly and add a test that proves it stays fixed. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/rescue/website-health-check/ [← Rescue](https://63digital.com/rescue/) Platform # Website health check Not sure who looks after your website? We'll find out what it runs on, who holds the keys and whether the backups work. £250 + VAT, and the £250 comes off any work you then go ahead with. Health check Security Maintenance In short A 63Digital website health check is a fixed-price review of a business website for £250 + VAT. We check what the site runs on and how out of date it is, who holds the domain, hosting and admin logins, whether updates are being applied, and whether the backups work. You get a short, plain-English report: what's fine, what needs attention now and what can wait. If you then ask us to do any of the work, the £250 comes off it. At a glance £250 + VAT, fixed price for the check £250 off Any work you then go ahead with 1 report Short, plain English: fix now, fix later, fine [Book a health check](#health-check) How we help ## What we check 01 ### Platform and versions What the site runs on (WordPress, WooCommerce, Umbraco or a custom build) and how far behind the current, supported versions it is. 02 ### Accounts and ownership Who holds the domain, the hosting and the admin logins, and whether the business could get into each one tomorrow if it had to. 03 ### Updates and security Whether the CMS, plugins and the server underneath are being patched, and anything installed with a known vulnerability. 04 ### Backups Where they are, how often they run, and whether anyone has ever checked one can be restored. 05 ### The report What's fine, what needs attention now and what can wait, in plain English, with what we'd recommend for each. Is it a fit? ## Is it for you? ### A good fit when - ✓ Nobody's quite sure who looks after the website any more - ✓ The developer or agency who built it has moved on - ✓ The business relies on it for enquiries, bookings or payments ### Probably not when - – A developer is already actively looking after it (ask them the five questions first) - – The site is already down or hacked (call us instead: that's a rescue, not a check) FAQ ## Common questions ### What does a website health check cost? £250 + VAT, fixed. If you then ask us to do any of the work, whether that's fixing what we find or looking after the site from then on, the £250 comes off it. ### Do I have to use you afterwards? No. The report is yours. If you'd rather keep things in-house or with your current provider, it tells them what to look at. ### What do you need from me? The website address and, ideally, access to the hosting and the site's admin. If you don't know where those logins are, that's fine: finding out who holds them is part of the check. ### Which websites can you check? WordPress and WooCommerce most often, along with Umbraco, Shopify and custom-built sites. If yours runs on something we don't know well, we'll tell you up front. Website health check ## Book a health check We find out what your site runs on, who holds each account, whether it's being updated and whether the backups work. You get a short, plain-English report. £250 + VAT, fixed price £250 off any work you then go ahead with Privacy Policy & Terms apply. --- Source: https://63digital.com/payments/ Platforms # Payment integration for platforms Card payments, marketplaces and payouts built into your platform, not bolted on. In short 63Digital builds payments into platforms: Stripe Connect marketplaces that take a fee and pay out to sellers, in-person payments with Stripe Terminal and Tap to Pay on iPhone, ticketing checkouts on Stripe and Square, and a checkout that runs on seven gateways. We build the webhooks, refunds, reconciliation and fee billing behind them, not just the pay button. Platforms ## Platforms we work with [Stripe Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. 5 guides](https://63digital.com/payments/stripe/) [Square Square online payments and marketplace fees, built alongside Stripe and kept in lockstep. 1 guide](https://63digital.com/payments/square/) [Apple & Google Wallet Tickets, vouchers and memberships that live on the customer's phone, not in their inbox. 1 guide](https://63digital.com/payments/apple-google-wallet/) Guides ## How to, from jobs we've done [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [Stripe How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) [Stripe How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) [Stripe How to let AI agents pay your business with Stripe Publish a price that AI assistants can read, and accept the single-use, spending-limited payment tokens Stripe issues on a buyer's behalf. Two open standards do this: the Machine Payments Protocol (MPP) for a quick pay-and-go, and the Agentic Commerce Protocol (ACP) for a full checkout. Your existing Stripe account takes the money, and card details never reach you.](https://63digital.com/payments/stripe/let-ai-agents-pay-you-with-stripe/) [Square How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) [Apple & Google Wallet How to add Apple Wallet and Google Wallet tickets to your platform Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified.](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) ## Need payments built into your platform? Tell us who pays whom, and how. We'll design the flow, the fees and the reconciliation before a line of code. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/ [← Payments](https://63digital.com/payments/) Platform # Stripe Connect & Terminal development Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. Stripe Connect Terminal Tap to Pay In short 63Digital builds on Stripe Connect and Terminal: multi-tenant platforms that onboard merchants, take payments on terminals, Tap to Pay on iPhone, e-commerce and payment links, calculate and collect platform fees, and settle funds automatically. Our Paypolli platform runs destination charges across four channels and bills interchange back to merchants every 15 minutes. At a glance 4 Payment channels on one Connect platform 15 min Interchange billing cycle 6 Webhook endpoints, live and test [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on Stripe 01 ### Connect marketplaces Express onboarding, destination charges and application fees, with readiness tracked from Stripe's own webhooks. 02 ### In-person payments Stripe Terminal readers and Tap to Pay on iPhone, from a React Native app on iOS and Android. 03 ### Fees & reconciliation Fee calculation in integer pence, interchange recovered from merchants automatically, payouts reconciled. 04 ### Secure integration A reverse proxy in front of the Stripe API so apps and plugins never hold your platform key. 05 ### Webhooks & refunds Signature-checked, idempotent webhooks, and refunds that reverse the transfer but keep your fee. Stripe guides ## How to, from jobs we've done [How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) [How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) [How to let AI agents pay your business with Stripe Publish a price that AI assistants can read, and accept the single-use, spending-limited payment tokens Stripe issues on a buyer's behalf. Two open standards do this: the Machine Payments Protocol (MPP) for a quick pay-and-go, and the Agentic Commerce Protocol (ACP) for a full checkout. Your existing Stripe account takes the money, and card details never reach you.](https://63digital.com/payments/stripe/let-ai-agents-pay-you-with-stripe/) Proof ## Our work on Stripe [![Paypolli](https://63digital.com/media/mt5whass/paypolli-card.webp?width=960&format=webp&quality=85&v=1dd4f48c36504c0&hmac=7b5f8c39bad50c73e188c14ed64b4e0744899268bf87813f974d8733584fa51c) Fintech · Payments Paypolli Multi-tenant fintech A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically. .NET Stripe Connect YARP Payments](https://63digital.com/work/paypolli/) [![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688) Events · Ticketing Rebll Tickets Multi-tenant SaaS Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. .NET Multi-tenant Marketplace Payments](https://63digital.com/work/rebll-tickets/) [![Gift Voucher Solutions](https://63digital.com/media/dbfsb5dw/gift-voucher-solutions-card.webp?width=960&format=webp&quality=85&v=1dd4f48c37de3f0&hmac=b455148f0005079a6fd2a9edb7f7475a7f735ff552bb8a21964227b7231ec819) eCommerce · Gift cards Gift Voucher Solutions Multi-tenant platform A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers. .NET React Stripe Connect Multi-tenant](https://63digital.com/work/gift-voucher-solutions/) Is it a fit? ## Is Stripe right for you? ### A good fit when - ✓ You're a platform taking payments on behalf of other businesses - ✓ You need in-person and online payments in one system - ✓ You need to take a fee, or recover processing costs, automatically ### Probably not when - – You only need a single shop checkout (a hosted checkout or your e-commerce platform's plugin will do) Related: [System integration](https://63digital.com/services/system-integration/), [Bespoke platforms](https://63digital.com/services/bespoke-platforms/) FAQ ## Common questions ### Destination charges or direct charges? It depends who should be merchant of record. When your platform is, destination charges keep it in control: Paypolli runs them across four channels. When the seller must be, as with ticket promoters and voucher merchants, use direct charges on their account and take an application fee. ### Which Stripe Connect account type should I use? We've built on Express accounts: Stripe hosts onboarding and the merchant dashboard, while your platform controls charges and fees. It suits most platforms that don't want to build their own onboarding. ### Can Stripe take payments on an iPhone without a card reader? Yes. Tap to Pay on iPhone turns the phone into a contactless reader through Stripe Terminal. It needs Apple's Tap to Pay entitlement, and we've shipped it in a React Native app. ### How do platform fees work on Stripe Connect? You set an application fee on each payment. Stripe takes it as the funds move to the merchant, and refunds can reverse the merchant's transfer while leaving your fee in place. Platforms ## Related platforms [Square Square online payments and marketplace fees, built alongside Stripe and kept in lockstep. 1 guide](https://63digital.com/payments/square/) [Apple & Google Wallet Tickets, vouchers and memberships that live on the customer's phone, not in their inbox. 1 guide](https://63digital.com/payments/apple-google-wallet/) ## Building on Stripe? Tell us who pays whom and how you make money. We'll design the Connect set-up, the fees and the reconciliation with you. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/ [← Stripe](https://63digital.com/payments/stripe/) Guide # How to build a Stripe Connect marketplace in .NET By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Stripe Connect Express accounts · Stripe .NET library 43 · .NET 8 In short Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you. 4 Payment channels on one payment model 3 Merchant readiness states 6 Stripe notification endpoints, live and test 517 Commits on the platform ## Before you start - ✓ A Stripe platform account with Connect switched on, in test mode - ✓ Your fee model written down: what you charge on each payment channel - ✓ A decision on how payments are structured (who the payment is created on) before any build starts - ✓ A way to receive Stripe's event notifications while testing ## Choosing the account type and payment model On [Paypolli](https://63digital.com/work/paypolli/) we run Stripe's **Express accounts** with **destination charges**: Stripe hosts merchant sign-up and the merchant dashboard, your platform creates every payment, and your fee is taken as the money moves. We've also built a product where payments are created on the merchant's own account (direct charges). It works, but every later step must then name the merchant's account, and missing one fails in ways testing rarely catches. [Our ticketing marketplace guide](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) covers when that model fits. ## Signing merchants up Each merchant gets a Stripe account able to take card payments and receive transfers, and Stripe's hosted sign-up collects their details. Sign-up links expire, so an expired link should quietly produce a fresh one, not an error. ## Deciding when a merchant is ready Finishing sign-up doesn't mean a merchant can trade. We read their status from Stripe's account notifications, with three states rather than two: - **Complete:** payments and payouts on, details submitted, nothing due now or later. - **Needs attention:** working, but Stripe wants something. Tell the merchant before it becomes a block. - **Has issues:** anything else. Don't take payments for them. ## Taking payments and setting fees Every payment names the merchant as the business being paid and the recipient of the money, and carries your fee. On Paypolli that holds on all four channels: card readers and [Tap to Pay](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/), card-not-present, hosted checkout and payment links. Fees are worked out in whole pence with every part rounded up: your processing cost, your margin, and a surcharge for the channel. Automated tests pin this down at the edges, where a penny either side of a rounding boundary should change the fee exactly as intended. ## Refunds A refund pulls the merchant's share back from them while your fee stays with you. Each refund carries a unique reference so a retry can't refund twice, and a refund that's later cancelled or fails puts the amount back. ## Notifications you can trust - Separate endpoints for merchant, platform and reporting events, in live and test: six on Paypolli. - Check every notification genuinely came from Stripe, and make sure a Stripe library upgrade can't break how they're read. - Assume every event arrives twice, and make the second copy harmless. ## What usually goes wrong From our own projects, not the manual. ### Payments went out in the wrong currency The code used the platform's own currency instead of the merchant's. Always charge in the currency of the merchant's Stripe account. ### Merchants' net totals came out too low Card reader charges were subtracted twice when working out what the merchant received. Test the net figure end to end, not just the fee. ### Fees stack up on in-person payments Tap to Pay adds Stripe's own per-transaction cost on top of the card fees, so the Tap to Pay surcharge had to rise to recover it. Work out each channel's real cost before setting its fee. ### Failed card checks created phantom transactions Each failed 3D Secure attempt on the same payment produced its own charge record. We de-duplicate on the latest charge, not the payment. ### A double-click took two payments A card-not-present form submitted twice and created two charges. Give each form a unique reference so a repeat is ignored, and disable the button once it's pressed. ### Stripe notifications failed on refunds without a note The handler expected a refund note that isn't always there, and returned an error. Never assume optional details are present. ## Do it yourself, or get help? If you're building a straightforward marketplace and your developers are comfortable with Stripe's event notifications and safe retries, Stripe's Connect documentation will get you a long way. If money moves between several parties, your fees need to recover real processing costs, or you're taking in-person payments too, get help early: payment-model and fee decisions are expensive to change once merchants are live. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) FAQ ## Common questions ### What's the difference between destination and direct charges? With destination charges your platform creates the payment and Stripe passes the merchant's share on, minus your fee. With direct charges the payment is created on the merchant's own account, and everything that follows has to name that account. ### When is a connected account ready to take payments? When payments and payouts are switched on, their details are submitted, and nothing is due now or later. Read that from Stripe's account update notifications, not from the merchant reaching the end of sign-up. ### How do I refund without losing my platform fee? Refund so that the merchant's share is taken back from them but your application fee isn't refunded. The customer gets their money back and your fee stays with you. ### How many webhook endpoints do I need? We use separate endpoints for merchant account, platform and reporting events, each in live and test. That way each has its own secret and can be retried independently. Keep reading ## Related guides [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [Stripe How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) [Stripe How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) ## Building a marketplace on Stripe? Tell us who pays whom and how you charge. We'll design the Connect set-up and build it properly. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/ [← Stripe](https://63digital.com/payments/stripe/) Guide # How to keep Stripe keys off mobile apps and plugins with a reverse proxy By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on YARP 2.1 (Microsoft's reverse proxy) · .NET 8 · Stripe API In short Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved. 4 Changes made to every request 0 Stripe secret keys on client devices 403 Refusal that blocks a merchant instantly ## Before you start - ✓ The list of Stripe features each app or plugin genuinely needs - ✓ A way to issue and withdraw a key for each merchant - ✓ Separate live and test platform keys, kept on the server only - ✓ Apps and plugins whose Stripe library can be pointed at a different address ## Why put a gateway in front of Stripe Apps, plugins and partner integrations all need Stripe, but none should hold your platform's secret key or decide which merchant gets paid. A reverse proxy (a gateway that relays requests) lets them use Stripe's standard libraries while the gateway decides the account, the fee and what's allowed. We built one for [Paypolli](https://63digital.com/work/paypolli/). ## Only pass on what's approved We list each Stripe request clients may make, such as creating a payment, and whether it needs the merchant's account and your fee adding. Anything else goes nowhere. The list comes from reviewing what each client actually needs. ## Give each client its own key Each merchant integration gets its own gateway key, mapped to the merchant's Stripe account, fee, fee type and live or test. Your Stripe secret stays hidden, and blocking a merchant is a straight refusal at the gateway, not a key rotation. ## Change every request, in a fixed order 1. **Remove** any merchant account the client named itself. 2. **Replace** the client's key with your platform key, live or test. 3. **Add** the merchant's account from your own records, where needed. 4. **Add** your fee, the merchant and the recipient to payment requests. A rewritten request's declared size must be updated to match, or Stripe rejects it. ## Point the clients at the gateway Most Stripe libraries can be pointed at a different address, so client code barely changes. We did the same in a modified version of WooCommerce's Stripe plugin, so every call, including Apple Pay domain registration, went through the gateway. Webhooks come from Stripe to you, so they skip the gateway: check they're genuine at your own endpoints. ## What usually goes wrong From our own projects, not the manual. ### A client could name someone else's account Proxies pass request headers on by default, so a client could name a merchant account of its own choosing. Always remove it first, then set it from your own records, and make sure a failure to remove it blocks the request. ### Rewritten requests were rejected by Stripe After the fee was added to a request, its declared length no longer matched its content. Update the length whenever the request body changes. ### Don't let the gateway leak what it protects Logging incoming keys, or a key check that never actually rejects anything, undoes the point of the gateway. Log which key was used, never the key itself, and test that bad keys fail. ### A plugin fork needed every call rerouted Pointing a payment plugin at the gateway meant overriding its Stripe address and replacing its secret key with the platform key, including side calls such as Apple Pay domain registration. ## Do it yourself, or get help? If your developers are comfortable with ASP.NET Core and your clients' Stripe libraries can be pointed at a different address, a gateway with a handful of approved requests and changes is a few days' work. If it will carry live money for many merchants, get it reviewed: request handling and key checks are exactly where a small mistake lets one merchant act as another. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) FAQ ## Common questions ### Can I put a publishable or secret Stripe key in a mobile app? Never a secret key. A gateway lets the app call Stripe with its own key that you can withdraw, while your platform key and the merchant's account are added on the server. ### Does a Stripe proxy break the Stripe SDKs? No. Most Stripe libraries let you change the address they call, so client code stays standard. Only the address and the key it sends change. ### Do webhooks need to go through the proxy? No. Stripe's event notifications come straight to your own endpoints, where you check they genuinely came from Stripe. Keep reading ## Related guides [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Stripe How to let AI agents pay your business with Stripe Publish a price that AI assistants can read, and accept the single-use, spending-limited payment tokens Stripe issues on a buyer's behalf. Two open standards do this: the Machine Payments Protocol (MPP) for a quick pay-and-go, and the Agentic Commerce Protocol (ACP) for a full checkout. Your existing Stripe account takes the money, and card details never reach you.](https://63digital.com/payments/stripe/let-ai-agents-pay-you-with-stripe/) [Stripe How to take payments with Tap to Pay on iPhone using Stripe Terminal Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.](https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/) [AI-built apps How to audit an AI-built app before launch Before an AI-built app meets real users, check eight things: passwords and keys left in the code or its history, whether the live site still thinks it's in development, every way in, whether multi-step saves succeed or fail together, two people acting at once, database load on busy pages, automated safety checks, and a second review.](https://63digital.com/rescue/ai-built-apps/audit-an-ai-built-app-before-launch/) ## Need your Stripe integration locked down? Tell us which apps and partners call Stripe. We'll put a proxy in front of it and take the keys off their devices. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/ [← Stripe](https://63digital.com/payments/stripe/) Guide # How to recover Stripe interchange fees from connected accounts automatically By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Stripe reporting · Hangfire · .NET 8 In short Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice. 15 min Billing check cycle 1 day Fee data per report 1 Bill per merchant per period ## Before you start - ✓ Interchange-plus pricing on your Stripe platform (otherwise there's nothing separate to recover) - ✓ A merchant agreement that lets you pass network costs on - ✓ Stripe's reporting notifications switched on, with their own endpoint - ✓ A way to run scheduled background jobs (we use Hangfire) ## Where the numbers come from Stripe's transaction-level fee report breaks down each merchant payment's cost, including network costs: the interchange and card-scheme fees you pay on interchange-plus pricing. On [the payments platform we built](https://63digital.com/work/paypolli/), that report decides what each merchant is billed. ## Letting Stripe say when data is ready 1. Stripe announces new report data. 2. We request a report for the previous day. 3. When it's ready, we download and store it (we used Azure Blob Storage). 4. A background job imports it. ## Counting each fee once Reports overlap and notifications repeat, so every row is matched on Stripe's fee reference before it counts. Network costs are then totalled per merchant. ## Billing on a schedule A recurring job creates one bill per merchant per period. Ours runs every 15 minutes with Hangfire. ## Collecting without double billing The money moves from the merchant's Stripe balance to your platform account (an account debit). Each bill's reference is built from what the bill *is* (organisation, account and billing period), not a random value, so Stripe treats a retry as the same bill. We also check for an existing bill first: the reference protects Stripe's side, the check protects yours. ## What usually goes wrong From our own projects, not the manual. ### A retry could bill a merchant twice Bills were labelled with a random reference, so a retried job looked like a new bill to Stripe. Build the reference from the organisation, account and billing period, and check for an existing bill first. ### Imports have to be safe to repeat Reports can overlap and Stripe resends notifications, so the same fee row can turn up twice. We de-duplicate every row on Stripe's fee reference before it counts towards a bill. ### Fee data lags the payment The transaction-level report covers completed days, so network costs arrive after the payment. Bill in arrears on a schedule rather than at the moment of payment. ## Do it yourself, or get help? If you're already on interchange-plus pricing and your developers know Stripe's reporting, the process above is a well-contained piece of work. If you're not sure what your pricing passes through, or your merchant terms don't cover recharging network costs, sort those out first. That's a commercial question before it's a technical one. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) FAQ ## Common questions ### What is interchange on Stripe? It's the fee the card issuer charges on each payment, shown in Stripe's transaction-level fee report as network costs alongside card-scheme fees. On interchange-plus pricing it varies from card to card. ### Can a platform charge connected accounts for Stripe fees? Yes, if your terms allow it. We total each merchant's network costs from Stripe's fee report and collect them from their Stripe balance on a schedule. ### How often should I bill interchange? Our job runs every 15 minutes and bills whatever complete periods are outstanding, but the data itself arrives daily, so a daily cycle works too. What matters is that each bill is labelled so it can never be taken twice. Keep reading ## Related guides [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) ## Losing margin to card fees? Tell us how your platform is priced. We'll work out what can be recovered and automate it. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/take-payments-with-tap-to-pay-on-iphone/ [← Stripe](https://63digital.com/payments/stripe/) Guide # How to take payments with Tap to Pay on iPhone using Stripe Terminal By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Stripe Terminal for React Native (beta) · React Native 0.78 · iOS and Android In short Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap. £0.30 Minimum card payment 2 Platforms (iPhone and Android) from one app Nov 2023 First shipped ## Before you start - ✓ Apple's approval to use Tap to Pay on iPhone in your app - ✓ A Stripe Terminal location for each merchant - ✓ A server that authorises each phone to act as a reader - ✓ A supported iPhone (and NFC-capable Android phones if you target both) - ✓ A Bluetooth card reader for fallback and testing ## Getting the app approved and set up We first shipped Tap to Pay in November 2023 on [a payments platform we built](https://63digital.com/work/paypolli/), from one app for iPhone and Android. - Apple must grant your app permission (an entitlement) to use Tap to Pay on iPhone. - The app must explain why it needs location (Stripe Terminal requires it) and Bluetooth (for external readers). - Android needs NFC permission and NFC switched on. ## Tying each phone to the right merchant Every Stripe Terminal reader, phones included, belongs to a location. We create one per merchant and only authorise a phone for the user's own location, with a clear error rather than a default if there isn't one: the wrong location means the wrong merchant gets paid. ## Connecting and taking payment The phone connects as a reader on the merchant's behalf and reconnects if dropped. Your server creates each payment with the merchant as recipient and your fee, as in [our Stripe Connect guide](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/). We set a £0.30 minimum and handle amounts in pence. ## Handling the device, not just the payment - Check NFC whenever the app resumes, not just at launch. - Offer a Bluetooth reader when the phone can't tap. - If a reader's update fails for low battery, tell the user to charge it. ## What usually goes wrong From our own projects, not the manual. ### Only one reader search can run at a time Searching for Bluetooth readers while the phone's own reader search was still running failed. Cancel the phone search first, and treat an 'already completed' response to the cancel as success. ### Error codes differ between iOS and Android The same cancel or decline comes back as different codes on each platform, for example Canceled on one and USER\_ERROR.CANCELED on the other. Map both before acting on them. ### Some phones can't do Tap to Pay Unsupported phones and NFC switched off both fail at the point of connecting. Detect it, explain it, and offer a Bluetooth reader instead, checking NFC again when the app resumes. ### Tap to Pay costs more to run Stripe Terminal adds its own per-transaction cost, so the Tap to Pay channel needed a higher surcharge than online payments. Price each channel on its real cost. ### The React Native upgrade broke the build A newer React Native combined with the latest version of a navigation library failed to build. Pinning both to compatible versions fixed it. Upgrade the Stripe Terminal library, React Native and other native parts together, not one at a time. ## Do it yourself, or get help? If you already have a React Native app and a Stripe Connect back end, adding Tap to Pay is mostly configuration plus careful device handling. If you're starting from scratch, need platform fees on in-person payments, or have to support both Tap to Pay and external readers, get help: most of the work is in the edge cases, not the happy path. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Paypolli A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.](https://63digital.com/work/paypolli/) FAQ ## Common questions ### Do I need a card reader for Tap to Pay on iPhone? No. The iPhone itself becomes a contactless reader through Stripe Terminal. Apple still has to approve your app for it, and a Bluetooth reader is a useful fallback. ### Does Tap to Pay work with Stripe Connect? Yes. The phone connects on behalf of the merchant's account, and your server creates each payment with the merchant as recipient and your platform fee added. ### Can one app do Tap to Pay on iPhone and Android? Yes. With Stripe Terminal's React Native library, the same code turns the phone into a reader on both. Only the platform set-up and some error codes differ. ### What's the minimum Tap to Pay payment? Card minimums apply. We enforce £0.30 in the app and handle every amount in pence. Keep reading ## Related guides [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Stripe How to recover Stripe interchange fees from connected accounts automatically Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.](https://63digital.com/payments/stripe/recover-stripe-interchange-fees-from-connected-accounts/) ## Want Tap to Pay in your app? Tell us about your app and your merchants. We'll add in-person payments on Stripe Terminal, fees and all. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/stripe/let-ai-agents-pay-you-with-stripe/ [← Stripe](https://63digital.com/payments/stripe/) Guide # How to let AI agents pay your business with Stripe By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 28 Oct 2026 Tested on Stripe Shared Payment Tokens (preview) · MPP · ACP 2026-04-17 · ASP.NET Core 10 · October 2026 In short Publish a price that AI assistants can read, and accept the single-use, spending-limited payment tokens Stripe issues on a buyer's behalf. Two open standards do this: the Machine Payments Protocol (MPP) for a quick pay-and-go, and the Agentic Commerce Protocol (ACP) for a full checkout. Your existing Stripe account takes the money, and card details never reach you. 3 Ways to buy our £3 coffee: web checkout, MPP and ACP 1 Charge per order, however many times an agent retries 5 min Life of each payment request we hand an agent 0 Card numbers that reach our server ## Before you start - ✓ A Stripe account in a country where agent payments are available (the UK is) - ✓ Something simple to sell first, with a fixed price and nothing to deliver - ✓ Separate sandbox and live keys, and a check you'll run after every release - ✓ A machine-readable description of your site, so agents can find what you sell - ✓ A decision on whether you need to know who is buying, or just get paid ## Try it: ask an assistant to buy us a coffee We sell one thing to AI agents: [a £3 coffee for the 63Digital team](https://63digital.com/coffee/). Ask an assistant that can make payments to "buy 63Digital a coffee". It reads [our page for AI agents](https://63digital.com/agents/), asks Stripe for a token that can only pay us, and only up to £3, then pays. You get a Stripe receipt by email. People can buy the same coffee with the button on that page. That's the whole idea: the assistant does the shopping, the buyer sets the limits, and the money arrives in your Stripe balance like any other payment. ## Decide what an agent may buy Start with something that has a fixed price and nothing to post: a donation, a deposit, a digital product, a booking fee. We chose a £3 coffee on purpose, so a mistake in testing costs pennies. Variable baskets, delivery and stock levels can come later, once you trust the basics. ## Choose how agents pay: MPP or ACP The two standards suit different sales, and we built both on our own site to compare them. - **MPP (Machine Payments Protocol)** works like a tip jar. The agent asks to buy, your site replies with the price, and the agent comes straight back with payment. No account, no basket. It suits small, fixed-price purchases. - **ACP (Agentic Commerce Protocol)** works like a checkout. The agent builds an order, can change quantities, sees the total and then pays. It suits real shops: several items, delivery options and an order confirmation page. If you're unsure, start with MPP for one product and add ACP when there's a basket to manage. ## Let Stripe hold the card The buyer's card stays with Stripe and the assistant's platform. What reaches you is a [Shared Payment Token](https://docs.stripe.com/agentic-commerce): a single-use permission tied to your business, capped at an amount and set to expire. You charge it like any other Stripe payment, so it appears in your dashboard, follows your payout schedule, and refunds work as normal. ## Decide whether you need to know who's buying For a tip jar, anonymous is fine. For anything with a receipt, a delivery or an account, you'll want a real person behind the agent. On our checkout, the agent first asks the buyer to confirm their email address with a sign-in link and a short code, so the receipt and any follow-up go to someone real. We review this per business: the extra step costs some convenience and buys a lot of trust. ## Make it findable Agents don't browse; they read. Publish what you sell, the price and how to pay in the places agents look: a page written for AI agents, a machine-readable list of your services, and a plain-text summary of your site. We list the coffee in all three, so an assistant can find it without being told where to go. ## Test in the sandbox, then go live Stripe's sandbox lets agents pay with test cards, so you can run the whole journey without moving money. When it works, swap in live keys and check one real payment end to end: the price, the receipt, the dashboard entry and the refund. ## What usually goes wrong From our own projects, not the manual. ### Retries could have charged twice Agents retry when a connection drops. Each order carries a unique reference that our server and Stripe both remember, so a repeat gets the original answer, not a second charge. In testing we resent a finished order and completed it again: one charge. ### Error messages gave away account details When a permission was missing, Stripe's own error text named our account and key. We now pass only card declines back to agents; everything else stays in our logs. ### Some cards need a code from the bank Cards that ask for 3-D Secure can't be finished by an agent, because there's no person at the bank's screen. We say so clearly, so the assistant can send the buyer to the normal checkout instead. ### Sandbox keys reached the live site Our first release ran on sandbox keys: agents could test, but real cards were declined. After every release, check that the payment page Stripe opens is a live one, not a test one. ## Do it yourself, or get help? If you already take payments through Stripe, have a developer comfortable with its API, and want one fixed-price product sold by agents, this is a small project: start with MPP and the sandbox. If you sell baskets, deliveries or subscriptions, or want agents to act for verified customers, get help. Retries, identity checks and error messages are where a small mistake becomes a double charge or a leaked key. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) FAQ ## Common questions ### Do I need a new payment provider for AI agent payments? No. Agent payments run through your existing Stripe account, so the money lands in your normal balance and pays out on your usual schedule. Refunds and disputes work the same way too. ### Will I see my customers' card numbers? No. The card stays with Stripe and the assistant's platform. You receive a single-use token that can only pay your business, up to a set amount, before it expires. ### Which AI assistants can pay this way? Support is new and growing: Stripe's agent payment tokens are still in preview. Any assistant or agent platform that supports MPP or ACP with Stripe can pay a site that offers them, and nothing changes on your side as more assistants join. ### Is it safe to let an AI agent spend money? The buyer sets the limits. Each token is tied to one business, one amount and an expiry time, so an agent can't spend more than was approved or pay someone else with it. ### Can people still buy the normal way? Yes. The same product can sell through a standard Stripe checkout page, as our coffee does. Agent payments are an extra way in, not a replacement. Keep reading ## Related guides [Stripe How to keep Stripe keys off mobile apps and plugins with a reverse proxy Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.](https://63digital.com/payments/stripe/keep-stripe-keys-off-apps-with-a-reverse-proxy/) [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) ## Want AI assistants to buy from you? Tell us what you sell. We'll review whether agent payments fit, and add them to your Stripe account alongside your normal checkout. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/square/ [← Payments](https://63digital.com/payments/) Platform # Square payments development Square online payments and marketplace fees, built alongside Stripe and kept in lockstep. Square OAuth Marketplace fees In short 63Digital builds on Square's APIs for platforms that take payments on behalf of sellers: OAuth onboarding and token refresh, card payments with 3-D Secure through the Web Payments SDK, Apple Pay and Google Pay, application fees and payout reconciliation. Our Rebll Tickets platform runs Square alongside Stripe, with every fix applied to both providers. At a glance 2 Providers kept in lockstep 7 days Token refresh before expiry 60% Fee cap that fits both providers [Talk to a developer](https://63digital.com/contact/) How we help ## What we do on Square 01 ### OAuth onboarding Sellers connect their own Square accounts, with encrypted tokens refreshed before they expire. 02 ### Online card payments The Web Payments SDK with 3-D Secure verification passed through, plus Apple Pay and Google Pay. 03 ### Fees & payouts Application fees within Square's limits, actual processing fees recorded, payouts reconciled from webhooks. 04 ### Hybrid checkouts Square card payments with a Stripe-powered buy-now-pay-later option alongside, chosen per event. Square guides ## How to, from jobs we've done [How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) Proof ## Our work on Square [![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688) Events · Ticketing Rebll Tickets Multi-tenant SaaS Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. .NET Multi-tenant Marketplace Payments](https://63digital.com/work/rebll-tickets/) Is it a fit? ## Is Square right for you? ### A good fit when - ✓ Your sellers already use Square in person and want online sales in the same account - ✓ You run a platform that takes a fee on sellers' payments ### Probably not when - – You need buy-now-pay-later from Square alone (we ran Klarna through Stripe alongside Square) Related: [System integration](https://63digital.com/services/system-integration/) FAQ ## Common questions ### Can a platform take a fee on Square payments? Yes. Set app\_fee\_money on each payment made with the seller's access token. Keep it within Square's limits; we cap platform fees at 60% of the charge so it always fits. ### Do Square OAuth tokens expire? Yes. We refresh them with a daily job for any token that expires within the next 7 days, and store them encrypted. ### Why does Square decline a payment after the 3-D Secure challenge succeeds? In our case the Web Payments SDK's verification token wasn't being passed to the create-payment call. Forward it, and verified UK and EU cards go through. Platforms ## Related platforms [Stripe Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. 5 guides](https://63digital.com/payments/stripe/) [Apple & Google Wallet Tickets, vouchers and memberships that live on the customer's phone, not in their inbox. 1 guide](https://63digital.com/payments/apple-google-wallet/) ## Building on Square? Tell us how your sellers get paid. We'll build the onboarding, the checkout and the reconciliation. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/ [← Square](https://63digital.com/payments/square/) Guide # How to build a ticketing marketplace on Stripe Connect and Square By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Stripe .NET library 51 · Square .NET SDK 43 · .NET 10 In short Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together. 2 Payment providers kept in step 60% Cap on the platform fee 3 Payment-model rewrites to get here 2,251 Commits on the platform ## Before you start - ✓ A decision on who is merchant of record (usually the promoter) - ✓ Stripe Connect and Square developer accounts, with their test environments - ✓ Your fee model per ticket, and who absorbs the processing fee - ✓ A payment test plan covering each scenario on both providers ## Deciding who is the merchant of record The promoter sells the ticket, so the promoter should usually be merchant of record: their name on the statement, their refunds, their chargebacks. On [a ticketing platform we built](https://63digital.com/work/rebll-tickets/), payments go directly on the promoter's account, with the platform's cut as an application fee, avoiding settings that would quietly make the platform merchant of record. We got there in three iterations: transfers between three parties, then a fee plus a single transfer, then direct charges that mirror how Square works. ## Connecting promoters - **Stripe:** promoters connect their own full (Standard) Stripe account and keep their own dashboard. - **Square:** ask for every permission you'll need up front (payments, payouts, customers if you'll store cards). Adding one later means every promoter reconnecting. - Identify the promoter from a one-time token, not whoever is logged in, and let it survive a slow sign-up (we use 30 minutes). - Encrypt stored tokens and renew Square's early: ours renew daily for any expiring within 7 days. ## Working out fees per ticket The booking fee is a percentage plus a fixed amount per ticket, rounded to the penny, with settings cascading from platform to promoter to event. It's fixed when the ticket enters the basket, so a settings change can't alter it mid-checkout. The platform fee is then **capped** at 60% of the charge to fit both providers' limits. The capped fee is recorded on the order and the uncapped figure kept for reporting. ## Apple Pay, Google Pay and Klarna on every account These need your checkout's web address registered on each *promoter's* account. We register it on connect or reconnect, checking what's already there, and gave existing promoters a backfill button. ## Recording the real processing fee On Stripe, the fee reported on the promoter's account *includes your platform fee*, so count only Stripe's own. On Square the fee isn't known at payment time, so it's filled in when Square reports the update. Never store an estimate: the promoter's payout report depends on it. ## Planning for missed notifications - Tell Stripe when a notification fails briefly, so it retries. - Reconcile every minute on each provider, to catch payments whose notifications were missed, or acknowledged even though processing them failed. - Record each payout once, and never move one back from a final state. ## Keeping the providers in step A bug fixed on Stripe is checked and fixed on Square in the same change, and the payment test plan runs every scenario on both, embedded in promoters' websites and standalone. ## What usually goes wrong From our own projects, not the manual. ### Apple Pay, Google Pay and Klarna vanished in live mode The card form worked, but wallets and Klarna never appeared. When payments are taken on the promoter's account, Stripe needs your checkout domain registered on that account, and only enforces it in live mode. Register it on connect and backfill existing accounts. ### Square rejected discounted orders with INVALID\_FEES A discount shrank the charge but not the platform fee, which then broke Square's fee limit. Cap the platform fee as a share of the actual charge on both providers. ### Verified cards were still declined on Square UK and EU cards passed the 3-D Secure check, but Square returned a generic decline because the proof of that check was never sent with the payment. Pass it through. ### Customers couldn't retry after a decline The retry reused the previous attempt's unique reference with a new card, so the provider rejected it. Issue a new reference only after a definite decline, and keep it after timeouts or server errors, or you risk charging twice. ### Promoters' net takings were overstated On the promoter's account, Stripe's fee figure includes the platform fee. Count only Stripe's own processing fee, and backfill it from charge updates. ### OAuth connected the wrong promoter The fixed return address carries no promoter details, so the connection step guessed from the logged-in user. Identify the promoter from the one-time token instead. ### Square payments failed for some event names Square's statement description forbids characters such as quotes, asterisks and angle brackets. Clean them out before sending. ## Do it yourself, or get help? If you're adding one provider to a simple shop, the provider's own documentation will get you most of the way. If you're a marketplace taking fees on other businesses' sales, supporting two providers, or putting checkout inside promoters' own websites, get help: the problems above only show up in live mode, with real cards, at real events. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) FAQ ## Common questions ### Should a ticketing platform use direct or destination charges? If promoters should be merchant of record (their name on statements, their refunds and chargebacks), take payments directly on their account and take your cut as an application fee. Destination charges make your platform the merchant of record instead. ### Why do Apple Pay and Google Pay not show on my Stripe Connect checkout? When payments are taken on the promoter's account, your checkout domain has to be registered on each promoter's Stripe account. Test mode doesn't enforce it, so it often only fails in live. ### Can I support Stripe and Square on the same platform? Yes. We choose the provider per event from the promoter's connected account, and keep both implementations in step so every fix lands on both. ### Who pays the card processing fee? That's a commercial choice. On our platform the promoter absorbs it and the customer pays a booking fee. Either way, record the real fee from the provider, not an estimate. Keep reading ## Related guides [Stripe How to build a Stripe Connect marketplace in .NET Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.](https://63digital.com/payments/stripe/build-a-stripe-connect-marketplace/) [Apple & Google Wallet How to add Apple Wallet and Google Wallet tickets to your platform Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified.](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) [AI-built apps Why AI-generated code breaks under real traffic (and how to fix it) AI-generated code usually works for one user and fails when two arrive at once. It checks, then acts, with nothing stopping a second user between, trusts a quick look-up to prevent duplicates, and queries the database inside loops. The fix: re-check under a lock, claim each job in one step, lock in a consistent order and batch queries.](https://63digital.com/rescue/ai-built-apps/why-ai-generated-code-breaks-under-real-traffic/) ## Building a ticketing or events platform? Tell us how promoters get paid and how you make money. We'll design the payments before they're live with real events. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/apple-google-wallet/ [← Payments](https://63digital.com/payments/) Platform # Apple Wallet & Google Wallet passes Tickets, vouchers and memberships that live on the customer's phone, not in their inbox. Apple Wallet Google Wallet Tickets In short 63Digital issues Apple Wallet and Google Wallet passes from your platform: signed Apple passes, Google save links, grouped per event, and in the organiser's timezone, with the same QR codes your door scanners already read. We built wallet tickets for Rebll Tickets, switched on per promoter. At a glance 2 Wallets from one ticket ~3 KB Google save link per ticket 0 Changes needed to door scanners [Talk to a developer](https://63digital.com/contact/) How we help ## What we build 01 ### Apple Wallet passes Signed .pkpass files, bundles for multi-ticket orders, and event artwork on the pass. 02 ### Google Wallet passes Signed save links with the event and ticket inline, grouped per event. 03 ### Secure credential handling Certificates and keys kept in a vault and a pipeline's secure files, never in the repository. 04 ### Rollout controls Per-organiser switches and a diagnostics page to verify passes before customers see them. Apple & Google Wallet guides ## How to, from jobs we've done [How to add Apple Wallet and Google Wallet tickets to your platform Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified.](https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/) Proof ## Our work on Apple & Google Wallet [![Rebll Tickets](https://63digital.com/media/sun8dd7h/rebll-tickets-card.webp?width=960&format=webp&quality=85&v=1dd4f48c4b44110&hmac=b0587a2da76ce6c051be3ebb092eec09928b77940bd21694bbf4df0d085f7688) Events · Ticketing Rebll Tickets Multi-tenant SaaS Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door. .NET Multi-tenant Marketplace Payments](https://63digital.com/work/rebll-tickets/) Is it a fit? ## Is this for you? ### A good fit when - ✓ You issue tickets, vouchers or memberships that people show on arrival - ✓ Your customers dig through emails for PDFs at the door ### Probably not when - – You need passes to update live with seat changes or push notifications (that's a larger build) Related: [System integration](https://63digital.com/services/system-integration/) FAQ ## Common questions ### Do Wallet passes work with my existing ticket scanners? They can. Keep the QR payload identical to your current tickets, and scanners don't need to change. ### Do I need an Apple developer account for Wallet passes? Yes. Apple passes are signed with a Pass Type ID certificate from your Apple developer account, plus Apple's WWDR certificate. ### Is Google Wallet harder than Apple Wallet? Different, not harder. Google passes can be added from a signed JWT link with the event and ticket inline; the catch is that event classes, once created, only change when you bump their version. Platforms ## Related platforms [Square Square online payments and marketplace fees, built alongside Stripe and kept in lockstep. 1 guide](https://63digital.com/payments/square/) [Stripe Marketplaces, in-person payments and Tap to Pay on Stripe, with the fees, refunds and reconciliation done properly. 5 guides](https://63digital.com/payments/stripe/) ## Want tickets in Apple and Google Wallet? Tell us what you issue and how it's scanned. We'll add wallet passes without changing your door process. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/payments/apple-google-wallet/add-apple-and-google-wallet-tickets/ [← Apple & Google Wallet](https://63digital.com/payments/apple-google-wallet/) Guide # How to add Apple Wallet and Google Wallet tickets to your platform By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Apple Wallet (dotnet-passbook 4) · Google Wallet · .NET 10 on IIS In short Add an Apple Wallet pass and a Google Wallet save link to each ticket, both signed with credentials Apple and Google issue to you. Keep the QR code exactly as it is so door scanners still work, serve passes from unguessable links that need no login, and switch wallets on per organiser once each has been verified. 2 Wallets from one ticket ~3 KB Google Wallet link per ticket 4,096 Pipeline secret limit the Apple certificate broke 540 × 660 Apple Wallet background image (pixels) ## Before you start - ✓ An Apple developer account with a registered pass type and its certificate - ✓ A Google Wallet issuer account and a service account key - ✓ Your current ticket QR format (it must not change) - ✓ A secure place for the certificate and key (Azure Key Vault or similar) ## Deciding what goes on the pass On [a ticketing platform we built](https://63digital.com/work/rebll-tickets/), a pass shows the event, date and time (in the venue's timezone), venue, ticket type and a short readable code. Above all, **keep the QR code's contents identical** to your existing tickets, so door scanners need no changes. ## Apple Wallet passes - Each ticket becomes a pass file signed with your Apple pass certificate and Apple's intermediate certificate (we use the open-source dotnet-passbook library). - A bundle file adds a multi-ticket order in one tap. - Front-of-pass fields don't wrap, so the ticket type goes in the main field and long names stay short. A 540 × 660 background image carries the artwork. ## Google Wallet passes These come from a save link carrying a signed token with the event and ticket inside, so nothing needs setting up with Google first. We group tickets by event and show the tier on the card. Google creates each event design once, so a change needs a new version. ## Serving passes without a login Customers open passes from emails, usually not signed in, so each is served from a public link using the ticket's unguessable id, never a sequential number. ## Keeping the signing credentials safe The Apple certificate and Google key live as secrets in Azure Key Vault and are written to temporary files at start-up. The Apple certificate was too large for an Azure DevOps pipeline variable, so deployment uses Secure Files instead. ## Switching it on per organiser A per-organiser setting (off by default) and an admin page that checks the certificates and generates a test pass mean each organiser's passes are verified before customers see them. ## What usually goes wrong From our own projects, not the manual. ### Google passes showed the wrong time in summer Reading the pass data with default settings dropped the time's offset on servers running in UTC, so passes showed GMT instead of BST. Read dates in a way that keeps the offset. ### The Apple certificate wouldn't load on IIS Loading it failed with 'the system cannot find the file specified' because the IIS app pool had no user profile. Load it into the machine's certificate store instead. ### The Apple certificate was too big for a pipeline variable Encoded as text, the certificate came to about 4,500 characters against Azure DevOps' 4,096 limit. Use the pipeline's Secure Files instead. ### The Google 'add all tickets' link broke on big orders Each ticket adds about 1.1 KB to the link, so group orders produced links of 27 to 73 KB, too long for the redirect. Offer per-ticket links (about 3 KB each) instead. ### Changes to a Google event never showed up Google creates an event design once and ignores later edits to it. Issue a new version whenever the design changes. ### Pass times fell back to the wrong timezone The data behind the pass didn't include the venue, so times used the platform default instead of the venue's timezone. Load everything the pass needs, and test with a venue in another timezone. ## Do it yourself, or get help? If you have one ticket type and a developer comfortable with signing certificates, you can ship wallet passes in a few days using Apple's and Google's documentation. If you run many organisers, need passes on existing tickets without touching scanners, or deploy to IIS or a locked-down pipeline, get help: the time goes on the gotchas, not the happy path. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Rebll Tickets Rebll Tickets is a multi-tenant, white-label event-ticketing and commerce platform — a marketplace where any promoter can sell branded tickets, get paid to their own account, and run the door.](https://63digital.com/work/rebll-tickets/) FAQ ## Common questions ### How do I add a ticket to Apple Wallet? Create a pass file (a signed bundle of the pass details and images) using your Apple pass certificate, and serve it so iPhones recognise it. When customers open it, the iPhone offers to add it to Wallet. ### How do I add a ticket to Google Wallet? Give the customer a Google Wallet save link containing the event and ticket details, signed with your Google service account key. Tapping it adds the ticket. ### Will Wallet tickets work with my scanners? Yes, if the QR code contains exactly what your scanners already read. Put a short human-readable code on the pass as well. ### Can customers add several tickets at once? On Apple, a bundle file adds them all. On Google, a combined link works for small orders but grows by about 1.1 KB per ticket, so we use per-ticket links for large ones. Keep reading ## Related guides [Square How to build a ticketing marketplace on Stripe Connect and Square Make the promoter the merchant of record: connect their own Stripe or Square account, take payments on it, and take your cut as a platform fee. Cap that fee to fit both providers' limits, set up Apple Pay and Google Pay on every promoter's account, record the real processing fee, and fix every bug on both providers together.](https://63digital.com/payments/square/build-a-ticketing-marketplace-on-stripe-and-square/) ## Want Wallet tickets on your platform? Tell us what you issue and how it's scanned. We'll build the passes and the plumbing behind them. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/ Platforms # Legacy system modernisation Access databases, spreadsheets and in-house systems carried forward onto modern web platforms, without losing what they know. In short 63Digital moves businesses off Microsoft Access databases, spreadsheets and older in-house systems onto modern web platforms. We start by extracting and documenting what the existing system actually does, migrate the data with checks at every step, prove the new system gives the same answers, and keep staff's paperwork familiar, so years of hard-won knowledge comes with you. Platforms ## Platforms we work with [Microsoft Access Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. 4 guides](https://63digital.com/modernisation/microsoft-access/) [Spreadsheets The spreadsheets your business runs on, rebuilt as a proper system with access control, an audit trail and search. 1 guide](https://63digital.com/modernisation/spreadsheets/) [System review Thinking about replacing the Access database or spreadsheets the business runs on? Start with a fixed-price review: a written plan and a fixed price for the first stage. £450 + VAT, and the £450 comes off the build if you go ahead.](https://63digital.com/modernisation/system-review/) Guides ## How to, from jobs we've done [Microsoft Access How to extract forms, reports, queries and VBA from a Microsoft Access database Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live.](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [Microsoft Access How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) [Spreadsheets How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) ## Outgrowing a system that got you here? Tell us what it does and who relies on it. We'll show you how to carry it forward without losing a thing. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/microsoft-access/ [← Modernisation](https://63digital.com/modernisation/) Platform # Microsoft Access to web app migration Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. Microsoft Access SQL Server Migration In short 63Digital replaces Microsoft Access databases with web applications on .NET and SQL Server. For a Scottish retailer we extracted two in-house Access systems (425 queries, 189 forms, 133 reports and almost 23,000 lines of VBA), used them as the specification, rehearsed a migration of thousands of hire records, and matched prices and printouts before staff moved over. At a glance 22,749 Lines of VBA extracted and documented 1,000s Hire records in the first rehearsal 1,346 → 1 Validation warnings after tuning [Talk to a developer](https://63digital.com/contact/) How we help ## What we do 01 ### Extract & document Every table, query, form, report and line of VBA pulled out and written up as the specification, with the people who built it. 02 ### A proper database A normalised SQL Server schema with real relationships, designed around how the business actually works. 03 ### Repeatable data migration A migration tool you can rehearse again and again: de-duplicated customers, traceable records and validation that decides when you're ready. 04 ### Proven parity The same orders driven through old and new systems until every total, report and email matches. 05 ### A gentle switch-over Familiar paperwork, safe parallel running and staff moved over in stages. Microsoft Access guides ## How to, from jobs we've done [How to extract forms, reports, queries and VBA from a Microsoft Access database Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live.](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) [How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) Is it a fit? ## Is it time to move off Access? ### A good fit when - ✓ More than one shop, branch or team needs the same live data - ✓ The database has become something only one or two people fully understand - ✓ Staff, customers or suppliers need to use it from anywhere ### Probably not when - – It's a small single-user tool that still does its job well (keep it) Related: [Bespoke platforms](https://63digital.com/services/bespoke-platforms/), [System integration](https://63digital.com/services/system-integration/) FAQ ## Common questions ### Can you migrate an Access database to SQL Server? Yes. We extract the tables to files and load them with a repeatable migration tool into a properly normalised SQL Server schema, with every record traceable back to its Access original. ### Will we lose the business logic in our Access forms and VBA? Not if it's extracted first. We pull out every query, form, report and VBA module and document the rules from the code itself, so they carry across rather than being rediscovered. ### How long does an Access migration take? It depends on the system. On a recent one, the extraction tool was running the day after we received the database, and a repeatable data migration was in place seven weeks in, alongside building the new system. ### Can staff keep the same paperwork? Yes. We reproduced the Access reports and printouts in their familiar layouts, down to keeping the main order form on one page. ### Do we have to switch over in one go? No. The old and new systems can run side by side, with people and features moved over in stages. Platforms ## Related platforms [Spreadsheets The spreadsheets your business runs on, rebuilt as a proper system with access control, an audit trail and search. 1 guide](https://63digital.com/modernisation/spreadsheets/) ## Running the business on Access? Tell us about your database and who relies on it. We'll extract it, document it and show you what moving it would take. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/ [← Microsoft Access](https://63digital.com/modernisation/microsoft-access/) Guide # How to extract forms, reports, queries and VBA from a Microsoft Access database By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Microsoft Access on Windows, .NET 8 In short Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live. 349 Saved queries in one database 10,941 Lines of VBA code in one database 0 Formal links between tables in either database 2 Passes: the structure first, then screens and code ## Before you start - ✓ A copy of the Access database (never the live file) - ✓ A Windows machine with Microsoft Access installed - ✓ Agreement on where extracted data may be stored, since it contains personal data - ✓ A version-controlled place to keep the extracted queries and code - ✓ Time with the people who built and use the system ## Work from a copy An Access system that has run a business for years holds a lot of hard-won knowledge. We capture it from a copy, never the live file, on a Windows machine with Access installed. ## Read the structure and queries First we read every table, any relationships between them, and every saved query (one database had 349), flagging the queries that change data rather than just look things up. ## Read the screens, reports and code Forms and reports can only be read through Access itself. For each one we record where it gets its data, every field and drop-down on it, and what code runs when it's used. Drop-down lists are telling: they show which tables the business treats as fixed lists. Then we read out the VBA code, 10,941 lines in one database, because that is usually where the real business rules live. ## Keep the output searchable Everything becomes ordinary files that can be searched and compared, with a summary of the counts. If one item won't open, we log it and carry on. ## Treat the data as personal data Exported tables, ready for the [data migration](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/), hold real customers' details. They stay out of version control, are stored securely and are deleted afterwards. ## Keep a baseline and check it again A working system keeps changing while its replacement is built, so we keep the extract (minus the data) as a baseline and repeat it before cutover. For one retailer, comparing a February extract with an August one turned up a price rise, three new jacket styles and four code changes we would otherwise have missed. ## Write down how the business really works Finally, we trace each business rule to the query or code behind it: pricing, availability, how parties are handled, what each report counts. That becomes the specification for the new system. How far each step goes depends on the size of the system and how much of it the business still relies on. ## What usually goes wrong From our own projects, not the manual. ### Neither database defined a single relationship Both Access databases had no formal links between tables. The links were kept by the forms, the code and naming habits instead. We rebuilt them from the forms' drop-down lists and the code, and made them explicit in the new database. ### The written procedure didn't match the code The documented rule said kilts within plus or minus four inches of the waist would match, but the query only ever matched smaller ones. Document rules from what the query or code actually does, not from memory. ### The system changed while we were building its replacement The live database was still being edited. Comparing a February extract with an August one found a price rise, three new styles and four code changes. Keep a baseline and extract again before cutover. ### One awkward item shouldn't stop the run Some forms and reports won't open automatically. Log the failure against that item, carry on, and deal with the few that failed by hand. ### The data export is personal data Table exports contain real customers' names and contact details. Keep them out of version control, store them securely, and delete them after the migration. ## Do it yourself, or get help? If you have a developer who is comfortable automating Microsoft Office, a basic export of tables and queries takes a day or two; forms, reports and VBA take longer. If the system is large, business-critical, or the person who built it is short on time, get help: the extraction is only useful once it's turned into documentation the new system can be built from. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) FAQ ## Common questions ### Can I export Access queries and VBA automatically? Yes. The tables, relationships and wording of every saved query can be read out automatically, and so can the VBA code in every module. Forms and reports need Access itself, opened in design view. ### Do I need Microsoft Access installed to extract a database? For tables and queries, the Access database engine on its own is enough. For forms, reports and VBA you need the full Access application on Windows. ### Why does my Access database have no relationships? Many Access systems keep tables linked through their forms and code rather than in the database itself. The links are real, just unwritten, and a migration has to make them explicit. ### How do I document what an old Access system does? Extract it, then trace each business rule (prices, availability, reports) to the query or code behind it. Write that down with the people who use the system every day. Keep reading ## Related guides [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [Microsoft Access How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [Spreadsheets How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) ## Want your Access system extracted and documented? Send us a copy and tell us what it's for. We'll turn it into a specification you can build from, or keep. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/ [← Microsoft Access](https://63digital.com/modernisation/microsoft-access/) Guide # How to migrate data out of Microsoft Access into SQL Server By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Microsoft Access to SQL Server In short Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready. 1,000s Hire records in the first full rehearsal 4 Levels of customer duplicate matching 1,346 → 1 Validation warnings once serious and minor issues were separated ## Before you start - ✓ The tables extracted from Access as files (see the extraction guide) - ✓ The new database design, with the links between tables defined - ✓ A list of the old system's statuses, flags and codes, and what each one means - ✓ A test database you can wipe and reload freely - ✓ A decision on how customers are identified and duplicates merged ## Build a migration you can rehearse A one-off import gives you one chance. We build a small tool that clears the new database and reloads it from the [extracted tables](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/), so the move can be rehearsed repeatedly and rerun at cutover. It asks for the database name before clearing anything, and fails unless validation passes. ## Load in a sensible order Records others depend on go first: reference data, lists found in the data (styles, tartans, categories), staff, stock, customers, groups and parties, orders, then outstanding requests and anything in progress. Validation runs last. ## Split all-in-one rows into proper records The hire table we migrated for a kilt hire business had around 90 columns, packing customer, party, dates, branches and every item into one row. Each became one order with up to 13 items, plus a payment where a deposit was taken, with status worked out from the flags staff actually set (returned, collected, stock allocated). ## Merge duplicate customers carefully The same person appears across years of bookings with slightly different details. We match from most certain to least: email and name, then name and phone (seven digits or more), then name and address, then name within the same party, taking contact details from the latest booking. The right rules depend on how the business recorded people: here, email alone wasn't safe. ## Link every new record to its original Recording each old id against its new one lets anyone trace a record back and compare the systems order by order. When we [consolidated two older booking systems into one](https://63digital.com/work/kcr-academy/), it also let each rerun skip rows already done. ## Tidy the messy fields, and protect real emails Branches typed as "SE", "St. Enoch" or "DS" become one name, postcodes are tidied ("ml15qn" becomes "ML1 5QN"), and anything unmatched is logged. A single address line gives up its postcode, but not a reliable town or county. Customer emails are swapped for safe addresses on every rehearsal; real ones return only on the final run. ## Validate, then check against the original Some problems block cutover: totals that don't match, bookings in the next 14 days with no stock, groups with no lead contact. Others just need a look. Finally, a small tool compares the Access file with SQL Server directly, order by order. ## What usually goes wrong From our own projects, not the manual. ### De-duplicating on email merged whole wedding parties Party members often shared the lead contact's email, so matching on email alone collapsed a whole party into one customer. Match on email and name together. ### Placeholder 'Unknown Unknown' customers appeared 46 rows (0.35%) had genuinely empty names, not just blank text, and our comparison tool confirmed it. Skip those rows with a warning rather than inventing a customer. ### Validation reported 1,346 problems, and only one was real Future bookings without stock allocated are normal, because stock is assigned close to the date. Separate problems that block cutover from ones that just need a look, with a 14-day window for 'imminent'. ### Duplicate stock rows clashed The source held the same style and number twice, which the new database wouldn't accept. Skip the duplicate, log it, and let a person decide which is right. ### When two old systems share no common reference Consolidating two previous booking systems for another client, the only thing they had in common was email, and records without one had to be skipped. Writing the new ids back against the old records let re-runs skip rows already done. ## Do it yourself, or get help? If the database is small and the tables are already fairly clean, a careful developer can script this in days. If there are years of history, one wide table holding everything, or people and bookings recorded inconsistently over time, get help: the rules for merging duplicates and checking the result are where migrations quietly go wrong. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [KCR Academy KCR Academy is the official global Kinetic Chain Release training provider, with thousands of students worldwide. With ambitious growth goals, they brought on 63Digital to cut the time spent on admin — consolidating scattered, manual processes into one user-friendly Training Course Management & Booking platform.](https://63digital.com/work/kcr-academy/) FAQ ## Common questions ### What's the best way to move Access data to SQL Server? Use a repeatable migration you can rehearse, not a one-time import wizard. Extract the data to files, load it in a sensible order, and validate it before you switch over. ### How do I de-duplicate customers from an old database? Match from most to least certain: email and name, then name and phone, then name and address, then name within the same group. Take contact details from the most recent record. ### How do I know the migration worked? Compare totals and individual records against the original, order by order, using a record of which old id became which new one. Let only the checks that really matter block the switch. ### Should I migrate every old record? Migrate what the business needs to operate and look back on. It's fine to skip records that can't be identified, as long as you log them. Keep reading ## Related guides [Microsoft Access How to extract forms, reports, queries and VBA from a Microsoft Access database Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live.](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) [Microsoft Access How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) ## Need years of data moved safely? Tell us what's in the old system. We'll build a migration you can rehearse until it's right. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/ [← Microsoft Access](https://63digital.com/modernisation/microsoft-access/) Guide # How to prove your new system matches the old one By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on Microsoft Access, replaced by a .NET web app In short Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over. 4 Order types priced side by side ~35 Fields matched on the main order form 6 Missing automated emails found and closed 1 Page, as the old printout was ## Before you start - ✓ The old system running, with realistic test scenarios - ✓ The full list of forms, reports and automated emails from the extraction - ✓ Someone who uses the old system every day - ✓ Somewhere to record every difference and how it was resolved ## Make the old system the specification The old system got the business this far, so its behaviour is the benchmark. [Extracting the database](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) lists every form, report and automated email, so nothing depends on memory. ## Put the same orders through both On a recent Access replacement we entered real scenarios for the four main sales order types in both systems and compared every total, matching the main order form field for field: around 35 fields and 15 drop-down lists. ## Match what it does, not what it stores A column in the old database doesn't mean anything uses it. We check the code first. Where they disagree we match what customers actually get, or deliberately fix it and write that down. ## Check assumptions against the data Defaults on old forms drift from reality. Numbering ranges and similar rules get checked against real records first. ## Keep reports and emails familiar Staff trust paperwork they recognise. We rebuilt the hire reports and sales order PDFs to match the Access layouts, kept the order form to one A4 page with a check that fails if it spills over, and compared every automated email, closing six gaps. ## Check again before switching The old system keeps changing while you build, so we extract it again before cutover, as part of [running both side by side](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/). ## What usually goes wrong From our own projects, not the manual. ### A stored price nobody's code used The new system added a surcharge from a column in the old database, putting one package £120 higher than the old system charged. None of the old code ever read that column, so customers had never paid it. Match what customers actually get, and keep the charge switchable. ### A hidden field and an over-eager check broke two order types On one order type the surcharge field was hidden, under-pricing larger jackets; on another a safety check switched the whole price calculation off. Putting all four order types through both systems side by side found both. ### Package credits came from the wrong place Starting values for package credits didn't come from the old order form, so one accessory was credited at seven times its price. Take values from the forms staff actually use, then match to the penny. ### The form's defaults didn't match the data Numbering ranges taken from an old form's defaults rejected valid stock, because one branch used a different range in practice. Check assumptions against the data before enforcing them. ### The printout spilled onto a second page A new header, footer and wider margins pushed the main order form over one A4 page, where the old report had always fitted. Tighten the layout and add a check that fails if it grows. ## Do it yourself, or get help? If the old system is small and well understood, a structured side-by-side test day with the people who use it will find most differences. If prices, stock or money depend on rules buried in old forms and code, get help: the differences that matter are the ones nobody knows are there until a customer is charged the wrong amount. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) FAQ ## Common questions ### How do I test a replacement system against the old one? Run the same real scenarios through both and compare every total, field, report and email. The old system's behaviour is the specification, even where it surprises you. ### What if the old system is wrong? Decide deliberately. Sometimes you match it to avoid surprising customers; sometimes you fix it. Either way, write the decision down. ### Should reports look exactly like the old ones? For the first release, yes. Staff trust paperwork they recognise, and it's one less thing to change on day one. ### What's parity testing? Checking that a new system produces the same results as the one it replaces, feature by feature, before anyone depends on it. Keep reading ## Related guides [Microsoft Access How to extract forms, reports, queries and VBA from a Microsoft Access database Before replacing an Access database, we take a copy and read everything out of it: tables, saved queries, forms, reports and the VBA code behind them. That gives a searchable record of how the system really works, which becomes the specification for its replacement and shows where the business rules actually live.](https://63digital.com/modernisation/microsoft-access/extract-forms-reports-and-vba-from-access/) [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) ## Replacing a system your business depends on? Tell us what it does. We'll make sure the new one gives the same answers before anyone relies on it. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/ [← Microsoft Access](https://63digital.com/modernisation/microsoft-access/) Guide # How to run old and new systems side by side, and cut over safely By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 26 Sep 2026 Tested on A .NET web app replacing Microsoft Access In short Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation. 2 Layers of protection against stray emails 8 Places that can send email, all guarded 14 days Window for checking imminent bookings ## Before you start - ✓ A repeatable data migration (see the migration guide) - ✓ A way to stop the new system emailing customers - ✓ A list of the paperwork and spreadsheets other people depend on - ✓ A decision on how order numbers continue - ✓ The order in which people and features will move over ## Make the new system safe first Staff only find the gaps by entering real work, so the new system must not be able to contact customers until you decide. On a recent Access replacement we built a two-layer email kill switch: a check on all eight places that send email, plus a fallback that only logs anything already waiting. It works alongside safe addresses in the [migrated data](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/). ## Enter real work in both For a period the old system stays the record while staff enter the same work in the new one. Each difference is a bug or an unwritten rule; [proving the systems match](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) covers what to compare. ## Keep what staff rely on Keep familiar printouts and keep feeding spreadsheets others depend on: a "copy spreadsheet row" button gave staff exactly the row they paste into their production sheet. On one rebuild the old admin area stayed behind a menu link. ## Decide numbering and pace If numbering restarts at 1, both systems have an order 1: carry on from the old highest number, or set an admin-editable starting number per order type. People can also move over in stages, with access switched on per person and area as they're ready. ## Switch over from a fresh copy 1. Freeze changes in the old system. 2. Extract again and compare with your baseline. 3. Run the migration a final time with real email addresses. 4. Confirm none of the blocking checks fail. 5. Keep the old system read-only for reference. ## What usually goes wrong From our own projects, not the manual. ### Order numbers would have collided Restarting each order type at 1 meant both systems would have an order 1 until the old records were retired. We set a starting number per type, editable by an admin, and recorded the old system's highest number. ### Test data could have emailed real customers Rehearsals and parallel entry used real customer records. Swap emails for safe addresses by default, and guard every route that sends email, including messages already waiting to go. ### The new system's demo data could overwrite migrated records Routines that fill a new system with demo data during development would have run over the migrated database. They now skip automatically once migrated records exist. ### Staff depended on a spreadsheet the project didn't own A production spreadsheet other people used every day couldn't be switched off on day one. Feeding it the same row it always had kept everyone working while the new system took over. ## Do it yourself, or get help? If only a few people use the old system and the data is simple, a well-planned weekend cutover can work. If several teams depend on it, customers get emails from it, or bookings run months ahead, get help planning the parallel run: most cutover problems come from something nobody listed. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Gift Voucher Solutions A multi-tenant platform that runs fully branded gift-voucher storefronts for hospitality and retail merchants — each with its own theme, its own payment gateway and both digital and posted vouchers.](https://63digital.com/work/gift-voucher-solutions/) FAQ ## Common questions ### Should I run the old and new systems in parallel? For anything customers or money depend on, yes, for a short period. Staff enter real work in both, and every difference points to a bug or an unwritten rule. ### How do I stop a new system emailing customers during testing? Use safe email addresses in the migrated data, and a kill switch on every route that sends email, including messages already waiting to be sent. ### Do I have to move everyone over on the same day? No. Access can be switched on per person, so parts of the system go live as each team is ready. ### What happens to the old system after cutover? Keep it read-only for reference for a while, so history is always one click away, then retire it once nobody needs it. Keep reading ## Related guides [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [Microsoft Access How to prove your new system matches the old one Treat the old system's behaviour as the specification and check the new one against it. Put the same orders through both and compare every total, check what the old code actually does before trusting a stored value, reproduce reports in their old layout, match every automated email, and re-check the old system just before switching over.](https://63digital.com/modernisation/microsoft-access/prove-your-new-system-matches-the-old-one/) [Spreadsheets How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) ## Planning a switch-over? Tell us who uses the old system and how. We'll plan a parallel run and a cutover that doesn't surprise anyone. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/spreadsheets/ [← Modernisation](https://63digital.com/modernisation/) Platform # Spreadsheet replacement software The spreadsheets your business runs on, rebuilt as a proper system with access control, an audit trail and search. Spreadsheets Web apps Migration In short 63Digital replaces the spreadsheets a business has come to depend on with web applications built around the same data. We review how the sheets are really used first, then design around that. On one IT support portal, per-client spreadsheets became a system with per-engineer access, two-factor authentication, a full audit trail and search over 90% faster. At a glance 16 Spreadsheet tabs rebuilt as tables 90%+ Faster search [Talk to a developer](https://63digital.com/contact/) How we help ## What we do 01 ### Review first Every file, tab and column looked at, with who edits what and what the business uses it for, so the approach fits what we find. 02 ### A proper database Tabs become tables with real types and validation, or flexible fields where the data keeps changing. 03 ### Access & audit Per-person access, two-factor authentication and a record of every change, from the first day. 04 ### Careful migration Data moved across and cleaned up as it goes, with the people who use it checking along the way. 05 ### Customer access Read-only views for the customers who need them, once the system has bedded in. Spreadsheets guides ## How to, from jobs we've done [How to replace a business spreadsheet with a web app Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it.](https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/) Proof ## Our work on Spreadsheets [![Aqua IT Support](https://63digital.com/media/a23ymsy2/aqua-it-support-card.webp?width=960&format=webp&quality=85&v=1dd4f48c49ee450&hmac=e5006434bae1df44fcaa7fc2ddcf8084fbf4c560ae2ee46f30d3ef3c39c71247) IT services & support Aqua IT Support Focused build A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready. Portal search Job dashboard Self-service](https://63digital.com/work/aqua-it-support/) Is it a fit? ## Is it time to replace the spreadsheet? ### A good fit when - ✓ Several people edit the same files - ✓ The sheets hold sensitive data that not everyone should see - ✓ You need to know who changed what, and when - ✓ Customers need to see their own part of it ### Probably not when - – One or two people use it and it does its job (keep it) Related: [Bespoke platforms](https://63digital.com/services/bespoke-platforms/) FAQ ## Common questions ### Can you turn our spreadsheets into a web app? Yes. We review how they're used first, then design a system around the same data, with logins, access control and search on top. ### Will we lose the spreadsheet format we're used to? Not if you don't want to. On one project, the portal exports each client back into the original workbook layout, one worksheet per tab. ### How long does it take? It depends on how much data there is, how clean it is and who needs access. We review the spreadsheets first, then give you a plan and an estimate. ### Can our customers see their own data? Yes, when you're ready. On one project, read-only access behind two-factor authentication went to the clients who wanted it, once the internal version had bedded in. Platforms ## Related platforms [Microsoft Access Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. 4 guides](https://63digital.com/modernisation/microsoft-access/) ## Running the business on spreadsheets? Tell us what's in them and who edits them. We'll show you what a proper system would look like. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/spreadsheets/replace-a-business-spreadsheet-with-a-web-app/ [← Spreadsheets](https://63digital.com/modernisation/spreadsheets/) Guide # How to replace a business spreadsheet with a web app By [Alastair Murdoch](https://63digital.com/about/alastair-murdoch/) Last reviewed 25 Sep 2026 Tested on ASP.NET Core · Entity Framework Core · SQL Server full-text search In short Start by reviewing how the spreadsheets are really used, and adapt the approach to what you find. Most replacements turn tabs into proper tables, build in per-person access and an audit trail from the start, move the data across with checks, and let staff settle in before any customer sees it. 16 Spreadsheet tabs rebuilt as tables 90%+ Faster search ## Before you start - ✓ Every copy of the spreadsheets, and who edits which - ✓ A list of the tabs and columns, and which every customer has - ✓ Who should see what: staff, managers, customers - ✓ Someone who uses the sheets daily, to check the data as it moves - ✓ Agreement that retiring the spreadsheets is the business's call There's no fixed recipe. Every set of spreadsheets grew up differently, so we always start with a review and adapt the approach to what we find. These are the questions we work through, with how we answered them on [an IT support portal we built](https://63digital.com/work/aqua-it-support/), and why. ## How are the spreadsheets really organised? Before designing anything, write down how the files are actually used: every file, every tab, every column, which columns every customer has, and who edits what. On the IT support project it was one spreadsheet per client, with a tab for each kind of thing (computers, printers, email accounts, routers, Wi-Fi and so on), 16 in all. ## Fixed tables, or flexible fields? The obvious design is a database table per tab, with typed, validated fields. That gives you consistent data and fast search, but every new column becomes a code change and a database migration. If the columns change often, a flexible custom-fields design may suit you better. On the IT support portal the data was stable and search mattered most, so each tab became its own table, with the things every row needs (notes, attached documents, archiving instead of deleting) in one shared base. ## Who should see what, and how will you know who changed what? A shared spreadsheet lets anyone change anything without a trace. Decide early who needs access to which customers and which kinds of data, whether two-factor authentication is required, and how changes are recorded. On the portal, every change is logged with who made it, when, and the old and new values. If the sheets hold passwords or other secrets, decide how they'll be protected before the first record goes in: encrypted in the database, and kept out of the audit history. Adding that later means re-processing every stored value, including the audit trail. ## What do people actually look things up by? Finding something in a spreadsheet estate means knowing which file and which tab to open. Ask people what they search for day to day, and design search around that. On the portal, full-text search across every client and every table, with each result labelled with the tab it came from, made finding a client's details over 90% faster. ## Script the migration, or do it by hand? It depends on the volume and how clean the data is. On the portal we chose to move the data manually: going through it record by record let us correct long-standing inconsistencies so the system started clean, and it doubled as acceptance testing, because the client saw their real data going into the new screens. For larger or messier data, script it and validate the result (see [how to migrate data safely](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/)). ## Who goes first? Staff usually should. Let your own team use the new system for real until it has bedded in, before any customer sees it. When customers do get access, it doesn't have to be all of them: on the portal, read-only access went to the larger clients with their own IT capability, and smaller clients were looked after exactly as before. ## What do people need to keep? People trust formats they know, and nobody should feel locked in. The portal can export a client back into the original workbook layout, one worksheet per tab. On another project, where a spreadsheet other people relied on couldn't be switched off, we added a button that produces exactly the row staff paste into it. ## When do the spreadsheets retire? That's the business's decision, made when people are ready, not a date a developer imposes. Once the new system is clearly better, people stop opening the old files on their own. ## What usually goes wrong From our own projects, not the manual. ### No record of who changed what In a shared spreadsheet it was easy to mistype a password or edit the wrong cell, and nothing showed who had changed it, when, or what it said before. The portal records every change, with the person and the old and new values. ### People who work across several customers Staff assigned to more than one client were stuck on the first one until we added a client switcher. Design for one person, many customers from the start. ### Customer logins landed on a staff-only page After signing in, client-only users were sent to a page only staff could open, so they saw 'access denied' on return visits. Test every role's journey, not just the admin's. ### Every new column is a code change With a table per tab, a new field means a database migration and a deploy. On a system that keeps growing, that adds up, so weigh it against how often your columns change. ## Do it yourself, or get help? If a handful of people use the spreadsheet and it holds nothing sensitive, a low-code tool or a shared database may be all you need. Get help if several people edit it at once, it holds credentials or personal data, or customers will need to see their part of it: access control and an audit trail are much harder to add later than to build in. [Get a developer on it](https://63digital.com/contact/) [Written by Alastair Murdoch Lead developer, 63Digital](https://63digital.com/about/alastair-murdoch/) From the project [Aqua IT Support A client-management portal with granular access control — cutting search time by 90%+ and making the business enterprise-ready.](https://63digital.com/work/aqua-it-support/) FAQ ## Common questions ### How do I turn a spreadsheet into a web app? Start by reviewing how it's really used. Tabs usually become tables and columns become typed fields, but the right design depends on how stable your data is and who needs to see it. ### Should I migrate spreadsheet data automatically or by hand? Where the volume allows, having a person go through it doubles as a clean-up and a check that the new screens work. For larger volumes, script it and validate the result. ### Can we still get our data back into Excel? Yes, if you build it in. On one project, the portal exports each client back to the original workbook layout, one worksheet per tab, so nobody is locked in. ### When should customers get access? Once staff have used it for real and it has settled. It doesn't have to be every customer: on one project, access went only to clients with their own IT teams. ### How long does it take to replace a spreadsheet with a web app? It depends on how much data there is, how clean it is and who needs access. We review the spreadsheets first, then give you a plan and an estimate. Keep reading ## Related guides [Microsoft Access How to migrate data out of Microsoft Access into SQL Server Move Access data with a repeatable process you can rehearse, not a one-off import. Load it in a sensible order, split all-in-one rows into proper records, merge duplicate customers carefully, keep a link from every new record to its original, protect real email addresses until cutover, and let validation decide when you're ready.](https://63digital.com/modernisation/microsoft-access/migrate-data-from-access-to-sql-server/) [Microsoft Access How to run old and new systems side by side, and cut over safely Let staff enter real work in the new system while the old one stays the official record, but make sure the new one can't contact customers until you decide. Keep the paperwork and spreadsheets people rely on, decide how order numbers continue, move people over in stages, and switch over from a fresh copy that passes validation.](https://63digital.com/modernisation/microsoft-access/run-old-and-new-systems-side-by-side/) ## Outgrowing your spreadsheets? Tell us what's in them and who relies on them. We'll plan a system that keeps what works and fixes what doesn't. [Get in touch](https://63digital.com/contact/) --- Source: https://63digital.com/modernisation/system-review/ [← Modernisation](https://63digital.com/modernisation/) Platform # System review Thinking about replacing the Access database or spreadsheets the business runs on? Start with a fixed-price review: a written plan and a fixed price for the first stage. £450 + VAT, and the £450 comes off the build if you go ahead. Microsoft Access Spreadsheets Modernisation In short A 63Digital system review is a fixed-price look at the system a business runs on, whether that's a Microsoft Access database, a set of spreadsheets or an older in-house system, for £450 + VAT. We find out what it actually does, including the forms, reports and rules buried in the code, how much data there is and what state it's in, and who relies on it. You get a written, staged plan for replacing it one piece at a time, with a fixed price for the first stage. If you go ahead, the £450 comes off the build. At a glance £450 + VAT, fixed price for the review £450 off The build, if you go ahead 1 plan Staged, with a fixed price for the first stage [Book a system review](#system-review) How we help ## What the review covers 01 ### What it does Every form, report and query, and the business rules hidden in the code or formulas, written down so nothing is lost when it's replaced. 02 ### The data How much there is, where it lives, and what needs cleaning up before it moves: duplicates, gaps and fields used for two things. 03 ### Who relies on it Which people and teams use which parts, what they print, and what they'd miss if it disappeared tomorrow. 04 ### A staged plan The order we'd replace it in, one piece at a time, with the old system running until the new one gives the same answers. 05 ### A fixed price A fixed price for the first stage, so you know what you're committing to before you commit. Is it a fit? ## Is it for you? ### A good fit when - ✓ The business runs on an Access database or spreadsheets that have grown well beyond what they were built for - ✓ Only one or two people really understand how it works - ✓ More people, sites or customers need to use it than it can cope with ### Probably not when - – It's a small tool that one person uses and it still does the job (keep it) - – You need a quote for a fully specified project (send us the specification instead) FAQ ## Common questions ### What does a system review cost? £450 + VAT, fixed. If you then go ahead with the first stage, the £450 comes off it. ### Isn't replacing a system like this a huge project? It doesn't have to be done all at once. We replace one part at a time while the old system keeps running, so the cost is spread over stages and each one is priced before it starts. ### Do I have to use you afterwards? No. The plan is yours, and it's written so another developer could pick it up. ### What do you need from me? A copy of the database or spreadsheets if you can share it, and an hour or two with the people who use it most. ### What systems can you review? Microsoft Access and Excel most often, along with older in-house systems built on SQL Server, .NET or PHP. If yours is something we don't know well, we'll say so up front. Platforms ## Related platforms [Microsoft Access Access databases replaced with web applications on .NET and SQL Server, using the database itself as the specification. 4 guides](https://63digital.com/modernisation/microsoft-access/) [Spreadsheets The spreadsheets your business runs on, rebuilt as a proper system with access control, an audit trail and search. 1 guide](https://63digital.com/modernisation/spreadsheets/) System review ## Book a system review We go through the system you have now: what it does, what the data looks like and who relies on it. You get a written plan and a fixed price for the first stage. £450 + VAT, fixed price £450 off the build if you go ahead Privacy Policy & Terms apply.