Recued
Menu
← Back to recipes

Signal on free deterministic mail facts

by recued-core v1 8 views

Use “Signal on free deterministic mail facts” in Recued. The one owner-armed producer for the aggregate provider records route. It reads information without changing data in the connected service.

How it works 98 steps

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

Process (98 steps)
event_mail_slug default
Apply default
event_record_id default
Apply default
event_pointer_present all
Check if all conditions are true
defaults defaults
Apply defaults
pointer_present all
Check if all conditions are true
message ?
skip: step.pointer_present not_equal true
message_found compare
Check if message record exists
source_ready all
Check if all conditions are true
defaults_2 defaults
Apply defaults
source_is_inbound compare
Check if source direction equals inbound
timestamp_present compare
Check if source received at is greater than 0
analysis_ready all
Check if all conditions are true
bounded_callback_ttl_seconds clamp
Clamp setting mcp callback ttl seconds between 60 and 86400
bounded_business_start_hours clamp
Clamp setting business start hours between 0 and 23
bounded_business_end_hours clamp
Clamp setting business end hours between 1 and 24
business_window_valid compare
Check if bounded business start hours is less than bounded business end hours
bounded_sender_history_days clamp
Clamp setting sender history days between 1 and 3650
bounded_sender_burst_window_minutes clamp
Clamp setting sender burst window minutes between 1 and 10080
bounded_sender_burst_count_threshold clamp
Clamp setting sender burst count threshold between 2 and 500
bounded_thread_history_days clamp
Clamp setting thread history days between 1 and 3650
bounded_thread_burst_window_hours clamp
Clamp setting thread burst window hours between 1 and 8760
bounded_thread_burst_count_threshold clamp
Clamp setting thread burst count threshold between 2 and 500
bounded_long_thread_count_threshold clamp
Clamp setting long thread count threshold between 2 and 500
bounded_reply_silence_hours clamp
Clamp setting reply silence hours between 1 and 8760
bounded_large_body_bytes_threshold clamp
Clamp setting large body bytes threshold between 1024 and 1000000000
bounded_many_recipients_count_threshold clamp
Clamp setting many recipients count threshold between 2 and 1000
bounded_notification_min_signal_count clamp
Clamp setting notification min signal count between 1 and 10
exclusive_until math
Calculate: {{step.source_received_at}} + 1
sender_history_since math
Calculate: {{step.source_received_at}} - {{step.bounded_sender_history_days}} * 86400000
sender_burst_since math
Calculate: {{step.source_received_at}} - {{step.bounded_sender_burst_window_minutes}} * 60000
thread_history_since math
Calculate: {{step.source_received_at}} - {{step.bounded_thread_history_days}} * 86400000
thread_burst_since math
Calculate: {{step.source_received_at}} - {{step.bounded_thread_burst_window_hours}} * 3600000
sender_present compare
Check if from address has data
can_scan_sender all
Check if all conditions are true
relationship_as_of_iso date_add
Add 0 seconds to
skip: step.can_scan_sender not_equal true
relationship_as_of date_parse
Parse relationship as of iso as a date
skip: step.can_scan_sender not_equal true
relationship_effective_as_of math
Calculate: max({{step.relationship_as_of}}, {{step.source_received_at}})
skip: step.can_scan_sender not_equal true
business_context ?
skip: step.can_scan_sender not_equal true
relationship_level default
Apply default
relationship_present compare
Check if relationship level does not equal none
relationship_active compare
Check if relationship level equals active
sender_history ?
skip: step.can_scan_sender not_equal true
sender_rows default
Apply default
sender_history_count count
Count items in sender rows
sender_recent_rows filter
Filter by condition
sender_recent_count count
Count items in sender recent rows
first_seen_sender_in_window all
Check if all conditions are true
sender_burst all
Check if all conditions are true
thread_present compare
Check if thread id has data
can_scan_thread all
Check if all conditions are true
thread_history ?
skip: step.can_scan_thread not_equal true
thread_rows default
Apply default
thread_history_count count
Count items in thread rows
thread_recent_rows filter
Filter by condition
thread_recent_count count
Count items in thread recent rows
thread_burst all
Check if all conditions are true
long_thread_in_window all
Check if all conditions are true
prior_thread_rows filter
Filter by condition
previous_thread_direction default
Apply default
prior_outbound_rows filter
Filter by condition
prior_outbound_count count
Count items in prior outbound rows
reply_received all
Check if all conditions are true
latest_outbound_at default
Apply default
reply_lag_ms math
Calculate: {{step.source_received_at}} - {{step.latest_outbound_at}}
reply_silence_ms math
Calculate: {{step.bounded_reply_silence_hours}} * 3600000
reply_after_silence all
Check if all conditions are true
within_business_hours time_within_window
Apply time_within_window
after_hours all
Check if all conditions are true
attachment_part_reported all
Check if all conditions are true
large_body all
Check if all conditions are true
to_count count
Count items in source to
cc_count count
Count items in source cc
recipient_count math
Calculate: {{step.to_count}} + {{step.cc_count}}
many_recipients all
Check if all conditions are true
is_read_known compare
Check if source is read exists
unread_at_scan all
Check if all conditions are true
signal_rows default
Apply default
active_signals filter
Filter by condition
active_signal_count count
Count items in active signals
strong_signal any
Check if any of the conditions are true
enough_signals compare
Check if active signal count is at least bounded notification min signal count
attention_gate any
Check if any of the conditions are true
signal_active all
Check if all conditions are true
active_signal_labels map
Extract from each item
active_signal_text concat
Combine text or lists together
recued_enabled any
Check if any of the conditions are true
mcp_enabled any
Check if any of the conditions are true
mcp_destination_present compare
Check if setting mcp destination contract id has data
send_recued all
Check if all conditions are true
send_mcp all
Check if all conditions are true
notify_recued ?
skip: step.send_recued not_equal true
notify_mcp ?
skip: step.send_mcp not_equal true
attention_state ternary
Apply ternary
inbound_state ternary
Apply ternary
direction_state ternary
Apply ternary
state ternary
Apply ternary
card to_summary
Format results as a summary card
signal_table to_table
Format results as a data table
Settings 17 configurable

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

delivery mode setting = recued
business end hours setting = 18
reply silence hours setting = 48
sender history days setting = 90
thread history days setting = 365
business start hours setting = 8
notification channels setting = in_app
mcp callback ttl seconds setting = 21600
thread burst window hours setting = 24
large body bytes threshold setting = 1048576
long thread count threshold setting = 12
mcp destination contract id setting =
sender burst window minutes setting = 60
sender burst count threshold setting = 3
thread burst count threshold setting = 4
notification min signal count setting = 2
many recipients count threshold setting = 5

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.

Data it touches

Warehousedata.mail

About

Tags

mailemaildeterministicmetadatazero-aisignalnotificationmcpreactivepack:mail-signals

Details

98 steps 17 configurable settings recipe_id: mail-deterministic-signals-watch