Notifikasi WhatsApp Otomatis: Order, Pembayaran, dan Pengiriman

Cara kirim notifikasi transaksi otomatis via WhatsApp API pakai Kirimdev — template utility, contoh kode, retry aman, dan fallback bila gagal terkirim.

Ringkasan singkat:

  • Notifikasi transaksi WhatsApp dikirim lewat template kategori utility — beda dari marketing dan authentication
  • Idealnya kirim di empat momen siklus order: dibuat, pembayaran diterima, paket dikirim, paket sampai
  • Butuh opt-in eksplisit dari customer sebelum kirim template pertama
  • Pakai idempotency key per event supaya retry backend tidak mengirim pesan ganda
  • Siapkan fallback email atau SMS lewat webhook message.status bila WhatsApp gagal

Pelanggan modern berharap mendapat kabar setiap kali statusnya berubah: order diterima, pembayaran sukses, paket dikirim, resi tersedia. Kalau tidak dapat notifikasi, mereka akan bertanya lewat chat — dan tim CS Anda kebanjiran pertanyaan yang sebetulnya bisa dijawab otomatis.

Artikel ini membahas cara menyiapkan pipeline notifikasi transaksi lewat WhatsApp menggunakan Kirimdev: mulai dari memilih template yang tepat, contoh integrasi backend, sampai pola retry yang aman.

Apa itu notifikasi transaksi WhatsApp?

Notifikasi transaksi adalah pesan otomatis yang dipicu oleh event di sistem bisnis Anda — bukan pesan yang diketik manual oleh CS. Contoh event: order dibuat, pembayaran berhasil, status pengiriman berubah, refund diproses.

Di WhatsApp Business API, jenis pesan ini dikirim lewat template message kategori utility. Berbeda dengan chat balasan (yang bisa berupa teks bebas dalam jendela 24 jam), template utility bisa dikirim kapan saja — asalkan customer sudah opt-in dan template-nya sudah disetujui Meta.

Kenapa notifikasi transaksi lewat WhatsApp?

Tingkat baca yang tinggi. WhatsApp secara konsisten mencatat open rate di atas 90% — jauh lebih tinggi dari email yang biasanya berada di 20–30%. Untuk informasi yang perlu segera dilihat (misalnya konfirmasi pembayaran), ini penting.

Sudah jadi kanal komunikasi utama di Indonesia. Sebagian besar pelanggan Anda memeriksa WhatsApp setiap jam. Notifikasi jadi terasa lebih personal dibanding email di folder promotions.

Mengurangi beban CS. Pertanyaan seperti “paket saya sudah dikirim?” atau “pembayaran saya sudah masuk?” hilang begitu customer mendapat update otomatis. Tim Anda bebas menangani percakapan yang benar-benar butuh manusia.

Terintegrasi dengan alur bisnis. Setiap event di sistem Anda (order created, payment received, shipment updated) bisa memicu pesan secara otomatis lewat API — tanpa CS menyalin data ke chat manual.

Kategori template: pakai yang mana?

Meta membagi template ke tiga kategori. Untuk notifikasi transaksi, gunakan utility:

KategoriKegunaanContoh
UtilityUpdate transaksi terkait aksi penggunaKonfirmasi order, status pembayaran, resi pengiriman
MarketingPromosi, diskon, engagementFlash sale, voucher, newsletter
AuthenticationKode verifikasiOTP login, verifikasi email

Template utility umumnya lebih murah dari marketing, dan biasanya lebih cepat disetujui Meta karena dianggap memberi nilai langsung ke pengguna. Jangan pakai kategori marketing untuk notifikasi transaksional — selain lebih mahal, ada risiko pesan diblokir bila customer sudah unsubscribe dari kanal marketing. Detail cara kerja variabel di template bisa dibaca di panduan variabel template broadcast.

Kapan pakai WhatsApp, kapan jangan

SkenarioRekomendasi
Konfirmasi order e-commercePakai WhatsApp — pesan langsung dibaca dalam menit
Update status pengiriman (shipped, delivered)Pakai WhatsApp — customer terbiasa cek WA daripada email
Struk pembayaran / invoice detailKirim ringkasan di WhatsApp, dokumen lengkap tetap di email
Newsletter atau promosi produkPakai template marketing (bukan utility) di kanal terpisah
Notifikasi ke internal teamPakai Slack / email — WhatsApp tidak dirancang untuk itu
Customer belum opt-inJangan kirim template apapun — tunggu persetujuan

Prinsip umumnya: notifikasi transaksi masuk ke kategori utility, promosi masuk ke marketing. Jangan campur keduanya di satu template.

Yang perlu Anda siapkan

  1. Akun WhatsApp Business Account yang sudah tersambung ke Kirimdev. Panduan ada di persiapan sebelum pakai Kirimdev.
  2. Beberapa template utility yang sudah disetujui Meta — satu per skenario (order dikonfirmasi, pembayaran diterima, paket dikirim, dan seterusnya).
  3. Backend Anda yang punya event/webhook internal saat status transaksi berubah (Shopify, WooCommerce, Midtrans, Xendit, atau sistem custom). Untuk yang belum familiar dengan API, lihat integrasi API + webhook + n8n.
  4. Persetujuan opt-in dari customer untuk menerima notifikasi WhatsApp. Simpan bukti opt-in di database.

Alur pengiriman notifikasi order

Order dibuat di sistem Anda (Shopify / custom backend)

Backend Anda trigger event "order.created"

POST /v1/{PHONE_ID}/messages  (template order_confirmation + idempotency-key = order_id)

Customer terima WA berisi ringkasan order + link tracking

Webhook message.status → simpan di database Anda untuk audit

Pola yang sama berlaku untuk event lain: pembayaran diterima, paket dikirim, paket sampai. Kuncinya adalah satu event = satu template.

Contoh kode: kirim notifikasi order

import { Kirim } from '@kirimdev/sdk'

const kirim = new Kirim({
  apiKey: process.env.KIRIM_API_KEY!,
})

const phone = kirim.phoneNumbers(process.env.PHONE_ID!)

interface OrderNotificationInput {
  customerPhone: string
  customerName: string
  orderId: string
  totalAmount: string
  trackingUrl: string
}

async function sendOrderConfirmation(input: OrderNotificationInput) {
  const message = await phone.messages.send(
    {
      messaging_product: 'whatsapp',
      to: input.customerPhone,
      type: 'template',
      template: {
        name: 'order_confirmation',
        language: { code: 'id' },
        components: [
          {
            type: 'body',
            parameters: [
              { type: 'text', text: input.customerName },
              { type: 'text', text: input.orderId },
              { type: 'text', text: input.totalAmount },
            ],
          },
          {
            type: 'button',
            sub_type: 'url',
            index: '0',
            parameters: [{ type: 'text', text: input.trackingUrl }],
          },
        ],
      },
    },
    {
      headers: {
        'Idempotency-Key': `order-confirm-${input.orderId}`,
      },
    },
  )

  return message.id
}

Gunakan Idempotency-Key unik per event (misalnya order-confirm-{orderId}) supaya retry di sisi backend Anda tidak menghasilkan pesan ganda.

Contoh: chain notifikasi sepanjang siklus order

Untuk pengalaman customer yang paling baik, kirim beberapa notifikasi sepanjang siklus transaksi — bukan cuma di awal:

async function handleOrderEvent(event: OrderEvent) {
  switch (event.type) {
    case 'order.created':
      await sendTemplate('order_confirmation', event)
      break

    case 'payment.received':
      await sendTemplate('payment_received', event)
      break

    case 'order.shipped':
      await sendTemplate('order_shipped', event)
      break

    case 'order.delivered':
      await sendTemplate('order_delivered', event)
      break
  }
}

Empat template terpisah, empat momen berbeda, satu pipeline. Customer merasa diberi tahu di setiap tahap tanpa Anda menulis chat manual.

Menangani kegagalan pengiriman

Notifikasi transaksional lebih kritis daripada broadcast marketing — kegagalan berarti customer bingung dan CS Anda kebanjiran pertanyaan. Siapkan tiga lapis penanganan:

Retry otomatis dari Kirimdev. Untuk kegagalan sementara di sisi Meta (rate limit, konektivitas), Kirimdev retry otomatis. Anda tidak perlu menulis logic ini sendiri. Cara kerja lengkapnya di fitur Webhooks.

Fallback ke channel lain. Kalau webhook message.status melaporkan status failed (bukan sementara), kirim email atau SMS sebagai pengganti.

app.post('/webhooks/kirimdev', async (req, res) => {
  const event = req.body

  if (event.type === 'message.status' && event.data.status === 'failed') {
    const notification = await db.notifications.findOne({
      waMessageId: event.data.id,
    })

    if (notification && !notification.fallbackSent) {
      await sendEmailFallback(notification)
      await db.notifications.update(notification.id, { fallbackSent: true })
    }
  }

  res.sendStatus(200)
})

Simpan log lengkap. Setiap notifikasi yang dikirim, sukses, atau gagal harus terekam di database Anda dengan reference ke transaksi terkait. Ini menyelamatkan Anda saat customer complain “saya tidak dapat notifikasi”.

Best practice untuk notifikasi transaksi

Kumpulkan opt-in eksplisit. Meta mensyaratkan bukti persetujuan dari customer sebelum Anda boleh mengirim template. Sertakan checkbox di form checkout atau saat pendaftaran, simpan tanggal dan sumber persetujuan.

Jangan gabung transaksi dengan marketing. Template order confirmation adalah template utility. Jangan tambahkan promosi produk lain di dalamnya — selain melanggar kebijakan Meta, itu menurunkan kepercayaan customer.

Sertakan link atau tombol yang berguna. Setiap notifikasi sebaiknya punya call-to-action konkret: link tracking, tombol lihat detail order, atau nomor CS bila ada masalah.

Gunakan bahasa yang konsisten. Semua template sebaiknya pakai gaya bahasa yang sama — kalau brand Anda santai, semua notifikasi santai. Jangan campur “Halo Kak” di satu template dan “Yth. Pelanggan” di template lain.

Batasi frekuensi. Empat notifikasi per siklus order sudah cukup. Kalau Anda mengirim lebih dari itu, customer akan mute atau block nomor Anda.

Biaya: apa yang Anda bayar dan ke siapa

KomponenDitagih olehEstimasi
Langganan platform KirimdevKirimdevMulai Rp 25.000/bulan
Tarif template utilityMeta (langsung ke WhatsApp Business Account)Sesuai tarif Meta

Kirimdev tidak menagih ulang biaya Meta. Semua tagihan Meta muncul langsung di WhatsApp Business Manager Anda.

Langkah pertama

  1. Daftar gratis dan connect nomor WhatsApp Business Anda
  2. Buat template kategori utility di Meta Business Manager untuk setiap skenario transaksi
  3. Generate API key di Settings → API Keys
  4. Integrasikan API call ke event handler backend Anda mengikuti contoh kode di atas
  5. Setup webhook message.status untuk fallback dan audit

Punya alur transaksi yang kompleks — misalnya multi-vendor marketplace atau notifikasi yang perlu dikirim ke lebih dari satu pihak? Email hello@kirimdev.com, tim kami bantu memetakan arsitekturnya.

Baca berikutnya: OTP via WhatsApp · 5 use case WhatsApp Business · Fitur Public API

Pertanyaan yang sering muncul

Apa bedanya template utility dan template marketing? Template utility dipakai untuk pesan transaksional yang berkaitan dengan aksi pengguna — konfirmasi order, update pembayaran, status pengiriman. Template marketing dipakai untuk promosi, diskon, atau engagement. Tarif Meta berbeda antara keduanya, dan template utility umumnya lebih murah karena dianggap value-added untuk pengguna.

Apakah pesan notifikasi bisa dikirim tanpa persetujuan customer? Tidak. Meta mensyaratkan opt-in eksplisit sebelum bisnis boleh mengirim template message ke customer. Biasanya persetujuan ini dikumpulkan lewat checkbox di form checkout atau saat pendaftaran akun. Simpan bukti opt-in untuk keperluan audit.

Bagaimana kalau notifikasi gagal terkirim? Gunakan webhook message.status untuk mendeteksi pesan yang gagal dan siapkan fallback — bisa berupa retry setelah beberapa menit, kirim email, atau SMS. Kirimdev otomatis retry pada level infrastruktur untuk kegagalan sementara.