# Häufige Probleme

URL: https://docs.ablyft.com/de/developers/debugging/common-issues/

> Typische technische Probleme mit dem ABlyft-Snippet und wie du sie löst.



Finde dein Symptom, prüfe die Ursache, wende die Lösung an. Schalte zuerst den [Debug-Modus](https://docs.ablyft.com/de/developers/debugging/preview-and-live-log/#debug-mode)
ein, denn die Konsolenausgabe nennt den Grund meist direkt.

## Das Snippet startet nicht

Das Snippet stoppt in diesen Situationen stillschweigend. Einige geben auch ohne Debug-Modus eine Meldung in der
Konsole aus.

| Situation                                                                                                  | Konsolenmeldung                                         | Lösung                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Auf der Seite ist ein zweites Snippet                                                                      | `ABlyft aborting - first snippet already initialized`   | Binde das Snippet nur einmal pro Seite ein, auch wenn du einen Tag Manager verwendest                                          |
| Die Seite liegt in einem iFrame                                                                            | `ABlyft aborting - running in Iframe`                   | Aktiviere **Allow in iFrames** in den Project-Einstellungen, wenn das beabsichtigt ist                                         |
| Der Visitor hat sich abgemeldet                                                                            | keine                                                   | Öffne die Seite mit `?ablyft_opt_out=false`, siehe [Opt-out](https://docs.ablyft.com/de/developers/consent-and-security/storage-and-privacy/#opt-out) |
| Do Not Track ist im Browser aktiviert und das Project beachtet es                                          | `ABlyft # stops because client's doNotTrack is enabled` | Schalte Do Not Track im Browser zum Testen aus oder prüfe die Einstellung unter **Settings → Data Protection & Compliance**    |
| Der Browser wird als Bot eingestuft (User-Agent enthält zum Beispiel `bot`, `google`, `crawler`, `spider`) | `Rated as Bot- Exiting` (Debug-Modus)                   | Nutze einen normalen Browser. Automatisierte Test-Tools mit einem solchen User-Agent werden ignoriert                          |
| Die allgemeinen Prerequisite-Regeln sind nicht erfüllt                                                     | `General Prerequisite Rules NOT met` (Debug-Modus)      | Prüfe die Regeln unter **Settings → Prerequisites**                                                                            |
| **Run only on `ablyft.reInit()`** ist aktiviert                                                            | keine                                                   | Rufe [`ablyft.reInit()`](https://docs.ablyft.com/de/developers/reference/javascript-api/#ablyftreinit) auf, wenn deine Anwendung bereit ist           |
| Die Visual-Editor-Session ist aktiv                                                                        | `Visual Editor Mode activated` (Debug-Modus)            | Schließe den Editor-Tab oder lösche den Session Storage                                                                        |

## Das Snippet ist veraltet

Du hast eine Änderung veröffentlicht, aber die Seite verhält sich noch wie vorher.

1. Warte, bis die Anzeige **Publishing …** in der oberen Leiste verschwindet.
2. Berücksichtige die Cache-Zeit. Siehe
   [Snippet settings](https://docs.ablyft.com/de/developers/installation/snippet-settings/#cache-expiration-ttl).
3. Vergleiche `ablyft.get('data').revision` mit **Snippet revision** unter **Settings → Snippet**. Wenn sie
   abweichen, verwendet der Browser noch eine alte Kopie. Lade die Seite mit einem Hard Refresh neu.
4. Prüfe, dass du die richtige Datei lädst: Ein Environment mit einem [Sub-Snippet](https://docs.ablyft.com/de/developers/installation/environments/#sub-snippets)
   hat eine eigene Datei, etwa `…/s/12345678-staging.js`.
5. Wenn dein eigener Server oder ein CDN vor dem Snippet sitzt, stelle sicher, dass er die Datei nicht länger cacht.

Solange der Debug-Modus an ist, ist das Snippet-Caching ausgeschaltet, was beim Testen hilfreich ist.

## Flicker

Flicker bedeutet, dass Visitors kurz die Originalseite sehen, bevor die Variation erscheint.

* **Lade das Snippet synchron und so früh wie möglich** im `<head>`, vor großen Skripten und Stylesheets. Vermeide
  `async` für das Snippet. Siehe [Snippet einbinden](https://docs.ablyft.com/de/developers/installation/snippet/).
* Lass den **Anti-flicker mode** auf **Use built-in mode** (**Settings → Snippet**). Das Snippet blendet die Seite dann
  direkt nach dem Start aus und zeigt sie wieder, nachdem alle Experiments angewendet wurden, spätestens nach 2 Sekunden.
* Bleibt die Seite 2 Sekunden lang leer, wartet ein Experiment auf etwas, das nicht eintritt (zum Beispiel ein Element,
  das nie erscheint). Prüfe die Konsole auf Fehler.
* Mit **Use your own custom mode** blendet ABlyft nichts aus. Du musst die Seite selbst aus- und einblenden.
* Langsame Änderungen durch eine lange Kette von Redirects oder durch spät ladende Inhalte lassen sich nicht vollständig
  verbergen. Bitte deinen Entwickler, die Ladereihenfolge zu prüfen.

## Selektoren finden keine Elemente

Änderungen an Variations verwenden CSS-Selektoren. Ist ein Element noch nicht auf der Seite, wartet ABlyft und wendet
die Änderung an, sobald es erscheint. Nutze für deinen eigenen Code denselben Ansatz:

```js
ablyftTools.waitForElement('.promo-banner', function (element) {
  element.textContent = 'Free shipping today';
});
```

Prüfe Selektoren in der Konsole mit `document.querySelectorAll('your selector')`. Selektoren mit generierten
Klassennamen ändern sich mit jedem Release deiner Website. Siehe [Dynamische Inhalte](https://docs.ablyft.com/de/developers/application-integration/dynamic-content/).

## JavaScript-Fehler in Experiment- oder Variation-Code

Code des Projects, eines Experiments und einer Variation wird vom Snippet ausgeführt. Ein Fehler darin wird abgefangen,
sodass deine Website weiterläuft, der Rest dieses Codes aber nicht ausgeführt wird.

* Im Debug-Modus erscheint der Fehler in der Konsole als `ABlyft # ERROR on EXPERIMENT <id>: <message>` (oder `VARIATION`).
* JavaScript-Regeln für Environments, Pages und Audiences, die einen Fehler werfen, zählen als **nicht erfüllt**. Die
  Konsole zeigt `JS RULE` mit der Meldung.
* Teste die Regel oder den Code in der Konsole, um die fehlerhafte Zeile zu finden.

Abonniere das Event `ablyftError`, um diese Fehler an dein eigenes Monitoring zu melden, siehe
[Integration prüfen](https://docs.ablyft.com/de/developers/debugging/verify-integration/#6-react-to-snippet-events-in-your-code).

## Consent blockiert das Tracking

Wenn dein Project **Prerequisites** für das Tracking verwendet (zum Beispiel eine Consent-Regel), hält ABlyft Daten im
Arbeitsspeicher und sendet keine Events, bis die Regel erfüllt ist. Symptome:

* Visitors erhalten bei jedem Seitenaufruf eine neue Zuweisung, oder Experiments bleiben nicht stabil.
* Im Live Log erscheinen keine Events, und in der Konsole steht `Tracking Prerequisite Rules NOT met`.

Prüfe, dass dein Consent Manager `enableTrackingConsent` aufruft, und lies den Status mit `ablyft.get('trackingConsentEnabled')`.
Siehe [Consent Manager](https://docs.ablyft.com/de/developers/consent-and-security/consent-manager/).

## Single-Page-Anwendungen

Wenn Experiments nur auf der ersten Seite und nicht nach der Navigation funktionieren, wird die Seite nicht erneut
geprüft. Nutze eine Page mit dem Trigger **URL Change**, aktiviere **Use SPA features** in den Project-Einstellungen oder
aktiviere Pages mit `ablyft.push({ eventType: 'activatePage', pageId: … })`. Siehe
[SPA navigation](https://docs.ablyft.com/de/developers/application-integration/spa-navigation/).

## Ein Goal wird nicht gemessen

* Prüfe das Goal im Preview-Modus mit `ablyft.get('pingedGoals')`: Erscheint das Goal, wird es korrekt ausgelöst.
* **Click Goals:** Der CSS-Selektor muss zum angeklickten Element oder einem seiner Eltern passen, und das Goal muss
  einer aktiven Page zugewiesen sein. Prüfe außerdem auf JavaScript-Fehler auf der Seite, da sie andere Skripte stoppen
  können.
* **Custom und Revenue Goals:** Der `eventName` muss mit dem **API name** des Goals identisch sein. Siehe
  [Custom goals](https://docs.ablyft.com/de/developers/tracking-and-events/custom-goals/).
* **Goal wird einmal gezählt:** Goals mit der Counting Method **One** werden pro Variation und Visitor nur einmal
  gesendet. Um erneut zu testen, lösche den Eintrag `ablyft_tgoals` im konfigurierten Storage (siehe [Storage & privacy](https://docs.ablyft.com/de/developers/consent-and-security/storage-and-privacy/)).
* **Andere Domain:** Liegt das Goal auf einer anderen Domain, konfiguriere **External tracking domains**, siehe
  [Snippet settings](https://docs.ablyft.com/de/developers/installation/snippet-settings/#external-tracking-domains).

## Der Visitor sieht immer dieselbe Variation

Das ist beabsichtigt. Die Zuweisung wird im konfigurierten Storage gespeichert (`ablyft_exps`, siehe
[Storage & privacy](https://docs.ablyft.com/de/developers/consent-and-security/storage-and-privacy/)), und der Visitor bleibt in derselben
Variation. Nutze für Tests ein privates Fenster oder lösche die Website-Daten. Verwende `?ablyft_set_bucketing=…` nur,
wenn du eine Zuweisung von Hand setzen musst, siehe [URL parameters](https://docs.ablyft.com/de/developers/reference/url-parameters/).

## Immer noch nicht gelöst?

Wende dich an den ABlyft-Support. Sende bitte die URL der Seite, die Project ID und Experiment ID, die Ausgabe von
`ablyft.get('data')` und die Konsolenausgabe bei eingeschaltetem Debug-Modus.

## Nächste Schritte

* [Integration prüfen](https://docs.ablyft.com/de/developers/debugging/verify-integration/)
* [Preview & Live Log](https://docs.ablyft.com/de/developers/debugging/preview-and-live-log/)
* [Fehlerbehebung](https://docs.ablyft.com/de/guides/troubleshooting/) für nicht-technische Prüfungen

