> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trychert.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Per-project Slack settings: notification routing, feature flags, and the Nth-reply filter.

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](/slack/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**.

| Setting                     | Type                           | Default | Behavior                                                                       |
| --------------------------- | ------------------------------ | ------- | ------------------------------------------------------------------------------ |
| `notificationMethod`        | `slack` \| `webhook` \| `both` | `slack` | Where reply cards are sent. `webhook` mode skips Slack entirely.               |
| `webhookUrl`                | URL                            | —       | Required when `notificationMethod` is `webhook` or `both`.                     |
| `webhookSecret`             | string                         | —       | When set, every webhook POST carries an `x-chert-signature` HMAC header.       |
| `minInboundRepliesToNotify` | number ≥ 1                     | `1`     | Skip notification until the lead has sent at least this many inbound messages. |
| `confirmationEmail`         | email                          | —       | Address that receives an email copy alongside Slack.                           |
| `notificationEmails`        | email\[]                       | —       | Additional CC observers on email notifications.                                |

### `slack` vs `webhook` vs `both`

| Capability                                   | `slack`            | `webhook`          | `both` |
| -------------------------------------------- | ------------------ | ------------------ | ------ |
| Reply notification cards in Slack            | Yes                | No                 | Yes    |
| Custom HTTPS webhook                         | No                 | Yes                | Yes    |
| Thread-reply triage with Chert Notifications | Yes                | No                 | Yes    |
| `@Chert Agent` campaign operations           | Yes (separate app) | Yes (separate app) | Yes    |
| Natural-language approvals on proposals      | Yes                | No                 | Yes    |

<Note>
  All interactive features — thread-reply triage, approval reactions,
  agent operations — require the Slack app. A pure webhook integration
  receives notifications only.
</Note>

### 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**.

| Flag                    | What it does                                                                                                                                                                               |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `settingsMirrorEnabled` | Maintains the **Overview** canvas in the bound channel — agent docs plus a live mirror of campaign settings. Rewritten on every Settings save.                                             |
| `dailyStatsEnabled`     | Maintains 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. |
| `eodSummaryTime`        | When the daily summary flips to **Final** and posts the EOD notification. Defaults to `17:00`.                                                                                             |
| `eodSummaryTimezone`    | IANA timezone for `eodSummaryTime`. Defaults to `America/Los_Angeles`.                                                                                                                     |
| `lowLeadsAlertEnabled`  | Once-per-day proactive alert in the channel when the untouched-lead pool drops below the configured daily auto-dial pull.                                                                  |
| `deepSourcingEnabled`   | Enables the `open_deep_sourcing_ticket` agent tool and the **Lead Lists** canvas approval log.                                                                                             |

<Warning>
  Turning on `dailyStatsEnabled` or `lowLeadsAlertEnabled` causes Chert
  to post unprompted in the bound channel. Confirm with your team
  before enabling.
</Warning>

## EOD summary timing

The Daily Summary cron ticks every 30 minutes. Behavior at each tick:

| Condition                         | Action                                                                                                                                                                            |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| First tick of a calendar day      | Insert a new H2 at the top of the canvas with rolling counts.                                                                                                                     |
| Subsequent ticks before EOD       | Replace today's H2 with refreshed counts.                                                                                                                                         |
| Tick at or after `eodSummaryTime` | Replace 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

<CardGroup cols={2}>
  <Card title="Notifications" icon="bell" href="/slack/notifications">
    Card anatomy and thread-reply triage.
  </Card>
</CardGroup>
