So greifen Sie über die API auf Ihre Daten zu

In Metricalp können Sie jederzeit über die API auf Ihre Dashboard-Daten zugreifen. Sie können diese verwenden, um Ihr eigenes Dashboard zu erstellen oder Ihre eigenen benutzerdefinierten Bericht-Workflows zu erstellen. Um auf Ihre Daten über die API zuzugreifen, benötigen Sie zwei Dinge: ein API-Zugriffstoken und Ihre Tracker-Daten-ID.

Ihr API-Zugriffstoken finden Sie in den Kontoeinstellungen. Gehen Sie zu Kontoeinstellungen und dann zum Tab API-Token.

Auf diesem Bildschirm können Sie Ihr API-Zugriffstoken anzeigen oder kopieren. Sie können es auch ersetzen (aus Sicherheitsgründen). Seien Sie jedoch vorsichtig: Wenn Sie Ihr API-Zugriffstoken ersetzen, wird das alte Token ungültig und funktioniert nicht mehr. Bewahren Sie Ihr Token immer sicher auf.

Das zweite, was Sie benötigen, ist die Daten-ID Ihres Ziel-Trackers, um auf dessen Daten zuzugreifen. Sie finden Ihre Tracker-Daten-ID auf der Seite der Tracker-Einstellungen. Bitte prüfen Sie: Tracker einbetten und teilen für detaillierte Informationen zu Ihrer Daten-ID.

Jetzt, da Sie Ihr API-Zugriffstoken und die Daten-ID haben, sind Sie bereit, über die API auf Ihre Daten zuzugreifen. Lassen Sie uns tiefer eintauchen.

Daten-API

Zuerst sollten Sie, um auf die Dashboard-Daten zuzugreifen, POST-Anfragen an den folgenden Dashboard-Endpunkt senden:

Endpoint
https://api.metricalp.com/dashboard

Sie müssen Ihr API-Zugriffstoken im Authorization-Header mit dem Präfix Bearer einfügen.

JS
const headers = {Authorization: 'Bearer eyJ0b2tlbiI6ImxmYXFpaG16NTAyNTU5bmJtYno2YWtvNndrYzhuNWF4Iiwib2lkIjoxfQ=='}

Tracker abrufen

Lassen Sie uns mit etwas Einfachem beginnen. Sie können den Namen, die Zeitzone, die Ziele, Trichter und andere Informationen Ihres Trackers mit einer Anfrage an die Tracker-API abrufen. Unten finden Sie ein Beispiel in JavaScript, aber Sie können jede beliebige Sprache verwenden. Es handelt sich einfach um eine HTTP-Post-Anfrage mit einem Authorization-Header und einem JSON-Body.

Anfrage:

JavaScript

      fetch('https://api.metricalp.com/dashboard', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': 'Bearer eyJ0b2tlbiI6ImdvNHY3b3VhMmw1b3ZwdWlubXlzNWh0eXlzNHVuem53Iiwib2lkIjo2fQ==',
        },
        body: JSON.stringify({
          reqRoute: 'get-tracker',
          trackerId: 'mam2',
        }),
      }).then(response => response.json()).then(data => {console.log(data)});

Im Header haben wir unser API-Zugriffstoken bereitgestellt und im Body haben wir bereitgestellt:

- reqRoute: 'get-tracker'

- trackerId: 'mam2' (was Ihre Tracker-Daten-ID ist, die wir oben erhalten haben)

Wenn alles gut geht, wird die Erfolgsantwort wie folgt aussehen:

JSON
         {
        tracker_id: 2,
        owner_id: 6,
        tracker_name: 'Test Tracker',
        is_active: 1,
        timezone: 'UTC',
        create_date: '2024-01-22T13:56:27.568Z',
        update_date: '2024-01-22T13:56:27.568Z',
        allow_all_hosts: 1,
        allowed_hosts: '[]',
        access: 'private',
        access_key: '',
        deactive_reason: null,
        tracker_warning: null,
        goals: [
          {
            tracker_id: 2,
            goal_id: '6-2-ls3gep4h-kfm',
            goal_name: 'Klicken Sie auf die Schaltfläche „Kaufen“ in den USA',
            goal_props: '[{"key":"event_type","value":"click_purchase","matchType":"exact","caseSensitive":true},{"key":"country","value":"Vereinigte Staaten","matchType":"exact","caseSensitive":false}]'
          },
          {
            tracker_id: 2,
            goal_id: '6-2-ls3gdxss-gfs',
            goal_name: 'Besuchen Sie den Bildschirm „Kauf“',
            goal_props: '[{"key":"event_type","value":"screen_view","matchType":"exact","caseSensitive":true},{"key":"path","value":"/purchase","matchType":"exact","caseSensitive":false}]'
          }
        ],
        funnels: [
          {
            tracker_id: 2,
            funnel_id: '6-2-ls3gf7qk-qvh',
            funnel_name: 'Kauf in den USA',
            goals_flow: '6-2-ls3gdxss-gfs>6-2-ls3gep4h-kfm'
          }
        ]
      }

Wir haben alle grundlegenden Informationen über unseren Tracker sowie über Trichter und Ziele erhalten. Die Trichter- und Ziel-IDs sind wichtig, wenn Sie sie später abfragen. Sie sollten sie zur Abfrage aufbewahren.

Abfrage

Jetzt können wir unsere Dashboard-Daten abfragen. Wir werden die Struktur des Anfragekörpers in der Abfrage beschreiben. Aber zuerst hier der vollständige TypeScript-Typ des erwarteten Anfragekörpers in der Abfrage-Route:

TS

  export type FieldCondition = { value: string | boolean | number; eq: boolean };

  export type Conditions = {
    tracker_id: string;
    from_date: number;
    to_date?: number;
    browser?: FieldCondition;
    browser_detail?: FieldCondition;
    operating_system?: FieldCondition;
    device_type?: FieldCondition;
    country?: FieldCondition;
    city?: FieldCondition;
    event_type?: FieldCondition;
    hostname?: FieldCondition;
    os_detail?: FieldCondition;
    path?: FieldCondition;
    entered_from_path?: FieldCondition;
    exited_from_path?: FieldCondition;
    source?: FieldCondition;
    source_detail?: FieldCondition;
    utm_medium?: FieldCondition;
    utm_source?: FieldCondition;
    utm_campaign?: FieldCondition;
    utm_content?: FieldCondition;
    utm_term?: FieldCondition;
    custom_prop1?: FieldCondition;
    custom_prop2?: FieldCondition;
    custom_prop3?: FieldCondition;
    custom_prop4?: FieldCondition;
    custom_prop5?: FieldCondition;
    goal_id?: FieldCondition;
  };

  type RequestBody = {
      reqRoute: 'query';
      genericType: 'main' | 'main-chart' | 'non-pfph' | 'pfph' | 'funnel' | 'event-type' | 'realtime-summary';
      conditions: Conditions;
      funnel?: string;
      fields: string[];
      offset?: number;
      rangeType?: 'five-min' | 'hourly' | 'daily' | 'weekly' | 'monthly';
      trackerAccessKey?: string;
      mainActiveTab?:
        | 'eventUniqueCount'
        | 'totalSessions'
        | 'totalScreenViews'
        | 'viewsPerSession'
        | 'bounceRate'
        | 'eventTotalCount'
        | 'uniqueGoalConversion';
      extendedLimit?: boolean;
  }

Keine Sorge, wir werden diese Felder und ihre Zwecke im Folgenden erklären.

- reqRoute

reqRoute ist 'query', während wir Dashboard-Daten abfragen. Es war get-tracker, als wir oben Tracker-Daten erhalten haben. Wie du erkannt hast, ist der Endpunkt immer derselbe, aber body.reqRoute ändert sich für verschiedene Anfragearten. Zum Abfragen von Daten wird es immer 'query' sein.

- genericType

genericType ist ein wichtiges spezifisches Konzept in Metricalp. main und main-chart sind aufgrund der Namen klar. Wenn du Daten für Hauptkennzahlen wie eindeutige Besucher, Gesamt-Sitzungen, Gesamt-Seitenansichten usw. benötigst, musst du dies auf main setzen. Wenn du Daten in Diagrammstruktur für eine spezifische Kennzahl erhalten möchtest, musst du dies auf main-chart setzen. non-pfph und pfph sind spezielle Begriffe in Metricalp. pfph bedeutet im Wesentlichen permanent pro Sitzung. Zum Beispiel, wenn der Browser eines Besuchers Chrome ist und sich in einer Sitzung nicht ändern kann. Also ist es ein pfph-Feld. Aber das path-Feld kann sich in einem Sitzungsfluss ändern, da der Besucher von einer Seite zur anderen springen kann. Also ist es ein non-pfph-Feld. Wir machen diese Unterscheidung, um große Leistungsoptimierungen im Hintergrund zu erreichen. Hier findest du die Liste aller non-pfph und pfph Felder:

Non-PFPH:

  • path
  • source
  • source_detail
  • hostname
  • utm_medium
  • utm_source
  • utm_campaign
  • utm_content
  • utm_term
  • custom_prop1
  • custom_prop2
  • custom_prop3
  • custom_prop4
  • custom_prop5

PFPH:

  • city
  • country
  • browser
  • browser_detail
  • operating_system
  • os_detail
  • device_type
  • user_language
  • user_timezone

Wenn du auch Trichterdaten erhalten möchtest, solltest du diesen genericType auf funnel setzen. Du kannst Event-Typen erhalten, indem du dies auf event-type setzt und schließlich, um Echtzeitdaten als Zusammenfassung zu erhalten, kannst du dies auf realtime-summary setzen.

- conditions

Wie du weißt, kannst du Bedingungen (Filter) im Dashboard festlegen. Zum Beispiel, um Besucher nur in den USA zu erhalten und den Browser Chrome zu haben. Um Bedingungen in der API festzulegen, musst du das Feld conditions im Anfragekörper setzen. Eine Bedingung kann auf Gleichheit (ist) oder Ungleichheit (ist nicht) basieren.

JS
const conditions = { "browser": { "eq": true, "value": "Chrome" }}

Wenn du eq auf true setzt, bedeutet das, dass die Filterung auf Gleichheit basiert, also bringt es Besucher mit Chrome-Browser. Wenn du es auf false setzt, bedeutet das, dass nur Besucher ohne Chrome-Browser gebracht werden.

Wichtiger Hinweis:

Du musst immer deine Tracker-Daten-tid (als tracker_id), event_type, von Datum und bis Datum Informationen in den Bedingungen einfügen. Andernfalls funktioniert die Abfrage nicht. Beachte, dass du der Eigentümer des Trackers sein musst oder der Tracker öffentlich sein sollte, um auf seine Daten zugreifen zu können.

Hier ein Beispiel für ein vollständiges Conditions-Objekt:

JS

  const conditions = {
    "browser": {
      "eq": true,
      "value": "Chrome"
    },
    "tracker_id": "mam1",
    "from_date": 1706734800000,
    "to_date": 1706795834711,
    "event_type": {
      "value": "screen_view",
      "eq": true
    }
  }

- funnel

Du musst diesen Wert nur angeben, wenn du eine Abfrage für Trichter (genericType = funnel) machst.

Es sollte der Fluss von Ziel-IDs im Trichter sein. Du hattest diese Daten, als du eine get-tracker-Anfrage gemacht hast. Du hattest alle Trichterdaten und deren goals_flow. Verwende die goals_flow-Daten hier, um Ergebnisse für den Trichter zu erhalten. Beispiel:

"funnel": "6-2-ls3gdxss-gfs>6-2-ls3gep4h-kfm"

Du wirst das vollständige Anwendungsbeispiel am Ende dieses Dokuments sehen.

- fields

In einer Anfrage kannst du Ergebnisse für ein oder mehrere Felder erhalten. Du kannst also eine Liste von Feldern als Array im Anfragekörper angeben.Wichtig ist, dass du non-pfph oder pfph Felder in der Liste der Felder basierend auf deinem genericType haben solltest. Du kannst sie nicht in einer einzelnen Anfrage mischen. Dies ist eine doppelte Leistungsoptimierung (sowohl für Client als auch für Server).

"fields": ["country","city","user_language","browser"]

- offset

In einer Feldabfrage-Anfrage erhältst du 10 Elemente pro Feld (absteigend sortiert nach eindeutiger Anzahl) (d.h. die Top 10 Browser). Aber für ein einzelnes Feld (wie beim Klicken auf die Schaltfläche "Mehr anzeigen" im Dashboard), wenn du mehr sehen möchtest, musst du basierend auf einer Paginierungslogik abfragen. Offset wird dies bereitstellen. Du kannst offset auf 0 für die erste Abfrage setzen und dann +20 für jede weitere Abfrage, um die Ergebnisse seitenweise zu sehen. Du wirst ein vollständiges Beispiel am Ende sehen.

- rangeType

Dies ist erforderlich, wenn du eine genericType main-chart-Abfrage machst. Es bestimmt den rangeType des Diagramms. Du kannst es auf five-min, hourly, daily, weekly oder monthly setzen.

- trackerAccessKey

Wenn die Zugriffseinstellung deines Trackers key ist, können die Leute auf deine Dashboard-Daten über die API mit dem Schlüssel zugreifen, den du in den Einstellungen festgelegt hast. Sie müssen diesen Schlüssel in jeder Anfrage senden. Du kannst diesen Schlüssel im Feld trackerAccessKey im Anfragekörper festlegen. Wenn die Zugriffseinstellung deines Trackers 'public' oder 'private' oder 'du der Besitzer des Trackers bist und du einen öffentlichen Zugriffstoken bereitgestellt hast' ist, musst du dieses Feld nicht setzen.

- mainActiveTab

Wenn du eine Abfrageanfrage für ein Diagramm (genericType= main-chart) machst, musst du angeben, welches Feld du abfragst. Wenn du zum Beispiel Diagrammdaten für eindeutige Besucher erhalten möchtest, musst du dieses Feld auf eventUniqueCount setzen. Auch rangeType ist für Diagrammanfragen erforderlich, wie oben beschrieben.

- extendedLimit

Standardmäßig gibt jede Abfrage 10 Ergebnisse pro Feld zurück. Wenn du ein einzelnes Feld abfragst (zum Beispiel durch Klicken auf die Schaltfläche "Mehr anzeigen" im Dashboard), kannst du dies auf true setzen, um 20 Ergebnisse pro Feld zu erhalten. Jede Seite wird 20 Elemente haben, und du kannst den Offset-Parameter zur Paginierung verwenden.

Vollständige Abfragebeispiele

Hauptmetriken abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "main",
        "fields": [],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706811129699,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
       {
    bounceRate: 79.55,
    viewsPerSession: 1.72,
    eventUniqueCount: 1088,
    totalSessions: 1112,
    eventTotalCount: 1747,
    uniqueGoalConversion: 0,
    trackerStatus: 'active'
  }

Hauptdiagramm abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "main-chart",
        "fields": [],
        "mainActiveTab": "eventUniqueCount",
        "rangeType": "hourly",
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706811129699,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
        [
    { dt: '1706734800000', value: '41' },
    { dt: '1706738400000', value: '19' },
    { dt: '1706742000000', value: '56' },
    { dt: '1706745600000', value: '54' },
    { dt: '1706749200000', value: '43' },
    { dt: '1706752800000', value: '43' },
    { dt: '1706756400000', value: '37' },
    { dt: '1706760000000', value: '52' },
    { dt: '1706763600000', value: '67' },
    { dt: '1706767200000', value: '55' },
    { dt: '1706770800000', value: '23' },
    { dt: '1706774400000', value: '59' },
    { dt: '1706778000000', value: '54' },
    { dt: '1706781600000', value: '52' },
    { dt: '1706785200000', value: '65' },
    { dt: '1706788800000', value: '62' },
    { dt: '1706792400000', value: '65' },
    { dt: '1706796000000', value: '56' },
    { dt: '1706799600000', value: '58' },
    { dt: '1706803200000', value: '62' },
    { dt: '1706806800000', value: '57' },
    { dt: '1706810400000', value: '8' }
  ]

Nicht-PFPH-Felder abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "non-pfph",
        "fields": [
            "source",
            "path"
        ],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706811659111,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
        {
    source: [
      { label: 'Direct', uniq: '738' },
      { label: 'com.twitter.android', uniq: '310' },
      { label: 'www.adsensecustomsearchads.com', uniq: '27' },
      { label: 't.co', uniq: '15' },
      { label: 'www.google.com', uniq: '6' },
      { label: 'youtube.com', uniq: '5' },
      { label: 'com.google.android.gm', uniq: '1' }
    ],
    path: [
      { label: '/', uniq: '1073' },
      { label: '/contact', uniq: '55' },
      { label: '/blog', uniq: '42' },
      { label: '/features', uniq: '32' },
      { label: '/pricing', uniq: '31' },
      { label: '/docs/getting-started', uniq: '15' },
      { label: '/how-it-works', uniq: '15' },
      { label: '/team', uniq: '14' },
      { label: '/google-analytics-alternative', uniq: '10' },
      { label: '/about-us', uniq: '9' }
    ],
    unknown: []
  }

PFPH-Felder abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "pfph",
        "fields": [
            "operating_system",
            "device_type",
            "hostname"
        ],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706811659111,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
        {
    operating_system: [
      { label: 'iOS', uniq: '611' },
      { label: 'Android', uniq: '424' },
      { label: 'Windows', uniq: '30' },
      { label: 'macOS', uniq: '24' },
      { label: 'Linux', uniq: '4' }
    ],
    device_type: [
      { label: 'mobile', uniq: '1026' },
      { label: 'desktop', uniq: '58' },
      { label: 'tablet', uniq: '9' }
    ],
    hostname: [
      { label: 'www.metricalp.com', uniq: '1091' },
      { label: 'dev.metricalp.com', uniq: '2' }
    ],
    unknown: []
  }

Trichter abrufen

Anfrage:

JavaScript
          fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "funnel",
        "fields": [],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706812149470,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        },
        "funnel": "1-1-lrnyba2a-kt8>1-1-ls3jvfpd-mfk"
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
{ '1-1-lrnyba2a-kt8': 337, '1-1-lrnyba2a-kt8>1-1-ls3jvfpd-mfk': 0 }

Wie Sie sehen, wird die Antwort auch mit IDs von Zielen zurückgegeben und nicht mit Namen. Sie sollten die Zielinformationen (die Sie mit der get-tracker-Anfrage erhalten haben) verwenden, um IDs in Zielnamen im Trichter zuzuordnen.

Ereignistypen abrufen

Anfrage:

JavaScript
        fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "event-type",
        "fields": [],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706812312189
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
        [
    { event_type: 'screen_view', count: '1777' },
    { event_type: 'live_demo_button_click', count: '68' },
    { event_type: 'sso_login', count: '2' }
  ]

Echtzeit-Zusammenfassung Abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "realtime-summary",
        "fields": [],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706811620538,
            "to_date": 1706812520538
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
[ { unique_count: '14', total_count: '29' } ]

Einzelnes Feld mit Pagination Abrufen

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "pfph",
        "fields": [
            "country"
        ],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706812519694,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        },
        "extendedLimit": true,
        "offset": 0
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Bonus - Anfrage für die zweite Seite:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "pfph",
        "fields": [
            "country"
        ],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706812519694,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        },
        "extendedLimit": true,
        "offset": 20
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
       {
    country: [
      { label: 'Indien-IN', uniq: '195' },
      { label: 'Nigeria-NG', uniq: '162' },
      { label: 'Türkei-TR', uniq: '65' },
      { label: 'Vereinigtes Königreich-GB', uniq: '57' },
      { label: 'Indonesien-ID', uniq: '35' },
      { label: 'Kenia-KE', uniq: '33' },
      { label: 'Frankreich-FR', uniq: '31' },
      { label: 'Deutschland-DE', uniq: '29' },
      { label: 'Thailand-TH', uniq: '29' },
      { label: 'Kanada-CA', uniq: '28' },
      { label: 'Südafrika-ZA', uniq: '25' },
      { label: 'Italien-IT', uniq: '19' },
      { label: 'Pakistan-PK', uniq: '18' },
      { label: 'Philippinen-PH', uniq: '16' },
      { label: 'Polen-PL', uniq: '15' },
      { label: 'Taiwan-TW', uniq: '14' },
      { label: 'Vereinigte Arabische Emirate-AE', uniq: '13' },
      { label: 'Argentinien-AR', uniq: '13' },
      { label: 'Ghana-GH', uniq: '12' },
      { label: 'Malaysia-MY', uniq: '12' }
    ],
    unknown: []
  }

Abfrage mit Bedingungen (Filter)

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "non-pfph",
        "fields": [
            "source"
        ],
        "conditions": {
            "country": {
                "eq": true,
                "value": "Canada-CA"
            },
            "browser": {
                "eq": true,
                "value": "Mobile Chrome"
            },
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706813796572,
            "event_type": {
                "value": "screen_view",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
       {
    source: [
      { label: 'com.twitter.android', uniq: '3' },
      { label: 'Direkt', uniq: '1' }
    ],
    browser_detail: [
      { label: 'Mobile Chrome 121', uniq: '3' },
      { label: 'Mobile Chrome 120', uniq: '1' }
    ],
    unknown: []
  }

Wenn Sie den Browser in den Bedingungen haben, erhalten Sie auch browser_detail in der Antwort. Das gilt auch für source -> source_detail, operating_system -> os_detail

Abfrage für benutzerdefinierten Ereignistyp anstelle von screen_view

Anfrage:

JavaScript
       fetch('https://api.metricalp.com/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer eyJ0b2tlbiI6InA0ajF0bjA4eGxqcm1xODJzZm94d2l6eWwzY2c3b28yIiwib2lkIjoxfQ',
    },
    body: JSON.stringify({
        "reqRoute": "query",
        "trackerAccessKey": "",
        "genericType": "pfph",
        "fields": [
            "country",
            "city",
            "user_language",
            "browser"
        ],
        "conditions": {
            "tracker_id": "mam1",
            "from_date": 1706734800000,
            "to_date": 1706813796572,
            "event_type": {
                "value": "live_demo_button_click",
                "eq": true
            }
        }
    }),
  }).then(response => response.json()).then(data => {console.log(data)});

Antwort:

JSON
       {
    country: [
      { label: 'Indien-IN', uniq: '16' },
      { label: 'Nigeria-NG', uniq: '5' },
      { label: 'Kenia-KE', uniq: '3' },
      { label: 'Pakistan-PK', uniq: '3' },
      { label: 'Vereinigtes Königreich-GB', uniq: '2' },
      { label: 'Türkei-TR', uniq: '2' },
      { label: 'Deutschland-DE', uniq: '2' },
      { label: 'Botswana-BW', uniq: '2' },
      { label: 'Italien-IT', uniq: '1' },
      { label: 'Südafrika-ZA', uniq: '1' }
    ],
    city: [
      { label: 'Nairobi-KE', uniq: '3' },
      { label: 'Mumbai-IN', uniq: '3' },
      { label: 'Pune-IN', uniq: '2' },
      { label: 'Madurai-IN', uniq: '2' },
      { label: 'Gaborone-BW', uniq: '2' },
      { label: 'Kayseri-TR', uniq: '2' },
      { label: 'Katsina-NG', uniq: '2' },
      { label: 'Abuja-NG', uniq: '2' },
      { label: 'Islamabad-PK', uniq: '2' },
      { label: 'Vapi-IN', uniq: '1' }
    ],
    user_language: [
      { label: 'Englisch (Vereinigte Staaten)-US', uniq: '20' },
      { label: 'Englisch (Vereinigtes Königreich)-GB', uniq: '16' },
      { label: 'Englisch (Indien)-IN', uniq: '6' },
      { label: 'Spanisch (Argentinien)-419', uniq: '1' },
      { label: 'Englisch (Kanada)-CA', uniq: '1' },
      { label: 'Russisch-unbekannt', uniq: '1' },
      { label: 'Französisch (Frankreich)-FR', uniq: '1' },
      { label: 'Chinesisch (S)-CN', uniq: '1' },
      { label: 'Russisch (Russland)-RU', uniq: '1' },
      { label: 'Deutsch-unbekannt', uniq: '1' }
    ],
    browser: [
      { label: 'Mobile Chrome', uniq: '21' },
      { label: 'Mobile Safari', uniq: '15' },
      { label: 'Chrome', uniq: '7' },
      { label: 'Firefox', uniq: '2' },
      { label: 'Instagram', uniq: '1' },
      { label: 'Chrome WebView', uniq: '1' },
      { label: 'Facebook', uniq: '1' },
      { label: 'Samsung Browser', uniq: '1' }
    ],
    unknown: []
  }