Campanii & A/B
O campanie este un grup denumit de link-uri care păstrează un set de valori UTM implicite, o
fereastră de date opțională și o singură linie în analytics. A/B se
configurează per link prin variants[] și este independent de
sistemul de campanii - le poți folosi pe oricare, pe ambele sau pe niciuna.
Creează o campanie
curl -X POST \
https://api.elido.app/v1/workspaces/1/campaigns \
-H "Authorization: Bearer $ELIDO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Spring 2026 launch",
"description": "Coordinated push across email and paid",
"utm_source": "spring2026",
"utm_medium": "email",
"utm_campaign": "launch",
"start_date": "2026-05-01",
"end_date": "2026-05-31"
}'Numele sunt unice per workspace. Setul complet UTM (utm_source,
utm_medium, utm_campaign, utm_term, utm_content) este opțional
și se păstrează pe campanie pentru raportare și pentru etichetarea ta.
Moștenirea automată a acestor câmpuri în URL-urile de destinație ale
link-urilor atribuite este planificată și încă nu este disponibilă (vezi șabloanele
UTM); până atunci, etichetează singur URL-urile de destinație
sau cu generatorul UTM din dashboard.
Atribuie link-uri
curl -X POST \
https://api.elido.app/v1/workspaces/1/campaigns/7/links \
-H "Authorization: Bearer $ELIDO_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "link_ids": [42, 43, 44] }'Până la 100 de ID-uri de link per apel. Un link aparține cel mult unei campanii;
reatribuirea îl mută. Setarea campaign_id pe un link prin
PATCH /links/{id} funcționează și ea, dacă preferi să ții atribuirea
la campanie în payload-ul link-ului.
Elimină cu aceeași formă, folosind DELETE:
curl -X DELETE \
https://api.elido.app/v1/workspaces/1/campaigns/7/links \
-H "Authorization: Bearer $ELIDO_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "link_ids": [42] }'Ștergerea unei campanii setează campaign_id pe null la link-urile ei - link-urile rămân.
Endpoints
| Metodă | Cale |
|---|---|
GET | /v1/workspaces/{ws}/campaigns |
POST | /v1/workspaces/{ws}/campaigns |
PATCH | /v1/workspaces/{ws}/campaigns/{id} |
DELETE | /v1/workspaces/{ws}/campaigns/{id} |
GET | /v1/workspaces/{ws}/campaigns/{id}/links |
POST | /v1/workspaces/{ws}/campaigns/{id}/links (atribuire) |
DELETE | /v1/workspaces/{ws}/campaigns/{id}/links (eliminare atribuire) |
Testare A/B cu variante
Un link poate avea oricâte variants[]. Fiecare variantă are o
destinație, o pondere și o etichetă opțională. Edge-ul alege una
pe fiecare cerere:
{
"destination_url": "https://example.com/control",
"rotation_mode": "weighted",
"variants": [
{ "destination_url": "https://example.com/a", "weight": 50, "label": "A" },
{ "destination_url": "https://example.com/b", "weight": 50, "label": "B" }
]
}rotation_mode controlează strategia:
| Valoare | Comportament |
|---|---|
weighted (implicit) | Alegere aleatorie per cerere, proporțională cu weight |
round_robin | Un contor Redis atomic parcurge variants[counter % N] |
Round-robin contează când testezi A/B materiale cu volum mic - alegerea aleatorie ponderată poate produce împărțiri zgomotoase la eșantioane mici.
Variantele sunt independente de targeting_rules (vezi Smart
links). Când sunt setate ambele, smart link-urile se rezolvă
primele - o regulă potrivită înlocuiește complet rotația variantelor.
În dashboard
- Campanii la
/dashboard/campaigns- creare, editare, arhivare, atribuire în masă de link-uri. - Variante per link la
/dashboard/links/{id}- adaugă variante inline; cursoarele de pondere se normalizează automat la 100.