Skip to content
Recued
Menu
← Back to recipes

Smartsheet row discussion closure watcher

by recued-core v1

Scheduled adopter for Smartsheet row discussion closure rows seeded by comment-smartsheet-row-with-closure. It lists only Recued-originated row-discussion watches, re-reads a bounded batch of Smartsheet row, and closes the shared row when the configured terminal column reaches a terminal value. Rows that cannot be read remain open instead of closing from cached state. It can notify the owner on terminal state, but it never creates, updates, deletes, shares, imports, uploads attachments, sends update requests, comments on, mutates automations or proofs, or otherwise mutates Smartsheet.

Complete workflow

Workflow pack for Recued-created Smartsheet row discussions. It composes the Smartsheet capability pack with a closure ledger: create one owner-approved row-level discussion/comment on an existing Smartsheet row, persist only the connection/sheet/row/discussion linkage in data.shared, and let a scheduled watcher re-read that exact row until a configured status column reaches a terminal value. Terminal rows close the Recued row; unreadable rows remain open until a future watcher pass can prove terminal state. This pack does not replace Smartsheet discussions, comments, automations, update requests, reminders, notifications, reports, dashboards, sharing, attachments, proofs, or sheet permissions; it adds Recued-visible closure state for row discussions Recued created.

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

Smartsheet row discussion closure watcher
This recipe Background automation

Scheduled adopter for Smartsheet row discussion closure rows seeded by comment-smartsheet-row-with-closure. It lists only Recued-originated row-discussion watches, re-reads a bounded batch of Smartsheet row, and closes the shared row when the configured terminal column reaches a terminal value. Rows that cannot be read remain open instead of closing from cached state. It can notify the owner on terminal state, but it never creates, updates, deletes, shares, imports, uploads attachments, sends update requests, comments on, mutates automations or proofs, or otherwise mutates Smartsheet.

smartsheetsheetsrowsdiscussions
by recued-core pinned v1

Workflow origin for the Smartsheet row discussion closure loop. It reads one Smartsheet row and current row discussions for context, creates exactly one owner-provided row-level discussion through recued-core.smartsheet.row.discussion.create, and when the discussion succeeds it seeds durable data.shared closure state for smartsheet-row-discussion-closure-watcher. It uses deterministic owner-provided copy rather than AI and does not add rows, edit cells, delete rows, share sheets, send update requests, upload attachments, mutate automations or proofs, or otherwise mutate Smartsheet beyond the owner-approved row discussion.

smartsheetsheetsrowsdiscussions
by recued-core pinned v1

Low-frequency timeout role for recued-core/smartsheet-row-discussion-closure. 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.

smartsheetwatchertimeoutowner-review
by recued-core pinned v1

Owner-visible list/close role for recued-core/smartsheet-row-discussion-closure. 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.

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

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

Data fetch
shared_row_watches ?
Process (104 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_sheet filter
Filter by condition
watch_rows_with_row filter
Filter by condition
watch_rows_with_discussion filter
Filter by condition
watch_rows_with_terminal_column 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 terminal column
has_candidate compare
Check if candidate rows has data
has_connection compare
Check if setting smartsheet has data
skip_row_read any
Check if any of the conditions are true
batch_context_envelopes merge
Combine objects together
batch_contexts map
Extract from each item
row_details ?
skip: step.skip_row_read equal true
row_details_live_batch_context pick
Keep only specific fields from
row_details_batch_context_envelopes merge
Combine objects together
row_details_batch_contexts map
Extract from each item
live_row_id default
Apply default
live_row_id_live_batch_context pick
Keep only specific fields from
live_row_id_batch_context_envelopes merge
Combine objects together
live_row_id_batch_contexts map
Extract from each item
has_live_row compare
Check if item live row id has data
has_live_row_live_batch_context pick
Keep only specific fields from
has_live_row_batch_context_envelopes merge
Combine objects together
has_live_row_batch_contexts map
Extract from each item
row_cells default
Apply default
row_cells_live_batch_context pick
Keep only specific fields from
row_cells_batch_context_envelopes merge
Combine objects together
row_cells_batch_contexts map
Extract from each item
terminal_cells filter
Filter by condition
terminal_cells_live_batch_context pick
Keep only specific fields from
terminal_cells_batch_context_envelopes merge
Combine objects together
terminal_cells_batch_contexts map
Extract from each item
has_terminal_cell compare
Check if item terminal cells has data
has_terminal_cell_live_batch_context pick
Keep only specific fields from
has_terminal_cell_batch_context_envelopes merge
Combine objects together
has_terminal_cell_batch_contexts map
Extract from each item
terminal_cell_value default
Apply default
terminal_cell_value_live_batch_context pick
Keep only specific fields from
terminal_cell_value_batch_context_envelopes merge
Combine objects together
terminal_cell_value_batch_contexts map
Extract from each item
terminal_cell_norm lowercase
Convert item terminal cell value to lowercase
terminal_cell_norm_live_batch_context pick
Keep only specific fields from
terminal_cell_norm_batch_context_envelopes merge
Combine objects together
terminal_cell_norm_batch_contexts map
Extract from each item
terminal_value_matched compare
Check if item terminal cell norm is one of setting terminal values
terminal_value_matched_live_batch_context pick
Keep only specific fields from
terminal_value_matched_batch_context_envelopes merge
Combine objects together
terminal_value_matched_batch_contexts map
Extract from each item
terminal_status all
Check if all conditions are true
terminal_status_live_batch_context pick
Keep only specific fields from
terminal_status_batch_context_envelopes merge
Combine objects together
terminal_status_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_terminal_enabled compare
Check if setting notify when terminal equals true
notify_terminal_enabled_live_batch_context pick
Keep only specific fields from
notify_terminal_enabled_batch_context_envelopes merge
Combine objects together
notify_terminal_enabled_batch_contexts map
Extract from each item
should_notify_terminal all
Check if all conditions are true
should_notify_terminal_live_batch_context pick
Keep only specific fields from
should_notify_terminal_batch_context_envelopes merge
Combine objects together
should_notify_terminal_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 5 configurable

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

channels setting = in_app
smartsheet setting =
batch limit setting = 5
terminal values setting = complete,completed,done,closed
notify when terminal setting = true

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

Data it touches

Warehousedata.shared

About

Tags

smartsheet smartsheetsheetsrowsdiscussionscommentswork-managementproject-managementclosurenotificationclosed-loopstate:smartsheet-row-discussion-closure-watcherpack:smartsheet-row-discussion-closure

Details

105 steps 5 configurable settings recipe_id: smartsheet-row-discussion-closure-watcher