# ablyft.push()

URL: https://docs.ablyft.com/de/developers/reference/javascript-api/push/

> Sende Goals, Page-Befehle, Listener und Consent-Änderungen an ABlyft.



`ablyft.push(event)` nimmt ein Objekt mit einem `eventType` und den Parametern dieses Typs entgegen.
Es kann auch **vor** dem Laden des Snippets aufgerufen werden, siehe [Queueing](https://docs.ablyft.com/de/developers/reference/javascript-api/#use-the-api-before-the-snippet-has-loaded).

| `eventType`                                         | Zweck                                                                  |
| --------------------------------------------------- | ---------------------------------------------------------------------- |
| [`custom`](#custom)                                 | Ein Custom Goal auslösen                                               |
| [`revenue`](#revenue)                               | Ein Revenue Goal mit einem Wert auslösen                               |
| [`reevaluateAudiences`](#reevaluateaudiences)       | Audiences von Experiments auf aktiven Pages erneut prüfen              |
| [`forceVariation`](#forcevariation)                 | Eine Variation für einen Visitor erzwingen                             |
| [`activatePage`](#activatepage)                     | Eine Page mit dem API-Trigger aktivieren                               |
| [`deactivatePage`](#deactivatepage)                 | Eine Page deaktivieren                                                 |
| [`addListener`](#addlistener)                       | Eine Funktion ausführen, wenn das Snippet seinen Durchlauf beendet hat |
| [`enableTrackingConsent`](#enabletrackingconsent)   | Speichern, dass der Visitor dem Tracking zugestimmt hat                |
| [`disableTrackingConsent`](#disabletrackingconsent) | Speichern, dass der Visitor das Tracking abgelehnt hat                 |

## custom

Löst ein Goal vom Typ *custom* aus, identifiziert über seinen API Name.

| Parameter    | Typ        | Erforderlich | Beschreibung                                                                 |
| ------------ | ---------- | ------------ | ---------------------------------------------------------------------------- |
| `eventType`  | `'custom'` | Yes      |                                                                              |
| `eventName`  | string     | Yes      | API Name des Goals. Unbekannte Namen werden stillschweigend ignoriert.       |
| `eventValue` | number     | No       | Standardwert `0`. Nur sinnvoll für Goals mit dem Measurement Type **Value**. |

```js
window.ablyft = window.ablyft || [];

window.ablyft.push({
  eventType: 'custom',
  eventName: 'newsletter-signup',
});
```

## revenue

Löst ein Goal vom Typ *revenue* aus. Dieselben Parameter wie bei `custom`; übergib das Revenue als `eventValue`, eine Zahl (kein String) in der Währung, die du verwendest. Ohne Angabe ist der Wert `0`.

```js
window.ablyft = window.ablyft || [];

window.ablyft.push({
  eventType: 'revenue',
  eventName: 'purchase',
  eventValue: 49.9, // order value
});
```

## reevaluateAudiences

Wertet die Audiences aller Experiments auf den aktuell aktiven Pages erneut aus, zum Beispiel nachdem sich ein Data-Layer-Wert oder Cookie geändert hat.

```js
ablyft.push({ eventType: 'reevaluateAudiences' });
```

## forceVariation

Erzwingt eine Variation für ein Experiment. Eingereihte Aufrufe dieses Typs werden beim Laden des Snippets sofort angewendet, bevor die Experiments ausgewertet werden.

| Parameter      | Typ    | Beschreibung                                |
| -------------- | ------ | ------------------------------------------- |
| `experimentId` | number | ID des Experiments                          |
| `variationId`  | number | ID der Variation, die angezeigt werden soll |

```js
window.ablyft = window.ablyft || [];

window.ablyft.push({
  eventType: 'forceVariation',
  experimentId: 12345678,
  variationId: 98765432,
});
```

Der Aufruf kann vor oder nach dem ABlyft-Snippet platziert werden, muss aber erfolgen, bevor das Experiment für den
Visitor ausgewertet wird, also vor der Audience-Prüfung und bevor der Visitor einer Variation zugewiesen wurde. Das ist nützlich für
Entwickler, die den realen Ablauf inklusive Goals in einem Browser oder einem automatisierten Test prüfen.

> **Nur für Visitors ohne Zuweisung:** Die erzwungene Variation wird verwendet, wenn der Visitor dem Experiment zum ersten Mal zugewiesen wird. Hat dieser Browser bereits
> eine Zuweisung für das Experiment (gespeichert im konfigurierten Storage, siehe
> [Storage & privacy](https://docs.ablyft.com/de/developers/consent-and-security/storage-and-privacy/)), bleibt diese Zuweisung bestehen. Leere den
> Storage oder nutze ein privates Fenster. Der Visitor muss weiterhin die anderen Prüfungen bestehen (Environment, Audiences, Exclusion
> Groups). Erzwungene Visitors sind echte Participants: Ihre Daten zählen in deinen Results. Für einen schnellen Blick auf eine Variation
> ohne Code nutze den [Preview-Modus](https://docs.ablyft.com/de/developers/debugging/preview-and-live-log/#preview-mode).

## activatePage

Aktiviert eine Page, zum Beispiel eine mit dem *API*-Trigger konfigurierte. Identifiziere die Page über ID **oder** API Name; ist `pageId` angegeben, hat sie Vorrang.
Existiert die Page nicht, wird ein Fehler protokolliert und ein [`ablyftError`](https://docs.ablyft.com/de/developers/reference/javascript-api/#events)-Event ausgelöst.

| Parameter     | Typ    | Beschreibung      |
| ------------- | ------ | ----------------- |
| `pageId`      | number | ID der Page       |
| `pageApiName` | string | API Name der Page |

```js
ablyft.push({ eventType: 'activatePage', pageApiName: 'checkout-step-2' });
```

Einrichtung der Page und Wirkung des Aufrufs: [Page API](https://docs.ablyft.com/de/developers/reference/page-api/).

## deactivatePage

Deaktiviert eine Page. Dieselben Parameter und dasselbe Fehlerverhalten wie bei `activatePage`. Die Wirkung hängt vom Deactivation Mode der Page ab, siehe
[Page API](https://docs.ablyft.com/de/developers/reference/page-api/#deactivate-a-page).

```js
ablyft.push({ eventType: 'deactivatePage', pageApiName: 'checkout-step-2' });
```

## addListener

Registriert einen Listener, der (ohne Argumente) aufgerufen wird, nachdem das Snippet einen Durchlauf beendet hat, auch bei durch `reInit()` ausgelösten Durchläufen.

| Parameter          | Typ              | Beschreibung                          |
| ------------------ | ---------------- | ------------------------------------- |
| `listener.type`    | `'lifecycleEnd'` | Der einzige unterstützte Listener-Typ |
| `listener.handler` | function         | Wird ohne Argumente aufgerufen        |

```js
ablyft.push({
  eventType: 'addListener',
  listener: {
    type: 'lifecycleEnd',
    handler: () => console.log('ABlyft finished its run'),
  },
});
```

> Es gibt nur einen Handler-Slot. Wenn du einen zweiten `lifecycleEnd`-Listener registrierst, ersetzt er den ersten.

## enableTrackingConsent

Speichert den Consent des Visitors (`ablyft_tracking_consent` mit Wert `1`) im konfigurierten Storage. Daten, die bisher in einem temporären Storage gehalten wurden, werden ebenfalls in den konfigurierten Storage verschoben.
Wird der Consent zum ersten Mal erteilt, initialisiert sich ABlyft mit `reInit({ resetStates: true })` neu.

Rufe dies aus deinem Consent Manager auf. Siehe [Consent Manager](https://docs.ablyft.com/de/developers/consent-and-security/consent-manager/).

```js
// Example: call when the visitor accepts statistics cookies
ablyft.push({ eventType: 'enableTrackingConsent' });
```

## disableTrackingConsent

Speichert, dass der Visitor abgelehnt hat (`ablyft_tracking_consent` mit Wert `0`), im konfigurierten Storage.

```js
ablyft.push({ eventType: 'disableTrackingConsent' });
```

Um den aktuellen Zustand zu lesen, nutze [`ablyft.get('trackingConsentEnabled')`](https://docs.ablyft.com/de/developers/reference/javascript-api/get/#trackingconsentenabled).

