> ## 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.

# Rufnummerntausch

> Dynamischer Telefonnummernersatz fuer die Anrufzuordnung — verfolgen Sie, welche Kampagnen, Anzeigen und Traffic-Quellen Telefonanrufe generieren

## Ueberblick

Rufnummerntausch ist eine Funktion zur **Anrufzuordnung**, die Telefonnummern auf Ihrer Website basierend auf der Traffic-Quelle des Besuchers dynamisch ersetzt. Wenn ein Besucher ueber eine bestimmte Kampagne ankommt — Google Ads, Facebook, eine Partnerempfehlung oder ein beliebiger UTM-getaggter Link — tauscht der Tracker automatisch Ihre Standardtelefonnummer gegen eine dedizierte Tracking-Nummer aus. Wenn der Besucher diese Nummer anruft, wissen Sie genau, welche Kampagne den Anruf ausgeloest hat.

<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="Rufnummerntausch-Tab" 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="Rufnummerntausch-Tab" width="2865" height="1553" data-path="images/tracker-phone-swap-dark.png" />
</Frame>

***

## Funktionsweise

<Steps>
  <Step title="Rufnummerntausch in einer Kampagne konfigurieren">
    Oeffnen Sie eine Kampagne und setzen Sie die **Originalnummer** (die Nummer auf Ihrer Website) und die **Ersatznummer** (eine dieser Kampagne zugewiesene Tracking-Nummer). Siehe [Kampagnen — Rufnummerntausch](/widget/campaigns#phone-swap) fuer Einrichtungsdetails.
  </Step>

  <Step title="Besucher landet auf Ihrer Website">
    Ein Besucher klickt auf Ihren Kampagnenlink (mit UTM-Parametern) und das Tracker-Skript wird geladen. Der Tracker ruft die aktiven Rufnummerntausch-Regeln vom Server ab.
  </Step>

  <Step title="UTM-Abgleich">
    Der Tracker prueft die UTM-Parameter des Besuchers gegen jede Regel. Alle nicht-leeren Abgleichfelder (utm\_source, utm\_medium, utm\_campaign, rvl\_ref) muessen exakt uebereinstimmen. Die erste uebereinstimmende Regel gewinnt.
  </Step>

  <Step title="Nummer wird ersetzt">
    Der Tracker findet alle Instanzen der Originalnummer auf der Seite — in `tel:`-Links, in Text mit dem Attribut `data-revol-phone` — und ersetzt sie durch die Tracking-Nummer. Der Ersatz behaelt die Formatierung der Originalnummer bei.
  </Step>

  <Step title="Ereignis wird aufgezeichnet">
    Ein `phone_swap`-Ereignis wird mit den Original- und Ersatznummern aufgezeichnet. Dieses Ereignis erscheint im Aktivitaetsprotokoll und in der Kampagnen-Performance-Tabelle.
  </Step>

  <Step title="Besucher ruft an">
    Der Besucher ruft die Tracking-Nummer an. Sie sehen den Anruf der spezifischen Kampagne zugeordnet — kein Raten noetig.
  </Step>
</Steps>

***

## Rufnummerntausch-Tab

Der Rufnummerntausch-Tab zeigt alle aktiven Rufnummerntausch-Regeln aus Ihren Kampagnen in einer einzigen Tabelle:

| Spalte               | Beschreibung                                                               |
| -------------------- | -------------------------------------------------------------------------- |
| **Kampagne**         | Kampagnenname mit UTM-Bedingungen (Quelle, Medium usw.) darunter angezeigt |
| **Rufnummerntausch** | Originalnummer → Ersatznummer                                              |
| **Status**           | Aktiv oder inaktiv                                                         |

Dieser Tab ist eine **Nur-Lese-Zusammenfassung** — um Rufnummerntausch-Regeln hinzuzufuegen oder zu bearbeiten, oeffnen Sie die Kampagne im [Kampagnen](/widget/campaigns)-Tab und konfigurieren Sie den Rufnummerntausch-Abschnitt.

***

## Telefonnummern zu Ihrer Website hinzufuegen

Der Tracker ersetzt Telefonnummern auf zwei Arten:

### 1. Tel-Links (Automatisch)

Jeder `<a href="tel:...">`-Link auf Ihrer Seite wird automatisch erkannt. Wenn der href mit der Originalnummer einer Regel uebereinstimmt, wird er getauscht — sowohl das `href`-Attribut als auch der sichtbare Text.

```html theme={null}
<!-- Vor dem Tausch -->
<a href="tel:+380441234567">+380 (44) 123-45-67</a>

<!-- Nach dem Tausch (Besucher von Google Ads-Kampagne) -->
<a href="tel:+380449876543">+380 (44) 987-65-43</a>
```

Keine zusaetzlichen Attribute erforderlich — der Tracker findet `tel:`-Links automatisch.

### 2. Datenattribut (Explizit)

Fuer Telefonnummern, die nicht in `tel:`-Links sind (reiner Text, Spans, Divs), fuegen Sie das Attribut `data-revol-phone` hinzu:

```html theme={null}
<!-- Telefon in einem Span -->
<span data-revol-phone>+380441234567</span>

<!-- Telefon in einem Div -->
<div class="contact-phone" data-revol-phone>+380 44 123 45 67</div>
```

Elemente mit `data-revol-phone` werden ausgeblendet (`visibility: hidden`), bis der Tausch abgeschlossen ist, um ein Aufblitzen der Originalnummer zu verhindern.

<Tip>
  Verwenden Sie `data-revol-phone` fuer alle Telefonnummern, die Sie tauschen moechten — auch wenn sie sich in `tel:`-Links befinden. Dies gibt dem Tracker die explizite Kontrolle und verhindert jedes Flackern.
</Tip>

***

## Formatbeibehaltung

Der Tracker behaelt die Formatierung der Originalnummer beim Ersetzen bei. Wenn Original und Ersatz die gleiche Anzahl an Ziffern haben, wird die Ersatznummer nach dem Muster der Originalnummer formatiert:

| Original              | Ersatz (roh)    | Ergebnis              |
| --------------------- | --------------- | --------------------- |
| `+380 (44) 123-45-67` | `+380949876543` | `+380 (94) 987-65-43` |
| `044 123 45 67`       | `0949876543`    | `094 987 65 43`       |
| `+380441234567`       | `+380949876543` | `+380949876543`       |

Wenn die Ziffernanzahl abweicht, wird die Ersatznummer unformatiert eingefuegt.

***

## SPA-Unterstuetzung

Das Rufnummerntausch-Modul verwendet einen **MutationObserver**, um dynamisch hinzugefuegte Elemente zu ueberwachen. Wenn Ihre Website mit React, Vue, Angular oder einem anderen Framework erstellt wurde, das Inhalte nach dem Seitenaufruf rendert — erkennt der Tracker neue Telefonelemente, sobald sie im DOM erscheinen, und tauscht sie automatisch.

Der Observer ueberwacht den gesamten Document-Body auf:

* Neue `<a href="tel:...">`-Links
* Neue Elemente mit dem Attribut `data-revol-phone`

Der Observer wird beim Verlassen der Seite getrennt, um Speicherlecks zu verhindern.

***

## Abgleichregeln

Rufnummerntausch-Regeln werden aus Kampagnen abgeleitet. Jede Kampagne, bei der sowohl **Originalnummer** als auch **Ersatznummer** gesetzt sind, erstellt eine Regel.

### Wie der Abgleich funktioniert

Der Tracker prueft die UTM-Parameter des Besuchers gegen die Abgleichfelder der Regel. **Alle nicht-leeren Felder muessen exakt uebereinstimmen** (UND-Logik):

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

✓ Besucher mit utm_source=google, utm_medium=cpc        → TREFFER
✗ Besucher mit utm_source=google, utm_medium=organic     → KEIN TREFFER
✗ Besucher mit utm_source=facebook, utm_medium=cpc       → KEIN TREFFER
```

Wenn eine Kampagne `utm_source` gesetzt hat, aber `utm_medium` leer ist — muss nur die Quelle uebereinstimmen. Leere Felder werden beim Abgleich ignoriert.

### Prioritaet

Wenn mehrere Kampagnen mit den UTM-Parametern eines Besuchers uebereinstimmen, wird die **erste uebereinstimmende Regel** verwendet. Regeln werden in Erstellungsreihenfolge zurueckgegeben.

***

## Rufnummerntausch-Ereignisse

Jeder Rufnummerntausch generiert ein `phone_swap`-Ereignis, das einmal pro Besuchersitzung verfolgt wird. Das Ereignis enthaelt:

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

Rufnummerntausch-Ereignisse erscheinen in:

* **Aktivitaetsprotokoll** — als `phone_swap`-Ereignistyp mit den Von/Zu-Daten
* **Kampagnen-Performance**-Tabelle — in der Spalte **Rufnummerntausch**
* **Sitzungsdetails** — in der Ereigniszeitleiste der Besuchersitzung

***

## Anwendungsfaelle

<AccordionGroup>
  <Accordion title="Google Ads Anruf-Tracking">
    Erstellen Sie eine Kampagne mit `utm_source=google`, `utm_medium=cpc`. Setzen Sie die Originalnummer auf Ihre Hauptgeschaeftsnummer und die Ersatznummer auf eine dedizierte Tracking-Nummer. Jeder Anruf von Google Ads-Besuchern wird dieser Kampagne zugeordnet.

    **Ergebnis:** Sie sehen genau, wie viele Anrufe Ihre Google Ads-Ausgaben generieren — im selben Dashboard wie Chat-Konversationen, Formulareinreichungen und Seitenaufrufe.
  </Accordion>

  <Accordion title="Multi-Channel-Zuordnung">
    Erstellen Sie separate Kampagnen fuer jede Traffic-Quelle — Google, Facebook, Instagram, E-Mail-Newsletter — jeweils mit eigener Tracking-Nummer. Dieselbe Originalnummer auf Ihrer Website wird je nach Herkunft des Besuchers unterschiedlich ersetzt.

    | Kampagne     | Quelle             | Tracking-Nummer  |
    | ------------ | ------------------ | ---------------- |
    | Google Marke | google / cpc       | +380 44 111 1111 |
    | Facebook Ads | facebook / paid    | +380 44 222 2222 |
    | Newsletter   | newsletter / email | +380 44 333 3333 |
    | Organisch    | — (kein Tausch)    | Originalnummer   |
  </Accordion>

  <Accordion title="Offline-Marketing (Print, Plakate)">
    Erstellen Sie eine Kampagne fuer Ihre Printanzeigen mit einem einzigartigen `rvl_ref`-Parameter. Fuegen Sie eine dedizierte Telefonnummer hinzu. Wenn jemand die Nummer vom Flyer anruft — wissen Sie, dass es von Print kam, nicht digital. Kombinieren Sie mit einem [QR-Code](/widget/campaigns#qr-code) fuer digitales Tracking desselben Materials.
  </Accordion>

  <Accordion title="Partner- und Empfehlungs-Tracking">
    Geben Sie jedem Empfehlungspartner eine eigene Kampagne mit `rvl_ref=partner_name` und einer dedizierten Tracking-Nummer. Verfolgen Sie genau, wie viele Anrufe jeder Partner generiert — neben Sitzungen, Seitenaufrufen und KI-Konversationen.
  </Accordion>

  <Accordion title="A/B-Testing von Landingpages">
    Erstellen Sie zwei Kampagnen mit derselben Quelle, aber unterschiedlichen `utm_content`-Werten (z.B. `landing-v1` vs `landing-v2`), jeweils mit einer anderen Tracking-Nummer. Vergleichen Sie die Anrufvolumen zwischen Landingpage-Varianten.
  </Accordion>
</AccordionGroup>

***

## SIP-Integration

Der Rufnummerntausch wird deutlich leistungsfaehiger in Kombination mit einer **SIP (VoIP)-Nummernintegration**. Wenn Sie SIP-Tracking-Nummern als Ersatz verwenden, wird der gesamte Anruflebenszyklus in Revol erfasst:

<Steps>
  <Step title="Besucher sieht die SIP-Tracking-Nummer">
    Der Tracker tauscht Ihre Originalnummer gegen eine SIP-verbundene Tracking-Nummer fuer Besucher aus einer bestimmten Kampagne.
  </Step>

  <Step title="Besucher ruft die SIP-Nummer an">
    Der Anruf wird ueber Ihren VoIP-Anbieter (Binotel, Twilio usw.) geleitet und mit Ihrem Team verbunden.
  </Step>

  <Step title="Anruf wird aufgezeichnet und analysiert">
    Bei aktiver VoIP-Integration wird der Anruf aufgezeichnet, transkribiert und mit der Sitzung des Besuchers verknuepft. Sie sehen die gesamte Reise: welche Anzeige sie geklickt haben, welche Seiten sie angesehen haben und was sie am Telefon gesagt haben.
  </Step>

  <Step title="KI analysiert das Gespraech">
    Wenn Ihr KI-Agent fuer den Integrationskanal konfiguriert ist, kann er das Anruftranskript analysieren — die Absicht des Besuchers identifizieren, Lead-Daten extrahieren, die Anrufqualitaet bewerten und sogar Folgemassnahmen vorschlagen.
  </Step>
</Steps>

### Was Sie erhalten

Mit Rufnummerntausch + SIP-Integration kombiniert haben Sie eine **vollstaendige Anrufzuordnungs-Pipeline**:

| Datenpunkt                                                 | Quelle                                    |
| ---------------------------------------------------------- | ----------------------------------------- |
| **Welche Kampagne** den Besucher gebracht hat              | UTM-Parameter → Kampagnenabgleich         |
| **Welche Seiten** der Besucher vor dem Anruf angesehen hat | Sitzungs-Seitenfluss                      |
| **Wie lange** er auf der Website war                       | Sitzungsdauer                             |
| **Was er gesagt** hat am Telefon                           | VoIP-Anrufaufzeichnung + Transkription    |
| **Lead-Qualitaet** und Absicht                             | KI-Analyse des Anrufs                     |
| **Welche Tracking-Nummer** er angerufen hat                | Rufnummerntausch-Ereignisdaten            |
| **Kosten pro Anruf** (wenn Werbeausgaben bekannt)          | Kampagnenzuordnung + Werbeplattform-Daten |

<Tip>
  Dies schafft eine geschlossene Feedback-Schleife: Sie sehen, dass ein Google Ads-Klick zu 3 Seitenaufrufen, 45 Sekunden Browsen, einem Telefonanruf, bei dem der Besucher nach Preisen fragte, und einer KI-Bewertung als High-Intent-Lead fuehrte — alles in einer Sitzungszeitleiste.
</Tip>

***

## Best Practices

<AccordionGroup>
  <Accordion title="Verwenden Sie dedizierte Nummern pro Kampagne">
    Verwenden Sie nicht dieselbe Tracking-Nummer fuer mehrere Kampagnen — das macht den Zweck der Zuordnung zunichte. Jede Kampagne sollte eine einzigartige Ersatznummer haben.
  </Accordion>

  <Accordion title="Fuegen Sie data-revol-phone zu allen Telefonelementen hinzu">
    Auch wenn Sie `tel:`-Links verwenden (die automatisch erkannt werden), verhindert das Hinzufuegen von `data-revol-phone` jedes Flackern der Originalnummer vor Abschluss des Tauschs.
  </Accordion>

  <Accordion title="Halten Sie die Originalnummer konsistent">
    Verwenden Sie dieselbe Originalnummer in allen Kampagnen. Der Tracker sucht nach genau dieser Nummer auf der Seite — wenn Ihre Website verschiedene Telefonnummern in verschiedenen Bereichen anzeigt, erstellen Sie separate Tauschregeln fuer jede.
  </Accordion>

  <Accordion title="Testen Sie mit UTM-Parametern">
    Besuchen Sie nach dem Einrichten einer Rufnummerntausch-Regel Ihre Website mit den passenden UTM-Parametern (z.B. `?utm_source=google&utm_medium=cpc`) und ueberpruefen Sie, ob sich die Nummer aendert. Pruefen Sie das Aktivitaetsprotokoll auf das `phone_swap`-Ereignis.
  </Accordion>
</AccordionGroup>

***

## Technische Details

| Detail                           | Wert                                                                          |
| -------------------------------- | ----------------------------------------------------------------------------- |
| **Modul**                        | `tracker/modules/phone-swap.js` — wird nur bei vorhandenen Regeln nachgeladen |
| **Abgleich**                     | Exakter Abgleich aller nicht-leeren UTM-Felder (UND-Logik)                    |
| **Erkennung**                    | `<a href="tel:...">`-Links + `[data-revol-phone]`-Elemente                    |
| **SPA-Unterstuetzung**           | MutationObserver auf `document.body` (childList + subtree)                    |
| **Flacker-Praevention**          | CSS `visibility: hidden` auf `[data-revol-phone]` bis zum Tausch              |
| **Ereignis-Tracking**            | Ein `phone_swap`-Ereignis pro Sitzung (nur erster Tausch)                     |
| **Konfigurationsaktualisierung** | Alle 5 Minuten ueber Hintergrund-Konfigurationsabfrage                        |
| **Nummernnormalisierung**        | Entfernt Leerzeichen, Bindestriche, Klammern, Punkte vor dem Vergleich        |
