Appearance
Configuration objects
Goals, funnels, segments and annotations have the same CRUD endpoints:
| Method | Path | Scope |
|---|---|---|
| GET | /properties/{pid}/{collection} | config:read |
| POST | /properties/{pid}/{collection} | config:write |
| GET | /properties/{pid}/{collection}/{id} | config:read |
| PATCH | /properties/{pid}/{collection}/{id} | config:write |
| DELETE | /properties/{pid}/{collection}/{id} | config:write |
{collection} is goals, funnels, segments or annotations.
Every object is {name, definition}:
| Collection | definition |
|---|---|
goals | {type: "event" | "page" | "element" | "revenue", …} |
segments | {actor?, filters?} |
annotations | {date, note} |
funnels | The same fields as an ad-hoc funnel, without date_range |
Examples:
json
// POST /properties/AH-1A2B3C/goals
{ "name": "Newsletter signup", "definition": { "type": "element", "el_name": "newsletter-subscribe" } }
// POST /properties/AH-1A2B3C/annotations
{ "name": "Autumn sale", "definition": { "date": "2026-10-12", "note": "Autumn sale starts" } }
// POST /properties/AH-1A2B3C/funnels
{ "name": "Checkout funnel", "definition": { "breakdown": "actor_family",
"steps": [ { "type": "page", "path": "/p/*" }, { "type": "element", "el_name": "add-to-cart" }, { "type": "event", "name": "purchase" } ] } }Creation returns 201 with the saved object (id, name, definition, created_by, created_at, updated_at).
GET /properties and GET /properties/{pid} return the properties the key can access with their settings (time zone, currency, hostnames, consent defaults).