Personalize My Order
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:
- Secure tokenized URLs — HMAC-SHA256 signed, time-limited (configurable expiry), works for both guests and logged-in customers
- Per-product custom fields — configure different fields for each product, or set global fallback fields that apply to all products
- 13 field types — text, textarea, select, radio, checkbox, file, number, email, URL, date, color, range, and tel
- Local file uploads — uploaded files are stored securely in your WordPress uploads directory (
wp-content/uploads/persmyor-uploads/); directory listing is blocked via.htaccess - Partial saves / autosave — customers can save a draft and come back later; the form autosaves on tab close
- Per-item completion tracking — each order item is tracked independently as pending, partial, or complete
- Admin display — submitted values shown inline on the order detail page, with a dedicated meta box and a status column on the orders list
- My Account integration — customers can review and complete pending customizations from their My Account page
- Developer hooks — filter fields per product or act when an order is fully customized
Configuration
General
- Token expiry — number of days before the customization link expires (default: 30)
- Send email on order — toggle the customization email sent to the customer after payment
Global fields
Define 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.
Per-product 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.
Field types
The following field types are supported in the field builder:
- text — single-line text input
- textarea — multi-line text input
- select — dropdown with predefined options
- radio — radio button group
- checkbox — single checkbox or multi-checkbox group
- file — file upload (stored in your server’s uploads directory); supports
accept(MIME types) andmax_size(in MB) - number — numeric input; supports
min,max,step - email — email address with format validation
- url — URL with format validation
- date — date picker
- color — color picker
- range — range slider; supports
min,max,step - tel — telephone number input
How it works
- Customer places an order on your WooCommerce store.
- A secure HMAC-signed token is generated and stored against the order.
- After payment, the customer receives an email with a unique customization link (also appended to standard WooCommerce customer emails).
- The customer opens the link, fills in the form for each ordered product, and submits.
- Submitted values are saved as WooCommerce order item meta.
- The admin sees the customization data on the order detail page, along with uploaded file links and a completion status badge.
- When all items are complete, an order note is added and the
persmyor_order_fully_customizedaction fires.
Developer hooks
Filters
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 );
Actions
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
} );
