Otomasi & workflow

Pantau perubahan card sampai field terdalam, lalu kirim data dinamis ke endpoint kustom dengan HTTP Request yang aman.

  1. 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. 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. 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, atau comments.reactions. Path induk mencakup seluruh turunannya, jadi memantau customFields juga cocok ketika customFields.<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. 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 memakai any; status dan approval harus berubah dalam event yang sama memakai all.

  5. 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 berisi before dan after
    • {{ 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, dan trigger.entity dapat dipakai untuk pelacakan event terkait.

  6. 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, serta changes.<path>.before dan changes.<path>.after. Contoh: saat memantau customFields.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 seperti customFields, 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. 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:// atau https://; 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. 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. 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. 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-Key unik 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. 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. 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. 13

    Contoh: sinkronkan perubahan card ke CRM

    Gunakan Card Berubah dengan field status, priority, dan customFields, mode any. Sambungkan ke HTTP Request method POST dengan URL https://crm.example.com/cards/{{ trigger.after.id }}. Tambahkan header Authorization: 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.