xpay✦ Commerce
Directory
WooCommerce plugins
Zevvo File Upload for WooCommerce
Zevvo File Upload for WooCommerce
HPOS-compatible file uploads for WooCommerce. Let customers upload files on product pages. Secure, lightweight, and built for custom orders.
Will this break my store?
What the WordPress.org registry says about keeping Zevvo File Upload for WooCommerce running.
Tested to 6.9.7 — 2 branches behind 7.1
A branch or two behind — normal for a plugin between releases.5 months ago
7.4
Your host must be running at least this version.6.0
woocommerce
These must be installed and active first.1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.Maintenance & trust
Scored on how Zevvo File Upload for WooCommerce is looked after — not on how many stores run it.
Maintenance
35 / 35WordPress compatibility
14 / 20Support responsiveness
Not enough dataMerchant satisfaction
Not enough dataListing transparency
6 / 10Ratings
No one has rated this plugin on WordPress.org yet. That is a statement about the ratings page, not about the plugin — plenty of well-kept plugins never collect them.
Zevvo File Upload for WooCommerce allows your customers to upload files directly on product pages and have those files automatically attached to their orders. Whether you run a print-on-demand store, a custom gift shop, or any business that needs customer-supplied files, Zevvo handles it securely and smoothly.
Built from the ground up for HPOS (High-Performance Order Storage) compatibility, it works with both the classic and block-based WooCommerce cart and checkout.
Features
- Product-Level Configuration — Enable file uploads per product with its own settings
- Required Upload Option — Mark the upload field as required before adding to cart
- Flexible File Types — Support for JPG, PNG, GIF, WebP, PDF, and ZIP — toggle per product
- File Size Control — Set maximum file size per product (default: 10 MB)
- Multiple Files — Allow up to 5 files per product upload field
- Drag & Drop Interface — Clean, responsive drag-and-drop upload zone with keyboard support
- File Previews — In-browser image and PDF previews before upload
- Thumbnail Previews in Cart & Orders — Image thumbnails and file icons in cart, checkout, and order pages
- Admin File Dashboard — View, download, trash, and permanently delete all uploaded files from one screen
- CSV Export — Export all uploaded file data to CSV for reporting
- Trash & Restore — Soft-delete files with one-click restore from trash
- Automatic Cleanup — Daily cron job removes orphaned pending files (older than 24 hours)
- Order Integration — Files automatically attach to orders at checkout and display in order details
- Email Notifications — File thumbnails and icons included in WooCommerce order confirmation emails
- HPOS Compatible — Full support for WooCommerce High-Performance Order Storage
- Blocks Compatible — Works with Gutenberg block-based cart and checkout
- Secure Storage — Files stored with randomized names in a protected directory (.htaccess + index.php)
- Developer Hooks — Filters and actions for extending behavior without modifying plugin files
Perfect For
- Print-on-demand stores (T-shirts, mugs, posters, etc.)
- Custom engraving or embroidery shops
- Personalized gift and keepsake stores
- Photo printing and canvas services
- Graphic design and artwork commissions
- Legal, medical, or document processing services
- Any WooCommerce store that needs customer-supplied files
Security & Reliability
- Strict MIME type validation using WordPress’s
wp_check_filetype_and_ext() - Server-side re-validation on every upload request
- Files stored with MD5-hashed filenames — original names are never exposed on disk
- Upload directory protected with
.htaccess(denies PHP execution + directory listing) index.phpsentinel file prevents directory browsing on all servers- Per-session upload abuse limit (configurable via filter) prevents server exhaustion
- Per-page-load context ID system enforces per-product file count limits strictly
- Nonce verification on all AJAX requests and form submissions
- GDPR-friendly: automatic cleanup of pending (unattached) files via daily cron
Yes. Zevvo File Upload is built specifically for WooCommerce’s High-Performance Order Storage (HPOS) and works with both HPOS and legacy (post-based) order storage.
The plugin supports JPG, PNG, GIF, WebP, PDF, and ZIP. Each file type can be toggled on or off per product from the product metabox.
Files are stored in your WordPress uploads directory at wp-content/uploads/zevvo_uploads/. Filenames are randomized (MD5 hash) for security. The directory is protected with .htaccess rules that prevent PHP execution and directory listing.
Note for Nginx users: .htaccess rules don’t apply on Nginx. Files are still protected by random hashed names, but we recommend configuring your Nginx server block to deny direct access to the zevvo_uploads directory for additional protection.
Yes. Each product has its own maximum file size setting (in MB). The default is 10 MB.
Go to WooCommerce → Zevvo Uploads in your admin. You’ll see all uploaded files with options to view (with in-admin preview), download, move to trash, or permanently delete.
Yes. Image uploads appear as thumbnail previews and documents (PDF, ZIP) appear as file icons in WooCommerce order confirmation emails sent to both customers and admins.
Files remain in the system and stay attached to the order. You can manually delete them from the admin dashboard.
Yes. File upload settings are configured on the parent product and apply to all variations.
Yes. You can allow 1 to 5 files per product. The upload field displays a counter showing how many files have been selected out of the allowed maximum.
Yes. Check the Required Field option in the product metabox. Customers will not be able to add the product to cart without uploading at least one file.
No order-level limit. Each product in the cart can have its own independent file upload configuration.
The plugin works with any properly-coded WooCommerce theme. It uses standard WooCommerce hooks for classic themes, and includes Store API integration for block-based cart and checkout.
Yes. Go to WooCommerce → Zevvo Uploads, navigate to the Process Uploads tab, and click the Export CSV button to download all file records as a CSV file.
A daily WordPress cron job removes “pending” files (uploaded but never attached to an order) that are older than 24 hours. This prevents orphaned files from accumulating on your server. The retention period for attached files is configurable in the plugin settings.
The plugin provides the following filters and actions for developers:
Filters:
* zevvo_allowed_file_types — Modify allowed MIME types for a product ($types, $product_id)
* zevvo_max_upload_size — Modify the maximum file size in MB ($size_mb, $product_id)
* zevvo_max_files_count — Modify the maximum number of files ($max_files, $product_id)
* zevvo_session_abuse_limit — Change the per-session global upload ceiling ($limit)
Actions:
* zevvo_validate_upload — Run custom validation before a file is saved ($file, $post_id)
See the docs/DEVELOPER-HOOKS.md file in the plugin directory for usage examples.
Yes. Pending (unattached) files are automatically deleted after 24 hours. Attached files are stored only as long as needed for order processing, and you can configure automatic deletion after a set number of days in the plugin settings.
Yes. The plugin includes a Gutenberg block for product pages and is fully compatible with the WooCommerce block-based cart and checkout via the Store API integration.
Use the WordPress.org support forum for this plugin.
Categories
Plugin details
Tags on WordPress.org
