7 menit

Timeline status pesanan: UI dan peristiwa yang mengurangi beban dukungan

Timeline status pesanan yang menjelaskan apa yang sedang terjadi, apa yang berikutnya, dan kapan perlu khawatir, menggunakan model event sederhana yang menjaga pembaruan konsisten.

Timeline status pesanan: UI dan peristiwa yang mengurangi beban dukungan

Mengapa status pesanan yang tidak jelas menimbulkan tiket dukungan

Sebagian besar tiket “Di mana pesanan saya?” sebenarnya bukan soal pengiriman. Mereka soal ketidakpastian. Jika pelanggan tidak bisa mengetahui apa yang terjadi, mereka akan menghubungi manusia bahkan ketika tidak ada yang salah.

Pertanyaan yang sama muncul berulang: di mana pesanan sekarang, apakah sudah dikirim atau masih dipersiapkan, kapan tiba (dan apakah tanggal itu berubah), apakah mereka bisa membatalkan atau mengubah alamat, dan apa yang harus dilakukan ketika tracking tidak bergerak.

Ketika tim Anda menjawab ini secara manual, dua masalah muncul cepat. Pertama, itu tidak skala. Lonjakan kecil dalam pesanan bisa berubah menjadi banjir tiket, dan waktu respons memburuk. Kedua, jawaban menjadi tidak konsisten. Satu agen berkata “sedang diproses,” agen lain berkata “sedang dikemas,” dan pelanggan mendengar konflik alih-alih kejelasan. Itu memicu tindak lanjut, yang membuat pekerjaan semakin banyak.

Tujuannya sederhana: pelanggan harus bisa melayani diri sendiri untuk status pesanan tanpa menebak atau memerlukan balasan khusus. Timeline status pesanan yang baik melakukan itu dengan mengubah aktivitas internal menjadi cerita yang jelas untuk diikuti pelanggan.

Transparansi bukan berarti membeberkan setiap detail internal. Itu berarti pelanggan bisa melihat status saat ini dengan bahasa sederhana, kapan itu berubah (dengan cap waktu yang masuk akal), apa yang terjadi selanjutnya (dan apa yang bisa menundanya), dan kapan layak menghubungi Anda.

Ketika pelanggan bisa menjawab “apa yang terjadi dan apa yang harus saya lakukan?” sendiri, banyak tiket tidak pernah dibuat.

Apa yang diharapkan pelanggan dari pelacakan pesanan

Pelanggan tidak memeriksa tracking karena ingin tahu, mereka memeriksa karena ingin jawaban cepat: di mana pesanan saya sekarang, kapan terakhir terjadi sesuatu, dan apa yang seharusnya terjadi berikutnya.

UI pelacakan yang baik menceritakan sebuah cerita, bukan hanya label. “Shipped” hanyalah label. Sebuah cerita adalah: “Dikemas di gudang kami kemarin jam 15:12, diambil oleh carrier, pembaruan berikutnya seharusnya scan dalam perjalanan.” Cerita mengurangi tebakan, sehingga orang tidak langsung menghubungi dukungan.

Tiga hal yang paling penting pada timeline status pesanan:

  • Langkah saat ini, disorot jelas sebagai sumber kebenaran tunggal
  • Waktu pembaruan terakhir (dengan zona waktu jika Anda punya audiens global)
  • Langkah yang diharapkan berikutnya, plus perkiraan rentang waktu (bahkan jika lebar)

Kecemasan meningkat ketika tracking terasa diam atau samar. Pemicu terbesar adalah jeda panjang tanpa penjelasan, teks status yang bisa berarti apa saja (“Processing”), dan jendela pengiriman yang hilang. Jika Anda belum bisa memperkirakan pengiriman, katakan dengan jelas dan jelaskan apa yang Anda tunggu, misalnya: “Kami akan menampilkan ETA setelah carrier menscan paket.”

Ketepatan lebih penting daripada optimisme. Orang lebih memaafkan keterlambatan daripada janji palsu. Jika data Anda parsial, tunjukkan apa yang Anda tahu dan hindari berpura-pura tahu sisanya.

Contoh sederhana: jika paket terhenti di “Label created” selama 36 jam, pelanggan mengira itu macet. Timeline yang membantu menambahkan konteks: “Carrier belum menscan parcel. Pembaruan berikutnya diharapkan setelah pickup. Jika tidak ada scan sampai besok jam 17:00, kami akan menyelidiki.” Satu kalimat itu bisa mencegah gelombang tiket “Di mana pesanan saya?”.

Merancang UI timeline status yang menjawab pertanyaan

Timeline status pesanan yang baik harus menjawab tiga hal sekilas: di mana pesanan sekarang, apa yang terjadi sebelumya, dan apa yang harus diharapkan pelanggan selanjutnya. Jaga sederhana. Jika orang perlu membaca artikel bantuan untuk memahami timeline, itu tidak akan mengurangi tiket dukungan.

Mulailah dengan sejumlah kecil tonggak yang ramah pelanggan. Kebanyakan toko bisa menjawab mayoritas pertanyaan dengan set stabil seperti: Placed, Paid, Packed, Shipped, Delivered, plus akhir yang jelas seperti Canceled dan Returned.

Untuk setiap langkah, tambahkan satu baris microcopy pendek yang menjelaskan apa artinya dan apa yang terjadi selanjutnya. Misalnya: “Packed: Item Anda disiapkan di gudang kami. Berikutnya: diserahkan ke carrier.” Ini mencegah pertanyaan klasik “Apakah benar-benar sudah dikirim?”

Selalu tampilkan cap waktu, dan beri label sumber pembaruan agar pelanggan percaya. “Diperbarui 14:32 oleh Warehouse” terasa berbeda daripada “Diperbarui hari ini.” Ketika sumber berasal dari eksternal, katakan: “Diperbarui oleh Carrier.” Jika Anda tidak tahu sumbernya, jangan menebak.

Pengecualian harus lebih terdengar daripada kemajuan normal. Perlakukan mereka sebagai langkah terlihat sendiri, atau lencana jelas pada langkah terkait, dengan bahasa sederhana dan tindakan selanjutnya. Yang umum termasuk Delay, Address issue, dan Delivery attempt failed.

Pola sederhana dan dapat diandalkan adalah:

  • Langkah normal terlihat netral dan menjadi centang saat selesai
  • Langkah saat ini disorot jelas dan menyertakan teks “apa yang terjadi selanjutnya”
  • Pengecualian menggunakan gaya berbeda dan menyertakan tindakan eksplisit (misalnya, “Konfirmasi alamat”)

Contoh: pelanggan melihat “Shipped (Carrier) 09:10” lalu “Delivery attempt failed 18:40.” Jika UI juga menunjukkan “Carrier tidak dapat mengakses gedung. Percobaan berikutnya: besok,” Anda menghindari thread bolak-balik.

Status yang ramah pelanggan vs langkah alur kerja internal

Alur kerja internal Anda mungkin memuat puluhan langkah: picking, packing, batching label, menyerahkan ke carrier, retry, pengecualian, dan lain-lain. Pelanggan tidak butuh tingkat detail itu. Mereka ingin jawaban jelas untuk pertanyaan sederhana: “Apakah pesanan Anda kami terima?”, “Apakah sudah dikirim?”, “Kapan tiba?”, dan “Apakah ada masalah?”

Itulah mengapa memisahkan operasi internal dari status yang terlihat pelanggan membantu. Biarkan alur internal sekompleks yang diperlukan, tetapi tampilkan sejumlah kecil langkah timeline yang stabil dan masuk akal di luar gudang.

Pendekatan praktis adalah menambahkan lapisan pemetaan: banyak event internal digabungkan menjadi beberapa status timeline. Misalnya, payment authorized, fraud check passed, dan inventory reserved dapat digabung menjadi “Order confirmed.” Pick started, packed, dan label created bisa muncul sebagai “Preparing.” Serah terima ke carrier dan scan in-transit menjadi “Shipped.” Scan out-for-delivery menjadi “Out for delivery,” dan scan delivered plus konfirmasi foto menjadi “Delivered.”

Lapisan pemetaan ini juga menjadi jaring pengaman Anda. Jika nanti Anda mengubah backend (carrier baru, pusat pemenuhan baru, logika retry baru), timeline status pesanan Anda tidak harus lompat-lompat atau tiba-tiba menampilkan langkah baru. Pelanggan membangun kepercayaan ketika timeline konsisten dari pesanan ke pesanan.

Buat setiap status yang dilihat pelanggan dapat dibaca dan dapat diakses. Gunakan label teks sederhana dulu, lalu dukung dengan ikon dan warna. Warna tidak boleh menjadi sinyal satu-satunya. Status tertunda harus menulis “Delayed” dengan kata-kata. Jaga kontras tinggi, gunakan penanda “langkah saat ini” yang jelas, dan tulis teks pembantu singkat seperti “Kami sedang menyiapkan pesanan Anda (biasanya 1-2 hari).” Ini mengurangi tiket “apa arti ini?” sebelum mereka dimulai.

Model event backend sederhana untuk pembaruan pesanan

Prototipe timeline pelacakan cepat
Jelaskan status pesanan Anda dan dapatkan UI timeline dan API yang berfungsi dengan cepat.

Timeline status pesanan yang baik dimulai dari satu ide sederhana: simpan event, bukan hanya status terakhir. Event adalah fakta yang terjadi pada waktu tertentu, seperti “label created” atau “package delivered.” Fakta tidak berubah kemudian, sehingga timeline Anda tetap konsisten.

Jika Anda hanya menimpa satu field status (misalnya, status = shipped), Anda kehilangan ceritanya. Ketika pelanggan bertanya, “Kapan dikirim?” atau “Kenapa status mundur?”, Anda tidak punya jawaban yang bersih. Dengan event, Anda mendapatkan riwayat yang jelas dan jejak audit yang dapat dipercaya.

Rekaman event paling kecil yang berguna

Buat rekaman kecil dan membosankan. Anda selalu bisa menambahkan lebih nanti.

  • order_id: pesanan mana event ini milik
  • event_type: apa yang terjadi (picked_up, out_for_delivery, delivered)
  • happened_at: kapan terjadi (waktu aksi dunia nyata)
  • actor: siapa yang menyebabkannya (system, warehouse, carrier, support)
  • details: data kecil tambahan (nomor tracking, lokasi, catatan)

Saat UI merender timeline, ia mengurutkan event berdasarkan happened_at dan menampilkannya. Jika nanti Anda mengubah cara melabeli langkah yang dilihat pelanggan, Anda bisa memetakan ulang tipe event tanpa menulis ulang sejarah.

Idempotensi (tanpa fakta duplikat)

Sistem pengiriman sering mengirim ulang pembaruan yang sama. Idempotensi berarti: jika event yang sama tiba dua kali, itu tidak boleh membuat dua entri timeline.

Pendekatan paling sederhana adalah memberi setiap event masuk kunci unik stabil (misalnya, ID event carrier, atau hash dari order_id + event_type + happened_at + tracking_number) dan menyimpannya. Jika datang lagi, abaikan.

Memilih event yang tepat dan memetakannya ke timeline

Timeline status bekerja terbaik ketika mencerminkan momen nyata yang dikenali pelanggan, bukan tugas internal Anda. Mulailah dengan mencantumkan titik-titik di mana sesuatu benar-benar berubah bagi pembeli: uang ditarik, kotak ada, carrier memilikinya, paket tiba.

Pilih event dari momen dunia nyata

Set kecil biasanya cukup untuk menjawab sebagian besar pesan “Di mana pesanan saya?”:

  • Payment confirmed
  • Label created
  • Handed to carrier (first carrier scan jika bisa)
  • Out for delivery
  • Delivered

Jaga nama konsisten dan spesifik. “Packed” dan “Ready” terdengar mirip, tapi berarti berbeda bagi pelanggan. Pilih satu arti per event, dan jangan gunakan ulang label untuk momen berbeda.

Tentukan apa yang bisa dilihat pelanggan

Tidak setiap event backend pantas muncul di UI. Beberapa hanya untuk tim Anda (fraud review, warehouse pick started, address validation). Aturan yang baik: jika menampilkannya akan menimbulkan lebih banyak pertanyaan daripada jawaban, simpan untuk internal.

Pemetakan internal ke sedikit status pelanggan membuat tampilan tenang dan dapat diprediksi. Anda mungkin punya lima langkah gudang, tetapi timeline hanya menampilkan “Preparing your order” sampai mencapai “Handed to carrier.”

Waktu sama pentingnya dengan label. Simpan dua cap waktu ketika bisa: kapan event terjadi, dan kapan Anda merekamnya. Tampilkan waktu kejadian di UI (waktu scan carrier, waktu konfirmasi pengiriman). Jika Anda hanya menampilkan waktu pemrosesan, impor terlambat bisa membuatnya terlihat mundur.

Data carrier kadang hilang. Siapkan fallback. Jika Anda tidak pernah menerima scan “Handed to carrier”, fallback ke “Label created” dengan pesan jelas seperti “Menunggu carrier untuk menscan paket.” Hindari mengarang kemajuan.

Contoh konkret: gudang mencetak label jam 10:05, tetapi carrier baru menscan jam 18:40. Model event backend Anda harus menyimpan kedua event, tetapi timeline Anda tidak boleh menyiratkan pergerakan selama jeda itu. Pilihan itu saja mencegah banyak tiket “Tertulis dikirim tapi tidak bergerak.”

Langkah demi langkah: bangun UI timeline dan jaga sinkronisasi

Langkah 1: tulis timeline pelanggan dulu. Daftar 5 sampai 8 langkah yang bisa dimengerti pembeli (misalnya: Order placed, Paid, Packed, Shipped, Out for delivery, Delivered). Tulis kalimat tepat yang akan Anda tampilkan untuk setiap langkah. Jaga tenang dan spesifik.

Langkah 2: definisikan tipe event dan pemetaannya. Sistem Anda mungkin punya puluhan status internal, tetapi pelanggan harus melihat set yang lebih kecil. Buat tabel pemetaan sederhana seperti warehouse.picked -> Packed dan carrier.in_transit -> Shipped.

Langkah 3: simpan event, lalu hitung view. Simpan setiap event sebagai rekaman append-only dengan order_id, type, occurred_at, dan data opsional (seperti kode carrier atau alasan). UI harus dibangun dari event, bukan dari satu field status yang bisa diubah.

Langkah 4: kembalikan API siap timeline. Respons harus mudah untuk frontend: langkah (dengan label), indeks langkah saat ini, cap waktu yang Anda tahu, dan pesan singkat.

{
  "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"
}

Langkah 5: jaga UI tetap segar tanpa bising. Untuk timeline status pesanan, polling setiap 30 sampai 120 detik seringkali cukup selama pengiriman aktif, dan jauh lebih jarang ketika tidak ada perubahan.

Langkah 6: tambahkan fallback untuk data terlambat. Jika scan carrier terlambat, tampilkan pembaruan terakhir yang diketahui dan tindakan berikutnya yang jelas: “Jika tidak ada pembaruan sampai besok, hubungi dukungan dengan order 123.”

Contoh praktis: pelanggan melihat “Packed” dengan cap waktu, lalu “Shipped: Waiting for carrier scan” sampai carrier.accepted tiba. Tidak perlu balasan khusus, hanya status jujur.

Contoh skenario: pesanan normal dengan keterlambatan dunia nyata

Kirim halaman status yang mengurangi beban dukungan
Buat halaman status pesanan yang jelas yang bisa tim Anda perbaiki seiring tiket mengungkap celah.

Pelanggan memesan hoodie. Pembayaran instan, tapi pengepakan memakan dua hari kerja. Pengiriman kemudian terkena keterlambatan carrier. Pelanggan tetap harus merasa terinformasi tanpa perlu tanya dukungan.

Berikut timeline yang dilihat pelanggan, hari demi hari (UI sama, hanya entri baru ditambahkan):

Day and timeStatus shownMessage in plain language
Mon 09:12Order placed“Kami menerima pesanan Anda. Anda akan menerima pembaruan saat bergerak.”
Mon 09:13Payment confirmed“Pembayaran disetujui. Berikutnya: kami akan menyiapkan paket Anda.”
Tue 16:40Preparing your order“Kami sedang mengemas item Anda. Perkiraan tanggal kirim: Rabu.”
Wed 14:05Shipped“Diserahkan ke carrier. Tracking akan diperbarui saat carrier menscan.”
Thu 08:30In transit“Dalam perjalanan. Estimasi saat ini: tiba Jumat.”
Fri 10:10Delivery delayed“Carrier melaporkan keterlambatan karena volume tinggi. Estimasi baru: Sabtu. Tidak perlu tindakan saat ini.”
Sat 12:22Out for delivery“Dengan kurir lokal Anda. Biasanya tiba hari ini.”
Sat 18:05Delivered“Terkirim. Jika tidak menemukan, cek sekitar pintu masuk dan tetangga.”

Perhatikan yang berubah pada hari Jumat: Anda tidak membuat alur baru. Anda menambahkan satu event (misalnya, shipment_delayed) dan memetakannya ke pesan pelanggan yang jelas. Langkah sebelumnya tetap sama, dan UI tetap stabil.

Opsi kontak sebaiknya muncul hanya setelah ambang jelas, sehingga orang tidak mengklik karena cemas. Aturan sederhana yang bekerja: tampilkan “Contact us” jika pesanan 24 jam melewati estimasi pengiriman terbaru, atau jika status tidak berubah selama 72 jam saat “In transit.” Sebelum itu, tampilkan penenangan dan estimasi saat ini.

Kesalahan umum yang membuat pelacakan malah lebih buruk

Timeline status yang baik mengurangi pesan “di mana pesanan saya?”. Yang buruk menciptakan pertanyaan baru karena UI dan data di belakangnya tidak cocok dengan pengalaman nyata orang.

Kesalahan 1: Membuat timeline terlalu rinci

Jika Anda menampilkan setiap langkah internal, pelanggan bingung. Lima belas micro-status seperti “picked”, “sorted”, “labeled”, “staged”, dan “queued” terlihat sibuk tapi tidak menjawab dua pertanyaan nyata: “Kapan tiba?” dan “Ada masalah?” Jaga timeline publik pada beberapa tonggak jelas, dan sisanya internal.

Kesalahan 2: Kehilangan riwayat dan mengubah masa lalu

Menimpa status saat ini tanpa menyimpan event adalah cara cepat menciptakan kontradiksi. Pelanggan melihat “Shipped,” refresh, lalu tiba-tiba tertulis “Preparing” lagi karena retry atau edit manual. Simpan riwayat bertimestamp dan bangun status saat ini dari riwayat itu.

Jebakan umum yang mudah terlihat:

  • Label yang terdengar resmi tapi tidak berarti (misalnya, “Processing” tanpa penjelasan)
  • Estimasi pengiriman yang tidak bisa Anda penuhi, diikuti keheningan saat meleset
  • Tidak ada jalur jelas untuk pembatalan, retur, atau refund, sehingga timeline berhenti di tengah cerita
  • Pengiriman parsial ditampilkan sebagai satu pengiriman, yang membuat “Delivered” terasa bohong
  • Pengecualian carrier disembunyikan atau dikecilkan, sehingga pelanggan tahu tentang keterlambatan dari carrier terlebih dahulu

Ini alasannya penting. Satu item dikirim hari ini dan item kedua backorder. Jika Anda hanya menampilkan “Shipped,” pelanggan mengira semuanya. Jika Anda menampilkan “Partially shipped (1 of 2)” dan kaitkan “Delivered” ke setiap paket, timeline tetap dapat dipercaya.

Perlakukan label timeline sebagai copy produk, bukan field database. Tulis untuk manusia, lalu petakan event internal ke beberapa langkah yang ramah pelanggan.

Daftar periksa cepat sebelum dirilis

Iterasi tanpa takut regresi
Uji copy dan logika dengan snapshot dan rollback sehingga aman melakukan iterasi.

Sebelum merilis timeline status pesanan ke semua pelanggan, lakukan satu kali pemeriksaan dari sudut pandang pelanggan: “Jika saya melihat ini jam 11 malam, apakah saya masih membuka tiket dukungan?” Tujuannya adalah kejelasan tanpa membuat orang berpikir ada masalah.

Mulai dengan waktu dan ekspektasi. Setiap pesanan harus menunjukkan waktu pembaruan terakhir dan mengisyaratkan apa yang biasanya terjadi selanjutnya. “Terakhir diperbarui 2 jam lalu” plus “Berikutnya: pickup carrier” mengurangi kesan terjebak.

Jaga daftar periksa pra-rilis singkat:

  • Setiap pesanan menampilkan waktu “Last updated” yang jelas dan langkah berikutnya yang sederhana (bahkan jika “Berikutnya: menunggu scan carrier”).
  • Jeda 48 jam dijelaskan dengan bahasa biasa (misalnya: “Belum ada scan carrier baru. Ini dapat terjadi antara pickup dan sorting center pertama.”).
  • Pengecualian terlihat dan dapat dimengerti. Delay, masalah alamat, pembayaran gagal, percobaan pengiriman, atau “ditahan di pickup point” tidak boleh disembunyikan di balik kode.
  • Status saat ini diturunkan dari event (pembayaran, gudang, carrier, pengiriman), bukan edit manual di layar admin.
  • Ada satu tempat untuk mengubah bagaimana event dipetakan ke langkah timeline, sehingga Anda tidak menambal logika di tiga layanan dan UI.

Setelah itu, uji beberapa pesanan berantakan dengan sengaja. Pilih satu dengan pengiriman terpisah, satu dengan carrier yang scan terlambat, dan satu dengan percobaan pengiriman gagal. Jika timeline terbaca seperti misteri, pelanggan akan meminta manusia untuk menafsirkan.

Akhirnya, pastikan tim dukungan bisa melihat tampilan yang sama dengan pelanggan, termasuk cap waktu dan pesan pengecualian. Ketika kedua sisi membaca cerita yang sama, balasan menjadi lebih singkat, dan banyak tiket tidak pernah ditulis.

Langkah berikutnya: rilis dengan aman dan terus perbaiki

Mulailah kecil. Timeline status pesanan minimal yang menjawab pertanyaan utama (Apakah Anda menerima pesanan saya? Kapan dikirim? Di mana sekarang?) lebih baik daripada tracker rumit penuh edge case. Rilis status inti dulu, lalu tambahkan detail ketika umpan balik pelanggan nyata menunjukkan manfaat.

Rencanakan rollout hati-hati supaya Anda bisa belajar tanpa merusak kepercayaan. Pilih segmen kecil pesanan (misalnya, satu gudang, satu metode pengiriman, atau satu negara) dan pantau perubahan volume tiket dan perilaku pelanggan sebelum memperluas.

Ukur apa yang benar-benar mengurangi tiket

Jangan menebak. Instrumenkan timeline sehingga Anda bisa melihat apakah ia bekerja. Bandingkan pertanyaan “Di mana pesanan saya?” yang paling umum sebelum dan sesudah rilis, dan lacak layar status mana yang dilihat pelanggan tepat sebelum mereka menghubungi dukungan.

Set metrik awal sederhana:

  • Tingkat tiket per 1.000 pesanan (keseluruhan dan per carrier)
  • Alasan tiket teratas (sebelum vs setelah)
  • Tampilan timeline status dalam 24 jam sebelum pembuatan tiket
  • Waktu yang dihabiskan di halaman tracking dan rasio keluar
  • Persentase pesanan dengan event hilang atau terlambat

Buat pengecualian konsisten, bukan improvisasi

Sebagian besar beban dukungan datang dari pengecualian: label created tapi tidak ada scan, keterlambatan cuaca, masalah alamat, pengiriman terpisah. Siapkan template pesan untuk kasus ini sehingga tim Anda memberi jawaban yang sama setiap kali. Jaga singkat, jelas, dan berorientasi tindakan: apa yang terjadi, apa yang Anda lakukan, apa yang pelanggan harapkan selanjutnya.

Jika Anda membuat prototipe UI dan API berbasis event, platform vibe-coding seperti Koder.ai (koder.ai) bisa menjadi cara praktis untuk menghasilkan versi pertama dari percakapan singkat, lalu memperbaiki salinan dan pemetaan saat Anda belajar dari tiket nyata.

Perluas cakupan bertahap. Setelah rollout subset menunjukkan lebih sedikit tiket (dan tidak menimbulkan kebingungan baru), perluas ke lebih banyak tipe pesanan dan carrier. Tetapkan ritme peninjauan reguler: setiap beberapa minggu, scan tema tiket baru dan putuskan apakah perbaikannya berupa penulisan ulang kata, template pengecualian baru, atau event tambahan yang memberi informasi ke timeline.

Pertanyaan umum

Apa tujuan utama timeline status pesanan?

Utamakan timeline kecil dan mudah dibaca yang menjawab tiga pertanyaan: apa yang sedang terjadi sekarang, kapan terakhir berubah, dan apa yang akan terjadi selanjutnya. Sebagian besar tiket muncul dari ketidakpastian, jadi timeline harus mengurangi tebakan (misalnya, “Menunggu scan carrier” daripada istilah samar “Processing”).

Langkah status apa yang sebaiknya saya tunjukkan ke pelanggan?

Gunakan set stabil yang dipahami kebanyakan pembeli:

  • Placed
  • Payment confirmed
  • Preparing (atau Packed)
  • Shipped
  • Out for delivery
  • Delivered

Juga sertakan akhir yang jelas seperti Canceled dan Returned. Jaga agar langkah internal (pick/pack/batch/retry) tetap di luar tampilan pelanggan.

Apakah saya benar-benar perlu cap waktu pada setiap langkah pelacakan?

Tampilkan cap waktu untuk setiap langkah dan waktu “Last updated” yang jelas. Jika Anda menjual lintas negara, sertakan zona waktu (atau buat tidak ambigu). Cap waktu mengubah kesan “tidak ada yang terjadi” menjadi “ini terjadi baru-baru ini,” yang mencegah pertanyaan lanjutan.

Bagaimana menangani “Label created” tanpa scan carrier?

Anggap itu sebagai pengecualian yang terlihat, bukan kemajuan normal. Pesan default yang baik:

  • Apa yang Anda ketahui: “Carrier belum menscan paket.”
  • Langkah selanjutnya: “Pembaharuan berikutnya diharapkan setelah pickup.”
  • Kapan eskalasi: “Jika tidak ada scan sampai besok jam 17:00, kami akan menyelidiki.”

Jangan menyiratkan pergerakan yang tak bisa Anda buktikan.

Bagaimana cara menghindari menampilkan langkah alur kerja internal yang berantakan?

Pisahkan fakta (event) dari timeline pelanggan (status). Simpan event internal yang rinci, lalu map ke beberapa langkah yang ramah pelanggan. Ini menjaga UI konsisten meski alur kerja gudang berubah.

Model backend paling sederhana untuk mendukung timeline apa?

Simpan event sebagai fakta append-only (misalnya: label_created, picked_up, out_for_delivery, delivered) dengan:

  • order_id
  • event_type
  • happened_at
  • actor (system/warehouse/carrier/support)
  • optional details

Lalu render timeline dari riwayat event itu alih-alih dari satu field status yang bisa berubah-ubah.

Bagaimana mencegah event pelacakan duplikat muncul?

Gunakan idempotensi. Beri setiap pembaruan yang masuk kunci unik yang stabil (ID event carrier, atau hash dari field penting) dan abaikan duplikat. Ini mencegah entri berulang seperti “Out for delivery” muncul dua kali ketika carrier mengirim ulang update.

Haruskah saya menampilkan perkiraan tanggal pengiriman jika saya belum yakin?

Tampilkan perkiraan terbaik yang Anda punya, dan jujur tentang apa yang Anda tunggu. Jika Anda belum punya ETA, katakan plainly (misalnya, “Kami akan menampilkan ETA setelah scan carrier pertama”). Ketepatan lebih baik daripada janji optimis yang nanti merusak kepercayaan.

Bagaimana pengecualian seperti keterlambatan atau percobaan pengiriman gagal harus muncul di UI?

Buat pengecualian jelas dan berorientasi tindakan. Yang umum:

  • Delay (dengan estimasi baru jika diketahui)
  • Masalah alamat (dengan tombol “Konfirmasi alamat”)
  • Percobaan pengiriman gagal (dengan info percobaan berikutnya)

Pengecualian harus lebih mencolok daripada kemajuan biasa dan memberi tahu pelanggan apa yang perlu dilakukan, jika ada.

Kapan halaman pelacakan harus menyuruh pelanggan menghubungi dukungan?

Aturan praktis: tampilkan opsi kontak hanya setelah ambang jelas, misalnya:

  • 24 jam lewat dari estimasi pengiriman terakhir yang dijanjikan, atau
  • 72 jam tanpa perubahan saat status “In transit”

Sebelum itu, tampilkan penenangan serta pembaruan terakhir dan langkah berikutnya untuk mencegah klik panik.

Related posts