Objednávky, feedy a kupóny
Objednávky
Objednávky poháňajú spúšťače (order_created, order_completed, order_changed), podmienky (počet a hodnota objednávok, objednaný produkt), segmenty a konverzie kampaní. Do Poštárne sa dostanú tromi cestami: konektorom e-shopu, feedom objednávok (kind: shop_orders) alebo API.
POST /orders: založenie alebo úprava
Objednávka sa ukladá podľa dvojice (shopId, id), kde id je číslo objednávky vo vašom e-shope. Prvý zápis vráti 201 a change: "created", ďalší 200 a updated alebo unchanged.
curl -sS -X POST "https://www.postarna.cz/api/v1/tenants/$TENANT/orders" \
-H "Authorization: Bearer $POSTARNA_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"id": "2026001234",
"shopId": "13",
"createdAt": "2026-10-01T09:30:00+02:00",
"paidAt": "2026-10-01T09:31:00+02:00",
"email": "karel.vesely@example.cz",
"status": "Zaplaceno",
"eshopCode": "2026001234",
"orderUrl": "https://www.example.cz/objednavka/2026001234",
"currency": "CZK",
"totalWithVat": "1290.00",
"totalWithoutVat": "1066.12",
"items": [
{
"id": "KAVA-1KG",
"name": "Káva Kolumbie 1 kg",
"quantity": 1,
"unit": "ks",
"price": {
"withVat": "1290.00",
"withoutVat": "1066.12",
"currency": "CZK"
},
"url": "https://www.example.cz/kava-kolumbie",
"attributes": {
"Category": "Káva",
"Brand": "Example"
}
}
]
}
JSON{
"change": "created",
"order": {
"id": "5001",
"externalId": "2026001234",
"eshopCode": "2026001234",
"eshopName": "Example.cz",
"shopId": "13",
"createdAt": "2026-10-01T07:30:00.000Z",
"paidAt": "2026-10-01T07:31:00.000Z",
"email": "karel.vesely@example.cz",
"contactId": "1205",
"state": "paid",
"status": "completed",
"sourceStatus": "Zaplaceno",
"orderUrl": "https://www.example.cz/objednavka/2026001234",
"currency": "CZK",
"totalWithVat": "1290.00",
"totalWithoutVat": "1066.12",
"itemCount": 1,
"items": [
{
"id": "1",
"productCode": "KAVA-1KG",
"name": "Káva Kolumbie 1 kg",
"description": "",
"price": {
"withVat": "1290.00",
"withoutVat": "1066.12",
"currency": "CZK"
},
"quantity": 1,
"unit": "ks",
"url": "https://www.example.cz/kava-kolumbie",
"imageUrl": "",
"attributes": {
"Brand": "Example",
"Category": "Káva"
},
"paired": false
}
],
"conversion": null,
"deleted": false,
"receivedAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z",
"seller": {},
"orderDelivery": {}
}
}createdAt(povinné) apaidAt: ISO 8601 s časovou zónou.emailalebocontactId: kupujúci. Kupujúci bez kontaktu dostane nový kontakt v stavecustomer(bez marketingového súhlasu, e-maily nedostáva).status: názov stavu vo vašom e-shope (napríklad „Zaplatené“). Na kanonický stav ho prevedie mapa stavov (nižšie).currency: smie byť len mena e-shopu; iná = 400. Sumy ako desatinné reťazce.items: položky sid(kód produktu),name(povinné),quantity,unit,price {withVat, withoutVat, currency},url,imageUrl,attributes(atribúty z feedu, napríkladCategory,Brand; podľa nich pracuje pravidloorder_attributea podmienky na produkty).deleted: true= objednávka bola zmazaná (beh po nákupe sa ukončí).- Neznáme pole = 400 s jeho názvom.
curl -sS -X POST "https://www.postarna.cz/api/v1/tenants/$TENANT/orders" \
-H "Authorization: Bearer $POSTARNA_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"id": "2026001234",
"shopId": "13",
"createdAt": "2026-10-01T09:30:00+02:00",
"paidAt": "2026-10-01T09:31:00+02:00",
"email": "karel.vesely@example.cz",
"status": "Předáno zákazníkovi",
"eshopCode": "2026001234",
"currency": "CZK",
"totalWithVat": "1290.00",
"items": [
{
"id": "KAVA-1KG",
"name": "Káva Kolumbie 1 kg",
"quantity": 1,
"price": {
"withVat": "1290.00",
"currency": "CZK"
}
}
]
}
JSON{
"change": "updated",
"order": {
"id": "5001",
"externalId": "2026001234",
"eshopCode": "2026001234",
"eshopName": "Example.cz",
"shopId": "13",
"createdAt": "2026-10-01T07:30:00.000Z",
"paidAt": "2026-10-01T07:31:00.000Z",
"email": "karel.vesely@example.cz",
"contactId": "1205",
"state": "paid",
"status": "completed",
"sourceStatus": "Předáno zákazníkovi",
"orderUrl": "",
"currency": "CZK",
"totalWithVat": "1290.00",
"totalWithoutVat": null,
"itemCount": 1,
"items": [
{
"id": "2",
"productCode": "KAVA-1KG",
"name": "Káva Kolumbie 1 kg",
"description": "",
"price": {
"withVat": "1290.00",
"withoutVat": null,
"currency": "CZK"
},
"quantity": 1,
"unit": "",
"url": "",
"imageUrl": "",
"attributes": {},
"paired": false
}
],
"conversion": null,
"deleted": false,
"receivedAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z",
"seller": {},
"orderDelivery": {}
}
}Mapa stavov
Kanonický stav (state) | Skupina (status) |
|---|---|
new, unpaid, processing | pending |
paid, shipped, delivered | completed (nákup) |
cancelled, returned | cancelled |
other | other |
GET /order-states ukáže pravidlá mapy a v seen názvy stavov, ktoré prišli v objednávkach, s ich výsledným stavom; PUT /order-states pravidlá nahradí: {"items": [{"sourceStatus": "Zaplatené", "match": "exact", "state": "paid"}]} (match exact alebo prefix, najviac 500 pravidiel). Prekrytie sa prejaví aj na uložených objednávkach. Názov bez mapovania je other a nikdy sa nepočíta ako nákup.
curl -sS -X GET "https://www.postarna.cz/api/v1/tenants/$TENANT/order-states" \
-H "Authorization: Bearer $POSTARNA_API_KEY"{
"states": [
"new",
"unpaid",
"paid",
"processing",
"shipped",
"delivered",
"cancelled",
"returned",
"other"
],
"items": [],
"seen": []
}Kedy objednávka spustí automatizáciu
order_created: nová objednávka;order_completed: objednávka sa prvý raz dostala do skupinycompleted;order_changed: zmena stavu (voliteľne len do jedného stavu).- Objednávky z prvého importu feedu objednávok (história) a objednávky staršie než 2 dni vo feede automatizáciu nespúšťajú. Objednávka zapísaná cez
POST /ordersju spúšťa. - Beh spustený objednávkou skončí, keď sa objednávka zruší, vráti alebo zmaže.
- Každý e-shop by mal mať jediný zdroj objednávok (konektor, feed, alebo API); dva zdroje by uložili objednávky dvakrát.
Feedy
kind | Čo je | Limit |
|---|---|---|
google_products | produktový feed Google Merchant (XML): produkty pre šablóny (data.products), párovanie položiek objednávok, podmienky | 20 MB, 50 000 položiek |
shop_customers | export zákazníkov e-shopu (CSV alebo XML); zákazník nie je odberateľ, nevzniká kontakt ani súhlas | 100 MB, 500 000 záznamov |
shop_orders | export objednávok e-shopu (CSV), jeden na e-shop; sťahuje sa každú hodinu, posledné 3 dni každých 10 minút | 200 MB |
articles | článkový feed (RSS 2.0 alebo Atom), napríklad blog e-shopu, pre data.articles |
Produktový feed má format google, heureka alebo zbozi (zvolí sa pri založení).
POST /feedss{kind, name, shopId, url, autoRefresh},POST /feeds/{id}/refreshstiahne hneď,GET /feeds/{id}/itemspoložky,GET /feeds/{id}/previewnáhľad.- Tajná časť adresy (
hash,token,key) sa v odpovediach maskuje. - Feedy patria do modulu
settings(kľúč s rolou správcu účtu).
Zľavové kupóny
Zásobník (coupon stack) je sada jednorazových kódov jedného e-shopu:
curl -sS -X POST "https://www.postarna.cz/api/v1/tenants/$TENANT/coupon-stacks" \
-H "Authorization: Bearer $POSTARNA_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"name": "Svátek",
"shopId": "11",
"mergeKey": "svatek",
"note": "Sleva 15 % k svátku"
}
JSON{
"id": "11",
"name": "Svátek",
"shopId": "11",
"mergeKey": "svatek",
"tag": "{{coupon_svatek}}",
"note": "Sleva 15 % k svátku",
"counts": {
"total": 0,
"free": 0,
"assigned": 0,
"used": 0
},
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z"
}curl -sS -X POST "https://www.postarna.cz/api/v1/tenants/$TENANT/coupon-stacks/11/codes" \
-H "Authorization: Bearer $POSTARNA_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"text": "SVATEK-7Q2K\nSVATEK-9P4M\nSVATEK-3X8D\n"
}
JSON{
"counts": {
"added": 3,
"duplicate": 0,
"invalid": 0,
"total": 3
},
"stack": {
"id": "11",
"name": "Svátek",
"shopId": "11",
"mergeKey": "svatek",
"tag": "{{coupon_svatek}}",
"note": "Sleva 15 % k svátku",
"counts": {
"total": 3,
"free": 3,
"assigned": 0,
"used": 0
},
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z"
}
}- V šablóne:
{{coupon_<mergeKey>}}alebo{{ data.promoCode('<názov zásobníka>') }}. Každý e-mail dostane nový voľný kód a kód sa kontaktu priradí. POST /coupon-stacks/{id}/assignpriradí kód kontaktu ručne,POST /coupon-stacks/{id}/usedoznačí kódy ako použité,GET /contacts/{id}/couponskódy kontaktu.- Podmienka
promo_code(dostal alebo použil kód zásobníka). - Dochádzajúce kódy zastavia e-mail (
customizationDataboxOutOfPromocodes); sledujtecounts.free.
Konverzie
Objednávka po prekliku z e-mailu sa pripočíta kampani alebo automatizácii ako konverzia: GET /conversions (súhrn po druhoch a menách), GET /stats/campaigns/{id}/conversions, GET /stats/automations/{id}/conversions. Tržby sú vždy po menách.