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

# Piwik Pro Audiences

> Verwenden Sie Piwik Pro-Zielgruppensegmente als Targeting-Bedingungen in Kameleoon-Experimenten und -Personalisierungen uber eine Custom Data-Brucke.

Die in Ihrem DMP verfugbaren Segmente werden von Piwik Pro Audiences uber eine REST-API bereitgestellt.

Klicken Sie in Ihrem Kameleoon-Konto auf **Admin** > **Projects**.

## Global custom script

So fugen Sie das globale benutzerdefinierte Skript ein:

* Klicken Sie auf **Configuration** > **General**.

Der **Global custom script**-Einsatz verbindet Kameleoon mit Matomo. Jeder JavaScript-Code, den Sie in diesen Einsatz hinzufugen, wird bei jedem Laden der Seite ausgefuhrt. Diese Funktion wird in der Regel verwendet, um komplexen Tracking-Code oder eine Integration mit anderen Losungen hinzuzufugen.

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-source/analytics/piwik-pro-audiences/Capture-decran-2022-03-21-a-16.34.44.png)
</Frame>

Kopieren Sie den unten stehenden Code und fugen Sie ihn in den Abschnitt **Global script** ein:

```javascript theme={null}
const getPiwikProSegments = (visitorID) => {
        const clientID = 'Replace this with your client_id from generated credentials';
        const websiteID = 'Replace this with your project_id';
        const xhr = new XMLHttpRequest();
        xhr.onload = function run() {
            if (this.status === 200) {
                Kameleoon.API.Data.setCustomData(
                    'Piwik Pro segments',
                    JSON.parse(xhr.response)
                );
            }
        };
        xhr.open('GET', https://customers.kameleoon.com/kameleoon/piwik/user/${visitorID}?id=${clientID}&website_id=${websiteID}, true);
        xhr.send();
    };

    Kameleoon.API.Core.runWhenConditionTrue(() => typeof _paq !== 'undefined', () => {
        _paq.push([function init() {
            getPiwikProSegments(this.getVisitorId());
        }]);
    });
```

Klicken Sie auf **Validate**, um die Anderungen auf Ihre Konfiguration anzuwenden.

## Custom Data

Sie mussen dann [eine neue Custom Data](../../../assets/custom-data/create-custom-data) erstellen.

Sie benotigen:

* Ihre `client_id` und `client_secret` zum Generieren des Bearer Tokens ([Anmeldedaten abrufen](https://developers.piwik.pro/en/latest/platform/getting_started.html)).
* Ihre `website_id`.

Verwenden Sie die Erfassungsmethode **Activation API Method**. Dieser Code sollte im Abschnitt **Save the values for the targeting condition associated with the custom data point** der Custom Data platziert werden (vergessen Sie nicht, Ihre `client_id` und `website_id` hinzuzufugen).

```javascript theme={null}
  let segmentPW = [];
     const clientID = 'Replace this with your client_id from generated credentials';
     const websiteID = 'Replace this with you website_id';
 

     const xhr = new XMLHttpRequest();
     xhr.onreadystatechange = function check() {
         if (this.readyState === 4) segmentPW = JSON.parse(xhr.response);
     };
     xhr.open('GET', [https://customers.kameleoon.com/kameleoon/piwik/segments/?id=${clientID}&website_id=${websiteID}](https://customers.kameleoon.com/kameleoon/piwik/segments/?id=$%7BclientID%7D&website_id=$%7BwebsiteID%7D), false);
     xhr.send();
     return segmentPW; 
```

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-source/analytics/piwik-pro-audiences/image-47.png)
</Frame>

Sie werden feststellen, dass wir in diesem Code einen Kameleoon-Webservice (`https://customers.kameleoon.com/kameleoon/piwik/`) aufrufen, der die Piwik Pro-API verwendet, um alle Segmente abzurufen. Dieser Aufruf ist notwendig, um CORS-Richtlinienprobleme zu umgehen.

Die Custom Data sollte auf die Typen **list of** und **strings** eingestellt sein; der Scope ist **Page**.

## External Segment Sync for Server-side

Wenn Sie **Matomo-Segmentdaten mit einem unserer SDKs verwenden** mochten, mussen Sie die in der Dokumentation jedes SDKs bereitgestellten Richtlinien befolgen und die Methode [`getRemoteData()`](../../../../developer-docs/sdks/mobile-sdks/ios-sdk#getremotedata) verwenden.
