Skip to content
Recued
Menu
← Back to recipes

Expected quotation email watcher

by recued-core v1

Hidden event watcher for watch-for-expected-quotation-email. It matches a sender, subject, and body purpose deterministically, then moves the small linkage row to owner-visible needs_owner state. It never stores the source body, past-deal context, or a generated draft; review-expected-quotation-draft re-reads the source and generates an ephemeral draft on demand.

Complete workflow

Workflow pack for one-off expected inbound quotation emails. The entry recipe stores only bounded matching/routing state; the hidden event watcher moves a matched source pointer to owner-visible needs_owner state; an hourly timeout role moves expired watches out of active; and the review/close recipe lists needs_owner and timed_out rows before re-reading one source message for an ephemeral draft. Message bodies, deal context, and generated drafts are never persisted in data.shared, and no recipe sends email.

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

Expected quotation email watcher
This recipe Background automation

Hidden event watcher for watch-for-expected-quotation-email. It matches a sender, subject, and body purpose deterministically, then moves the small linkage row to owner-visible needs_owner state. It never stores the source body, past-deal context, or a generated draft; review-expected-quotation-draft re-reads the source and generates an ephemeral draft on demand.

emailmailexpected-emailquotation
by recued-core pinned v1

Register a one-time watcher for a future inbound quotation email from a known sender and bounded match terms. The durable row stores only matching/routing scalars and source identifiers; past-deal context is supplied later to the review recipe and is never persisted in data.shared.

emailmailexpected-emailquotation
by recued-core pinned v1

Low-frequency timeout role for recued-core/expected-quotation-email. It moves a bounded batch of expired rows from active to timed_out, deletes the active copy only after the durable timeout write succeeds, and notifies the owner once per batch.

watchertimeoutowner-reviewclosed-loop
by recued-core pinned v1

Owner-invoked review for a matched quotation email. It lists small needs_owner linkage rows, re-reads exactly one matched source message, and generates an ephemeral copyable draft from review-time past-deal context. It never persists the source body, context, or generated draft and never sends mail.

emailmailquotationquote
by recued-core pinned v1
View pack details, dependencies, and permissions →
How it works 48 steps

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

Data fetch
message ?
Process (47 steps)
mail_slug default
Apply default
record_id default
Apply default
subject default
Apply default
from_email_raw default
Apply default
from_email_trimmed trim
Trim whitespace from from email raw
from_email lowercase
Convert from email trimmed to lowercase
thread_id_raw default
Apply default
has_thread_id_raw compare
Check if thread id raw has data
thread_id ternary
Apply ternary
sender_key_at replace
Replace text in from email
sender_key_dot replace
Replace text in sender key at
sender_key_plus replace
Replace text in sender key dot
sender_key_space replace
Replace text in sender key plus
has_sender_key compare
Check if sender key space has data
active_watches ?
skip: step.has_sender_key not_equal true
watching_rows filter
Filter by condition
candidate_rows slice
Take a subset of
has_candidate compare
Check if candidate rows has data
candidate_key default
Apply default
needs_owner_key replace
Replace text in candidate key
watch_key default
Apply default
subject_terms default
Apply default
expected_body_terms default
Apply default
subject_match contains_any
Apply contains_any
watch_until default
Apply default
has_watch_until compare
Check if watch until has data
watch_until_is_past is_past
Check if is in the past
skip: step.has_watch_until not_equal true
watch_expired ternary
Apply ternary
notify_channels default
Apply default
draft_goal default
Apply default
reply_tone default
Apply default
skip_body_read any
Check if any of the conditions are true
body_read ?
skip: step.skip_body_read equal true
request_body default
Apply default
body_present compare
Check if request body has data
body_quotation_match contains_any
Apply contains_any
now_iso date_add
Add 0 minutes to
skip_purpose_review any
Check if any of the conditions are true
write_needs_owner_review ?
skip: step.skip_purpose_review equal true
notify_needs_owner_review ?
skip: step.skip_purpose_review equal true
skip_ready_for_owner_draft any
Check if any of the conditions are true
write_ready_for_owner_draft ?
skip: step.skip_ready_for_owner_draft equal true
transition_succeeded compare
Check if write ready for owner draft ok equals true
delete_active_watch ?
skip: step.transition_succeeded not_equal true
notify_draft_ready ?
skip: step.write_ready_for_owner_draft.ok not_equal true
link_draft_to_mail ?
skip: step.write_ready_for_owner_draft.ok not_equal true
card to_summary
Format results as a summary card
Settings 1 configurable

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

fallback channels setting = in_app

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

Send notifications
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shareddata.mail

About

Tags

emailmailexpected-emailquotationquotedraftreactivewatcherclosed-loopcore-onlystate:expected-quotation-email-watcherpack:expected-quotation-email

Details

48 steps 1 configurable settings recipe_id: expected-quotation-email-watcher