Skip to content
Recued
Menu
← Back to recipes

Send WooCommerce order customer reply

by recued-core v1

Cross-pack WooCommerce customer reply workflow. It reads one WooCommerce order, optional customer context, order notes, and refunds, drafts a plain-text customer reply from explicit owner guidance, and sends through core.mail.send only when send_reply is enabled. After an approved send returns a mail thread, it seeds durable data.shared watch state in the outbound-follow-up-response-watcher namespace so customer replies are surfaced back to the owner with the WooCommerce order context. WooCommerce is read-only in this workflow; it does not edit orders, create refunds, create customer-visible order notes, mutate products, inventory, coupons, shipping, payment gateways, webhooks, WordPress admin surfaces, or arbitrary endpoints.

Complete workflow

Workflow pack for WooCommerce order customer replies. It composes the WooCommerce capability pack with Email / Outbox and the existing outbound response loop: read one order and customer context, draft a grounded plain-text response, send only when send_reply is explicitly enabled so the mail-send approval boundary handles the customer-facing write, then watch the customer reply and surface actionable responses for owner follow-up or conversion. WooCommerce remains read-only in this workflow; it does not edit orders, refunds, products, inventory, coupons, payment gateways, shipping settings, webhooks, WordPress admin surfaces, or arbitrary endpoints.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Cross-pack WooCommerce customer reply workflow. It reads one WooCommerce order, optional customer context, order notes, and refunds, drafts a plain-text customer reply from explicit owner guidance, and sends through core.mail.send only when send_reply is enabled. After an approved send returns a mail thread, it seeds durable data.shared watch state in the outbound-follow-up-response-watcher namespace so customer replies are surfaced back to the owner with the WooCommerce order context. WooCommerce is read-only in this workflow; it does not edit orders, create refunds, create customer-visible order notes, mutate products, inventory, coupons, shipping, payment gateways, webhooks, WordPress admin surfaces, or arbitrary endpoints.

woocommercecommerceorderscustomers
by recued-core pinned v1
Watch outbound follow-up replies
Background automation

Reactive reply-side of the outbound follow-up loop. On every inbound mail it matches the message by thread against durable data.shared watch state seeded by TWO producers — outbound-follow-up-pressure-producer (status followup_due, watched_contact = the primary recipient) and send-support-reply-from-mail (status watching_customer_response, watched_contact = the customer). It confirms the reply's sender is that watched contact — recovering the contact from the linked source mail (via the stored record_id) when a producer denormalized no address, and failing closed (skipping) when it cannot establish the counterparty — then classifies the reply, advances the shared state to responded_closed or response_needs_owner, and links the reply mail to the watched source mail. Those state transitions are what unified-work-queue and weekly-owner-review read to surface or retire the follow-up. It never sends mail or mutates an external system.

emailmailfollowupreply
by recued-core pinned v1

Neutral detection recipe for the outbound follow-up loop. It scans one response_needs_owner data.shared watch row, fetches the reply body, extracts possible conversion facets for meeting, task, insight note, commitment, and linked CRM deal next-step updates, writes compatible proposal rows for the matching owner-invoked action recipes, records a per-reply notification marker, and sends one notification that the reply has conversion options. It does not choose an action and never creates calendar events, tasks, notes, commitments, or CRM updates. User intent is expressed later by running one or more manual action recipes.

emailmailfollowupconversion
by recued-core pinned v1

Owner-invoked create half of the meeting-request conversion edge. It reads one awaiting_owner_approval proposal written by outbound-follow-up-meeting-request-calendar (optionally targeted by proposal_thread_key), creates the calendar event from the proposal's already-extracted schedule, links the event back to the reply and source mail, closes the follow-up loop on the source watch row, and marks the proposal scheduled. This recipe is manual-only on purpose: the calendar create (and, on some providers, the attendee invite) is an outward-facing action, and running it is the owner's explicit approval. It takes no calendar action when there is no pending proposal or the proposal lacks a concrete start and end time.

emailmailcalendarmeeting
by recued-core pinned v1

Owner-invoked create half of the task conversion edge. It reads one awaiting_owner_approval proposal written by outbound-follow-up-task-from-reply, optionally targeted by proposal_thread_key, creates a Recued task from the proposal, links the task back to the reply and source mail, closes the source follow-up watch row, and marks the proposal created. This recipe is manual-only on purpose: running it is the owner's approval to turn the proposed reply action into durable work.

emailmailtaskfollowup
by recued-core pinned v1

Owner-invoked create half of the customer-insight note conversion edge. It reads one awaiting_owner_approval proposal written by outbound-follow-up-insight-note-from-reply, optionally targeted by proposal_thread_key, creates a Recued note from the proposal, links the note back to the reply and source mail, and records the note id on the source follow-up watch row WITHOUT closing the loop — an insight note is complementary memory capture, so the thread stays open (its status is preserved) for the actual task/meeting/reply. It marks the proposal created so it is not re-proposed. This recipe is manual-only on purpose: running it is the owner's approval to turn the proposed customer signal into durable relationship memory.

emailmailnotecustomer-insight
by recued-core pinned v1
Show all 8 recipes

Owner-invoked create half of the commitment conversion edge. It reads one awaiting_owner_approval proposal written by outbound-follow-up-commitment-from-reply, optionally targeted by proposal_thread_key, creates a Recued commitment from the proposal, links the commitment back to the reply and source mail, and records the commitment id on the source follow-up watch row WITHOUT closing the loop. A commitment is complementary accountability capture, so the thread keeps its current status for the actual task/meeting/reply. It marks the proposal created so it is not re-proposed. This recipe is manual-only on purpose: running it is the owner's approval to turn the proposed promise into durable work.

emailmailcommitmentfollowup
by recued-core pinned v1

Housekeeping GC for the outbound follow-up loop. data.shared writes do not honor ttl (the durable store rejects it), so the per-thread conversion proposals written by the calendar/task/insight-note/commitment/CRM deal update detectors would otherwise persist forever after they are approved. This daily auto_run lists the outbound-follow-up namespace and deletes only proposal rows in a terminal status (scheduled / task_created / note_created / commitment_created / crm_deal_updated). It is safe because re-proposal is already blocked by the conversion id recorded on the source watch row for one-shot conversions (calendar_source_id / task_id / insight_note_id / commitment_id), while CRM deal-update duplicates for the same reply are blocked by the per-reply notification marker plus pending proposal rows. It never touches the watch rows themselves (they stay for re-open on a later reply), and it leaves awaiting_owner_approval proposals alone (they carry no timestamp, so a stale-unactioned proposal cannot be aged out here — record a created_at on proposals if that is wanted later).

followuphousekeepinggcclosed-loop
by recued-core pinned v1
View pack details, dependencies, and permissions →
How it works 58 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (58 steps)
reply_goal trim
Trim whitespace from setting reply goal
owner_context trim
Trim whitespace from setting owner context
recipient_email_override trim
Trim whitespace from setting recipient email override
has_sender compare
Check if setting sender mail instance has data
store_status ?
order ?
customer_id default
Apply default
has_customer_id compare
Check if customer id is greater than 0
customer ?
skip: step.has_customer_id not_equal true
notes_raw ?
refunds_raw ?
billing_email default
Apply default
customer_email default
Apply default
has_recipient_override compare
Check if recipient email override has data
has_billing_email compare
Check if billing email has data
email_after_billing ternary
Apply ternary
recipient_email ternary
Apply ternary
has_recipient compare
Check if recipient email has data
billing_first_name default
Apply default
customer_first_name default
Apply default
has_billing_first_name compare
Check if billing first name has data
customer_name ternary
Apply ternary
line_items default
Apply default
notes default
Apply default
refunds default
Apply default
line_item_rows slice
Take a subset of
note_rows slice
Take a subset of
refund_rows slice
Take a subset of
line_item_count count
Count items in line items
refund_count count
Count items in refunds
draft ?
draft_content default
Apply default
skip_send any
Check if any of the conditions are true
send ?
skip: step.skip_send equal true
fail: config.sender_mail_instance is_empty
sent_thread_id default
Apply default
sent_message_id default
Apply default
sent_record_id_primary default
Apply default
sent_record_id default
Apply default
has_sent_thread compare
Check if sent thread id has data
has_sent_record compare
Check if sent record id has data
thread_key_colon replace
Replace text in sent thread id
thread_key_slash replace
Replace text in thread key colon
thread_key_dot replace
Replace text in thread key slash
thread_key_at replace
Replace text in thread key dot
thread_key_space replace
Replace text in thread key at
thread_key_left_angle replace
Replace text in thread key space
thread_key_right_angle replace
Replace text in thread key left angle
thread_key_plus replace
Replace text in thread key right angle
thread_key_equals replace
Replace text in thread key plus
thread_key_question replace
Replace text in thread key equals
skip_woocommerce_response_watch any
Check if any of the conditions are true
seed_woocommerce_response_watch ?
skip: step.skip_woocommerce_response_watch equal true
link_sent_mail_to_woocommerce_order ?
skip: step.skip_woocommerce_response_watch equal true
skip_customer_link any
Check if any of the conditions are true
link_sent_mail_to_woocommerce_customer ?
skip: step.skip_customer_link equal true
skipped_send compare
Check if skip send equals true
line_item_table to_table
Format results as a data table
summary to_summary
Format results as a summary card
Settings 8 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

tone setting = concise_helpful
order id setting = 0
reply goal setting = Write a concise customer-facing update about this WooCommerce order. Answer only from the WooCommerce order context and the owner context.
send reply setting = false
woocommerce setting =
owner context setting =
sender mail instance setting =
recipient email override setting =

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Where it runs

Device + server Runs on your device (browser) or your server.

Permissions it requires

Mail sendRead your Woocommerce connection
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shareddata.maildata.woocommerce

About

Tags

woocommerce woocommercecommerceorderscustomerscustomer-supportreplyemailmailsend-classapprovalclosed-loopstate:outbound-follow-up-response-watcherpack:woocommerce-customer-reply-deskai_surface

Details

58 steps 8 configurable settings recipe_id: send-woocommerce-order-customer-reply