Zum Hauptinhalt springen
Dieses Tutorial beschreibt, wie Sie Experimentergebnisse anfordern und mithilfe der Automation API Gewinnervariationen ermitteln. Es folgt auf frühere Tutorials zum Erstellen von Experimenten, zum Ändern von Variationen, zum Verknüpfen von Zielen und Segmenten und zum Starten von Experimenten.

Voraussetzungen

  • access_token
Die Automation API erfordert ein Access Token. Rufen Sie das Token programmgesteuert ab, indem Sie den Anweisungen im Abschnitt Access Token abrufen folgen.

Ziel

Das Tutorial verwendet das folgende Beispielexperiment:
Experiment_188308
Dieses Experiment, genannt Product Page Redesign, umfasst zwei Variationen zusätzlich zur Originalversion: Redesign 1 (ID 828220) und Redesign 2 (ID 828221). Obwohl das Experiment mehrere Ziele hat, konzentriert sich dieses Tutorial ausschließlich auf das Hauptziel, das darin besteht, Versicherungsabschlüsse über Click Tracking zu verfolgen. Dieser Leitfaden beschreibt, wie Sie Experimentergebnisse abrufen, interpretieren und Filter anwenden.
Das Tutorial gilt auch für Feature Flag-Experimente; verwenden Sie jedoch die Endpoints https://api.kameleoon.com/feature-flags/* anstelle von https://api.kameleoon.com/experiments/*:Die experimentId befindet sich im Rollout Planner:

1. Den Datencode abrufen

Fall 1: Ergebnisse direkt abrufen

Endpoint: Rufen Sie Experimentergebnisse ab, indem Sie eine POST-Anfrage an den Request experiment’s result-Endpoint senden.
NameTypBeschreibung
experimentIdStringPflichtfeld im Anfrage-Header.
goalIdArrayGeben Sie die spezifische Ziel-ID an, um die Ergebnisse des Hauptziels zu identifizieren.
referenceVariationIdObjectReferenz-Variations-ID für den Vergleich.
sequentialTestingStringAuf true setzen, um Sequential Testing zur Bestimmung von Konfidenzintervallen zu verwenden.
visitorDataStringAuf false setzen, um Daten basierend auf Besuchen abzurufen. Auf true setzen für Daten basierend auf Besuchern.
Beispiel:
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'

Fall 2: Ergebnisse ohne Autorisierung teilen

1. Einen SharedToken abrufen

Endpoint: Teilen Sie Ergebnisse mit nicht autorisierten Benutzern, indem Sie einen SharedToken vom Share experiment results-Endpoint abrufen.
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results/share' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'
Antwort:
{
    "method": "POST",
    "url": "https://api.kameleoon.com/experiments/188308/results",
    "path": "/experiments/188308/results",
    "headers": {
        "SharedToken": "eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE4NDQ5NDI5MTMsInNoYXJlZENvZGUiOiJhZmM1NzRjN2I4MjY4NTY3NzI2YjZhMDRhMTUxMjgyNjA3Zjk1ZGI4YjA1Y2RkZGY1ZDEwM2ExZDg5ZWM0MmZmIn0.oCECNm5mEhgIthc6eejo9BrfB7p8kEIrpoqtNb4JUiHK6nsxWHMvLc4hHYXCg3DgaBlVoKv6eEZHGty9c-VAoA",
        "Content-Type": "application/json"
    },
    "payload": {
        "visitorData": false,
        "sequentialTesting": true,
        "referenceVariationId": "0",
        "goalsIds": [
            279599
        ]
    }
}

1. Den dataCode mit dem SharedToken abrufen

Rufen Sie Experimentergebnisse ab, indem Sie eine POST-Anfrage an den Request experiment’s result-Endpoint senden und den SharedToken anstelle eines Access Tokens verwenden.
NameTypBeschreibung
experimentIdStringPflichtfeld im Anfrage-Header.
goalIdArrayGeben Sie die spezifische Ziel-ID an, um die Ergebnisse des Hauptziels zu identifizieren.
referenceVariationIdObjectReferenz-Variations-ID für den Vergleich.
sequentialTestingStringAuf true setzen, um Sequential Testing zur Bestimmung von Konfidenzintervallen zu verwenden.
visitorDataStringAuf false setzen, um Daten basierend auf Besuchen abzurufen. Auf true setzen für Daten basierend auf Besuchern.
Beispiel:
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'SharedToken: <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'

Antwort:
{"dataCode":"14443931880924098266207585267983330260134079899081739889989435434342588016765"}

2. Die Experimentergebnisse abrufen

Endpoint: Nachdem Sie den dataCode erhalten haben, verwenden Sie den result-Endpoint. Beispiel:
curl -L -X GET 'https://api.kameleoon.com/results?dataCode=14443931880924098266207585267983330260134079899081739889989435434342588016765'

Antwort:

{
 "status": "READY",
 "data": {
  "dataCode": "14443931880924098266207585267983330260134079899081739889989435434342588016765",
  "variationData": {
   "_reference": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 126862,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1898,
         "convertedVisitCount": 1898,
         "revenueCount": 235352.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.86,
         "revenuePerVisitor": 0.0,
         "conversionRate": 0.014961138875313333,
         "averageCart": 124.0,
         "ratioValue": 0.0,
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   },
   "828220": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 167938,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 7826,
         "convertedVisitCount": 7826,
         "revenueCount": 986076.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 5.87,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": 193.92,
          "max": 229.03,
          "half": 17.56
         },
         "improvementRate": 211.48,
         "conversionRate": 0.04660053114840001,
         "averageCart": 126.0,
         "ratioValue": 0.0,
         "continuousMetrics": {
          "conversions": {
           "reliability": 1.0,
           "improvementRate": 2.114771645178252,
           "halfInterval": 0.10445147824911348,
           "lowerBound": 2.0103201669291386,
           "upperBound": 2.219223123427365
          },
          "revenuePerVisit": {
           "reliability": 1.0,
           "improvementRate": 2.1650098975198366,
           "halfInterval": 0.10613617951119597,
           "lowerBound": 2.0588737180086407,
           "upperBound": 2.2711460770310326
          },
          "averageCart": null
         },
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   },
   "828221": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 174194,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1477,
         "convertedVisitCount": 1477,
         "revenueCount": 189056.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.09,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": -47.93,
          "max": -38.72,
          "half": 4.6
         },
         "improvementRate": -43.33,
         "conversionRate": 0.00847905209134643,
         "averageCart": 128.0,
         "ratioValue": 0.0,
         "continuousMetrics": {
          "conversions": {
           "reliability": 1.0,
           "improvementRate": -0.4332615877700786,
           "halfInterval": 0.027369693136479373,
           "lowerBound": -0.46063128090655797,
           "upperBound": -0.40589189463359926
          },
          "revenuePerVisit": {
           "reliability": 1.0,
           "improvementRate": -0.41497970350459723,
           "halfInterval": 0.028252586463462577,
           "lowerBound": -0.4432322899680598,
           "upperBound": -0.38672711704113466
          },
          "averageCart": null
         },
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   }
  },
  "ventilationNames": null,
  "cupedDataByGoalId": {}
 }
}

3. Die Ergebnisse interpretieren, um die Gewinnervariation zu ermitteln

Gewinnervariationen müssen eine hohe Zuverlässigkeit (über 95 %) und eine positive Verbesserungsrate gegenüber der Referenzvariation aufweisen. Die JSON-Antwort zeigt, dass sowohl Redesign 1 als auch Redesign 2 eine Zuverlässigkeitsrate von 100 % aufweisen. Redesign 1 hat jedoch eine Verbesserungsrate von +211,48 % im Vergleich zu -43,33 % von Redesign 2. Daher ist Redesign 1 der Gewinner. Redesign 1
"828220": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 167938,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 7826,
         "convertedVisitCount": 7826,
         "revenueCount": 986076.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 5.87,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": 193.92,
          "max": 229.03,
          "half": 17.56
         },
         "improvementRate": 211.48,
Redesign 2

"828221": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 174194,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1477,
         "convertedVisitCount": 1477,
         "revenueCount": 189056.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.09,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": -47.93,
          "max": -38.72,
          "half": 4.6
         },
         "improvementRate": -43.33,

4. Experimentergebnisse filtern

Erhalten Sie spezifische Ergebnisse, indem Sie die Parameter breakdown und filter verwenden. Der Parameter breakdown organisiert die Daten nach Faktoren wie neuen Besuchern, Betriebssystem, Browser, Wochentag, SDK und Zeitzone. Geben Sie beispielsweise eine Browser-Aufschlüsselung nur für neue Besucher zurück, indem Sie den Parameter breakdown auf BROWSER und einen filters-Parameter auf NEW_VISITOR setzen, basierend auf dem Verfahren für direkte Ergebnisse. Die cURL-Anfrage an den Export experiment results-Endpoint sollte wie folgt aussehen:

curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>
' \
--data-raw '{
  "visitorData": true,
  "sequentialTesting": true,
  "breakdown": {
    "type": "BROWSER"
  },
  "referenceVariationId": "0",
  "filters": [
    
    {
        "type":"NEW_VISITOR",
        "visitorsType":"NEW_VISITORS",
        "include":true
    }],
  "goalsIds": [
        279599
  ]
}'
Nachdem Sie den dataCode erhalten haben, senden Sie die folgende GET-Anfrage:
curl -L -X GET 'https://api.kameleoon.com/results?dataCode=14443931880924098266207585267983330260134079899081739889989435434342588016765'
Eine erfolgreiche Anfrage gibt Experimentergebnisse für neue Besucher mit dem Chrome-Browser zurück. Die folgende Antwort ist zur Verdeutlichung gekürzt:
>....                                                                                                                                                              
                        }
                    },
                    "OTHERS": {
                        "intervalData": {},
                        "generalData": {
                            "visitCount": 0,
                            "visitorCount": 587206,
                            "goalsData": {
                                "279599": {
                                    "conversionCount": 5410,
                                    "convertedVisitCount": 0,
                                    "revenueCount": 692480.0,
                                    "convertedVisitorCount": 5359,
                                    "revenuePerVisit": 0.0,
                                    "revenuePerVisitor": 1.18,
                                    "reliability": 100.0,
                                    "improvementRange": {
                                        "min": -53.0,
                                        "max": -48.7,
                                        "half": 2.15
                                    },
                                    "improvementRate": -50.85,
                                    "conversionRate": 0.009126269145751235,
                                    "averageCart": 129.22,
                                    "ratioValue": 0.0
                                }
                            }
                        }
                    },
                    "CHROME": {
                        "intervalData": {},
                        "generalData": {
                            "visitCount": 0,
                            "visitorCount": 16,
                            "goalsData": {
                                "279599": {
                                    "conversionCount": 0,
                                    "convertedVisitCount": 0,
                                    "revenueCount": 0.0,
                                    "convertedVisitorCount": 0,
                                    "revenuePerVisit": 0.0,
                                    "revenuePerVisitor": 0.0,
                                    "reliability": 50.0,
                                    "improvementRange": {
                                        "min": null,
                                        "max": null,
                                        "half": null
                                    },
                                    "improvementRate": 0.0,
                                    "averageCart": 0.0,
                                    "ratioValue": 0.0
                                }
                            }
                        }
                    }
                }
            }
        },
        "ventilationNames": null,
        "cupedDataByGoalId": {}
    }
}