---
title: Webhook'lar
icon: satellite-dish
description: Kayıtlar değiştiğinde bildirim alın — her oluşturma, güncelleme veya silme işleminde uç noktanıza HTTP POST gönderilir.
---

import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';

Bir kayıt oluşturulduğunda, güncellendiğinde veya silindiğinde Twenty URL'inize bir HTTP POST gönderir. Özel nesneler dahil tüm nesne türleri kapsanır.

## Webhook oluştur

1. **Ayarlar → API'ler ve Webhook'lar → Webhook'lar**'a gidin
2. **+ Webhook oluştur**'a tıklayın
3. Webhook URL'nizi girin (herkese açık olarak erişilebilir olmalıdır)
4. **Kaydet**'e tıklayın

Webhook anında etkinleşir ve bildirim göndermeye başlar.

<VimeoEmbed videoId="928786708" title="Webhook oluşturma" />

### Webhook'ları Yönet

**Düzenle**: Webhook'u tıklayın → URL'yi güncelleyin → **Kaydet**

**Sil**: Webhook'u tıklayın → **Sil** → Onayla

## Etkinlikler

Twenty, şu olay türleri için webhook'lar gönderir:

| Etkinlik              | Örnek                                                      |
| --------------------- | ---------------------------------------------------------- |
| **Kayıt Oluşturuldu** | `person.created`, `company.created`, `note.created`        |
| **Kayıt Güncellendi** | `person.updated`, `company.updated`, `opportunity.updated` |
| **Kayıt Silindi**     | `person.deleted`, `company.deleted`                        |

Tüm olay türleri webhook URL'nize gönderilir. Olay filtreleme özelliği ilerideki sürümlerde eklenebilir.

## Yük Biçimi

Her webhook, JSON gövdeli bir HTTP POST gönderir:

```json
{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}
```

| Alan        | Açıklama                                      |
| ----------- | --------------------------------------------- |
| `event`     | Ne oldu (ör. `person.created`)                |
| `data`      | Oluşturulan/güncellenen/silinen kaydın tamamı |
| `timestamp` | Olayın ne zaman gerçekleştiği (UTC)           |

<Note>
Alındığını onaylamak için **2xx HTTP durumu** (200-299) ile yanıt verin. 2xx dışı yanıtlar teslimat hataları olarak kaydedilir.
</Note>

## Webhook Doğrulaması

Twenty, güvenlik için her webhook isteğini imzalar. İsteklerin gerçekliğini sağlamak için imzaları doğrulayın.

### Üstbilgiler

| Başlık                       | Açıklama            |
| ---------------------------- | ------------------- |
| `X-Twenty-Webhook-Signature` | HMAC SHA256 imzası  |
| `X-Twenty-Webhook-Timestamp` | İstek zaman damgası |

### Doğrulama Adımları

1. `X-Twenty-Webhook-Timestamp` değerinden zaman damgasını alın
2. Dizeyi oluşturun: `{timestamp}:{JSON payload}`
3. Webhook gizli anahtarınızı kullanarak HMAC SHA256 hesaplayın
4. `X-Twenty-Webhook-Signature` ile karşılaştırın

### Örnek (Node.js)

```javascript
const crypto = require("crypto");

const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";

const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
  .createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");

const receivedSignature = req.headers["x-twenty-webhook-signature"];
const isValid = crypto.timingSafeEqual(
  Buffer.from(expectedSignature, "hex"),
  Buffer.from(receivedSignature, "hex")
);
```

## Webhook'lar ve İş Akışları

| Yöntem                             | Yön | Kullanım Senaryosu                                                          |
| ---------------------------------- | --- | --------------------------------------------------------------------------- |
| **Webhook'lar**                    | OUT | Herhangi bir kayıt değişikliğini harici sistemlere otomatik olarak bildirin |
| **İş Akışı + HTTP İsteği**         | OUT | Özel mantıkla (filtreler, dönüşümler) verileri dışarı gönderin              |
| **İş Akışı Webhook Tetikleyicisi** | IN  | Harici sistemlerden Twenty'ye veri alın                                     |

Harici verileri almak için bkz. [Bir Webhook Tetikleyicisi Kurun](/l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
