Skip to main content
Every Slack surface in Chert is per-project and opt-in. Defaults are conservative — enabling the Slack app on a new channel does not retroactively turn on canvases, daily summaries, or low-leads alerts.

Before You Begin

  • Chert Notifications is installed (see Install).
  • A channel is bound to your project from Settings.

Notification routing

Reply notifications can fan out across email, Slack, and a generic HTTPS webhook. Configure on the Settings page under Reply notifications.
SettingTypeDefaultBehavior
notificationMethodslack | webhook | bothslackWhere reply cards are sent. webhook mode skips Slack entirely.
webhookUrlURLRequired when notificationMethod is webhook or both.
webhookSecretstringWhen set, every webhook POST carries an x-chert-signature HMAC header.
minInboundRepliesToNotifynumber ≥ 11Skip notification until the lead has sent at least this many inbound messages.
confirmationEmailemailAddress that receives an email copy alongside Slack.
notificationEmailsemail[]Additional CC observers on email notifications.

slack vs webhook vs both

Capabilityslackwebhookboth
Reply notification cards in SlackYesNoYes
Custom HTTPS webhookNoYesYes
Thread-reply triage with Chert NotificationsYesNoYes
@Chert Agent campaign operationsYes (separate app)Yes (separate app)Yes
Natural-language approvals on proposalsYesNoYes
All interactive features — thread-reply triage, approval reactions, agent operations — require the Slack app. A pure webhook integration receives notifications only.

The Nth-reply filter

minInboundRepliesToNotify gates notifications on how many inbound replies the lead has sent. With minInboundRepliesToNotify = 2, the first inbound is logged silently; the second triggers a notification. Useful for filtering one-word brush-offs. The filter is evaluated before any channel fires. When a reply is suppressed by the filter, Chert does not stamp the reply_email_sent_at marker, so a subsequent inbound from the same lead re-evaluates the threshold.

Per-project feature flags

Each canvas surface and the proactive alert are flagged off by default. Toggle from Settings → Slack canvases + daily summary.
FlagWhat it does
settingsMirrorEnabledMaintains the Overview canvas in the bound channel — agent docs plus a live mirror of campaign settings. Rewritten on every Settings save.
dailyStatsEnabledMaintains the Daily Summary canvas — one section per day with sent/replied/failed counts, refreshed every 30 min, finalized at the EOD time. Posts an EOD notification to the channel.
eodSummaryTimeWhen the daily summary flips to Final and posts the EOD notification. Defaults to 17:00.
eodSummaryTimezoneIANA timezone for eodSummaryTime. Defaults to America/Los_Angeles.
lowLeadsAlertEnabledOnce-per-day proactive alert in the channel when the untouched-lead pool drops below the configured daily auto-dial pull.
deepSourcingEnabledEnables the open_deep_sourcing_ticket agent tool and the Lead Lists canvas approval log.
Turning on dailyStatsEnabled or lowLeadsAlertEnabled causes Chert to post unprompted in the bound channel. Confirm with your team before enabling.

EOD summary timing

The Daily Summary cron ticks every 30 minutes. Behavior at each tick:
ConditionAction
First tick of a calendar dayInsert a new H2 at the top of the canvas with rolling counts.
Subsequent ticks before EODReplace today’s H2 with refreshed counts.
Tick at or after eodSummaryTimeReplace today’s H2 with Final, append the stats table, today’s replies, and a one-line “Tomorrow’s angle”. Post a notification in the channel with a permalink to the canvas.
The EOD body is inserted exactly once per day; subsequent ticks no-op on the body block.

Switching the bound channel

Re-pick a channel from Settings. The bot token stays the same; the binding changes. Existing canvases tied to the old channel remain in that channel — they are not migrated. Future writes go to the new channel and create fresh canvases there.

See Also

Notifications

Card anatomy and thread-reply triage.