> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.recurrente.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server.

# Contrato firmado

POST 

Se emite cuando el cliente firma. Si el contrato retenía la confirmación de una cita, esa cita se confirma (`booking.confirm`). El PDF firmado se descarga con `GET /contracts/{contract_id}/pdf`.

Reference: https://docs.recurrente.com/referencia-api/api-reference/webhook-events/contract-sign-webhook

## Request

### Payload

- `event_type` (string, required) — Tipo exacto del evento enviado por Recurrente.
- `id` (string, required)
- `status` (enum, required)
  - Allowed values: `sent`, `viewed`, `signed`, `declined`, `expired`
- `api_version` (string, required)
- `connected` (boolean, optional, nullable) — Presente como `true` cuando el evento proviene de una cuenta conectada.
- `account_id` (string, optional, nullable) — ID de la cuenta conectada que originó el evento.
- `template_id` (string, optional)
- `customer` (ContractWebhookCustomer, optional)
- `booking_id` (string, optional, nullable) — La cita que lo pidió, si vino de una.
- `checkout_id` (string, optional, nullable) — El cobro que se paga después de firmar.
- `checkout_url` (string, optional, nullable)
- `title` (string, optional)
- `sent_via` (enum, optional, nullable)
  - Allowed values: `whatsapp`, `email`, `link`
- `signing_url` (string, optional) — La página donde el cliente lee y firma (link firmado).
- `field_values` (ContractWebhookFieldValues, optional) — Lo que el cliente llenó al firmar, por `key` del campo.
- `verified_channel` (enum, optional, nullable) — Por dónde confirmó su identidad con un código antes de firmar.
  - Allowed values: `whatsapp`, `email`, `sandbox`
- `body_sha256` (string, optional, nullable) — SHA-256 del texto firmado.
- `pdf_available` (boolean, optional) — Si ya se puede descargar el PDF firmado.
- `viewed_at` (datetime, optional, nullable)
- `signed_at` (datetime, optional, nullable)
- `valid_until` (datetime, optional, nullable)
- `declined_at` (datetime, optional, nullable)
- `decline_reason` (string, optional, nullable)
- `reminder_sent_at` (datetime, optional, nullable)
- `created_at` (datetime, optional)

## Types

### ContractWebhookCustomer

- `id` (string, optional)
- `name` (string, optional, nullable)
- `email` (string, optional, nullable)
- `phone` (string, optional, nullable)

### ContractWebhookFieldValues

Lo que el cliente llenó al firmar, por `key` del campo.