---
title: "Enviar un secreto de webhook a un cliente de forma segura"
url: https://uselinkpilot.com/es/blog/how-to-send-a-webhook-signing-secret-to-a-client-securely
description: "Entrega el secreto de firma de webhook sin copias en correo ni tickets: verifica al destinatario, usa un enlace de un solo uso, guárdalo bien y rótalo si se filtra."
lang: es
---

Seguridad (https://uselinkpilot.com/es/blog/category/security)

# Cómo enviar un secreto de firma de webhook a un cliente de forma segura

Entrega el secreto de firma de webhook sin copias en correo ni tickets: verifica al destinatario, usa un enlace de un solo uso, guárdalo bien y rótalo si se filtra.

LinkPilot Team (https://uselinkpilot.com/es/author/linkpilot-team) · Las personas que desarrollan y gestionan LinkPilot en TetraCore, LLC 25 de octubre de 2026 · Sobre LinkPilot (https://uselinkpilot.com/es/about)

El secreto de firma de un webhook es una credencial, no un detalle de configuración. Envíalo como enviarías una contraseña: confirma quién lo recibe, entrégalo por un canal que no guarde copias y asegúrate de que acaba en un almacén de secretos y no en un ticket. En pocas palabras: un enlace secreto de un solo uso (https://uselinkpilot.com/es/tools/free-secret-link-generator) enviado a un contacto verificado, con las instrucciones de configuración por separado.

El resto de esta guía trata la elección del canal, las comprobaciones previas al envío, qué debe hacer el cliente con el valor y cómo gestionar la rotación y los problemas sin volver a pegar el secreto nunca.

## ¿Qué canal debe llevar el secreto?

Elige el canal según dos preguntas: ¿puedes confirmar quién puede abrirlo? ¿Cuántas copias deja? El correo y el chat no superan la segunda, porque cada mensaje se conserva, se sincroniza y se exporta mucho después de terminar la entrega.

| Método | Qué te ofrece | Qué comprobar antes de enviar |
| --- | --- | --- |
| Portal de clientes con autenticación | Acceso de usuarios con nombre que puedes revocar | Que la cuenta pertenece al contacto correcto |
| Enlace secreto de un solo uso | Se destruye tras abrirse una vez y no queda nada en el mensaje | La dirección a la que lo envías, comprobada por separado |
| Mensajería cifrada | Protección en tránsito | Quién más puede abrir esa conversación |

**Un portal de clientes con inicio de sesión individual** es una buena primera opción si existe. Da acceso a una persona concreta, no a un hilo compartido del proyecto, y quítalo cuando termine la entrega.

**Un enlace de un solo uso** mantiene la credencial fuera del correo o del mensaje de chat que usas para coordinar la entrega. Con LinkPilot, el secreto se cifra en tu navegador antes de guardarse, la copia almacenada se destruye tras abrirse una vez y puedes hacer que el enlace expire al cabo de una hora, un día o una semana. Los planes Pro añaden una frase de contraseña que comunicas por otro canal. Estos controles limitan la entrega, pero no sustituyen la comprobación de que al otro lado está la persona correcta.

**La mensajería cifrada** es la alternativa cuando ninguna de las anteriores es práctica. El cifrado en tránsito no arregla un mensaje mal dirigido ni un grupo con demasiados miembros, así que la comprobación del destinatario importa todavía más.

Elijas lo que elijas, usa el correo y el chat sin cifrar solo para coordinar. Incluso los servicios que cifran en tránsito dejan la conservación de mensajes, las copias de seguridad y el acceso a las cuentas fuera de tu control.

## Verifica al cliente y al destinatario

Un canal seguro no sirve de nada si el secreto llega a la bandeja de entrada equivocada. Antes de enviarlo, confirma que la persona que lo pide es la responsable de la integración y que la vía que vas a usar es realmente suya.

- **Confirma la identidad con un registro conocido.** Usa una ficha de contacto de confianza, una relación comercial existente o el proceso habitual del cliente. Un solicitante nuevo, un cambio repentino de contacto o una urgencia inusual merecen una comprobación independiente.
- **Lee la dirección carácter por carácter,** sobre todo si la copias de un ticket o de un mensaje reciente. Los nombres parecidos y las bandejas compartidas son donde se producen los errores.
- **Revisa quién más tiene acceso.** Antes de compartir a través de un portal o un espacio de trabajo, mira su lista de miembros y quita a quien no necesite la credencial.
- **Confirma la entrega por un segundo canal.** Si el enlace fue por correo, pregunta por un número de teléfono conocido o por el canal habitual del proyecto si el acceso ha funcionado. No incluyas el secreto en ese mensaje.

Comparte el secreto con la única persona que va a configurar el endpoint y deja que lo guarde en el almacén de secretos del propio cliente. Si varios ingenieros lo necesitan, los controles de acceso de ese almacén son el lugar adecuado para decidir quién lo ve, no copias separadas para cada uno.

## Prepara el secreto antes de la entrega

Decide a qué pertenece la credencial, dónde debe guardarla el cliente y cuánto tiempo debe seguir abierta la entrega. Esa preparación hace que la rotación y la resolución de problemas posteriores sean mucho menos confusas.

- **Un secreto por cliente o por endpoint.** Reutilizarlo significa que una sola exposición alcanza a todas las integraciones que comparten el valor, y que rotarlo para un cliente afecta a todos. Lleva un registro interno de a qué endpoint pertenece cada secreto, sin duplicar el valor en las notas del proyecto.
- **Guarda tu propia copia en un gestor de secretos.** No en un archivo de texto local, un ticket o un documento compartido. La misma disciplina se aplica a compartir claves de API (https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely): limita quién puede llegar a la credencial y haz que la entrega dure poco.
- **Fija un plazo para recogerlo.** Da al cliente tiempo suficiente para obtener el valor y terminar la configuración, y no más. Un enlace que se destruye tras abrirse una vez y expira en un día cubre la mayoría de las entregas; si el plazo vence, crea uno nuevo en lugar de reabrir el anterior.
- **Envía las instrucciones de configuración por separado.** La URL del endpoint, la cabecera de la firma y los pasos de verificación van en la documentación del cliente o en el canal del proyecto. Mantenerlos aparte del secreto significa que una página de instrucciones copiada no es también una credencial copiada.

## Ayuda al cliente a guardarlo y usarlo de forma segura

La entrega no termina cuando el cliente puede leer el valor. Termina cuando el servidor puede leerlo de forma segura y lo usa para verificar las firmas entrantes.

- **Guárdalo en un gestor de secretos o en una variable de entorno protegida** que pueda leer el proceso del servidor, con el acceso limitado a la aplicación y a las personas que la operan.
- **Mantenlo fuera del código fuente, los registros y las cargas útiles del webhook.** El secreto sirve para calcular o verificar una firma. Nunca viaja en el cuerpo de la solicitud y no debe aparecer en la salida de depuración, los repositorios ni los tickets de soporte. Comprueba qué captura tu herramienta de despliegue antes de activar diagnósticos detallados.
- **Verifica las firmas en el servidor.** El receptor vuelve a calcular la firma sobre el cuerpo sin procesar de la solicitud con el secreto compartido y la compara con la cabecera que fijó el emisor. La firma demuestra que la solicitud es auténtica y no se ha alterado; no cifra la carga útil. La guía de HackerOne sobre cómo firmar webhooks (https://www.hackerone.com/blog/securely-signing-webhooks-best-practices-your-application) explica por qué importan tanto el cuerpo sin procesar como el secreto correcto.
- **Lanza un evento de prueba.** Pide al cliente que confirme que se acepta una firma válida y se rechaza una estropeada a propósito. Así se detectan los errores habituales: el secreto de otro endpoint o un cuerpo analizado antes de la verificación. Separa las credenciales de prueba y de producción cuando la integración lo permita.

## Reduce el riesgo después de la entrega

La entrega debe dejar un registro útil, no un rastro de copias de más.

- **Registra quién estaba autorizado y cuándo.** Anota el destinatario, el endpoint o el cliente y la hora de la entrega. Nunca el valor. Si no puedes saber si un enlace se abrió o quién podía acceder a una carpeta compartida, tómalo como motivo para endurecer el proceso la próxima vez.
- **Rótalo ante cualquier sospecha de exposición.** Un secreto pegado en un ticket, enviado a la dirección equivocada o encontrado en un registro ya no es privado. Genera uno de reemplazo, actualiza el endpoint e invalida el valor antiguo. Eliminar un enlace compartido no deshace una exposición; solo la rotación lo hace.
- **Acuerda ahora el proceso de rotación.** Decide quién pide, crea e instala el reemplazo, si la implementación admite un breve solapamiento y cómo vas a probar el valor nuevo antes de retirar el antiguo. Un procedimiento conocido es mejor que un intercambio urgente en plena caída del servicio.
- **Limpia.** Cuando el cliente confirme que lo ha recogido, revoca el acceso temporal y elimina las copias sueltas en borradores, tickets y notas. Revisa las reglas de conservación de cada sistema implicado; eliminar un mensaje de una vista rara vez lo quita de las copias de seguridad.

## Resuelve problemas sin exponer el secreto

Un problema de entrega no justifica reenviar la credencial por un canal más débil. Primero averigua cuál de estas tres cosas falla: el cliente no puede recoger el secreto, no puede configurar el endpoint o recibe solicitudes pero no puede validar las firmas.

- **La recogida falló o el plazo venció.** Vuelve a confirmar el destinatario y prepara una nueva entrega controlada. No pegues el valor en un ticket ni pidas al cliente que te devuelva el suyo para compararlo.
- **La firma no coincide.** Casi siempre es un problema en los datos de verificación: el secreto equivocado para ese endpoint, un cuerpo que se reformateó antes de calcular el hash o una cabecera mal leída. Pide al cliente que pruebe con un evento conocido mediante las herramientas de prueba del emisor.
- **Las solicitudes no llegan nunca.** Es un problema de entrega o de enrutamiento, no de credenciales. Revisa las marcas de tiempo, los códigos de respuesta y la selección del endpoint antes de que nadie piense en rotar. La documentación de webhooks (https://docs.stripe.com/webhooks) de Stripe es un buen modelo para separar el registro del endpoint y la entrega de eventos de la verificación de firmas.
- **Comparte diagnósticos con los datos sensibles ocultos.** El ID del evento, la marca de tiempo, el endpoint y el tipo de error bastan. Quita el secreto, la firma completa cuando sea sensible y los campos privados de la carga útil, y revisa lo que has ocultado antes de enviar una solicitud de ejemplo.

Verifica al destinatario, entrega el secreto una vez por un canal que lo olvide, asegúrate de que acaba en un almacén de secretos y rótalo sin dudar si puede haberse filtrado. Para ver cómo encajan los enlaces de un solo uso en el trabajo de ingeniería en general, consulta compartir enlaces de forma segura para desarrolladores (https://uselinkpilot.com/es/blog/secure-link-sharing-for-developers).

## Herramientas para este artículo

Generador de enlaces secretos de un solo uso

Comparte una contraseña o una nota con un enlace que solo se abre una vez.
https://uselinkpilot.com/es/tools/free-secret-link-generator

Mensaje que se autodestruye

Envía una nota que desaparece después de leerse una vez.
https://uselinkpilot.com/es/tools/burn-after-read-secret

Generador de enlaces que expiran

Crea enlaces que dejan de funcionar en el momento que fijes.
https://uselinkpilot.com/es/tools/temporary-link

## Preguntas frecuentes

### ¿Es seguro en algún caso enviar por correo un secreto de firma de webhook?

### ¿Cada cliente debe tener un secreto de firma distinto?

### ¿Cuánto tiempo debe estar disponible un enlace para compartir un secreto?

### ¿El secreto de firma de un webhook cifra la carga útil del webhook?

### ¿Dónde debe guardar el secreto el cliente?

### ¿Y si el secreto llegó a la persona equivocada?

## LinkPilot envía un enlace secreto que desaparece en cuanto se abre.

Cifrado en tu navegador, se muestra una vez y después se destruye. Sin cuenta.

Crear un enlace secreto (https://uselinkpilot.com/es/tools/free-secret-link-generator)

## Sigue leyendo

Seguridad

### Acceso temporal a una base de datos para un colaborador externo

Crea un usuario limitado y con expiración, envía la contraseña con un enlace de un solo uso y no por correo, protege la conexión y cierra la cuenta a tiempo.
https://uselinkpilot.com/es/blog/how-to-send-a-temporary-database-login-to-a-contractor-securely

Seguridad

### Cómo crear un enlace temporal seguro para compartir archivos

Elige el enlace temporal según el archivo, crea uno que expire y se destruya tras una descarga, y usa bien una herramienta de secretos con adjuntos.
https://uselinkpilot.com/es/blog/how-to-create-a-temporary-secure-link-for-sharing-files

Seguridad

### Mensajes que se autodestruyen: Signal, WhatsApp, Telegram y cuándo usar un enlace

Cómo funcionan los mensajes temporales en Signal, WhatsApp y Telegram, qué borra cada temporizador, qué no impide ninguno y cuándo es mejor un enlace.
https://uselinkpilot.com/es/blog/self-destructing-message-apps

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Inicio",
        "item": "https://uselinkpilot.com/es"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/es/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Enviar un secreto de webhook a un cliente de forma segura",
        "item": "https://uselinkpilot.com/es/blog/how-to-send-a-webhook-signing-secret-to-a-client-securely"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/es/blog/how-to-send-a-webhook-signing-secret-to-a-client-securely#article",
    "headline": "Enviar un secreto de webhook a un cliente de forma segura",
    "description": "Entrega el secreto de firma de webhook sin copias en correo ni tickets: verifica al destinatario, usa un enlace de un solo uso, guárdalo bien y rótalo si se filtra.",
    "inLanguage": "es",
    "datePublished": "2026-10-25",
    "dateModified": "2026-10-25",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Organization",
      "@id": "https://uselinkpilot.com/author/linkpilot-team#organization",
      "name": "LinkPilot Team",
      "url": "https://uselinkpilot.com/es/author/linkpilot-team"
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/es/blog/how-to-send-a-webhook-signing-secret-to-a-client-securely"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "¿Es seguro en algún caso enviar por correo un secreto de firma de webhook?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No en texto sin cifrar. El correo se reenvía, se sincroniza en todos los dispositivos y se guarda en copias de seguridad que no controlas. Envía un enlace secreto de un solo uso o usa un portal de clientes con autenticación, y confirma el destinatario por un segundo canal en el que ya confíes."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cada cliente debe tener un secreto de firma distinto?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sí. Un secreto único por cliente o por endpoint limita el alcance de una exposición y te permite rotar una integración sin tocar las demás."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cuánto tiempo debe estar disponible un enlace para compartir un secreto?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Lo menos que permita la entrega. Acuerda un momento con el cliente, envía el enlace cuando esté listo para abrirlo y crea uno nuevo si el plazo vence."
        }
      },
      {
        "@type": "Question",
        "name": "¿El secreto de firma de un webhook cifra la carga útil del webhook?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No. El secreto sirve para calcular y verificar una firma, de modo que el receptor pueda comprobar que la solicitud es auténtica y no se ha alterado. La carga útil viaja sin cifrar salvo que la proteja el transporte (HTTPS)."
        }
      },
      {
        "@type": "Question",
        "name": "¿Dónde debe guardar el secreto el cliente?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "En un gestor de secretos o en una variable de entorno protegida que pueda leer el proceso del servidor, con el acceso limitado a la aplicación y a las personas que la operan. Nunca en el código fuente, en registros ni en documentos compartidos."
        }
      },
      {
        "@type": "Question",
        "name": "¿Y si el secreto llegó a la persona equivocada?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Considéralo expuesto. Genera uno de reemplazo, actualiza la configuración del endpoint, invalida el valor antiguo y después revisa cómo se eligió al destinatario equivocado para que la próxima entrega lo compruebe."
        }
      }
    ],
    "inLanguage": "es"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```