> ## Documentation Index
> Fetch the complete documentation index at: https://revolai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Sustitución de Teléfono

> Reemplazo dinámico de números de teléfono para atribución de llamadas — rastree qué campañas, anuncios y fuentes de tráfico generan llamadas telefónicas

## Descripción General

La Sustitución de Teléfono es una función de **atribución de llamadas** que reemplaza dinámicamente los números de teléfono en su sitio web según la fuente de tráfico del visitante. Cuando un visitante llega desde una campaña específica — Google Ads, Facebook, un referido de socio o cualquier enlace etiquetado con UTM — el tracker automáticamente sustituye su número de teléfono predeterminado con un número de seguimiento dedicado. Cuando el visitante llama a ese número, usted sabe exactamente qué campaña generó la llamada.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/revolai/fjI-3Zk750dSQkZZ/images/tracker-phone-swap-light.png?fit=max&auto=format&n=fjI-3Zk750dSQkZZ&q=85&s=359656152b148417f413a1d426c423ef" alt="Pestaña de sustitución de teléfono" width="2865" height="1554" data-path="images/tracker-phone-swap-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/revolai/fjI-3Zk750dSQkZZ/images/tracker-phone-swap-dark.png?fit=max&auto=format&n=fjI-3Zk750dSQkZZ&q=85&s=31a9369607118a114b7a0cb0b371cabf" alt="Pestaña de sustitución de teléfono" width="2865" height="1553" data-path="images/tracker-phone-swap-dark.png" />
</Frame>

***

## Cómo Funciona

<Steps>
  <Step title="Configure la sustitución de teléfono en una campaña">
    Abra una campaña y establezca el **Teléfono Original** (el número en su sitio web) y el **Teléfono de Reemplazo** (un número de seguimiento asignado a esta campaña). Vea [Campañas — Sustitución de Teléfono](/widget/campaigns#phone-swap) para detalles de configuración.
  </Step>

  <Step title="El visitante llega a su sitio">
    Un visitante hace clic en su enlace de campaña (con parámetros UTM) y el script de seguimiento se carga. El tracker obtiene las reglas activas de sustitución de teléfono del servidor.
  </Step>

  <Step title="Coincidencia UTM">
    El tracker compara los parámetros UTM del visitante con cada regla. Todos los campos de coincidencia no nulos (utm\_source, utm\_medium, utm\_campaign, rvl\_ref) deben coincidir exactamente. La primera regla coincidente gana.
  </Step>

  <Step title="El número se reemplaza">
    El tracker encuentra todas las instancias del número de teléfono original en la página — en enlaces `tel:`, en texto con el atributo `data-revol-phone` — y los reemplaza con el número de seguimiento. El reemplazo preserva el formato del número original.
  </Step>

  <Step title="El evento se registra">
    Se registra un evento `phone_swap` con los números original y de reemplazo. Este evento aparece en el Registro de Actividad y la tabla de Rendimiento de Campañas.
  </Step>

  <Step title="El visitante llama">
    El visitante llama al número de seguimiento. Usted ve la llamada atribuida a la campaña específica — sin necesidad de adivinar.
  </Step>
</Steps>

***

## Pestaña de Sustitución de Teléfono

La pestaña de Sustitución de Teléfono muestra todas las reglas activas de sustitución de teléfono de sus campañas en una sola tabla:

| Columna                     | Descripción                                                                     |
| --------------------------- | ------------------------------------------------------------------------------- |
| **Campaña**                 | Nombre de la campaña con condiciones UTM (fuente, medio, etc.) mostradas debajo |
| **Sustitución de Teléfono** | Número original → Número de reemplazo                                           |
| **Estado**                  | Activo o inactivo                                                               |

Esta pestaña es un **resumen de solo lectura** — para agregar o editar reglas de sustitución de teléfono, abra la campaña en la pestaña [Campañas](/widget/campaigns) y configure la sección de Sustitución de Teléfono.

***

## Agregar Números de Teléfono a Su Sitio Web

El tracker reemplaza números de teléfono de dos maneras:

### 1. Enlaces Tel (Automático)

Cualquier enlace `<a href="tel:...">` en su página se detecta automáticamente. Si el href coincide con el número original de una regla, se sustituye — tanto el atributo `href` como el texto visible.

```html theme={null}
<!-- Antes de la sustitución -->
<a href="tel:+380441234567">+380 (44) 123-45-67</a>

<!-- Después de la sustitución (visitante de campaña Google Ads) -->
<a href="tel:+380449876543">+380 (44) 987-65-43</a>
```

No se necesitan atributos adicionales — el tracker encuentra los enlaces `tel:` automáticamente.

### 2. Atributo de Datos (Explícito)

Para números de teléfono que no están en enlaces `tel:` (texto plano, spans, divs), agregue el atributo `data-revol-phone`:

```html theme={null}
<!-- Teléfono en un span -->
<span data-revol-phone>+380441234567</span>

<!-- Teléfono en un div -->
<div class="contact-phone" data-revol-phone>+380 44 123 45 67</div>
```

Los elementos con `data-revol-phone` se ocultan (`visibility: hidden`) hasta que se completa la sustitución, previniendo un destello del número original.

<Tip>
  Use `data-revol-phone` para todos los números de teléfono que desee sustituir — incluso si están dentro de enlaces `tel:`. Esto le da al tracker control explícito y previene cualquier parpadeo.
</Tip>

***

## Preservación de Formato

El tracker preserva el formato del número original al reemplazar. Si el original y el reemplazo tienen la misma cantidad de dígitos, el reemplazo se formatea usando el patrón del original:

| Original              | Reemplazo (sin formato) | Resultado             |
| --------------------- | ----------------------- | --------------------- |
| `+380 (44) 123-45-67` | `+380949876543`         | `+380 (94) 987-65-43` |
| `044 123 45 67`       | `0949876543`            | `094 987 65 43`       |
| `+380441234567`       | `+380949876543`         | `+380949876543`       |

Si la cantidad de dígitos difiere, el reemplazo se inserta tal cual sin formato.

***

## Soporte para SPA

El módulo de sustitución de teléfono usa un **MutationObserver** para vigilar elementos añadidos dinámicamente. Si su sitio web está construido con React, Vue, Angular o cualquier framework que renderiza contenido después de la carga de la página — el tracker detecta nuevos elementos de teléfono a medida que aparecen en el DOM y los sustituye automáticamente.

El observador vigila todo el cuerpo del documento en busca de:

* Nuevos enlaces `<a href="tel:...">`
* Nuevos elementos con atributo `data-revol-phone`

El observador se desconecta al descargar la página para prevenir fugas de memoria.

***

## Reglas de Coincidencia

Las reglas de sustitución de teléfono se derivan de las campañas. Cada campaña con tanto **Teléfono Original** como **Teléfono de Reemplazo** establecidos crea una regla.

### Cómo Funciona la Coincidencia

El tracker compara los parámetros UTM del visitante contra los campos de coincidencia de la regla. **Todos los campos no nulos deben coincidir exactamente** (lógica AND):

```
Rule: { utm_source: "google", utm_medium: "cpc" }

✓ Visitor with utm_source=google, utm_medium=cpc        → MATCH
✗ Visitor with utm_source=google, utm_medium=organic     → NO MATCH
✗ Visitor with utm_source=facebook, utm_medium=cpc       → NO MATCH
```

Si una campaña tiene `utm_source` establecido pero `utm_medium` está vacío — solo la fuente necesita coincidir. Los campos vacíos se ignoran en la coincidencia.

### Prioridad

Si múltiples campañas coinciden con los parámetros UTM de un visitante, se usa la **primera regla coincidente**. Las reglas se devuelven en orden de creación.

***

## Eventos de Sustitución de Teléfono

Cada sustitución de teléfono genera un evento `phone_swap`, rastreado una vez por sesión de visitante. El evento contiene:

```json theme={null}
{
  "from": "+380441234567",
  "to": "+380949876543"
}
```

Los eventos de sustitución de teléfono aparecen en:

* **Registro de Actividad** — como tipo de evento `phone_swap` con datos de origen/destino
* Tabla de **Rendimiento de Campañas** — en la columna **Sustituciones de Teléfono**
* **Detalles de sesión** — en la línea de tiempo de eventos de la sesión del visitante

***

## Casos de Uso

<AccordionGroup>
  <Accordion title="Seguimiento de llamadas de Google Ads">
    Cree una campaña con `utm_source=google`, `utm_medium=cpc`. Establezca el teléfono original como su número principal de negocio y el reemplazo como un número de seguimiento dedicado. Cada llamada de visitantes de Google Ads se atribuye a esta campaña.

    **Resultado:** Usted ve exactamente cuántas llamadas genera su inversión en Google Ads — en el mismo panel de control que conversaciones de chat, envíos de formularios y páginas vistas.
  </Accordion>

  <Accordion title="Atribución multicanal">
    Cree campañas separadas para cada fuente de tráfico — Google, Facebook, Instagram, boletín por email — cada una con su propio número de seguimiento. El mismo número original en su sitio se reemplaza de forma diferente dependiendo de dónde vino el visitante.

    | Campaña      | Fuente              | Número de Seguimiento |
    | ------------ | ------------------- | --------------------- |
    | Google Brand | google / cpc        | +380 44 111 1111      |
    | Facebook Ads | facebook / paid     | +380 44 222 2222      |
    | Newsletter   | newsletter / email  | +380 44 333 3333      |
    | Orgánico     | — (sin sustitución) | Número original       |
  </Accordion>

  <Accordion title="Marketing offline (impreso, vallas publicitarias)">
    Cree una campaña para sus anuncios impresos con un parámetro `rvl_ref` único. Agregue un número de teléfono dedicado. Cuando alguien llama al número del volante — usted sabe que vino del impreso, no digital. Combine con un [código QR](/widget/campaigns#qr-code) para seguimiento digital del mismo material.
  </Accordion>

  <Accordion title="Seguimiento de socios y referidos">
    Dé a cada socio de referidos su propia campaña con `rvl_ref=partner_name` y un número de seguimiento dedicado. Rastree exactamente cuántas llamadas genera cada socio — junto con sesiones, páginas vistas y conversaciones de IA.
  </Accordion>

  <Accordion title="Pruebas A/B de páginas de destino">
    Cree dos campañas con la misma fuente pero diferentes valores de `utm_content` (por ejemplo, `landing-v1` vs `landing-v2`), cada una con un número de seguimiento diferente. Compare los volúmenes de llamadas entre variantes de páginas de destino.
  </Accordion>
</AccordionGroup>

***

## Integración SIP

La Sustitución de Teléfono se vuelve significativamente más poderosa cuando se combina con **integración de números SIP (VoIP)**. Cuando usa números de seguimiento SIP como reemplazos, todo el ciclo de vida de la llamada se captura dentro de Revol:

<Steps>
  <Step title="El visitante ve el número de seguimiento SIP">
    El tracker sustituye su número original con un número de seguimiento conectado a SIP para visitantes de una campaña específica.
  </Step>

  <Step title="El visitante llama al número SIP">
    La llamada se enruta a través de su proveedor VoIP (Binotel, Twilio, etc.) y se conecta con su equipo.
  </Step>

  <Step title="La llamada se graba y analiza">
    Con una integración VoIP activa, la llamada se graba, transcribe y vincula a la sesión del visitante. Usted ve el recorrido completo: qué anuncio hicieron clic, qué páginas vieron y qué dijeron en la llamada.
  </Step>

  <Step title="La IA analiza la conversación">
    Si su agente de IA está configurado para el canal de integración, puede analizar la transcripción de la llamada — identificar la intención del visitante, extraer datos del lead, calificar la calidad de la llamada e incluso sugerir acciones de seguimiento.
  </Step>
</Steps>

### Lo Que Obtiene

Con la Sustitución de Teléfono + integración SIP combinadas, tiene un **pipeline completo de atribución de llamadas**:

| Dato                                                           | Fuente                                                   |
| -------------------------------------------------------------- | -------------------------------------------------------- |
| **Qué campaña** trajo al visitante                             | Parámetros UTM → Coincidencia de campaña                 |
| **Qué páginas** vio el visitante antes de llamar               | Flujo de páginas de la sesión                            |
| **Cuánto tiempo** pasó en el sitio                             | Duración de la sesión                                    |
| **Qué dijeron** en la llamada                                  | Grabación de llamada VoIP + transcripción                |
| **Calidad del lead** e intención                               | Análisis de IA de la llamada                             |
| **Qué número de seguimiento** llamaron                         | Datos del evento de sustitución de teléfono              |
| **Costo por llamada** (si se conoce la inversión publicitaria) | Atribución de campaña + datos de plataforma publicitaria |

<Tip>
  Esto crea un ciclo de retroalimentación cerrado: usted ve que un clic en Google Ads llevó a 3 páginas vistas, 45 segundos de navegación, una llamada telefónica donde el visitante preguntó sobre precios, y la IA lo calificó como un lead de alta intención — todo en una línea de tiempo de sesión.
</Tip>

***

## Mejores Prácticas

<AccordionGroup>
  <Accordion title="Use números dedicados por campaña">
    No reutilice el mismo número de seguimiento en múltiples campañas — esto anula el propósito de la atribución. Cada campaña debe tener un número de reemplazo único.
  </Accordion>

  <Accordion title="Agregue data-revol-phone a todos los elementos de teléfono">
    Incluso si usa enlaces `tel:` (que se detectan automáticamente), agregar `data-revol-phone` previene cualquier parpadeo del número original antes de que se complete la sustitución.
  </Accordion>

  <Accordion title="Mantenga el número original consistente">
    Use el mismo número de teléfono original en todas las campañas. El tracker busca este número exacto en la página — si su sitio web muestra diferentes números de teléfono en diferentes secciones, cree reglas de sustitución separadas para cada uno.
  </Accordion>

  <Accordion title="Pruebe con parámetros UTM">
    Después de configurar una regla de sustitución de teléfono, visite su sitio con los parámetros UTM coincidentes (por ejemplo, `?utm_source=google&utm_medium=cpc`) y verifique que el número cambia. Revise el Registro de Actividad para el evento `phone_swap`.
  </Accordion>
</AccordionGroup>

***

## Detalles Técnicos

| Detalle                            | Valor                                                                                  |
| ---------------------------------- | -------------------------------------------------------------------------------------- |
| **Módulo**                         | `tracker/modules/phone-swap.js` — cargado de forma diferida solo cuando existen reglas |
| **Coincidencia**                   | Coincidencia exacta en todos los campos UTM no nulos (lógica AND)                      |
| **Detección**                      | Enlaces `<a href="tel:...">` + elementos `[data-revol-phone]`                          |
| **Soporte SPA**                    | MutationObserver en `document.body` (childList + subtree)                              |
| **Prevención de parpadeo**         | CSS `visibility: hidden` en `[data-revol-phone]` hasta la sustitución                  |
| **Seguimiento de eventos**         | Un evento `phone_swap` por sesión (solo primera sustitución)                           |
| **Actualización de configuración** | Cada 5 minutos vía sondeo de configuración en segundo plano                            |
| **Normalización de números**       | Elimina espacios, guiones, paréntesis, puntos antes de la comparación                  |
