

Customization form as seen by the customer — tabbed per order item
Personalize My Order lets you collect product customization details from customers after they place an order — without blocking the checkout flow.
Once an order is paid, the customer receives a secure, time-limited link by email. They visit a dedicated customization page on your store, fill in the fields you’ve configured for each product, and submit. You see everything neatly displayed on the WooCommerce order detail page.
Key features:
wp-content/uploads/persmyor-uploads/); directory listing is blocked via .htaccessDefine fallback fields that apply to all products that don’t have their own field configuration. Use the drag-and-drop field builder to add, reorder, and remove fields.
On any product edit page, a Customization Fields meta box lets you configure fields specific to that product. These take priority over global fields.
Go to WooCommerce Settings Personalize My Order CAPTCHA Protection to require a CAPTCHA challenge before a customer can Submit or Save Draft on the customization form.
The CAPTCHA token is verified server-side on every Submit and Save Draft request; if the secret key isn’t configured, verification is skipped so the form is never accidentally blocked.
The following field types are supported in the field builder:
accept (MIME types) and max_size (in MB)min, max, stepmin, max, steppersmyor_order_fully_customized action fires.persmyor_product_fields
Modify the resolved field definitions for a product before the form is rendered or data is validated.
add_filter( 'persmyor_product_fields', function( $fields, $product_id, $product ) {
// Add, remove, or modify fields
return $fields;
}, 10, 3 );
persmyor_order_fully_customized
Fires when every customizable item in an order has been submitted with status complete. Receives the WC_Order object.
add_action( 'persmyor_order_fully_customized', function( $order ) {
// e.g. trigger production workflow
} );<h3>External services</h3>
This plugin can optionally connect to a CAPTCHA provider to help protect the customer-facing customization form from bots. Both integrations are off by default (“Disabled”) and only run once a store admin picks a provider and enters a Site Key / Secret Key under WooCommerce Settings Personalize My Order CAPTCHA Protection.
Google reCAPTCHA v2 (only used if you select it as the provider)
* What it’s used for: displaying the reCAPTCHA widget on the customization form and verifying the customer’s response before accepting a Submit or Save Draft action.
* What data is sent, and when: when a provider is selected and a customer loads the customization form, the widget script is loaded from Google’s servers; when the customer submits the form, the CAPTCHA token, the customer’s IP address, and your Secret Key are sent to Google for verification.
* This service is provided by Google: Terms of Service, Privacy Policy.
Cloudflare Turnstile (only used if you select it as the provider)
* What it’s used for: displaying the Turnstile widget on the customization form and verifying the customer’s response before accepting a Submit or Save Draft action.
* What data is sent, and when: when a provider is selected and a customer loads the customization form, the widget script is loaded from Cloudflare’s servers; when the customer submits the form, the CAPTCHA token, the customer’s IP address, and your Secret Key are sent to Cloudflare for verification.
* This service is provided by Cloudflare: Terms of Service, Privacy Policy.
In the plugin’s own settings page, a “Test this key” tool lets you verify a Site Key/Secret Key pair before saving. The corresponding provider script is only loaded in your browser when you click Load Test Widget, and only for the provider you’re testing.