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

# Invalidation Notifications

> Configure Slack and PagerDuty to receive real-time invalidation notifications

Set up Slack and PagerDuty integrations to receive notifications when [assertion invalidations](/credible/dapp-invalidations) occur in your Credible Layer projects.

<Note>
  Looking for the high-level adoption flow? See [How to Plan a Platform Integration](/credible/dapp-integration).
</Note>

## Accessing Integration Settings

1. Navigate to your project in the [Phylax platform](https://app.phylax.systems)
2. Go to **Settings** in the navigation bar
3. Select **Slack** or **PagerDuty** from the "Integrations" section

<Frame caption="Adding Notification Integration">
  <img src="https://mintcdn.com/phylaxsystems/-SIljKXg_QoUir8s/images/add-notification-integration-credible-dapp.webp?fit=max&auto=format&n=-SIljKXg_QoUir8s&q=85&s=1cd1fad5d7e0215e0563e1dfb2cd7a3a" alt="Adding Notification Integration" width="1920" height="1257" data-path="images/add-notification-integration-credible-dapp.webp" />
</Frame>

## Slack Integration

The Slack integration sends formatted invalidation notifications to a channel of your choice using Slack's Incoming Webhooks.

<Steps>
  <Step title="Create a Slack App">
    1. In the Credible Layer Settings page, click **Create a Slack App**
    2. This opens Slack's app creation page with a pre-filled manifest. No manual configuration needed
    3. Select the workspace where you want to receive notifications
    4. Click **Create**
  </Step>

  <Step title="Enable Incoming Webhooks">
    1. In your newly created Slack app, go to **Features → Incoming Webhooks**
    2. Toggle **Activate Incoming Webhooks** to **On**
    3. Click **Add New Webhook to Workspace**
    4. Select the channel where you want invalidation notifications
    5. Click **Allow**
  </Step>

  <Step title="Copy the Webhook URL">
    After authorizing, you'll see your new webhook URL:

    ```
    https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    ```

    Copy this URL.
  </Step>

  <Step title="Configure in Credible Layer">
    1. Return to Credible Layer Settings → Slack tab
    2. Paste your webhook URL in the input field
    3. Click **Save**
  </Step>

  <Step title="Test the Integration">
    1. After saving, click **Send Test Notification**
    2. Verify the message arrives in your selected Slack channel
  </Step>
</Steps>

## PagerDuty Integration

The PagerDuty integration creates PagerDuty incidents when assertion invalidations occur, using the Events API v2.

<Steps>
  <Step title="Create a PagerDuty Service Integration">
    1. In PagerDuty, navigate to **Services → Service Directory**
    2. Select an existing service or create a new one
    3. Go to the **Integrations** tab
    4. Click **Add Integration**
    5. Search for and select **Events API v2**
    6. Click **Add**
  </Step>

  <Step title="Get the Integration Key">
    After adding the integration, you'll see the **Integration Key** (also called Routing Key). This is a 32-character alphanumeric string. Copy this key.

    <Tip>
      Click the **PagerDuty Integration Guide** button in the Credible Layer Settings page for direct access to PagerDuty's official documentation.
    </Tip>
  </Step>

  <Step title="Configure in Credible Layer">
    1. Go to Credible Layer Settings → PagerDuty tab
    2. Paste your 32-character routing key in the input field
    3. Click **Save**
  </Step>

  <Step title="Test the Integration">
    1. After saving, click **Send Test Notification**
    2. Verify the PagerDuty incident appears in your PagerDuty service
  </Step>
</Steps>

## What Gets Notified

Both integrations send notifications when [assertion invalidations](/credible/dapp-invalidations) occur. Notifications include:

* Project name and affected contract
* Network/chain information
* Transaction details (hash, block number)
* Assertion violation reason
* Direct link to view the invalidation in the dashboard

## How Invalidations Are Grouped

You receive one notification per invalidation group, not per transaction. An invalidation group is defined as an assertion being invalidated within a one-hour time window.

If an attacker crafts multiple transactions that all violate the same assertion, these are grouped together since they can represent the same logical attack. After one hour without violations, a new invalidation creates a new group.

This prevents notification spam while ensuring you're alerted to distinct security events. See [Invalidations](/credible/dapp-invalidations#how-invalidations-are-grouped) for more details.

<Note>
  This grouping logic is our initial approach and may be refined based on user feedback.
</Note>

## Managing Integrations

### Updating a Webhook or Key

Paste a new URL or key and click **Save**. The old configuration is replaced.

### Removing an Integration

1. Scroll to the bottom of the integration card
2. Click **Remove Integration**
3. Confirm the removal

<Note>
  Removing an integration stops all notifications but does not delete historical data. You can reconfigure at any time.
</Note>

## Troubleshooting

| Issue                             | Solution                                                              |
| --------------------------------- | --------------------------------------------------------------------- |
| Slack webhook URL rejected        | Ensure the URL starts with `https://hooks.slack.com/services/`        |
| PagerDuty key rejected            | Verify the key is exactly 32 alphanumeric characters                  |
| Test notification not received    | Check that the integration is correctly configured in Slack/PagerDuty |
| No notifications on invalidations | Verify the integration shows as "configured" in Settings              |

## Security

* Webhook URLs and routing keys are stored securely and never displayed in full after saving
* Only project managers can configure integrations
* Test notifications are rate-limited to prevent abuse

## Next Steps

<CardGroup cols={2}>
  <Card title="Invalidations" icon="warning" href="/credible/dapp-invalidations">
    Learn about invalidation monitoring
  </Card>

  <Card title="Projects" icon="folder" href="/credible/dapp-projects">
    Manage your projects
  </Card>

  <Card title="Platform Overview" icon="info" href="/credible/dapp-overview">
    Explore the full platform
  </Card>

  <Card title="Writing Assertions" icon="code" href="/credible/write-first-assertion">
    Create assertions for your contracts
  </Card>
</CardGroup>
