# Smart Contracts

Notifications for smart contract interactions use the `graphql` event type. This event type can be used to monitor token swaps, contract deployments, deposits into a lending protocol, votes cast in a DAO, and more. \
\
With event- and topic-level parameters, you have the functionality at your finger tips to build notifications on nuanced, smart contract interactions.&#x20;

**Event Type:** `graphql`

To create a GraphQL event type, send a `POST` request to the `/api/v1/nodefy/notifications/` endpoint with the following JSON payload:

#### Example Request:

```json
{
    "external_user_id": "user123",
    "channel": "EMAIL",
    "notification_name": "Your Mint from Factory Contract",
    "delivery_location": "creator@art.com",
    "event_details": {
        "network": "BASE_MAINNET",
        "event_type": "GRAPHQL",
        "addresses": ["0x60a2...a7c6"],
        "graphql": {
            "topic_2": "0x2a29fb...9a888"
        }
    }
}
```

#### Required `graphql` Parameter:

* `addresses`: An array containing the smart contract address(es) to monitor. This address identifies the contract from which you want to receive event notifications.

#### Optional `graphql` Parameters:

* **`graphql` Object:**  An object to further specify the event using GraphQL query parameters:
  * **`topic_0`:** The event signature (topic0) to filter for specific events.
  * **`topic_1`, `topic_2`, `topic_3`:** Additional indexed topics to further filter events.

#### GraphQL Event Filters

You can apply more specific filters on GraphQL events using our filter system. Filters allow you to capture events based on transaction parameters such as the `fromAddress`, `toAddress`, and `value`. Refer to the ["Using Filters"](https://docs.nodefy.xyz/our-api-guide/using-filters) section for more information.
