Goals
Create Goal
Creates a new goal for tracking conversions.
POST /api/sites/:site/goalsCreates a new goal for tracking conversions. Requires the member role or above on the site (the goals:write permission). Returns 201 on success and 400 with details when the body fails validation.
Path Parameters
Prop
Type
Request Body
Prop
Type
GoalConfig Object
Which fields apply depends on goalType. Path goals need pathPattern and event goals need eventName; autocapture goals need nothing, and match every event of their type when valuePattern is omitted.
Prop
Type
Response
Prop
Type
curl -X POST "https://app.rybbit.io/api/sites/1/goals" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Checkout Complete",
"goalType": "path",
"config": {
"pathPattern": "/checkout/success"
}
}'const response = await fetch(
'https://app.rybbit.io/api/sites/1/goals',
{
method: 'POST',
headers: {
'Authorization': 'Bearer your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Purchase Made',
goalType: 'event',
config: {
eventName: 'purchase',
eventPropertyKey: 'plan',
eventPropertyValue: 'pro'
}
})
}
);
const data = await response.json();import requests
response = requests.post(
'https://app.rybbit.io/api/sites/1/goals',
json={
'name': 'Signup Complete',
'goalType': 'path',
'config': {
'pathPattern': '/signup/*'
}
},
headers={
'Authorization': 'Bearer your_api_key_here'
}
)
data = response.json()$body = [
'name' => 'Checkout Complete',
'goalType' => 'path',
'config' => [
'pathPattern' => '/checkout/success'
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.rybbit.io/api/sites/1/goals');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer your_api_key_here',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);require 'net/http'
require 'json'
uri = URI('https://app.rybbit.io/api/sites/1/goals')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer your_api_key_here'
request['Content-Type'] = 'application/json'
request.body = {
name: 'Checkout Complete',
goalType: 'path',
config: { pathPattern: '/checkout/success' }
}.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
data = JSON.parse(response.body)body := map[string]interface{}{
"name": "Checkout Complete",
"goalType": "path",
"config": map[string]string{
"pathPattern": "/checkout/success",
},
}
jsonBody, _ := json.Marshal(body)
req, _ := http.NewRequest("POST", "https://app.rybbit.io/api/sites/1/goals", bytes.NewBuffer(jsonBody))
req.Header.Set("Authorization", "Bearer your_api_key_here")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)let body = serde_json::json!({
"name": "Checkout Complete",
"goalType": "path",
"config": {
"pathPattern": "/checkout/success"
}
});
let client = reqwest::Client::new();
let res = client
.post("https://app.rybbit.io/api/sites/1/goals")
.header("Authorization", "Bearer your_api_key_here")
.json(&body)
.send()
.await?;
let data: serde_json::Value = res.json().await?;String json = """
{
"name": "Checkout Complete",
"goalType": "path",
"config": {
"pathPattern": "/checkout/success"
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://app.rybbit.io/api/sites/1/goals"))
.header("Authorization", "Bearer your_api_key_here")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());var body = new
{
name = "Checkout Complete",
goalType = "path",
config = new { pathPattern = "/checkout/success" }
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer your_api_key_here");
var content = new StringContent(
JsonSerializer.Serialize(body),
Encoding.UTF8,
"application/json");
var response = await client.PostAsync("https://app.rybbit.io/api/sites/1/goals", content);
var data = await response.Content.ReadAsStringAsync();{
"success": true,
"goalId": 3
}