# Webhook-Tests

> Teste einen Webhook-Endpunkt, ohne auf ein echtes Ereignis zu warten, und finde heraus, warum eine Zustellung gescheitert ist.

Stand: 2026-10-30. Quelle: https://docs.smartchat.marketing/de/webhooks/testing/

## Ein Test-Ereignis senden

Der Test-Aufruf sendet ein Ereignis `webhook.test` an deinen Endpunkt, signiert wie ein echtes, und wartet auf die Antwort. Die Antwort der API enthält den HTTP-Status, den dein Server gegeben hat, und wie lange es gedauert hat.

**curl**

```bash
curl -X POST "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
```

**Python**

```python
import os
import requests

response = requests.post(
    "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (200):


```json
{
  "object": "webhook_test_result",
  "endpoint_id": "whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "delivery_id": "whd_7a1b2c3d4e5f40718293a4b5c6d7e8f9",
  "delivered": true,
  "http_status": 200,
  "duration_ms": 182,
  "error": null
}
```

Ein Test-Ereignis ändert den Zustand des Endpunkts nicht. Das Recht für das Test-Ereignis ist `webhooks:write`.

## Auf deinem eigenen Rechner testen

SmartChat ruft nur https-Adressen auf Port 443 auf. Um mit einem Programm auf deinem Rechner zu testen, nutze ein Werkzeug, das deinem lokalen Server eine öffentliche https-Adresse gibt, und trage diese Adresse als Endpunkt ein. Entferne den Endpunkt, wenn du fertig bist.

## Herausfinden, warum eine Zustellung gescheitert ist

Das Zustellprotokoll listet jeden Versuch mit seinem Status, dem HTTP-Status, einem kurzen bereinigten Fehlertext und der Dauer.

**curl**

```bash
curl "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries?status=failed&limit=20" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
    params={
        "status": "failed",
        "limit": "20",
    },
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries?status=failed&limit=20", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (200):


```json
{
  "object": "list",
  "data": [
    {
      "object": "webhook_delivery",
      "id": "whd_7a1b2c3d4e5f40718293a4b5c6d7e8f9",
      "endpoint_id": "whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
      "event_id": "evt_0f8c1a2e4b7d4c3e9a5b6d7e8f905678",
      "type": "contact.created",
      "attempt": 1,
      "status": "delivered",
      "http_status": 200,
      "error": null,
      "duration_ms": 182,
      "next_attempt_at": null,
      "created_at": "2026-10-25T09:44:59Z",
      "finished_at": "2026-10-25T09:45:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "url": "/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries"
}
```

Typische Gründe:

| Du siehst | Grund |
|---|---|
| `http_status` 401 oder 403 | Dein Server hat die Anfrage abgelehnt. Prüfe die Anmelde-Regeln deines eigenen Servers für diese Adresse. |
| `http_status` 404 | Der Pfad ist falsch. |
| Zeitüberschreitung | Dein Server hat mehr als 10 Sekunden gebraucht. Antworte zuerst, arbeite später. |
| Die Signaturprüfung scheitert in deinem Code | Du hast einen geparsten Body statt des rohen Bodys genutzt oder das falsche Geheimnis. Siehe [Eine Signatur prüfen](https://docs.smartchat.marketing/de/webhooks/signature-verification/). |
