---
title: Webhooks
description: 'Configure and manage webhooks to receive real-time notifications about memory events'
icon: "webhook"
iconType: "solid"
---

## Overview

Webhooks allow you to receive real-time notifications when memory events occur in your Mem0 project. Webhooks are configured at the project level, meaning each webhook is associated with a specific project and will only receive events from that project. You can configure webhooks to send HTTP POST requests to your specified URLs whenever memories are created, updated, or deleted.

## Managing Webhooks

### Create Webhook

Create a new webhook for your project. The webhook will only receive events from the specified project:

<CodeGroup>

```python Python
# Create webhook in a specific project
webhook = client.create_webhook(
    url="https://your-app.com/webhook",
    name="Memory Logger",
    project_id="proj_123",
    event_types=["memory:add"]
)
print(webhook)
```

```javascript JavaScript
// Create webhook in a specific project
const webhook = await client.createWebhook({
    url: "https://your-app.com/webhook",
    name: "Memory Logger",
    projectId: "proj_123",
    eventTypes: ["memory:add"]
});
console.log(webhook);
```

```json Output
{
  'webhook_id': "wh_123",
  'name': 'Memory Logger',
  'url': 'https://your-app.com/webhook',
  'event_types': ['memory_add'],
  'project': 'default-project',
  'is_active': True,
  'created_at': '2025-02-18T22:59:56.804993-08:00',
  'updated_at': '2025-02-18T23:06:41.479361-08:00'
}
```

</CodeGroup>

### Get Webhooks

Retrieve all webhooks configured for your project:

<CodeGroup>

```python Python
from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

# Get webhooks for a specific project
webhooks = client.get_webhooks(project_id="proj_123")
print(webhooks)
```

```javascript JavaScript
const { MemoryClient } = require('mem0ai');
const client = new MemoryClient('your-api-key');

// Get webhooks for a specific project
const webhooks = await client.getWebhooks({projectId: "proj_123"});
console.log(webhooks);
```

```json Output
[
    {
        'webhook_id': "wh_123",
        'url': 'https://mem0.ai',
        'name': 'mem0',
        'owner': 'john',
        'event_types': ['memory_add'],
        'project': 'default-project',
        'is_active': True,
        'created_at': '2025-02-18T22:59:56.804993-08:00',
        'updated_at': '2025-02-18T23:06:41.479361-08:00'
    }
]

```

</CodeGroup>

### Update Webhook

Modify an existing webhook's configuration. Remember that webhooks can only be updated within their associated project:

<CodeGroup>

```python Python
# Update webhook for a specific project
updated_webhook = client.update_webhook(
    name="Updated Logger",
    url="https://your-app.com/new-webhook",
    event_types=["memory:update", "memory:add"],
    project_id="proj_123",
    webhook_id="wh_123"
)
print(updated_webhook)
```

```javascript JavaScript
// Update webhook for a specific project
const updatedWebhook = await client.updateWebhook({
    name: "Updated Logger",
    url: "https://your-app.com/new-webhook",
    projectId: "proj_123",
    webhookId: "wh_123",
    eventTypes: ["memory:update", "memory:add"]
});
console.log(updatedWebhook);
```

```json Output
{
  "message": "Webhook updated successfully"
}
```

</CodeGroup>

### Delete Webhook

Remove a webhook configuration from a project:

<CodeGroup>

```python Python
# Delete webhook from a specific project
response = client.delete_webhook(webhook_id="wh_123", project_id="proj_123")
print(response)
```

```javascript JavaScript
// Delete webhook from a specific project
const response = await client.deleteWebhook("wh_123", "proj_123");
console.log(response);
```

```json Output
{
  "message": "Webhook deleted successfully"
}
```

</CodeGroup>

## Event Types

Mem0 supports the following event types for webhooks:

- `memory:add`: Triggered when a new memory is added.
- `memory:update`: Triggered when an existing memory is updated.
- `memory:delete`: Triggered when a memory is deleted.

## Webhook Payload

When a memory event occurs in your project, Mem0 sends a POST request to your webhook URL with the following example payload structure:

```json
{
    "event_details": {
        "id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
            "data": {
            "memory": "Name is Alex"
            },
        "event": "ADD"
    }
}
```

## Best Practices

1. **Implement Retry Logic**: Your webhook endpoint should be able to handle temporary failures and implement appropriate retry mechanisms.

2. **Verify Webhook Source**: Implement security measures to verify that webhook requests are coming from Mem0.

3. **Process Events Asynchronously**: Handle webhook events asynchronously to prevent timeouts and ensure reliable processing.

4. **Monitor Webhook Health**: Regularly check your webhook logs to ensure proper functionality and handle any delivery failures.

If you have any questions, please feel free to reach out to us using one of the following methods:

<Snippet file="get-help.mdx" />