Digital Transformation
Idempotency
Idempotency adalah sifat operasi sistem yang menghasilkan efek sama meski dijalankan berkali-kali, kunci agar API marketing dan payment tidak menggandakan data saat retry.
TL;DR: Idempotency adalah sifat operasi yang aman diulang tanpa mengubah hasil akhir setelah eksekusi pertama. Dalam praktik marketing dan e-commerce Indonesia, idempotency mencegah pembayaran ganda, lead duplikat di CRM, dan event tracking yang membengkak saat jaringan pengguna tidak stabil.
Apa itu Idempotency?
Idempotency adalah jaminan bahwa satu operasi yang sama, jika diminta dua kali atau lebih, hanya berdampak satu kali pada sistem. Analoginya seperti tombol lift: dipencet sekali atau lima kali, lift tetap datang sekali. Dalam dunia API dan webhook, idempotency biasanya diwujudkan lewat Idempotency-Key, sebuah token unik yang diikat ke transaksi.
Cara Kerja
Klien mengirim request beserta header Idempotency-Key: <uuid>. Server menyimpan key dan respons aslinya. Jika request dengan key sama datang lagi, server mengembalikan respons cache, bukan memproses ulang. Standar ini diadopsi Stripe, Midtrans, dan Xendit di Asia Tenggara.
| Skenario | Tanpa Idempotency | Dengan Idempotency |
|---|---|---|
| Klik tombol "Bayar" 2x | 2 transaksi terbuat | 1 transaksi terbuat |
| Webhook retry karena 5xx | Lead duplikat di CRM | Lead muncul sekali |
| Event tracking double-fire | Konversi terhitung 2x | Konversi terhitung 1x |
Kenapa Penting?
Untuk marketer Indonesia, idempotency menjaga akurasi data. Kampanye iklan dengan tracking bermasalah bisa salah baca ROAS sampai 30 persen kalau event sering double-fire. Untuk e-commerce, idempotency menyelamatkan pengalaman pelanggan saat sinyal seluler putus di tengah checkout. Standar Idempotency-Key direkomendasikan oleh IETF draft RFC dan jadi best practice modern.
Pertanyaan Umum
Apakah semua API HTTP otomatis idempotent?
Tidak. Method GET, PUT, dan DELETE secara desain idempotent. POST umumnya tidak, jadi POST butuh Idempotency-Key eksplisit untuk aman diulang.
Berapa lama key disimpan server?
Umumnya 24 jam sampai 7 hari. Stripe menyimpan 24 jam. Midtrans menyimpan order ID sebagai natural key tanpa expiry untuk transaksi spesifik.