Scheduled Export
Mengirim isi sebuah Dashboard Analytics ke daftar email secara otomatis dan berulang dalam format PDF atau Excel, mengatur jadwalnya dari layar Edit Dashboard, serta memahami periode data, masa berlaku tautan unduh, dan penyebab kiriman tidak sampai.
Scheduled Export mengirimkan isi sebuah Dashboard ke daftar alamat email secara otomatis dan berulang — harian, mingguan, atau bulanan — dalam format PDF atau Excel. Penerimanya tidak perlu membuka Alurkerja dan tidak perlu punya akun.
Jadwal disimpan menyatu dengan dashboard-nya. Tidak ada halaman "Schedules" tersendiri, dan menyimpan jadwal berarti menyimpan dashboard.
| Yang dikirim | Satu file berisi seluruh widget dashboard untuk satu periode |
| Format | PDF atau Excel (xls) |
| Frekuensi | Harian, mingguan (pilih hari), atau bulanan (pilih tanggal) |
| Penerima | Daftar alamat email bebas — tidak harus user Alurkerja |
| Cara mengambil file | Tautan unduh di dalam email; file tidak dilampirkan |
| Masa berlaku tautan | 72 jam sejak email dikirim (default) |
| Jumlah jadwal | Satu jadwal per dashboard |
Untuk admin / DevOps. Pengiriman baru berjalan bila report-service di environment tersebut dijalankan dengan ENABLE_SCHEDULED_EXPORT=true dan ENABLE_SCHEDULED_EXPORT_WORKER=true. Keduanya default false. Kalau salah satu mati, jadwal tetap bisa disimpan dan seluruh UI terlihat normal — tetapi tidak ada satu pun email yang pernah terkirim. Ini kegagalan paling senyap dari fitur ini; lihat Troubleshooting.
Prasyarat
- Dashboard sudah dibuat dan tersimpan. Jadwal diatur dari layar edit dashboard, bukan saat membuat dashboard baru.
- Dashboard sebaiknya sudah punya widget. Dashboard kosong tetap menghasilkan file, tetapi isinya hanya keterangan bahwa dashboard belum punya widget.
- Daftar alamat email penerima. Alamat yang salah ketik ditolak saat disimpan.
Membuka Form Jadwal
-
Dari sidebar Studio, buka grup DESIGN → Analytics → Dashboard.
-
Pada baris dashboard yang dituju, klik ikon pensil di kolom Actions. Ikon mata di sebelahnya hanya membuka pratinjau dan tidak bisa dipakai mengatur jadwal.
-
Di header layar edit, klik ikon gerigi (Settings) di sebelah kiri tombol Update Dashboard.
-
Dialog Settings terbuka. Bagian Scheduled Export ada di bawah Publish to Dashboard dan Is Template? — gulir isi dialognya kalau belum terlihat.
Isian jadwal baru muncul setelah toggle dinyalakan. Selama toggle mati, bagian ini memang hanya berisi satu baris keterangan — itu keadaan normal, bukan form yang gagal dimuat.
Mengisi Jadwal
Nyalakan toggle di bawah tulisan "Automatically email this dashboard to a list of recipients on a schedule", lalu isi seluruh field bertanda *.
| Field | Pilihan | Catatan |
|---|---|---|
| Frequency * | Daily / Weekly / Monthly | Default Daily. Mengganti frekuensi mengganti field hari yang menyertainya. |
| Send on * | Sunday–Saturday | Hanya untuk Weekly. Default Monday. |
| Day of month * | 1–31 | Hanya untuk Monthly. Default 1. Lihat tanggal 29–31. |
| Send at * | Jam kirim | Jam dinding di timezone yang dipilih, bukan jam server. Default 08:00. |
| Timezone | WIB — Jakarta, WITA — Makassar, WIT — Jayapura | Default WIB. Hanya tiga zona ini yang ditawarkan. |
| File format * | PDF / Excel (xls) | Default PDF. |
| Recipients * | Satu atau lebih alamat email | Wajib minimal satu. |
Kolom Send at mengikuti bahasa browser, bukan bahasa aplikasi. Kolom ini memakai pemilih waktu bawaan browser. Pada browser berbahasa Inggris ia tampil 12 jam (09:00 PM), pada browser berbahasa Indonesia 24 jam (21.00). Yang disimpan sama saja. Kalau ragu, baca Schedule summary — ringkasan itu selalu memakai format 24 jam.
Mengisi Recipients
Ketik alamat pada kolom berplaceholder name@company.com, then Enter, lalu tekan Enter. Alamat berubah menjadi chip di bawah kolom.
- Alamat yang tidak valid ditandai chip merah disertai pesan
"<alamat>" is not a valid email address, dan penyimpanan ditahan sampai diperbaiki. - Klik tanda × pada chip untuk menghapus penerima.
- Selama belum ada satu pun penerima, kolomnya berketerangan "Add at least one recipient".
Membaca Schedule summary
Kotak Schedule summary di bawah daftar penerima adalah ringkasan jadwal yang akan tersimpan. Biasakan membacanya sebelum menyimpan — di sanalah salah pilih hari atau salah baca jam paling cepat ketahuan.
Menyimpan
Tutup dialog Settings, lalu klik Update Dashboard di header. Setelah tersimpan, Anda dikembalikan ke daftar Dashboard dan kolom Updated At dashboard tersebut ikut berubah.
Menyalakan toggle saja tidak menyimpan apa pun. Selama Update Dashboard belum ditekan, jadwal itu belum ada.
Kalau ada isian jadwal yang bermasalah, penyimpanan dibatalkan dan dialog Settings terbuka kembali sendiri dengan peringatan merah "Fix the export schedule below before saving. The dashboard was not saved." Ini disengaja: tombol Update Dashboard ada di header, jauh dari form jadwal, jadi tanpa itu penolakan terbaca seperti tombol yang tidak bereaksi.
Kapan Report Pertama Terkirim
Perhitungan jadwal berikutnya
Waktu kirim berikutnya dihitung saat jadwal disimpan: waktu pertama sesudah "sekarang" yang cocok dengan setelan jadwal, dibaca sebagai jam dinding di timezone yang dipilih.
| Kasus | Hasil |
|---|---|
Daily 08:00 WIB, disimpan Senin 07:30 | Senin ini juga, 08:00 |
Daily 08:00 WIB, disimpan Senin 09:00 | Selasa 08:00 — hari ini sudah lewat |
Weekly Monday 08:00, disimpan Senin 09:00 | Senin minggu depan |
Weekly Friday 08:00, disimpan Senin 09:00 | Jumat minggu ini |
Monthly day 5 07:00, disimpan tanggal 5 pukul 08:00 | Tanggal 5 bulan depan |
Jadwal tidak pernah berjalan mundur: jam yang sudah lewat hari ini dilewati ke periode berikutnya.
Toleransi waktu kirim
Email tidak dikirim tepat pada detik yang dijadwalkan. Sistem memeriksa jadwal yang jatuh tempo setiap ±1 menit, lalu worker mengambil pekerjaan dari antrean dengan interval yang sama. Untuk dashboard normal, email biasanya sampai beberapa menit setelah jam yang diatur. Itu normal, bukan kegagalan.
Kalau server sempat mati beberapa jam, jadwal yang terlewat tidak dikirim menyusul satu per satu. Yang terjadi: satu kiriman untuk saat itu, lalu jadwal lanjut ke periode berikutnya. Tidak ada banjir email susulan.
Tanggal 29–31 di bulan pendek
Jadwal bulanan tanggal 29, 30, atau 31 tetap jalan di bulan yang tidak punya tanggal itu — dikirim pada hari terakhir bulan tersebut (28/29 Februari, 30 April, dan seterusnya). Begitu tanggal 29–31 dipilih, catatan ini muncul di dalam kotak Schedule summary, di bawah jumlah penerima.
Periode data yang ikut di dalam file
Isi file adalah periode yang sedang berjalan pada saat jadwal jalan, bukan periode sebelumnya.
| Frekuensi | Periode isi file | Label pada email dan nama file |
|---|---|---|
| Daily | Hari itu, 00:00 s/d 24:00 | 2026-08-24 |
| Weekly | Minggu berjalan, Senin 00:00 s/d Senin berikutnya | 2026-W35 |
| Monthly | Bulan berjalan, tanggal 1 s/d tanggal 1 bulan berikutnya | 2026-08 |
Ini yang paling sering datang sebagai keluhan "report saya kosong". Jadwal mingguan setiap Senin pagi menghasilkan laporan untuk minggu yang baru saja dimulai — praktis masih kosong. Supaya periodenya sudah penuh, jadwalkan di ujung periode:
- Harian → sore atau malam (mis. 21:00), bukan pagi.
- Mingguan → Sunday malam, bukan Monday pagi.
- Bulanan → tanggal
31, yang otomatis mundur ke hari terakhir pada bulan pendek.
Batas periode ini juga dipakai mengisi parameter tanggal pada question yang punya filter periode. Question tanpa filter periode tetap menampilkan data sesuai default-nya sendiri — sama seperti yang tampil di dashboard.
Mengubah dan Menonaktifkan Jadwal
Mengubah
Buka kembali layar edit dashboard → Settings → ubah field yang diinginkan → Update Dashboard. Jadwal yang tersimpan otomatis terisi kembali di form saat dialog dibuka.
Setiap penyimpanan menghitung ulang waktu kirim berikutnya dari saat disimpan. Contoh: jadwal harian 08:00 yang diubah menjadi 09:00 pada pukul 10:00 akan berjalan besok pukul 09:00.
Menonaktifkan
Matikan toggle pada bagian Scheduled Export, lalu Update Dashboard.
Setelan jadwal tidak dihapus. Saat dialog dibuka lagi, bagian Scheduled Export memang tampak kosong — isian hanya disembunyikan selama toggle mati. Begitu toggle dinyalakan kembali, frekuensi, hari, jam, timezone, format, dan seluruh daftar penerima muncul lagi persis seperti terakhir disimpan. Tidak perlu mengisi form dari nol.
- Selama mati, jadwal tidak akan pernah dijalankan.
- Saat dinyalakan kembali dan disimpan, waktu kirim berikutnya dihitung ulang dari saat itu — tidak ada kiriman susulan untuk periode yang terlewat.
Menghapus dashboard
Menghapus dashboard otomatis mematikan jadwalnya pada pemeriksaan berikutnya; sistem tidak akan mencoba mengirim laporan dari dashboard yang sudah tidak ada. Riwayat eksekusi jadwal itu sengaja tetap disimpan.
Email yang Diterima Penerima
Subjeknya Laporan <Nama Dashboard> - <Periode>, misalnya Laporan Sales Harian - 2026-W35.
Isinya memuat nama dashboard, periode, format dan ukuran file, waktu pembuatan, tombol Unduh laporan, serta tautan versi teks di bawahnya untuk mail client yang tidak merender tombol.
Yang sering ditanyakan:
- File tidak dilampirkan. Yang dikirim hanya tautan — lampiran akan tertahan batas ukuran mail server dan hidup selamanya di inbox, sementara tautan bisa kedaluwarsa.
- Penerima tidak perlu punya akun Alurkerja. Tautan itu sendiri yang menjadi kredensialnya.
- Semua penerima menerima email dan file yang sama persis.
- Email dikirim otomatis dan tidak bisa dibalas.
Secure download link
- Klik Unduh laporan, atau salin tautan teks ke browser — file langsung terunduh.
- Masa berlaku 72 jam sejak email dikirim. Waktu kedaluwarsanya tercetak persis di dalam email. Admin dapat mengubahnya lewat
SCHEDULED_EXPORT_LINK_TTL, dengan batas atas 30 hari. - Tautan hanya berlaku untuk satu laporan itu, tidak bisa dipakai mengambil file lain, dan tidak bisa ditebak atau dimodifikasi.
- Tautan boleh diteruskan, dan siapa pun yang menerimanya bisa mengunduh selama masa berlaku belum habis. Perlakukan sebagai dokumen rahasia.
- Lewat masa berlaku, halaman menolak dengan "Tautan unduhan sudah kedaluwarsa". Tautan yang terpotong saat disalin menghasilkan "Tautan unduhan tidak valid".
- Tidak ada cara memperpanjang tautan. Yang tersedia: menunggu kiriman berikutnya, atau membuka dashboard-nya langsung di Alurkerja.
Isi File dan Batasannya
Setiap widget dirender berurutan sesuai susunannya di dashboard, memakai rentang periode pada Periode data. Nama file mengikuti pola <nama-dashboard>_<periode>_<timestamp>.<pdf|xls>, misalnya sales-harian_2026-08-24_20260824T010000Z.pdf.
Batas berikut berlaku supaya dashboard besar tidak menggantung proses:
| Batas | Nilai |
|---|---|
| Baris per widget | 2.000 |
| Baris per dokumen | 20.000 |
| Kolom per tabel | 25 |
| Panjang teks per sel | 300 karakter |
| Waktu query per widget | 60 detik |
Apa pun yang terpotong dinyatakan di dalam file itu sendiri, jadi laporan yang dipangkas tidak pernah terlihat seperti laporan utuh. Widget yang gagal diambil datanya mencetak keterangan penyebabnya di tempatnya dan tidak menggagalkan seluruh laporan.
Pada format Excel, angka disimpan sebagai angka — bukan teks — sehingga tetap bisa dijumlahkan dan dibuat grafik.
Troubleshooting
| Gejala | Penyebab paling mungkin | Tindakan |
|---|---|---|
| Jadwal sudah diisi tapi tidak ada apa-apa yang tersimpan | Toggle dinyalakan tetapi Update Dashboard belum ditekan. | Buka Settings, pastikan isian masih ada, lalu tekan Update Dashboard. |
| Menekan Update Dashboard membuka Settings lagi dengan tulisan merah | Ada isian jadwal yang tidak sah — paling sering alamat email salah ketik. | Perbaiki field bertanda merah, lalu simpan ulang. Dashboard tidak tersimpan sebelum itu. |
| Report tidak pernah terkirim sama sekali | Jam pertama memang belum tiba. | Cek perhitungan jadwal berikutnya — jadwal yang disimpan lewat jam kirim hari itu baru jalan periode berikutnya. |
| Report tidak pernah terkirim, jadwal sudah lama lewat | Fitur belum dinyalakan di environment tersebut (ENABLE_SCHEDULED_EXPORT / ENABLE_SCHEDULED_EXPORT_WORKER). Dari sisi UI semuanya tampak normal. | Perlu dicek admin / DevOps. Ini penyebab paling sering dan paling senyap. |
| Report berhenti terkirim tiba-tiba | Dashboard-nya sudah dihapus, atau jadwal dimatikan sistem karena tidak bisa dijalankan (penerima kosong, timezone tidak dikenali). | Cek keberadaan dashboard; sisanya perlu dicek admin. |
| Sebagian penerima tidak menerima | Salah ketik alamat, atau email tersaring Spam/Junk. | Periksa ejaan chip Recipients; minta penerima cek folder spam. Kegagalan ke satu alamat tidak membatalkan kiriman ke alamat lain. |
| Semua penerima tidak menerima padahal jadwal jalan | Masalah SMTP, bukan masalah jadwal. | Perlu dicek admin. |
| Tautan unduh kedaluwarsa | Wajar setelah 72 jam. | Tidak bisa diperpanjang. Tunggu kiriman berikutnya, buka dashboard langsung, atau minta admin menaikkan SCHEDULED_EXPORT_LINK_TTL. |
| Tautan ditolak "tidak valid" | Tautan terpotong saat disalin — mail client memenggal URL panjang. | Gunakan tombol Unduh laporan, atau salin seluruh baris tautan sampai karakter terakhir. |
| File terkirim tapi isinya kosong | Periode belum ada datanya — jadwal mingguan Senin pagi melaporkan minggu yang baru mulai. | Geser jam kirim ke ujung periode; lihat Periode data. |
| File terkirim tapi hanya berisi keterangan | Dashboard belum punya widget. | Tambahkan question ke dashboard. |
| Satu widget berisi pesan error, sisanya normal | Query question-nya sendiri yang gagal. | Perbaiki question tersebut di Analytics. |
| Kiriman gagal lalu berhasil sendiri | Kegagalan sementara dicoba ulang otomatis sampai 3 percobaan, jeda ±2 menit lalu meningkat sampai maksimal 15 menit. | Tidak perlu tindakan. Satu periode tetap hanya terkirim satu kali. |
Yang perlu dicek admin
Belum ada halaman riwayat pengiriman di UI. Status dan penyebab kegagalan tersimpan di database report-service:
| Tempat | Isi |
|---|---|
report_schedules.last_run_at, last_status | Kondisi terakhir satu jadwal. |
report_schedule_runs | Satu baris per percobaan: attempt, status (success, generate_failed, delivery_failed, …), pesan error, dan file_path file yang sudah terlanjur dibuat — berguna untuk mengirim ulang manual. |
Log report-service | Setiap penolakan per alamat (permanent bounce / transient bounce) beserta alasannya. Ini yang menjawab "kenapa hanya satu orang yang tidak menerima". |
Batasan yang Diketahui
Hal-hal berikut belum tersedia. Disebutkan supaya tidak dicari-cari di layar.
- Satu jadwal per dashboard. Untuk dua frekuensi atau dua daftar penerima yang berbeda, duplikasi dashboard-nya.
- Jadwal hanya bisa diatur dari layar edit, tidak saat membuat dashboard baru.
- Hanya tiga timezone Indonesia (WIB/WITA/WIT) yang bisa dipilih dari UI.
- Periode selalu periode berjalan, tidak ada opsi "periode sebelumnya".
- Tidak ada riwayat pengiriman di UI, dan tidak ada tombol "kirim sekarang" untuk mengetes jadwal tanpa menunggu.
- Tautan tidak bisa dicabut sebelum masa berlakunya habis.
Fase 1 vs Fase 2
Fitur ini dikerjakan dua tahap: Fase 1 menghasilkan file dummy berisi placeholder untuk memvalidasi jalur jadwal → antrean → email, Fase 2 menggantinya dengan data dashboard sungguhan.
Halaman ini menjelaskan perilaku Fase 2. Kalau di sebuah environment file yang diterima berisi teks placeholder alih-alih tabel data, environment itu masih menjalankan image lama Fase 1 — yang perlu dilakukan adalah memperbarui image, bukan mengubah jadwal.
