Custom checkout fields for classic and block checkout
Designed, engineered, tested, and connected to the surrounding product workflow.
Engineering service / Ali Nawaz
I customize WooCommerce where off-the-shelf plugins stop: checkout fields and rules, deposits and paid delivery options, product and variation behavior, and integrations that keep orders flowing to your other systems. I have published five WooCommerce plugins of my own, and client stores get the same standard of code.
The approach
Most WooCommerce requests end up at the checkout. Since WooCommerce 8.3, new stores use the block-based Checkout, which ignores the classic hooks that most tutorials and many older plugins rely on. I build checkout changes for the Checkout block with WooCommerce's Additional Checkout Fields API and Store API, or for the classic shortcode checkout when a store depends on it, and I keep every order change compatible with High-Performance Order Storage (HPOS).
You work directly with me from requirements through launch. That keeps product context close to technical decisions and avoids the gaps that appear when strategy, interface, backend, and deployment are treated as separate problems.
What I can build
The scope is shaped around your users, operating reality, and the smallest responsible path to value.
Designed, engineered, tested, and connected to the surrounding product workflow.
Designed, engineered, tested, and connected to the surrounding product workflow.
Designed, engineered, tested, and connected to the surrounding product workflow.
Designed, engineered, tested, and connected to the surrounding product workflow.
Real examples
Each row links a frequent request to the approach I use. Where I have published a plugin that does it, the plugin is named, and you can read its code on GitHub.
| What the store needs | How I build it |
|---|---|
| Extra checkout fields, such as a delivery date, VAT number, or gift message | Additional Checkout Fields API for the Checkout block, classic hooks for the shortcode checkout, saved to the order with HPOS-safe APIs |
| Deposits and partial payments | A server-side balance adjustment recorded on the order and shown in emails and My Account, as in Fixed Deposit for WooCommerce |
| Paid delivery or service options | Options and prices stored in settings, with the fee always calculated from the stored price, as in Checkout Delivery Options for WooCommerce |
| Age checks for restricted products | Server-side validation that blocks the order without storing ID numbers, as in German ID Age Verification for WooCommerce |
| Shareable links to product variations | WooCommerce's own attribute query parameters, so links pre-select the right options, as in Variation URLs for WooCommerce |
| Sending orders and products to another system | Background batches and live updates through WP-Cron or Action Scheduler, as in WP to Firebase |
What the work should create
04 / The process
You get a senior engineering partner—not a black box. The process stays direct, collaborative, and focused on outcomes.
Clarify the problem, users, constraints, and measure of success.
Shape the right product, technical plan, and delivery path.
Create in focused iterations with quality visible at every step.
Test, deploy, measure, and improve with confidence.
Common questions
Yes. On the block-based Checkout I use WooCommerce's Additional Checkout Fields API and the Store API, so each field is validated on the server, saved to the order, and shown in the admin and order emails. On the classic shortcode checkout I use the classic checkout hooks. I confirm which checkout your store uses before writing any code.
Usually because the checkout page now uses the Checkout block, which does not run classic hooks such as woocommerce_after_order_notes. The fix is to rebuild the customization for the block checkout, or to switch the page back to the classic checkout shortcode if the store relies on plugins that only support it.
Yes. I replace direct post and post meta queries on orders with WooCommerce's order APIs, declare compatibility, and test with High-Performance Order Storage both on and off, including the sync and compatibility modes.
Yes. My Fixed Deposit for WooCommerce plugin charges a set amount or percentage at checkout and records the balance due on the order. For automatic balance payments, payment plans, or per-product rules, I build a custom flow for your store.
It shouldn't. I load scripts only on the pages that need them, avoid extra database queries during checkout, and calculate fees and rules once per cart update rather than on every page load.
Yes. Most of my WooCommerce work extends a live store: new checkout fields, a deposit or delivery option, a plugin conflict, or an integration, built and tested on a staging copy before it reaches customers.
Start a conversation
Tell me what you are building and where you need support. I’ll respond with a clear, practical next step.
Start your project