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

# Deactivating a trigger

> Define the deactivate handler for a trigger block

`defineWorkflowBlockDeactivate` wires a deactivate handler to a trigger block. The handler runs once when the workflow is disabled or replaced by a new version.

Mirror what `activate.ts` set up: typically, tear down the webhook registration with the upstream service.

## Parameters

<ParamField path="block" type="WorkflowBlock" required>
  The block returned by `defineWorkflowBlock` in `block.ts`.
</ParamField>

<ParamField path="deactivate" type="function" required>
  The handler function. Receives a context object with `config` (typed from the block's configSchema) and `metadata`.

  `metadata` mirrors what was passed to `activate`, including the `uniqueActivationId` needed to identify the registration to tear down:

  | Field | Type | Description |
  | - | - | - |
  | `workflowId` | `string` | ID of the workflow this block belongs to. |
  | `workflowVersionId` | `string` | ID of the workflow version being deactivated. |
  | `workflowBlockId` | `string` | ID of this block instance within the workflow. |
  | `uniqueActivationId` | `string` | The same ID that was passed to `activate`. Use it to look up and tear down the webhook registration you stored during activation. |
  | `workflowTitle` | `string` | Human-readable title of the workflow. |
  | `workflowUrl` | `string` | Link to the workflow in the Attio UI. |
</ParamField>

## Example

```ts deactivate.ts theme={"system"}
import {Workflows} from "attio/server"
import block from "./block"

export default Workflows.defineWorkflowBlockDeactivate(block, async ({config, metadata}) => {
  const response = await fetch(`https://api.example.com/webhooks/${metadata.uniqueActivationId}`, {
    method: "DELETE",
  })

  if (!response.ok) {
    // Deregistration failed — report the error
    return {type: "error", errorMessage: `Failed to delete webhook: ${response.statusText}`}
  }

  // Webhook removed successfully
  return {type: "complete"}
})
```

## See also

* [Registering a trigger](./define-workflow-block-activate): trigger activate handler
* [Receiving a trigger event](./define-workflow-block-on-trigger-callback): trigger event handler
* [File structure](./file-structure): complete folder layout for trigger and step blocks


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.