Skip to content
Recued
Menu
← Back to recipes

Front conversation reply reopen watcher

by recued-core v1

Scheduled adopter for Front conversation reply reopen rows seeded by reply-front-conversation-with-reopen-watch. It lists only Recued-originated public-reply watches, re-reads a bounded batch of Front conversation and its latest events, and closes or flags the shared row when Front reports a terminal status, resolved ticket category, newer customer-return event, reopen event, or delivery error. It can notify the owner on closure or owner-actionable states, but it never updates conversations, sends replies, creates comments, creates reminders, mutates tags or custom fields, creates or edits Front Rules, changes inbox/admin settings, creates webhooks or application triggers, deletes records, bulk mutates, or calls arbitrary Front endpoints.

Complete workflow

Workflow pack for Recued-sent Front customer replies. It composes the Front capability pack with a reopen ledger: send one customer reply through the existing Front approval gate, persist only the connection/conversation/event-baseline linkage in data.shared, and let a scheduled watcher re-read that exact conversation and latest events until Front reports archived/spam/trashed/deleted, a resolved ticket category, or a newer owner-actionable event such as inbound, reopen, or delivery error. This pack does not replace Front Rules, reminders, time-goal rules, required tagging, native notifications, inbox routing, webhooks, application triggers, or teammate workflows; it adds Recued-visible closure/reopen state for conversations Recued replied to.

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

Front conversation reply reopen watcher
This recipe Background automation

Scheduled adopter for Front conversation reply reopen rows seeded by reply-front-conversation-with-reopen-watch. It lists only Recued-originated public-reply watches, re-reads a bounded batch of Front conversation and its latest events, and closes or flags the shared row when Front reports a terminal status, resolved ticket category, newer customer-return event, reopen event, or delivery error. It can notify the owner on closure or owner-actionable states, but it never updates conversations, sends replies, creates comments, creates reminders, mutates tags or custom fields, creates or edits Front Rules, changes inbox/admin settings, creates webhooks or application triggers, deletes records, bulk mutates, or calls arbitrary Front endpoints.

frontsupportshared-inboxconversation
by recued-core pinned v1

Workflow origin for the Front conversation reply reopen loop. It reads one conversation and its latest event, sends exactly one owner-provided customer reply through recued-core.front.conversation.reply, and when the approved reply operation succeeds it seeds durable data.shared state for front-conversation-reply-reopen-watcher. It uses user-configured deterministic copy rather than AI and does not archive conversations, change ticket status, create internal comments, mutate tags or custom fields, configure Front Rules, create reminders, alter inbox/admin settings, create webhooks or application triggers, delete records, upload attachments, bulk mutate, or call arbitrary Front endpoints.

frontsupportshared-inboxconversation
by recued-core pinned v1

Read-only AI-assisted brief for one Front conversation. It reads conversation metadata, messages, internal comments, events, followers, and inboxes through recued-core.front, then summarizes customer context, issue state, suggested next reply, and operational follow-ups. It never sends replies, posts comments, changes status, tags, assignees, contacts, or knowledge base content.

frontconversationsupportcustomer-service
by recued-core pinned v1

Low-frequency timeout role for recued-core/front-conversation-reply-reopen. 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.

frontwatchertimeoutowner-review
by recued-core pinned v1

Owner-visible list/close role for recued-core/front-conversation-reply-reopen. It lists bounded active, timed-out, and closed rows. Supplying a timed-out or closed key deletes only that exact terminal row; active watches cannot be deleted here.

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

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

Data fetch
shared_reopen_watches ?
Process (169 steps)
now date_add
Add 0 days to
watch_rows filter
Filter by condition
watch_rows_for_connection filter
Filter by condition
watch_rows_with_conversation filter
Filter by condition
never_checked_watch_rows filter
Filter by condition
checked_watch_rows filter
Filter by condition
checked_watch_rows_oldest_first sort
Sort by value.last_checked_at
fair_watch_rows flatten
Flatten nested lists in
candidate_rows slice
Take a subset of
batch_count count
Count items in candidate rows
candidate_count count
Count items in watch rows with conversation
has_candidate compare
Check if candidate rows has data
has_connection compare
Check if setting front has data
skip_front_read any
Check if any of the conditions are true
batch_context_envelopes merge
Combine objects together
batch_contexts map
Extract from each item
conversation ?
skip: step.skip_front_read equal true
conversation_live_batch_context pick
Keep only specific fields from
conversation_batch_context_envelopes merge
Combine objects together
conversation_batch_contexts map
Extract from each item
events_raw ?
skip: step.skip_front_read equal true
events_raw_live_batch_context pick
Keep only specific fields from
events_raw_batch_context_envelopes merge
Combine objects together
events_raw_batch_contexts map
Extract from each item
events default
Apply default
events_live_batch_context pick
Keep only specific fields from
events_batch_context_envelopes merge
Combine objects together
events_batch_contexts map
Extract from each item
latest_event_id default
Apply default
latest_event_id_live_batch_context pick
Keep only specific fields from
latest_event_id_batch_context_envelopes merge
Combine objects together
latest_event_id_batch_contexts map
Extract from each item
latest_event_type default
Apply default
latest_event_type_live_batch_context pick
Keep only specific fields from
latest_event_type_batch_context_envelopes merge
Combine objects together
latest_event_type_batch_contexts map
Extract from each item
latest_event_type_text lowercase
Convert item latest event type to lowercase
latest_event_type_text_live_batch_context pick
Keep only specific fields from
latest_event_type_text_batch_context_envelopes merge
Combine objects together
latest_event_type_text_batch_contexts map
Extract from each item
latest_event_emitted_at default
Apply default
latest_event_emitted_at_live_batch_context pick
Keep only specific fields from
latest_event_emitted_at_batch_context_envelopes merge
Combine objects together
latest_event_emitted_at_batch_contexts map
Extract from each item
latest_event_changed compare
Check if item latest event id does not equal item watch value baseline event id
latest_event_changed_live_batch_context pick
Keep only specific fields from
latest_event_changed_batch_context_envelopes merge
Combine objects together
latest_event_changed_batch_contexts map
Extract from each item
has_baseline_event compare
Check if item watch value baseline event id has data
has_baseline_event_live_batch_context pick
Keep only specific fields from
has_baseline_event_batch_context_envelopes merge
Combine objects together
has_baseline_event_batch_contexts map
Extract from each item
live_status default
Apply default
live_status_live_batch_context pick
Keep only specific fields from
live_status_batch_context_envelopes merge
Combine objects together
live_status_batch_contexts map
Extract from each item
live_status_text lowercase
Convert item live status to lowercase
live_status_text_live_batch_context pick
Keep only specific fields from
live_status_text_batch_context_envelopes merge
Combine objects together
live_status_text_batch_contexts map
Extract from each item
live_status_category default
Apply default
live_status_category_live_batch_context pick
Keep only specific fields from
live_status_category_batch_context_envelopes merge
Combine objects together
live_status_category_batch_contexts map
Extract from each item
live_status_category_text lowercase
Convert item live status category to lowercase
live_status_category_text_live_batch_context pick
Keep only specific fields from
live_status_category_text_batch_context_envelopes merge
Combine objects together
live_status_category_text_batch_contexts map
Extract from each item
closure_status compare
Check if item live status text is one of setting closure statuses
closure_status_live_batch_context pick
Keep only specific fields from
closure_status_batch_context_envelopes merge
Combine objects together
closure_status_batch_contexts map
Extract from each item
closure_status_category compare
Check if item live status category text is one of setting closure status categories
closure_status_category_live_batch_context pick
Keep only specific fields from
closure_status_category_batch_context_envelopes merge
Combine objects together
closure_status_category_batch_contexts map
Extract from each item
closure_state any
Check if any of the conditions are true
closure_state_live_batch_context pick
Keep only specific fields from
closure_state_batch_context_envelopes merge
Combine objects together
closure_state_batch_contexts map
Extract from each item
owner_review_event_type compare
Check if item latest event type text is one of setting owner review event types
owner_review_event_type_live_batch_context pick
Keep only specific fields from
owner_review_event_type_batch_context_envelopes merge
Combine objects together
owner_review_event_type_batch_contexts map
Extract from each item
needs_owner_review all
Check if all conditions are true
needs_owner_review_live_batch_context pick
Keep only specific fields from
needs_owner_review_batch_context_envelopes merge
Combine objects together
needs_owner_review_batch_contexts map
Extract from each item
actionable_status any
Check if any of the conditions are true
actionable_status_live_batch_context pick
Keep only specific fields from
actionable_status_batch_context_envelopes merge
Combine objects together
actionable_status_batch_contexts map
Extract from each item
closed_status ternary
Apply ternary
closed_status_live_batch_context pick
Keep only specific fields from
closed_status_batch_context_envelopes merge
Combine objects together
closed_status_batch_contexts map
Extract from each item
owner_review_owner_action_text trim
Trim whitespace from setting owner review owner action
owner_review_owner_action_text_live_batch_context pick
Keep only specific fields from
owner_review_owner_action_text_batch_context_envelopes merge
Combine objects together
owner_review_owner_action_text_batch_contexts map
Extract from each item
closed_owner_action_text trim
Trim whitespace from setting closed owner action
closed_owner_action_text_live_batch_context pick
Keep only specific fields from
closed_owner_action_text_batch_context_envelopes merge
Combine objects together
closed_owner_action_text_batch_contexts map
Extract from each item
owner_action ternary
Apply ternary
owner_action_live_batch_context pick
Keep only specific fields from
owner_action_batch_context_envelopes merge
Combine objects together
owner_action_batch_contexts map
Extract from each item
skip_close any
Check if any of the conditions are true
skip_close_live_batch_context pick
Keep only specific fields from
skip_close_batch_context_envelopes merge
Combine objects together
skip_close_batch_contexts map
Extract from each item
closed_watch_key replace
Replace text in item watch key
closed_watch_key_live_batch_context pick
Keep only specific fields from
closed_watch_key_batch_context_envelopes merge
Combine objects together
closed_watch_key_batch_contexts map
Extract from each item
close_watch ?
skip: item.skip_close equal true
close_watch_live_batch_context pick
Keep only specific fields from
close_watch_batch_context_envelopes merge
Combine objects together
close_watch_batch_contexts map
Extract from each item
delete_closed_active_watch ?
skip: item.close_watch.ok not_equal true
delete_closed_active_watch_live_batch_context pick
Keep only specific fields from
delete_closed_active_watch_batch_context_envelopes merge
Combine objects together
delete_closed_active_watch_batch_contexts map
Extract from each item
notify_closed_enabled compare
Check if setting notify when closed equals true
notify_closed_enabled_live_batch_context pick
Keep only specific fields from
notify_closed_enabled_batch_context_envelopes merge
Combine objects together
notify_closed_enabled_batch_contexts map
Extract from each item
notify_review_enabled compare
Check if setting notify when owner review equals true
notify_review_enabled_live_batch_context pick
Keep only specific fields from
notify_review_enabled_batch_context_envelopes merge
Combine objects together
notify_review_enabled_batch_contexts map
Extract from each item
notify_enabled ternary
Apply ternary
notify_enabled_live_batch_context pick
Keep only specific fields from
notify_enabled_batch_context_envelopes merge
Combine objects together
notify_enabled_batch_contexts map
Extract from each item
notification_title_prefix_text trim
Trim whitespace from setting notification title prefix
notification_title_prefix_text_live_batch_context pick
Keep only specific fields from
notification_title_prefix_text_batch_context_envelopes merge
Combine objects together
notification_title_prefix_text_batch_contexts map
Extract from each item
notification_title concat
Combine text or lists together
notification_title_live_batch_context pick
Keep only specific fields from
notification_title_batch_context_envelopes merge
Combine objects together
notification_title_batch_contexts map
Extract from each item
notification_text concat
Combine text or lists together
notification_text_live_batch_context pick
Keep only specific fields from
notification_text_batch_context_envelopes merge
Combine objects together
notification_text_batch_contexts map
Extract from each item
should_notify all
Check if all conditions are true
should_notify_live_batch_context pick
Keep only specific fields from
should_notify_batch_context_envelopes merge
Combine objects together
should_notify_batch_contexts map
Extract from each item
notify_owner ?
skip: item.should_notify not_equal true
notify_owner_live_batch_context pick
Keep only specific fields from
notify_owner_batch_context_envelopes merge
Combine objects together
notify_owner_batch_contexts map
Extract from each item
refreshed_watch_value merge
Combine objects together
skip: item.delete_closed_active_watch.ok equal true
refreshed_watch_value_live_batch_context pick
Keep only specific fields from
refreshed_watch_value_batch_context_envelopes merge
Combine objects together
refreshed_watch_value_batch_contexts map
Extract from each item
refresh_active_watch ?
skip: item.delete_closed_active_watch.ok equal true
refresh_active_watch_live_batch_context pick
Keep only specific fields from
refresh_active_watch_batch_context_envelopes merge
Combine objects together
refresh_active_watch_batch_contexts map
Extract from each item
closed_batch_rows filter
Filter by condition
refreshed_batch_rows filter
Filter by condition
closed_batch_count count
Count items in closed batch rows
refreshed_batch_count count
Count items in refreshed batch rows
summary to_summary
Format results as a summary card
Settings 11 configurable

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

front setting =
channels setting = in_app
batch limit setting = 5
closure statuses setting = archived,spam,trashed,deleted
notify when closed setting = true
closed owner action setting = Conversation reached a Front closure status or resolved ticket category; no further Recued follow-up is open for this conversation.
notify when owner review setting = true
owner review event types setting = inbound,reopen,message_bounce_error,sending_error
closure status categories setting = resolved
notification title prefix setting = Front conversation reply watch
owner review owner action setting = Conversation has a newer customer-return, reopen, or delivery-error event after the Recued reply; review the latest Front conversation before replying again.

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 notificationsRead your Front connection
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shared

About

Tags

front frontsupportshared-inboxconversationreplyreopennotificationclosed-loopstate:front-conversation-reply-reopen-watcherpack:front-conversation-reply-reopen

Details

170 steps 11 configurable settings recipe_id: front-conversation-reply-reopen-watcher