---
title: "API para crear enlaces con dominio propio y seguimiento"
url: https://uselinkpilot.com/es/blog/developer-integration-for-creating-trackable-branded-links
description: "Integra la creación de enlaces en tu producto o flujo: claves de API, llamada de creación, idempotencia, UTM, redirecciones, webhooks y pruebas."
lang: es
---

Seguimiento de enlaces (https://uselinkpilot.com/es/blog/category/link-tracking)

# Integración para desarrolladores que crea enlaces con dominio propio y seguimiento: guía práctica

Integra la creación de enlaces en tu producto o flujo: claves de API, llamada de creación, idempotencia, UTM, redirecciones, webhooks y pruebas.

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

Llega un momento en que un equipo deja de crear enlaces a mano. El producto necesita un enlace para compartir por usuario, el CMS debería generar una URL corta al publicar un artículo y la herramienta de campañas quiere un enlace con seguimiento por cada creatividad. Una integración para desarrolladores que crea enlaces con dominio propio y seguimiento convierte el acortador en una función a la que llaman tus sistemas.

Esta guía recorre la integración de principio a fin: qué decidir antes de escribir código, cómo funcionan la autenticación y la llamada de creación, cómo hacer que los enlaces tengan seguimiento sin romper la atribución, los casos límite de las redirecciones que dan problemas, cómo encajan los webhooks y cómo probarlo todo. El ejemplo práctico es la API de LinkPilot; la estructura vale para la mayoría de las plataformas.

## Decide primero la arquitectura

Cuatro decisiones, tomadas una vez, ahorran la mayor parte del trabajo rehecho.

- **Qué sistemas crean enlaces** y con qué disparador: un evento de publicación, una acción del usuario, el guardado de un registro de campaña.
- **Qué campos controla quien llama.** Normalmente el destino y las etiquetas; a veces el slug. Rara vez el dominio, que debería ser una configuración por espacio de trabajo o por cliente.
- **Cómo se traducen los datos de campaña al seguimiento.** La campaña, el canal y la ubicación de tu sistema se convierten en etiquetas del enlace y en parámetros UTM del destino. Decide la correspondencia y ponla en una sola función.
- **Enlace directo, enlace profundo o alternativa.** Un enlace que abre una app móvil necesita una alternativa web para quien no tiene la app. Decide si eso lo resuelve el acortador o el destino.

Ponlo por escrito. La integración es sobre todo código de unión, y ese código debería ser aburrido.

## Autentícate con claves de alcance limitado

La API de LinkPilot se autentica con claves de tipo Bearer que empiezan por `lp_live_`, se crean en el panel y están disponibles en todos los planes, también en el Free. Cada clave pertenece a un espacio de trabajo, así que una integración de agencia usa una clave por cada espacio de trabajo de cliente y los enlaces acaban en el sitio correcto por diseño.

```bash
curl https://uselinkpilot.com/api/v1/me \
  -H "Authorization: Bearer lp_live_..."
```

`GET /me` devuelve el espacio de trabajo, el plan, los límites, el uso actual y el margen de peticiones de la clave. Llámalo al arrancar y muestra los límites en tus propios registros, para enterarte de un tope antes de que lo descubra una campaña.

Trata la clave como una credencial de producción: guárdala en un gestor de secretos, nunca en un repositorio ni en el código del front-end y, cuando tengas que dársela a quien construye la integración, envíala con un enlace secreto de un solo uso (https://uselinkpilot.com/es/tools/free-secret-link-generator). La guía sobre claves de API (https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely) explica la entrega y la rotación.

## Crea el enlace

La llamada de creación recibe el destino y algunos campos opcionales.

```bash
curl -X POST https://uselinkpilot.com/api/v1/links \
  -H "Authorization: Bearer lp_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=oct-launch",
    "slug": "oct-launch-email",
    "domain": "go.example.com",
    "title": "October launch, newsletter",
    "tags": ["oct-launch", "email"]
  }'
```

La respuesta incluye el ID del enlace, la URL corta y los metadatos que enviaste. Guarda el ID junto a tu propio registro: es lo que usarás después para leer, actualizar o eliminar el enlace. `GET /links` lista los enlaces del más reciente al más antiguo con paginación por cursor (`{ data, next_cursor }`), y `GET /links/{id}` y `DELETE /links/{id}` actúan sobre uno.

Algunas reglas que mantienen la integración en orden:

- **Construye la URL de destino en el código**, con las etiquetas UTM, a partir de los campos de la campaña. Las etiquetas escritas a mano acaban divergiendo. La guía de UTM (https://uselinkpilot.com/es/blog/utm-parameters-complete-playbook) fija las convenciones.
- **Deja que la plataforma genere los slugs**, salvo que vaya a leerlos una persona. Cuando los definas tú, derívalos de la campaña, el canal y la ubicación, en minúsculas y con guiones, y resuelve un conflicto añadiendo un sufijo corto y reintentando una vez.
- **Haz que la creación sea idempotente.** Asocia cada creación al ID de tu propio registro, para que un reintento tras un tiempo de espera agotado encuentre el enlace existente en lugar de crear otro. Si la plataforma no ofrece una clave de idempotencia, busca tu etiqueta o tu slug con `GET /links` antes de crear.
- **En bloque, un bucle con espera progresiva.** Respeta el margen de peticiones que indica `/me`, espera ante un 429 y registra cada error con el registro al que correspondía.

Para scripts y herramientas locales, la CLI `linkpilot` de npm envuelve las mismas llamadas, y el servidor `@uselinkpilot/mcp` las pone a disposición de agentes de IA. Ambos son de código abierto y están en GitHub, bajo TetraCoreHQ.

## Haz que los enlaces tengan seguimiento sin romper la atribución

Cada clic en un enlace creado por API se registra igual que en uno creado desde el panel: hora, referente, dispositivo, navegador, país, región, marca de bot y un hash con sal en lugar de la IP. Eso te da el recuento del enlace. La atribución en el destino sigue dependiendo de que la URL llegue intacta.

- **Conserva los parámetros de consulta a través de la redirección.** Prueba un enlace con el comprobador de redirecciones (https://uselinkpilot.com/es/tools/redirect-checker) y confirma que las etiquetas UTM están en la URL final.
- **Evita las cadenas.** Un enlace corto que redirige a otra redirección pierde parámetros y velocidad. Apunta a la página final.
- **Decide qué recopilas.** El país y el dispositivo son estadísticas agregadas. Un enlace por usuario vinculado a la ficha de un cliente es un dato personal. La guía actual del seguimiento de enlaces (https://uselinkpilot.com/es/blog/modern-link-tracking) enumera lo que se registra y lo que se deja fuera a propósito.
- **Fija las expectativas en el producto.** Un recuento de clics no es un recuento de conversiones. Muestra los dos, cada uno con su nombre.

## Resuelve los casos límite de la redirección

- **Validación del destino.** Antes de crear el enlace, rechaza los destinos sin HTTPS, los que apunten a tu propio dominio de acortador y cualquiera que esté en una lista de bloqueo. Una redirección abierta con tu marca es una herramienta de phishing.
- **Enlaces caducados, desactivados o inexistentes.** Decide la página alternativa al crear el enlace y configúrala, para que un enlace de una campaña terminada lleve a la página de inicio y no a un error. En los enlaces impresos, mejor editar el destino que dejar que expiren.
- **Enlaces profundos.** Usa un destino que detecte la app y, si no está, pase a la web, o una función de la plataforma que lo haga. Prueba en los dos sistemas operativos, con la app instalada y sin ella.
- **Codificación.** Codifica la URL de destino antes de ponerla en el JSON, sobre todo si lleva su propia cadena de consulta. La doble codificación es el error habitual.
- **Idiomas.** Si un mismo enlace corto sirve varios idiomas, detecta el idioma en el destino, no en el slug.

## Añade webhooks para los eventos que importan

Los webhooks permiten que el resto de tus sistemas reaccionen a la actividad de los enlaces sin consultar una y otra vez. LinkPilot firma cada envío con una cabecera de firma HMAC y los dispara en el ciclo de vida de los enlaces (`link.created`, `link.updated`, `link.deleted`) y en el de los secretos (`secret.created`, `secret.viewed`, `secret.burned`). Verifica la firma antes de procesar el contenido, responde rápido, procesa desde una cola y guarda los ID de evento para que los reintentos no hagan daño. Los datos de clics son un flujo de informes, no un webhook: léelos en las estadísticas y las exportaciones. La guía de integraciones con webhooks (https://uselinkpilot.com/es/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations) explica cómo construir el receptor.

## Prueba de principio a fin y sigue vigilando

Antes de que la integración toque una campaña real:

1. Crea un enlace con tus etiquetas de prueba en un espacio de trabajo de pruebas.
2. Confirma que la respuesta trae el ID y la URL corta que esperas.
3. Haz clic desde un teléfono y desde un portátil. Confirma la redirección, las etiquetas UTM al llegar y los dos clics en las estadísticas con los tipos de dispositivo correctos.
4. Crea otra vez el mismo registro y confirma que obtienes el mismo enlace, no un duplicado.
5. Elimínalo y confirma que `link.deleted` llega a tu endpoint de webhooks, si usas uno.

En producción, vigila tres cosas: la tasa de errores de la API por código de estado, la latencia de la redirección medida con una comprobación sintética y una conciliación semanal del número de enlaces entre tus registros y `GET /links`. Rota la clave de API de forma periódica y cada vez que alguien deje el equipo que la tiene.

Documenta la integración como un producto interno: los campos que acepta, la regla de los slugs, el comportamiento de la página alternativa, los límites que indica `/me` y a quién llamar cuando una campaña marque cero clics. La próxima persona que la toque lo agradecerá, y muchas veces serás tú.

## Lecturas relacionadas

- Comparativa de API de acortadores de URL: Bitly, Dub, Short.io, TinyURL: https://uselinkpilot.com/es/blog/url-shortener-api-comparison
- Cómo elegir y usar una plataforma de seguimiento de enlaces con integraciones de webhooks: https://uselinkpilot.com/es/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations
- Cómo compartir claves de API de forma segura: https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely
- Parámetros UTM: la guía completa de 2026: https://uselinkpilot.com/es/blog/utm-parameters-complete-playbook

## Herramientas para este artículo

Acortador de URL gratis

Convierte una URL larga en una corta con el slug que elijas.
https://uselinkpilot.com/es/tools/url-shortener

Versiones: Acortador de enlaces para la biografía de TikTok (https://uselinkpilot.com/es/tools/url-shortener/tiktok-bio) · Acortador de enlaces para la biografía de Instagram (https://uselinkpilot.com/es/tools/url-shortener/instagram-bio) · Acortador de enlaces para publicaciones de LinkedIn (https://uselinkpilot.com/es/tools/url-shortener/linkedin-post) · Acortador de enlaces para X (Twitter) (https://uselinkpilot.com/es/tools/url-shortener/twitter)

Generador de UTM

Crea URL etiquetadas para campañas en segundos.
https://uselinkpilot.com/es/tools/utm-builder

Versiones: Generador de UTM para LinkedIn (https://uselinkpilot.com/es/tools/utm-builder/linkedin) · Generador de UTM para Facebook (https://uselinkpilot.com/es/tools/utm-builder/facebook) · Generador de UTM para correo electrónico (https://uselinkpilot.com/es/tools/utm-builder/email) · Generador de UTM para Instagram (https://uselinkpilot.com/es/tools/utm-builder/instagram) · Generador de UTM para TikTok (https://uselinkpilot.com/es/tools/utm-builder/tiktok) · Generador de UTM para YouTube (https://uselinkpilot.com/es/tools/utm-builder/youtube) · Generador de UTM para Google Ads (https://uselinkpilot.com/es/tools/utm-builder/google-ads) · Generador de UTM para X (Twitter) (https://uselinkpilot.com/es/tools/utm-builder/twitter) · Generador de UTM para Reddit (https://uselinkpilot.com/es/tools/utm-builder/reddit) · Generador de UTM para Pinterest (https://uselinkpilot.com/es/tools/utm-builder/pinterest)

Comprobador de redirecciones

Sigue la cadena completa de redirecciones de cualquier URL.
https://uselinkpilot.com/es/tools/redirect-checker

Versiones: Comprobador de redirecciones de enlaces de afiliado (https://uselinkpilot.com/es/tools/redirect-checker/affiliate-links) · Auditoría SEO de redirecciones (https://uselinkpilot.com/es/tools/redirect-checker/seo-audit)

Comprobador de clics de enlaces

Consulta los clics, las procedencias y las ubicaciones de un enlace corto.
https://uselinkpilot.com/es/tools/link-analytics

Sugerencias de enlaces inteligentes

Sugerencias de IA para nombrar enlaces, ordenar los UTM y elegir dominios de marca.
https://uselinkpilot.com/es/tools/smart-link-suggestions

## Preguntas frecuentes

### ¿Qué es un enlace con dominio propio y seguimiento?

### ¿Qué campos debería aceptar una API de creación de enlaces?

### ¿Cómo debe tratar una integración los slugs duplicados?

### ¿Por qué probar los parámetros de consulta después de la redirección?

### ¿Qué debe pasar cuando un enlace expira o se elimina?

### ¿Los clics en un enlace demuestran que una campaña causó una conversión?

## Gestiona mejor tus enlaces con LinkPilot

Seguimiento, UTM, códigos QR, análisis con IA e informes de marca blanca en un solo espacio de trabajo. Empieza gratis.

Crear una cuenta gratis (https://uselinkpilot.com/signup)

## Sigue leyendo

Seguimiento de enlaces

### Seguimiento de enlaces para equipos de customer success

Dónde van los enlaces de customer success, cómo seguirlos por cuenta sin datos personales en la URL, leerlos junto a la adopción y qué exige la privacidad.
https://uselinkpilot.com/es/blog/custom-link-tracking-for-customer-success-teams

Seguimiento de enlaces

### Acortador de enlaces con dominio propio e informes de clics

Qué mirar en un acortador de enlaces con dominio propio e informes de clics, cómo conectar el dominio con un CNAME y cómo leer las estadísticas de sus enlaces.
https://uselinkpilot.com/es/blog/custom-domain-link-shortener-with-click-reports

Seguimiento de enlaces

### Cómo integrar un acortador con dominio propio en Slack

Configura un dominio propio y una app de Slack que acorta enlaces y convierte contraseñas pegadas en enlaces de un solo uso. Revisa vistas previas y clics.
https://uselinkpilot.com/es/blog/how-to-integrate-a-branded-link-shortener-with-slack

## 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": "Crear por API enlaces con dominio propio y seguimiento",
        "item": "https://uselinkpilot.com/es/blog/developer-integration-for-creating-trackable-branded-links"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/es/blog/developer-integration-for-creating-trackable-branded-links#article",
    "headline": "Crear por API enlaces con dominio propio y seguimiento",
    "description": "Integra la creación de enlaces en tu producto o flujo: claves de API, llamada de creación, idempotencia, UTM, redirecciones, webhooks y pruebas.",
    "inLanguage": "es",
    "datePublished": "2026-10-26",
    "dateModified": "2026-10-26",
    "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/developer-integration-for-creating-trackable-branded-links"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "¿Qué es un enlace con dominio propio y seguimiento?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Una URL corta en un dominio que controlas, que redirige a un destino y registra cada clic por el camino: hora, referente, dispositivo, país y marca de bot. Creado por API, es el mismo objeto que uno creado en el panel."
        }
      },
      {
        "@type": "Question",
        "name": "¿Qué campos debería aceptar una API de creación de enlaces?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "La URL de destino, un slug opcional, el dominio en el que se sirve, un título y etiquetas. Todo lo demás, como los parámetros UTM, va en la URL de destino que envías. POST /links de LinkPilot recibe exactamente esos campos."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cómo debe tratar una integración los slugs duplicados?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Trata un conflicto de slug como una respuesta normal, no como un error que tumba el proceso. O dejas que la plataforma genere el slug, o ante un conflicto añades un sufijo corto y reintentas una vez. Nunca sobrescribas en silencio un enlace existente."
        }
      },
      {
        "@type": "Question",
        "name": "¿Por qué probar los parámetros de consulta después de la redirección?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Porque una cadena de redirecciones, un destino que normaliza las URL o una plataforma que quita los parámetros desconocidos pueden eliminar las etiquetas UTM, y entonces ningún clic se atribuye a nada. Una sola prueba con un comprobador de redirecciones lo detecta."
        }
      },
      {
        "@type": "Question",
        "name": "¿Qué debe pasar cuando un enlace expira o se elimina?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "La URL corta debe llevar a una página alternativa razonable, no a un error sin más. Decide la página alternativa al crear el enlace y, en los enlaces de materiales impresos, mejor editar el destino que dejar que expire."
        }
      },
      {
        "@type": "Question",
        "name": "¿Los clics en un enlace demuestran que una campaña causó una conversión?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No. Un clic muestra que se envió a alguien a un destino. Las conversiones se miden en el destino y se cruzan por el nombre de la campaña o por un identificador firmado. Presenta ambos datos uno al lado del otro."
        }
      }
    ],
    "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"
    }
  }
]
```