Recued
Menu
← Back to recipes

Expected quotation email watcher

by recued-core v2 15 views

Use “Expected quotation email watcher” in Recued. It supports this workflow in the background and is not intended to be run directly.

Complete workflow

Use Expected Quotation Email Loop in Recued for quote, draft, watcher, and closed loop. It includes 2 ready-to-run workflows and 1 related pack in one install.

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

Use “Expected quotation email watcher” in Recued. It supports this workflow in the background and is not intended to be run directly.

emailmailexpected-emailquotation
by recued-core pinned v2

Use “Watch for expected quotation email” in Recued. Register a one-time watcher for a future inbound quotation email from a known sender and limited match terms.

emailmailexpected-emailquotation
by recued-core pinned v2

Use “Expected quotation email watcher timeout” in Recued. Low-frequency timeout role for the connected service. It moves a limited batch of expired rows from active to timedout, 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 v2

Use “Review expected quotation draft” in Recued. It carries out the named workflow using the connections and settings you choose.

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

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

Data fetch
▼ message core.mail.get
Get mail
▼
Process (42 steps)
■ mail_slug default
Apply default
■ record_id default
Apply default
■ defaults defaults
Apply defaults
■ 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 core.storage.shared.list
List storage shared
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
■ defaults_2 defaults
Apply defaults
■ 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
■ defaults_3 defaults
Apply defaults
■ skip_body_read any
Check if any of the conditions are true
◆ body_read core.mail.body-read
Body read mail
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 core.storage.shared.write
Write storage shared
skip: step.skip_purpose_review equal true
◆ notify_needs_owner_review core.notification.send
Send notification
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 core.storage.shared.write
Write storage shared
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 core.storage.shared.delete
Delete storage shared
skip: step.transition_succeeded not_equal true
◆ notify_draft_ready core.notification.send
Send notification
skip: step.write_ready_for_owner_draft.ok not_equal true
◆ link_draft_to_mail core.memory.link.create
Create memory link
skip: step.write_ready_for_owner_draft.ok not_equal true
■ card to_summary
Format results as a summary card
▼
Output
summary card
Settings 1 configurable

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

fallback channels setting = [object Object]

Uses (7 operations)

Mail Get mail core.mail.get
Shared store List storage shared core.storage.shared.list
Mail Body read mail core.mail.body-read
Shared store Write storage shared core.storage.shared.write
Notifications Send notification core.notification.send
Shared store Delete storage shared core.storage.shared.delete
Memory Create memory link core.memory.link.create

Trust & control

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

Permissions it requires

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

What it's allowed to do

Read Mail core.mail.get read-only
Read Shared store core.storage.shared.list read-only
Read Mail core.mail.body-read read-only
Write Shared store core.storage.shared.write external change
Read Notifications core.notification.send external change
Write Shared store core.storage.shared.delete external change
Write Memory core.memory.link.create external change

Data it touches

SurfacesMailShared storeNotificationsMemory
Warehousedata.shareddata.mail

About

Tags

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

Details

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