Recued
Menu
← Back to recipes

Signal on free deterministic mail facts

by recued-core v2 37 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 core.mail.get
Get mail
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 core.contact.business-context
Business context contact
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 core.mail.email.list
List mail email
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 core.mail.email.list
List mail email
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 core.notification.send
Send notification
skip: step.send_recued not_equal true
◆ notify_mcp core.notification.recipe-callback
Recipe callback notification
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
▼
Output
summary card
table signal_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 = [object Object]
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

Uses (5 operations)

Mail Get mail core.mail.get
Contacts Business context contact core.contact.business-context
Mail List mail email core.mail.email.list
Notifications Send notification core.notification.send
Notifications Recipe callback notification core.notification.recipe-callback

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 Contacts core.contact.business-context read-only
Read Mail core.mail.email.list read-only
Read Notifications core.notification.send external change
Write Notifications core.notification.recipe-callback external change

Data it touches

SurfacesMailContactsNotifications
Warehousedata.mail

About

Tags

mailemaildeterministicmetadatazero-aisignalnotificationmcpreactivepack:mail-signals

Details

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