Basit bir olay modeliyle güncellemeleri tutarlı kılan, ne olduğunu, sırada ne olduğunu ve ne zaman endişelenileceğini açıklayan bir sipariş durumu zaman çizelgesi.

Çoğu “Siparişim nerede?” bileti aslında kargoyla ilgili değildir. Sorun belirsizliktir. Müşteri ne olduğunu anlayamazsa, her şey yolundayken bile insan müdahalesi ister.
Aynı sorular tekrar tekrar gelir: sipariş şu an nerede, gönderildi mi yoksa hâlâ hazırlanıyor mu, ne zaman ulaşacak (ve bu tarih değişti mi), iptal veya adres değişikliği yapabilir miyim, ve takip hareket göstermediğinde ne yapmalıyım.
Ekibiniz bunları elle yanıtladığında iki sorun hızla ortaya çıkar. Birincisi, ölçeklenmez. Siparişteki küçük bir artış bilet seline dönüşebilir ve cevap süreleri kötüleşir. İkincisi, cevaplar tutarsızlaşır. Bir müşteri “işleniyor” diyen bir temsilci, başka biri “paketleniyor” derse müşteri netlik yerine çelişki duyar. Bu da takip sorularına, dolayısıyla daha fazla işe yol açar.
Amaç basit: müşteriler tahmin yürütmeden veya özel cevaplara ihtiyaç duymadan sipariş durumunu kendi başlarına öğrenebilmeli. İyi bir sipariş durum zaman çizelgesi bunu sağlar; içsel aktiviteleri müşterinin takip edebileceği açık bir hikâyeye dönüştürür.
Şeffaflık tüm iç ayrıntıları açmak demek değildir. Anlamı, müşterinin mevcut durumu sade dilde açıkça görebilmesi, ne zaman değiştiğinin makul bir zaman damgasıyla birlikte gösterilmesi, sırada ne olduğu (ve geciktirebilecek şeylerin) ve ne zaman sizi aramaya değer olduğunun belirtilmesidir.
Müşteriler “ne oluyor ve ne yapmalıyım?” sorusunu kendi başlarına yanıtlayabildiğinde birçok bilet hiç açılmaz.
Müşteriler merak ettikleri için takip etmez; hızlıca cevap almak isterler: siparişim şimdi nerede, en son ne zaman bir olay oldu ve sırada ne var.
İyi bir takip UI sadece bir etiket göstermez, bir hikâye anlatır. “Shipped” bir etikettir. Hikâye şöyle olur: “Dün saat 15:12'de depomuzda paketlendi, taşıyıcı tarafından alındı, bir sonraki güncelleme muhtemelen transit taraması olacak.” Hikâye tahmin yürütmeyi azaltır ve insanların desteğe başvurmasını engeller.
Bir sipariş durumu zaman çizelgesinde en çok önem taşıyan üç şey:
Takip sessiz veya belirsiz hissettirdiğinde kaygı yükselir. En büyük tetikleyiciler açıklama olmadan uzun boşluklar, her şey anlamına gelebilecek durum metinleri (“Processing”) ve eksik teslimat pencereleridir. Henüz teslimat tahmini veremiyorsanız, bunu açıkça söyleyin ve neyi beklediğinizi açıklayın, örneğin: “Taşıyıcı paketi taradıktan sonra bir ETA göstereceğiz.”
Doğruluk iyimserlikten daha önemlidir. İnsanlar gecikmeleri iyimser vaatleri tutturamamaktan daha kolay affeder. Verileriniz eksikse bildiğiniz kadarını gösterin ve geri kalanını bildiğinizi zannetmeyin.
Basit bir örnek: bir paket “Label created” durumunda 36 saat kalırsa müşteriler bunun takıldığını varsayar. Yardımcı bir zaman çizelgesi şu bağlamı ekler: “Taşıyıcı paketi henüz taramadı. Bir sonraki güncelleme alımdan sonra beklenir. Yarın saat 17:00'ye kadar tarama olmazsa inceleme başlatacağız.” Bu tek cümle bir dalga “Siparişim nerede?” biletini önleyebilir.
İyi bir sipariş durum zaman çizelgesi üç şeyi bir bakışta yanıtlamalı: sipariş şu an nerede, önce ne oldu ve müşteri sırada ne beklemeli. Basit tutun. İnsanların zaman çizelgesini anlamak için yardım makalesi okumaları gerekiyorsa, destek biletlerini azaltmaz.
Müşteri dostu küçük bir kilometre taşı setiyle başlayın. Çoğu mağaza şu sabit setle büyük çoğunluğu karşılayabilir: Placed, Paid, Packed, Shipped, Delivered ve Canceled ile Returned gibi net kapanışlar.
Her adım için ne anlama geldiğini ve sırada ne olduğunu açıklayan kısa bir mikro metin ekleyin. Örneğin: “Packed: Ürünleriniz depomuzda hazırlandı. Sonraki: taşıyıcıya teslim.” Bu, klasik “Gerçekten gönderildi mi?” mesajını engeller.
Her zaman zaman damgalarını gösterin ve güncellemenin kaynağını etiketleyin ki müşteriler güven duysun. “14:32’de Depo tarafından güncellendi” ifadesi “Bugün güncellendi”den farklı hissettirir. Kaynak dışsa belirtin: “Taşıyıcı tarafından güncellendi.” Kaynağı bilmiyorsanız tahmin etmeyin.
İstisnalar normal ilerlemeden daha yüksek sesle olmalı. Onları kendi görünür adımı olarak veya ilgili adımda net bir rozet olarak gösterin; sade dil ve sonraki eylemle birlikte. Yaygın istisnalar: Delay, Address issue, Delivery attempt failed.
Basit, güvenilir bir desen:
Örnek: müşteri “Shipped (Carrier) 09:10” ve sonra “Delivery attempt failed 18:40” görür. UI ayrıca “Taşıyıcı binaya erişemedi. Sonraki deneme: yarın” gösteriyorsa, karşılıklı mesajlaşmayı engellersiniz.
İç iş akışınız onlarca adım içerebilir: picking, packing, label basma, taşıyıcıya teslim, yeniden denemeler, istisnalar ve daha fazlası. Müşteriler bu ayrıntıya ihtiyaç duymaz. Basit sorulara net cevaplar isterler: “Siparişimi aldınız mı?”, “Gönderildi mi?”, “Ne zaman varacak?” ve “Bir sorun mu var?”
Bu yüzden iç operasyonları müşteri görünümleriyle ayırmak faydalıdır. İç iş akışınızı gerektiği kadar karmaşık tutun, ancak dışarıya küçük, sabit bir zaman çizelgesi seti sunun.
Pratik bir yaklaşım eşleme katmanı eklemektir: birçok iç olay birkaç zaman çizelgesi durumuna toplanır. Örneğin ödeme yetkilendirildi, dolandırıcılık kontrolü geçti ve stok ayrıldı “Order confirmed” olarak gruplanabilir. Pick started, packed ve label created “Preparing” olarak görünebilir. Taşıyıcı teslimi ve transit taramaları “Shipped” olur. Out-for-delivery taraması “Out for delivery” olur ve teslim taraması + foto onayı “Delivered” olur.
Bu eşleme katmanı aynı zamanda güvenlik ağınızdır. Daha sonra arka ucu değiştirirseniz (yeni taşıyıcı, yeni dağıtım merkezi, yeni yeniden deneme mantığı), sipariş durum zaman çizelgeniz etrafta zıplamaz veya yeni adımlar eklenmez. Müşteriler bir siparişten diğerine zaman çizelgesinin tutarlı kalmasına güvenir.
Her müşteri tarafı durumu okunabilir ve erişilebilir yapın. Önce sade metin etiketleri kullanın, ardından ikon ve renkle destekleyin. Renk asla tek sinyal olmamalı. Gecikmiş bir durum kelimelerle “Delayed” demeli. Kontrastı yüksek tutun, net bir “mevcut adım” işaretçisi kullanın ve kısa yardımcı metin yazın: “Siparişinizi hazırlıyoruz (genellikle 1-2 gün).” Bu, “bu ne demek?” tarzı biletleri başlamadan azaltır.
İyi bir zaman çizelgesi tek bir basit fikirle başlar: son durumu değil, olayları saklayın. Bir olay, belirli bir zamanda olmuş bir gerçektir, örneğin “label created” veya “package delivered.” Gerçekler sonradan değişmez, bu yüzden zaman çizelgeniz tutarlı kalır.
Sadece tek bir durum alanını (status = shipped gibi) üzerine yazarsanız hikâyeyi kaybedersiniz. Müşteri “Ne zaman gönderildi?” veya “Neden geri döndü?” diye sorduğunda temiz bir cevabınız olmaz. Olaylarla net bir geçmiş ve denetim izi elde edersiniz.
Kaydı küçük ve sıkıcı tutun. Daha sonra her zaman ekleyebilirsiniz.
order_id: bu olayın hangi siparişe ait olduğuevent_type: ne oldu (picked_up, out_for_delivery, delivered)happened_at: ne zaman oldu (gerçek dünya işleminin zamanı)actor: bunu kim tetikledi (system, warehouse, carrier, support)details: küçük ek veri (takip numarası, konum, not)UI zaman çizelgesini render ettiğinde, olayları happened_at ile sıralar ve gösterir. Daha sonra müşteri tarafı adımların nasıl etiketlendiğini değiştirirseniz olay türlerini yeniden eşleyebilirsiniz, geçmişi yeniden yazmanıza gerek kalmaz.
Teslimat sistemleri genellikle aynı güncellemeyi tekrar gönderir. İdempotans demek: aynı olay iki kez gelirse iki zaman çizelgesi girişi oluşturulmamalı.
En basit yaklaşım, gelen her olaya sabit bir benzersiz anahtar vermektir (örneğin taşıyıcı olay ID’si veya order_id + event_type + happened_at + tracking_number hash’i) ve bunu saklamaktır. Tekrar gelirse görmezden gelirsiniz.
Bir sipariş durum zaman çizelgesi, müşterilerin tanıdığı gerçek anları yansıtınca en iyi çalışır; iç görevlerinizi değil. Alıcı için gerçekten bir şeyin değiştiği noktaları listeleyerek başlayın: para çekildi, kutu oluştu, taşıyıcıda, ulaştı.
Küçük bir set genellikle “Siparişim nerede?” sorularının çoğunu yanıtlamak için yeterlidir:
İsimleri tutarlı ve belirli tutun. “Packed” ve “Ready” benzer duyulsa da müşteriler için farklı anlamlara gelir. Her olay için tek bir anlam seçin ve bir etiketi farklı bir an için yeniden kullanmayın.
Her arka uç olayı UI’da yer almamalıdır. Bazıları sadece ekibiniz içindir (fraud review, warehouse pick started, address validation). Genel bir kural: gösterirseniz daha fazla soru yaratacaksa, içte tutun.
İç adımları daha az sayıda müşteri durumuna eşleyin. Depoda beş adımınız olabilir ama zaman çizelgesi “Taşıyıcıya teslim” olana kadar sadece “Siparişinizi hazırlıyoruz” gösterebilir. Bu UI’yi sakin ve öngörülebilir tutar.
Zaman, etiket kadar önemlidir. Mümkünse iki zaman damgası saklayın: olayın gerçekleştiği zaman ve kaydedildiği zaman. UI’da meydana gelme zamanını gösterin (taşıyıcı tarama zamanı, teslim onay zamanı). Sadece işleme zamanını gösterirseniz, geç bir import paketinin geri gidiyormuş gibi görünmesine neden olabilir.
Taşıyıcı verileri bazen eksik olur. Buna hazırlan. Hiçbir zaman “Taşıyıcıya teslim” taraması almazsanız, “Label created”a geri dönün ve net bir mesaj gösterin: “Taşıyıcının paketi taraması bekleniyor.” İlerleme uydurmayın.
Somut bir örnek: depo 10:05’te etiketi basar, ancak taşıyıcı 18:40’ta tarar. Arka uç olay modeliniz her iki olayı da saklamalı, ama zaman çizelgeniz aradaki boşlukta hareket olduğunu ima etmemeli. Bu tercih bile “Gönderildi diyor ama hareket etmedi” biletlerinin çoğunu engeller.
Adım 1: önce müşteri zaman çizelgesini yazın. Alışveriş yapanın anlayacağı 5–8 adımı listeleyin (örneğin: Order placed, Paid, Packed, Shipped, Out for delivery, Delivered). Her adım için göstereceğiniz tam cümleyi yazın. Sakin ve spesifik tutun.
Adım 2: olay türlerini ve bir eşlemeyi tanımlayın. Sistemleriniz onlarca iç duruma sahip olabilir, ama müşteriler daha küçük bir set görmeli. Basit bir eşleme tablosu oluşturun: warehouse.picked -> Packed ve carrier.in_transit -> Shipped gibi.
Adım 3: olayları saklayın, sonra görünümü hesaplayın. Her olayı append-only kaydı olarak order_id, type, occurred_at ve isteğe bağlı data (taşıyıcı kodu veya sebep gibi) ile saklayın. UI, olaylardan oluşturulmalı, tek bir değiştirilebilir durum alanından değil.
Adım 4: zaman çizelgesine hazır bir API döndürün. Yanıt frontend için basit olmalı: adımlar (etiketlerle), mevcut adım indeksi, bildiğiniz zaman damgaları ve kısa bir mesaj.
{
"order_id": "123",
"current_step": 3,
"steps": [
{"key":"placed","label":"Order placed","at":"2026-01-09T10:11:00Z"},
{"key":"paid","label":"Payment confirmed","at":"2026-01-09T10:12:00Z"},
{"key":"packed","label":"Packed","at":"2026-01-09T14:40:00Z"},
{"key":"shipped","label":"Shipped","at":null,"message":"Waiting for carrier scan"}
],
"last_update_at": "2026-01-09T14:40:00Z"
}
Adım 5: UI'yi gürültülü olmadan güncel tutun. Aktif gönderim sırasında her 30–120 saniyede bir sorgulamak genellikle yeterlidir; hiçbir şey değişmediğinde çok daha az sıklık yeterli olur.
Adım 6: gecikmiş veriler için yedekler ekleyin. Taşıyıcı taraması gecikirse son bilinen güncellemeyi ve net bir sonraki eylemi gösterin: “Eğer yarına kadar güncelleme olmazsa sipariş 123 ile destekle iletişime geçin.”
Pratik bir örnek: müşteri “Packed” zaman damgası görür, sonra carrier.accepted gelene kadar “Shipped: Waiting for carrier scan” görünür. Özel cevaplara gerek yok, sadece dürüst bir durum.
Müşteri bir hoodie sipariş eder. Ödeme anında olur, ancak paketleme iki iş günü sürer. Ardından taşıyıcıda bir gecikme olur. Müşteri yine de destek istemeden bilgilendirilmiş hissetmelidir.
Müşterinin her gün gördüğü zaman çizelgesi şöyle olabilir (aynı UI, sadece yeni girdiler ekleniyor):
| Gün ve saat | Gösterilen durum | Düz sade dilde mesaj |
|---|---|---|
| Pzt 09:12 | Order placed | “Siparişinizi aldık. Hareket ettikçe güncelleme alacaksınız.” |
| Pzt 09:13 | Payment confirmed | “Ödeme onaylandı. Sonraki: paketinizi hazırlayacağız.” |
| Sal 16:40 | Preparing your order | “Ürünlerinizi paketliyoruz. Tahmini gönderim: Çarş.” |
| Çar 14:05 | Shipped | “Taşıyıcıya teslim edildi. Takip, taşıyıcı taradıkça güncellenecektir.” |
| Per 08:30 | In transit | “Yolda. Güncel tahmin: Cuma.” |
| Cum 10:10 | Delivery delayed | “Taşıyıcı yoğunluk nedeniyle gecikme bildirdi. Yeni tahmin: Cmt. Şu an için herhangi bir işlem gerekmez.” |
| Cmt 12:22 | Out for delivery | “Bölgenizdeki sürücüde. Genellikle bugün teslim edilir.” |
| Cmt 18:05 | Delivered | “Teslim edildi. Bulamazsanız giriş etrafını ve komşularınızı kontrol edin.” |
Cuma günü ne değiştiğine dikkat edin: yeni bir akış yaratmadınız. Bir olay (örneğin shipment_delayed) eklediniz ve bunu net bir müşteri mesajına eşlediniz. Önceki adımlar aynı kaldı ve UI sabit kaldı.
İletişim seçeneği yalnızca net bir eşiğin ardından görünmeli, böylece insanlar sadece endişe yüzünden tıklamazlar. Basit bir kural işe yarar: sipariş son vaat edilen teslim tarihinden 24 saat geçmişse veya “In transit” durumunda 72 saattir değişiklik yoksa “Contact us” gösterin. Öncesinde güvence ve mevcut tahmini gösterin.
İyi bir zaman çizelgesi “Siparişim nerede?” mesajlarını azaltır. Kötü bir zaman çizelgesi ise UI ve arkasındaki veriler insanların deneyimleriyle uyuşmadığında yeni sorular üretir.
Her iç adımı ortaya çıkarırsanız müşteriler kaybolur. “picked”, “sorted”, “labeled”, “staged”, “queued” gibi on beş mikro-durum meşgul gösterir ama iki gerçek soruyu yanıtlamaz: “Ne zaman gelecek?” ve “Bir sorun mu var?” Genel zaman çizelgesini küçük tutun, geri kalanını içte bırakın.
Tek bir durumu üzerine yazmak olay geçmişini kaybetmenin hızlı yoludur. Müşteri “Shipped” gördü, sonra yenilediğinde aniden “Preparing” görürse, bu bir yeniden deneme veya manuel düzenleme yüzünden olabilir. Zaman damgalı olay geçmişi saklayın ve mevcut durumu o geçmişten oluşturun.
En yaygın tuzaklar kolayca görülebilir:
Neden önemli: Bir ürün bugün gönderilir, diğeri beklemede kalır. Sadece “Shipped” gösterirseniz müşteri her şeyin gönderildiğini bekler. Eğer “Kısmi olarak gönderildi (1/2)” gösterir ve “Delivered”i her paketle ilişkilendirirseniz zaman çizelgesi inandırıcılığını korur.
Zaman çizelgesi etiketlerini veritabanı alanı gibi değil ürün metni gibi ele alın. İnsanlar için yazın, sonra iç olayları o birkaç müşteri-dostu adıma eşleyin.
Zaman çizelgesini tüm müşterilere sunmadan önce müşteri bakış açısından hızlı bir kontrol yapın: “Bunu gece 23:00'de görseydim hâlâ destek bileti açar mıydım?” Hedef netlik, garip bir şey varmış gibi göstermeden.
Zaman ve beklentiyle başlayın. Her sipariş son güncelleme zamanını ve tipik olarak sırada ne olduğunu göstermeli. “2 saat önce güncellendi” ve “Sonraki: taşıyıcı alımı” sıkışmış hissetmeyi azaltır.
Ön lansman kontrol listesi kısa olsun:
Bundan sonra kasıtlı olarak birkaç karışık siparişi test edin. Birini kısmi gönderim, birini geç tarama yapan taşıyıcı, birini başarısız teslimat denemesiyle seçin. Zaman çizelgesi bir gizem gibi okunuyorsa müşteriler bunu insanlara yorumlatmak için size yazar.
Son olarak, destek ekibinizin müşterinin gördüğü aynı görünümü, zaman damgaları ve istisna mesajlarıyla görebildiğini doğrulayın. İki taraf aynı hikâyeyi okuduğunda yanıtlar kısalır ve birçok bilet hiç yazılmaz.
Küçük başlayın. Alıcının en çok merak ettiği soruları yanıtlayan minimal bir zaman çizelgesi (Sipariş alındı mı? Ne zaman gönderilir? Şu an nerede?) kenarlı, karmaşık bir takipçiden daha iyidir. Önce temel durumları gönderin, sonra gerçek müşteri geri bildirimleri fayda sağladıkça detay ekleyin.
Güveni zedelemeden öğrenmek için dikkatli bir yayına alma planlayın. Siparişlerin küçük bir dilimini seçin (örneğin bir depo, bir gönderim yöntemi veya bir ülke) ve destek hacmi ve müşteri davranışında ne değiştiğini gözlemleyin.
Tahmin etmeyin. Zaman çizelgesini, işini yapıp yapmadığını görebileceğiniz şekilde ölçümlendirin. Yayından önce ve sonra en çok sorulan “Siparişim nerede?” sorularını karşılaştırın ve hangi durum ekranlarının müşterilerin desteğe başvurmadan hemen önce görüntülendiğini izleyin.
Basit bir başlangıç metrik seti:
Çoğu destek yükü istisnalardan gelir: label created ama tarama yok, hava durumu gecikmesi, adres sorunu, kısmi gönderim. Bu durumlar için mesaj şablonları hazırlayın ki ekibiniz her seferinde aynı cevabı versin. Kısa, net ve eylem odaklı olsun: ne oldu, ne yapıyorsunuz, müşteri bundan sonra ne beklemeli.
UI ve olay destekli API’yi prototiplerseniz, Koder.ai (koder.ai) gibi bir vibe-coding platformu kısa bir sohbetten ilk taslağı üretmek için pratik olabilir; sonra gerçek biletlerden öğrendikçe kopyayı ve eşlemeleri rafine edin.
Kapsamı aşamalı genişletin. Alt küme yayını biletleri azalttığını (ve yeni kafa karışıklığı yaratmadığını) gösterdikten sonra daha fazla sipariş türüne ve taşıyıcıya genişletin. Düzenli bir inceleme takvimi tutun: her birkaç haftada yeni bilet temalarını tarayın ve düzeltmenin daha iyi bir metin, yeni bir istisna şablonu veya zaman çizelgesine yeni bir olay olup olmadığına karar verin.
Varsayılan olarak küçük, okunabilir bir zaman çizelgesine öncelik verin; üç soruyu yanıtlamalı: şu anda ne oluyor, ne zaman değişti, ve sırada ne var. Çoğu destek talebi belirsizlikten gelir; zaman çizelgesi tahminleri azaltmalı (örneğin, belirsiz "Processing" yerine “Waiting for carrier scan” gibi).
Çoğu alışveriş yapanın anlayacağı sabit bir set kullanın:
Ayrıca Canceled ve Returned gibi net kapanışları ekleyin. İç adımları (pick/pack/batch/retry) müşteri görünümünden uzak tutun.
Her adım için zaman damgasını ve net bir “Son güncelleme” zamanını gösterin. Uluslararası satıyorsanız zaman dilimini dahil edin (veya belirsiz olmasını engelleyin). Zaman damgası “hiçbir şey olmuyor” hissini “bu yakın zamanda oldu”ya çevirir ve takip sorularını önler.
Bunu normal ilerleme yerine ayrı bir görünür istisna olarak ele alın. İyi bir varsayılan mesaj:
İspatlanamayan ilerleme izlenimi vermeyin.
“Olaylar” (facts) ile müşteri zaman çizelgesi (states) arasında ayrım yapın. Ayrıntılı iç olayları kaydedin, sonra bunları birkaç müşteri-dostu adıma eşleyin. Bu, depoda iş akışı değişse bile UI’nin tutarlı kalmasını sağlar.
Olayları eklenebilir, değiştirilemez maddeler olarak saklayın (örneğin: label_created, picked_up, out_for_delivery, delivered) ve her olayda şunları tutun:
order_idevent_typehappened_atactor (system/warehouse/carrier/support)detailsArdından zaman çizelgesini tek bir değiştirilebilir durum alanı yerine olay geçmişinden oluşturun.
İdempotans kullanın. Her gelen güncellemeye sabit bir benzersiz anahtar verin (taşıyıcı olay ID’si veya ana alanların hash’i) ve çoğaltmaları yoksayın. Bu, taşıyıcının güncellemeyi yeniden göndermesiyle aynı etkinin iki kez görünmesini engeller.
En iyi bilinen tahmini gösterin ve ne beklediğinizi dürüstçe söyleyin. Eğer bir ETA’nız yoksa açıkça belirtin (örneğin, “İlk taşıyıcı taramasından sonra ETA gösterilecektir”). Doğruluk, ileride güveni zedeleyecek iyimser sözlerden daha değerlidir.
İstisnaları belirgin ve eylem odaklı yapın. Yaygın olanlar:
İstisnalar normal ilerlemeden daha dikkat çekici olmalı ve müşteriye ne yapması gerektiğini söylemelidir.
Pratik bir kural: iletişim seçeneklerini yalnızca açık bir eşik sonrası gösterin, örneğin:
Bundan önce güvence, son güncelleme ve beklenen sonraki adımı göstererek endişeli tıklamaları önleyin.