Conversations
The conversation system lets vendors and customers communicate directly on a service order. Messages, file attachments, and status updates are tracked in a threaded conversation view.
Starting a Conversation
Section titled “Starting a Conversation”After the customer submits their requirements, the conversation panel becomes available on the service order page. Both parties can send messages from that point.
Sending Messages
Section titled “Sending Messages”Messages are submitted via AJAX (wp_ajax_wss_send_order_conversation):
- Open the service order page.
- Type your message in the conversation input field.
- Optionally attach files using the attachment button.
- Click Send.
Since 5.8.7, the handler derives the sender from the current user server-side and confirms the user is a party to the order, so a message cannot be forged or posted into another customer’s thread.
File Attachments
Section titled “File Attachments”Both parties can attach files to messages. Supported file types follow WordPress’s default allowed MIME types and can be adjusted with the wss_get_allowed_mime_types filter. Files are served through the plugin’s download handler, which includes path traversal prevention.
Live Conversation
Section titled “Live Conversation”When enabled, the conversation panel uses AJAX polling (via sell-conversation-update.php) to fetch new messages in real time. The polling endpoint:
- Fetches new messages since the last check.
- Marks received messages as read when the other party views them.
- This read status prevents the email cron from notifying about messages already seen live.
Enable it at WP Admin > WB Plugins > Woo Sell Services > General > Enable Live Conversation.
Email Notifications (Delayed)
Section titled “Email Notifications (Delayed)”Conversation emails are not sent immediately. They use a cron-based delay:
- A new message is stored with an unread status.
- A cron job runs every 5 minutes.
- The cron selects unread messages whose timestamp is older than the configured delay.
- If the message is still unread, an email is sent.
- If the other user already read it via live conversation, no email is sent.
This prevents email floods during rapid back-and-forth. Configure the delay at WB Plugins > Woo Sell Services > General > Email Conversation Delay (in minutes).
Support Agents (Co-Authors)
Section titled “Support Agents (Co-Authors)”If a product has a co-author assigned and the co-author notification setting is enabled, the co-author receives copies of conversation email notifications, can view the conversation in the admin order view, and can be assigned at the product or order level.
Support agents are assigned from the product edit screen (when Enable Support Agent Frontend is on) or from the WooCommerce order admin via the wss_assign_order_agent AJAX handler.
Conversation Notifications
Section titled “Conversation Notifications”| Notification | Recipient |
|---|---|
| Email (via cron) | The other party, after the configured delay |
| Email (vendor copy) | Vendor, if author_enabled is set in the conversation email’s WooCommerce settings |
| Live notification | Both parties (in-app) |
| Co-author email | Assigned support agent |
Storage
Section titled “Storage”Messages are stored in the wss_sell_messages custom table (author, recipient, order, item, product, message, timestamp, attachment, and read status). See Database Schema.
Owner Moderation
Section titled “Owner Moderation”The store owner can read, search, delete, and export all order conversations at WP Admin > WB Plugins > Order Conversations (since 5.8.7), backed by the REST API. See REST API.

