Requirements Collection
Learn how to collect project details from buyers after they purchase your service. Requirements collection ensures you have all necessary information before starting work, reducing revisions and miscommunication.
What Is Requirements Collection?
Requirements collection is the process where buyers provide project-specific details after completing payment. This step occurs between payment confirmation and work beginning.
Why It Matters
For Vendors:
- Get clear project specifications before starting
- Reduce back-and-forth communication
- Minimize revision requests
- Avoid scope creep
For Buyers:
- Structured way to communicate needs
- Upload reference files and materials
- Ensure vendor understands requirements
- Start with clear expectations

When It Happens
Payment Confirmed → Pending Requirements → Requirements Submitted → In Progress
- Buyer completes payment → Order status:
pending_payment - Payment confirmed → Order status:
pending_requirements - Buyer submits requirements form → Order status:
in_progress - Vendor starts work → Deadline calculated and set
Reminder Schedule
Buyers receive automatic email reminders to submit requirements:
| Day | Reminder Type | Email Sent |
|---|---|---|
| 1 | First Reminder | “Please submit your requirements” |
| 3 | Second Reminder | “Your vendor is waiting for requirements” |
| 5 | Final Warning | “Submit requirements or order may be affected” |
Reminder System:
- Runs via daily cron:
wpsssendrequirements_reminders - Tracks reminder count per order in options table
- Stops sending after 3 reminders sent
- Vendor also notified on first reminder
Timeout Behavior
Default: Requirements timeout is disabled (set to 0 days)
When enabled in Settings → Orders → Requirements Timeout Days:
Auto-Start Mode (Default)
Setting: autostarton_timeout = Enabled
What Happens:
- Order auto-transitions to
in_progresswithout requirements - Vendor notified: “Order auto-started, buyer didn’t submit requirements”
- Buyer notified: “Order started, please contact vendor with details”
- Vendor can request details via messaging
Example: Timeout set to 7 days
Day 0 → Payment confirmed (pending_requirements)
Day 1 → First reminder sent
Day 3 → Second reminder sent
Day 5 → Final reminder sent
Day 7 → Order auto-starts (in_progress)
Auto-Cancel Mode
Setting: autostarton_timeout = Disabled
What Happens:
- Order auto-transitions to
cancelled - Automatic refund processed
- Buyer notified: “Order cancelled due to no requirements submitted”
- Vendor notified: “Order cancelled, buyer didn’t submit requirements”
Requirements Form Builder
Vendors create custom requirements forms for each service.
Accessing the Form Builder
For Vendors:
- Go to Dashboard → My Services
- Click Edit on a service
- Navigate to Requirements tab
- Click Add Field to start building
For Admins:
- Go to WP Admin → WP Sell Services → Services
- Click Edit on any service
- Scroll to Requirements Form metabox
- Configure fields for that service

Form Builder Interface
| Component | Description |
|---|---|
| Field Type | Select input type (text, textarea, file, select) |
| Question | The question shown to the buyer |
| Placeholder | Example text inside the field |
| Help Text | Additional instructions below the field |
| Required | Whether buyer must fill this field |
| Field Order | Drag to reorder fields |
| Actions | Edit, duplicate, or delete field |
Note: The field’s question property is used as the database key, not label.
Available Field Types
Only 4 field types are exposed in the service creation wizard:
1. Text (Single Line)
Best For: Short answers like names, URLs, titles
Configuration:
- Question: “Website URL”
- Placeholder: “https://example.com“
- Help Text: “Enter the URL where you want the service delivered”
- Required: Yes/No
Use Cases:
- Website URL
- Company name
- Contact email
- Social media handle
- Reference link
2. Textarea (Multiple Lines)
Best For: Detailed descriptions, long-form content
Configuration:
- Question: “Project Description”
- Placeholder: “Describe your project in detail…”
- Help Text: “Include goals, target audience, and specific requirements”
- Required: Yes/No
Use Cases:
- Project overview
- Design preferences
- Content to be written
- SEO keywords list
- Feature requirements
3. File Upload
Best For: Reference materials, existing assets, examples
Configuration:
- Question: “Upload Reference Files”
- Help Text: “Upload any reference materials, brand guidelines, or examples”
- Required: Yes/No
File Restrictions:
- Max Size: 50MB per file
- Allowed Types: 24 file extensions (see below)
Allowed File Types:
Images: jpg, jpeg, png, gif, webp
Documents: pdf, doc, docx, xls, xlsx, ppt, pptx, txt, rtf, csv
Archives: zip, rar, 7z
Media: mp3, wav, mp4, mov, avi
Design: psd, ai, eps, svg
Use Cases:
- Brand logo files
- Reference designs
- Content documents
- Audio/video samples
- Design mockups
4. Select (Dropdown)
Best For: Single choice from predefined options
Configuration:
- Question: “Select Package Type”
- Choices: Enter comma-separated options
- Required: Yes/No
Use Cases:
- Package selection
- Service tier
- Preferred style
- Industry category
- Time zone preference
Note: While the code supports radio, checkbox, and number types internally, only the 4 types above are exposed in the service creation wizard UI.
File Upload System
Upload Process
- Buyer selects file(s) from their device
- JavaScript validates file type and size (client-side)
- File uploaded via AJAX or form submission
- Server validates file type again (security)
- WordPress media library processes file
- Attachment ID stored with requirements
File Security
Validation Steps:
wpcheckfiletype()verifies extension- Extension checked against whitelist
- File size checked against 50MB limit
- Files marked as
post_status: 'private'in media library - Order ID stored in
wpssorder_idpost meta
Filterable: Developers can modify allowed types:
add_filter('wpss_requirements_allowed_file_types', function($types) {
$types[] = 'sketch'; // Add Sketch files
return $types;
});
Storage Location
Uploaded files are stored in WordPress uploads directory:
/wp-content/uploads/YYYY/MM/filename.ext
Attachments are created as private posts, making them accessible only to:
- Order buyer
- Order vendor
- Site administrators
Submitting Requirements
Buyer Submission Flow

- Buyer receives “Submit Requirements” email
- Clicks link to requirements form
- Fills out all required fields
- Uploads any requested files
- Reviews submission
- Clicks Submit Requirements
What Happens Next:
- Requirements saved to
wpssorderrequirementstable - Order status changes to
in_progress - Vendor receives “Requirements Submitted” notification
- Delivery deadline calculated and set
- Vendor can view requirements in order details
Validation
Client-Side (JavaScript):
- Required fields must have values
- File size checked before upload
- File type validated against allowed list
Server-Side (PHP):
- Required field presence checked
- File types validated via
wpcheckfiletype() - File sizes checked (max 50MB)
select/radiovalues validated against defined choicesnumberfields validated as numeric
Validation Errors:
"Website URL is required."
"Invalid selection for Package Type."
"Project Description must be a number."
Late Submission
Setting: allowlaterequirements (default: disabled)
When enabled, buyers can submit requirements even after work has started:
- Only allowed if order is
in_progressAND no requirements exist yet - Vendor receives “Late Requirements Submitted” notification
- Order stays in
in_progress(doesn’t reset deadline) - Useful for flexible services where work can start without full details
Viewing Submitted Requirements
Vendor View

From Order Details:
- Go to Dashboard → Orders
- Click on order
- View Requirements tab
- See all submitted fields and attachments
Display Format:
- Field question as label
- Submitted value displayed below
- File attachments shown with download links
- Submission timestamp shown
Admin View
From Admin Panel:
- Go to WP Sell Services → Orders
- Open order
- View Requirements meta box
- See all submitted data
Data Structure
Requirements are stored as JSON in the database:
{
"field_data": {
"Website URL": "https://example.com",
"Project Description": "Create a modern homepage...",
"Select Package Type": "Premium"
},
"attachments": [
{
"id": 123,
"key": "reference_files",
"name": "logo.png",
"url": "https://site.com/wp-content/uploads/2024/02/logo.png",
"type": "image/png",
"size": 45678
}
],
"submitted_at": "2024-02-15 10:30:45"
}
Best Practices
For Vendors (Creating Forms)
- Keep it focused – Only ask what you truly need
- Use clear questions – Avoid jargon or ambiguous wording
- Provide examples – Use placeholder text to guide buyers
- Mark required wisely – Only require fields you can’t work without
- Add help text – Explain why you need the information
- Test your form – Place a test order to see the buyer experience
Good Question:
Question: "What is your target audience?"
Help Text: "Example: Millennial professionals aged 25-35 interested in fitness"
Bad Question:
Question: "TG demographics?"
Help Text: (none)
For Buyers (Submitting)
- Submit promptly – Vendors can’t start until you do
- Be thorough – More detail = better results
- Include examples – Upload reference materials if possible
- Ask questions – Use messaging if something is unclear
- Review before submitting – Can’t edit after submission
For Admins
- Review service forms – Ensure vendors ask appropriate questions
- Monitor submission rates – Identify services with low submission rates
- Set reasonable timeouts – Balance buyer protection and vendor patience
- Enable late submissions carefully – Only for flexible service types
- Check email deliverability – Ensure reminder emails reach buyers
Configuration
Order Settings
Location: WP Admin → WP Sell Services → Settings → Orders
| Setting | Default | Description |
|---|---|---|
| Allow Late Requirements | Disabled | Allow submission after work started |
| Requirements Timeout Days | 0 (disabled) | Days before taking timeout action |
| Auto-Start on Timeout | Enabled | Start order vs cancel when timeout reached |
Email Notifications
Requirement-related emails are configured in Settings → Emails:
- ✅
requirements_reminder– Buyer reminder emails (day 1, 3, 5) - ✅
requirements_submitted– Vendor notification - ✅
requirements_timeout– Both parties on timeout action
Troubleshooting
Buyer Can’t Access Form
Symptoms: Requirements form shows “Not Available” or 404
Causes:
- Order not in
pending_requirementsstatus - Payment not confirmed yet
- Service has no requirements configured
Solutions:
- Check order status in database
- Verify payment was successful
- Confirm service has requirements fields defined
File Upload Fails
Symptoms: “Upload failed” error or silent failure
Causes:
- File exceeds 50MB limit
- File type not in allowed list
- Server
uploadmaxfilesizetoo low - WordPress media upload permissions issue
Solutions:
- Check file size: Must be under 50MB
- Verify file type is in allowed list (24 extensions)
- Increase
uploadmaxfilesizein php.ini if needed - Check uploads directory permissions (775 or 755)
Reminders Not Sending
Symptoms: Buyers not receiving reminder emails
Causes:
- Cron not running
- Email notifications disabled
- Email deliverability issue
Solutions:
- Test cron:
wp cron event run wpsssendrequirements_reminders - Check Settings → Emails: Ensure reminder emails enabled
- Test site email: Send test email from WordPress
- Check spam folder
- Configure SMTP plugin if needed
Timeout Not Working
Symptoms: Orders stay in pending_requirements past timeout
Causes:
- Timeout days set to 0 (disabled)
- Cron not running
Solutions:
- Verify
requirementstimeoutdays> 0 - Test cron:
wp cron event run wpsscheckrequirements_timeout - Check cron schedule:
wp cron event list
Developer Reference
Hooks
Actions:
// Fires when requirements are submitted
do_action('wpss_requirements_submitted', $order_id, $field_data, $attachments);
// Fires when timeout action is taken
do_action('wpss_requirements_timeout', $order_id, $auto_start);
Filters:
// Modify allowed file types
apply_filters('wpss_requirements_allowed_file_types', $types);
// Customize validation rules
apply_filters('wpss_requirements_validation_rules', $rules, $field);
Database Schema
Table: {prefix}wpssorderrequirements
| Column | Type | Description |
|---|---|---|
id | bigint(20) | Primary key |
order_id | bigint(20) | Order ID (foreign key) |
field_data | longtext | JSON of submitted field values |
attachments | longtext | JSON of uploaded file data |
submitted_at | datetime | Submission timestamp |
Service Meta
Meta Key: wpssrequirements
Structure:
[
[
'type' => 'text',
'question' => 'Website URL',
'placeholder' => 'https://',
'help_text' => 'Enter your site URL',
'required' => true
],
[
'type' => 'file',
'question' => 'Upload Logo',
'required' => false
]
]
