Otomasi & workflow
Pantau perubahan card sampai field terdalam, lalu kirim data dinamis ke endpoint kustom dengan HTTP Request yang aman.
- 1
Buat workflow di Visual Editor
Buka Otomasi, buat workflow baru, lalu masuk ke Visual Editor. Untuk integrasi kustom, tambahkan pemicu Card Berubah dan sambungkan ke action HTTP Request. Workflow visual hanya boleh punya satu pemicu, tetapi action setelahnya dapat dirangkai dengan kondisi, filter, switch, atau action lain.
- 2
Pantau perubahan card apa pun
Pilih node Card Berubah. Jika bagian Pantau field dikosongkan, workflow berjalan untuk setiap perubahan card yang benar-benar tersimpan, bukan sekadar card dibuka. Ini mencakup perubahan status, judul, deskripsi, prioritas, deadline, assignee, label, custom field, checklist, komentar, lampiran, dependency, relasi, follow-up, time log, watcher, dan data terkait lain yang tersedia.
- Klik "Pantau semua" untuk mengosongkan pilihan field dan kembali memantau perubahan apa pun
- Perubahan tanpa diff data yang nyata tidak menjalankan workflow
- 3
Batasi ke field atau path dinamis
Centang field bawaan yang ingin dipantau, atau isi Path tambahan untuk data yang lebih spesifik. Contoh:
customFields.<id-field>,checklists.items, ataucomments.reactions. Path induk mencakup seluruh turunannya, jadi memantaucustomFieldsjuga cocok ketikacustomFields.<id-field>berubah. Maksimal 100 path dapat dipantau.Gunakan huruf, angka, tanda minus/garis bawah, dan titik sebagai pemisah path. Path berbahaya seperti __proto__, prototype, dan constructor ditolak. - 4
Pilih mode salah satu atau semua
Jika memantau lebih dari satu field, pilih Salah satu field berubah (
any) agar workflow jalan ketika minimal satu path cocok. Pilih Semua field berubah bersamaan (all) hanya jika satu event harus mengubah seluruh path pilihan sekaligus. Contoh: status atau prioritas berubah memakaiany; status dan approval harus berubah dalam event yang sama memakaiall. - 5
Kenali payload before, after, changes
Pemicu menyediakan empat variabel utama:
{{ trigger.before }}— snapshot card sebelum perubahan{{ trigger.after }}— snapshot card sesudah perubahan{{ trigger.changes }}— hanya field yang berubah, masing-masing berisibeforedanafter{{ trigger.changedFields }}— daftar path yang berubah
Contoh perubahan status:
{ "changedFields": ["status"], "changes": { "status": { "before": "todo", "after": "in_progress" } } }Metadata seperti
trigger.eventId,trigger.occurredAt,trigger.source,trigger.operation,trigger.changeKind, dantrigger.entitydapat dipakai untuk pelacakan event terkait. - 6
Pakai variabel dinamis di action
Klik pemilih variabel
{{ }}di URL, query, header, atau body, lalu cari berdasarkan nama variabel, path, nama node, atau ID node. Daftar dibentuk secara dinamis dari alur yang tersambung: data pemicu aktif tampil paling atas, disusul output node sebelumnya, lalu variabel sistem seperti{{ run.id }},{{ automation.id }}, dan{{ workspace.id }}. Node yang berada setelah action saat ini atau tidak terhubung dari pemicu tidak ditawarkan.Untuk Card Berubah, field/path yang dipantau otomatis menghasilkan pilihan
before,after,card, sertachanges.<path>.beforedanchanges.<path>.after. Contoh: saat memantaucustomFields.customer_tier, picker menawarkan nilai snapshot{{ trigger.after.customFields.customer_tier.value }}dan nilai diff{{ trigger.changes.customFields.customer_tier.after }}. Jika yang dipantau adalah parent seperticustomFields, picker menampilkan root diff dinamis agar ID field turunannya dapat dipakai tanpa menjanjikan path yang tidak ada.- Grup berlabel "Kondisional" berasal dari cabang yang mungkin tidak dijalankan. Pastikan action tujuan hanya berjalan pada cabang yang sama atau sediakan nilai cadangan
- Gunakan kolom Cari variabel atau keyboard: panah atas/bawah untuk memilih, Enter untuk menyisipkan, dan Escape untuk menutup
- Di body JSON, letakkan token object/array tanpa tanda kutip agar tipe datanya tetap object/array
- Token di dalam tanda kutip selalu menjadi string dan karakter khusus akan di-escape dengan aman
- 7
Tambahkan action HTTP Request
Pilih action HTTP Request, lalu tentukan method dan URL endpoint publik. Method yang didukung: GET, POST, PUT, PATCH, DELETE, HEAD, dan OPTIONS. GET dan HEAD tidak mengirim body. URL wajib memakai
http://atauhttps://; origin (protokol + host + port) harus statis, sedangkan variabel hanya boleh dipakai pada path atau query.Endpoint localhost, jaringan privat/internal, kredensial di URL, dan host dinamis dari variabel diblokir untuk mencegah request ke tujuan yang tidak aman. - 8
Isi query, header, dan secret
Tambahkan Query Parameters dan Headers sebagai pasangan key/value; setiap baris dapat dinonaktifkan tanpa dihapus. Aktifkan Secret untuk token, API key, Authorization, Cookie, signature, password, atau kredensial lain. Nilai secret pada Header, Query, dan Form Field dienkripsi saat disimpan serta disamarkan di editor dan riwayat run.
Jangan menaruh secret di URL mentah atau body. Body disimpan sebagai konfigurasi biasa. Nama sensitif seperti Authorization, token, secret, password, dan api-key otomatis diperlakukan sebagai secret. - 9
Pilih bentuk request body
Untuk method selain GET/HEAD, pilih Tanpa body, JSON, Teks mentah, atau Form URL-encoded. JSON harus valid setelah variabel di-resolve; teks mentah cocok untuk payload non-JSON; Form URL-encoded memakai baris Form Fields. Content-Type JSON, teks, atau form ditambahkan otomatis jika kamu belum mengisinya sendiri.
- 10
Atur timeout, redirect, error, dan retry
Buka Pengaturan lanjutan untuk memilih timeout 1.000–20.000 ms, mengikuti maksimal 3 redirect, menjadikan status non-2xx sebagai gagal, dan mengatur 1–5 percobaan dengan jeda retry 0–10.000 ms. Jika action non-GET/HEAD diulang dan kamu belum memasang header sendiri, SatuTim menambahkan
Idempotency-Keyunik agar endpoint dapat mencegah proses ganda.- Tujuan setiap redirect diperiksa ulang. Redirect lintas origin yang masih membawa body atau nilai secret diblokir; seluruh header kustom dihapus dari redirect lintas origin yang aman
- Batas per request: 50 header, 100 query parameter, 100 form field, dan body 256 KB
- Body respons dibatasi 64 KB. Jika request membawa secret, body/JSON/header/URL respons disembunyikan sepenuhnya; hanya metadata aman seperti status, ok, durasi, truncation, dan jumlah redirect yang tersedia
- 11
Test dengan card nyata tanpa efek samping
Simpan workflow, pilih card pada menu Konteks Test di bagian atas editor, lalu klik Test. Card nyata mengisi variabel
before,after,changes, dan data card sehingga kamu dapat memeriksa hasil resolusi node. Test selalu dry-run: database tidak diubah, notifikasi tidak dikirim, dan HTTP Request tidak benar-benar dikirim ke endpoint.Untuk uji end-to-end ke endpoint penerima, aktifkan workflow di proyek uji lalu ubah card uji secara terkontrol. Gunakan endpoint staging/test dan cek autentikasi sebelum dipakai di production. - 12
Aktifkan dan pantau hasil HTTP
Perbaiki error validasi, klik Simpan, lalu aktifkan toggle workflow. Buka Riwayat untuk melihat status node, HTTP status,
ok, durasi, jumlah redirect, atau pesan gagal. Untuk request tanpa secret, body teks/JSON dan header aman juga tersedia, sehingga action berikutnya dapat memakai{{ nodes.<id-http>.output.json }}. Jika request membawa secret, gunakan metadata seperti{{ nodes.<id-http>.output.status }}atau{{ nodes.<id-http>.output.ok }}karena payload respons sengaja disembunyikan.- Aktifkan "status non-2xx sebagai gagal" jika workflow harus masuk jalur Error ketika endpoint menolak request
- Secret dan snapshot privat Card Berubah tidak ditampilkan utuh di riwayat run
- 13
Contoh: sinkronkan perubahan card ke CRM
Gunakan Card Berubah dengan field
status,priority, dancustomFields, modeany. Sambungkan ke HTTP Request method POST dengan URLhttps://crm.example.com/cards/{{ trigger.after.id }}. Tambahkan headerAuthorization: Bearer <token>dan aktifkan Secret, lalu gunakan body:{ "eventId": "{{ trigger.eventId }}", "card": {{ trigger.after }}, "changedFields": {{ trigger.changedFields }}, "changes": {{ trigger.changes }} }Endpoint menerima snapshot terkini sekaligus diff, sehingga dapat memutuskan data mana yang perlu diperbarui.