← Semua artikel

Blog

Mengapa Form Submission Tidak Terlacak sebagai Konversi (dan Cara Memperbaikinya)

form submission tidak terlacakform conversion tidak munculcontact form tidak terlacakgtm form submit trigger

"Inquiry-nya memang masuk, tapi jumlah konversi tidak bergerak sama sekali." Ini adalah salah satu keluhan paling umum dari situs yang menjadikan form submission sebagai goal-nya. Notifikasi email sudah masuk, jadi submit-nya jelas berhasil — tapi konversi di Google Ads dan GA4 tetap nol. Di balik ini tersembunyi sederet jebakan tracking yang khas pada form.

Apakah situasi berikut terasa familier?

  • Email inquiry masuk, tapi khusus form submission tidak terlacak sebagai konversi
  • Setelah submit, halaman tidak pernah berubah — pesan "Terima kasih, pesan Anda sudah kami terima" hanya muncul menggantikan tempat itu
  • Trigger "Form Submission" di GTM tidak aktif
  • Tombolnya bisa diklik dengan lancar, tapi tidak ada tanda-tanda measurement event terkirim
  • Pada form multi-step, step mana yang harus dihitung sebagai goal tidak jelas

Panduan ini menyusun alasan mengapa form submission tidak terlacak sebagai konversi ke dalam lima poin diagnostik, lalu membahas cara memeriksanya di DevTools dan GTM Preview — serta desain andal yang aktif pada saat event submit berhasil.

Prinsip dasar: tracking form bergantung pada bagaimana submit terjadi

Sebagian besar kegagalan tracking form bermuara pada satu hal: sisi tracking tidak bisa menangkap bagaimana submit sebenarnya diproses. Asumsi lama — "submit form akan memuat halaman baru" — sudah tidak berlaku untuk banyak form masa kini.

Bagaimana submit terjadi Apa yang bisa dilihat tracking Apa yang gagal
Navigasi halaman Load halaman penyelesaian bisa jadi pemicunya Tidak terjadi navigasi, jadi tidak ada pemicu yang datang
AJAX submit (tanpa navigasi) Halaman tidak berubah, jadi terlihat seperti "tidak terjadi apa-apa" Tag berbasis load tidak pernah aktif
Event firing Event submit-success bisa langsung ditangkap Listener yang hilang membuat event terlewat

Poin kuncinya: "tombol diklik" dan "submit berhasil" adalah dua event yang sama sekali berbeda. Kelima poin diagnostik di bawah ini disusun untuk menuntaskan kasus-kasus "bagaimana submit terjadi" ini secara berurutan.

Diagnosis 1: AJAX submit tidak mengubah apa pun, sehingga tidak ada pemicu penyelesaian

Sebagian besar form kontak masa kini tidak mengubah halaman ketika Anda menekan submit. Di balik layar, mereka mengirim data secara asinkron (AJAX) dan menampilkan "Terima kasih atas pesan Anda" di halaman yang sama. Ini bagus untuk pengalaman pengguna — tapi menjadi masalah besar bagi tracking.

Sebagian besar tag pengukuran menggunakan "halaman penyelesaian baru dimuat" sebagai pemicu firing-nya. Jika halaman maupun URL tidak berubah, maka dari sudut pandang browser tidak terjadi apa-apa, dan tag tidak pernah aktif.

  • Setelah submit, URL tetap sama dan hanya pesan penyelesaian yang berganti
  • Penyelesaian ditampilkan dalam modal (popup), dan halaman itu sendiri tidak pernah bernavigasi
  • "Terkirim" dirender oleh JavaScript dan tidak lebih dari itu

Dalam kasus ini Anda memerlukan desain yang aktif pada event submit berhasil, bukan pada load halaman. Cara membangun pemicu ini dibahas di Diagnosis 5. Untuk blind spot di sisi halaman penyelesaian, lihat Mengapa Konversi Halaman Terima Kasih Anda Tidak Terlacak.

Jebakan umum: jika "pesan penyelesaian muncul dengan baik tapi tidak ada yang terlacak," curigai AJAX submit terlebih dahulu. Penyelesaian yang URL-nya tidak pernah berubah tidak bisa ditangkap oleh tag berbasis load.

Diagnosis 2: Tidak ada event listener yang terpasang, sehingga submit tidak pernah tertangkap

Meski Anda sudah merancang untuk "melacak pada event submit," jika listener yang menunggu event tersebut tidak terpasang dengan benar, wajar saja tidak terjadi apa-apa. Di sinilah niat desain dan implementasi sering meleset.

  • Script tracking berjalan sekali saja, sebelum form ada di halaman, dan tidak pernah terpasang ke form yang di-inject belakangan
  • Listener terpasang pada elemen yang salah secara tidak sengaja
  • Form dibuat secara dinamis (di dalam popup, atau setelah perpindahan layar SPA), sehingga target belum ada saat Anda mencoba memasangnya

Untuk form yang muncul belakangan, memasang listener "sekali saat halaman dimuat" saja tidak cukup. Anda perlu memasang ulang listener setelah form muncul, atau menangkap event pada elemen induk (event delegation).

Jebakan umum: jika "inquiry di halaman utama terlacak tapi inquiry dari popup tidak," kemungkinan besar tidak ada listener yang terpasang pada form yang muncul belakangan.

Diagnosis 3: Trigger "Form Submission" GTM tidak aktif

Google Tag Manager (GTM) memiliki trigger "Form Submission" yang praktis, tapi trigger ini dirancang berdasarkan form HTML biasa — dan sering kali tidak aktif pada form yang dikendalikan JavaScript di masa kini.

  • Form memanggil preventDefault() tepat sebelum submit untuk membatalkan submit native dan mengirim data dengan logikanya sendiri (event "submit" yang ditunggu GTM tidak pernah terjadi)
  • Validasi menjeda alur terlebih dahulu, tidak sinkron dengan timing deteksi GTM
  • Redirect setelah submit terlalu cepat, sehingga layar berubah sebelum trigger sempat berjalan

Jadi "saya sudah memasang trigger Form Submission tapi tidak aktif" biasanya bukan malfungsi — melainkan struktur form dan asumsi trigger yang tidak cocok. Untuk mengisolasi kegagalan GTM secara menyeluruh, lihat Yang Perlu Diperiksa Saat GTM Tidak Melacak Konversi.

Jebakan umum: pada form yang dikendalikan JavaScript, jangan mengandalkan trigger "Form Submission" — beralihlah ke mengirim custom event saat submit berhasil (Diagnosis 5). Itulah jalur yang andal.

Diagnosis 4: Mencampuradukkan "klik" tombol dengan "submit" yang sebenarnya

Sebagai jalan pintas, orang kadang menghitung "klik tombol submit" sebagai goal — tapi ini membuat angkanya meleset. Klik dan submit yang berhasil adalah dua event yang berbeda.

  • Tombol ditekan, tapi error validasi menghentikan submit (klik terhitung, submit gagal)
  • Pengguna mengklik tombol berulang kali (satu inquiry terhitung beberapa kali)
  • Proses di sisi server gagal, namun hanya kliknya yang tercatat

Menghitung klik cenderung menggembungkan angka di atas jumlah inquiry sebenarnya. Goal yang benar adalah momen ketika submit berhasil — dan untuk itu Anda memerlukan desain di Diagnosis 5.

Jebakan umum: jika "jumlah konversi jelas lebih tinggi dari inquiry sebenarnya," curigai bahwa Anda menghitung klik tombol, bukan submit yang berhasil.

Diagnosis 5: Cara memeriksa, dan cara melacak secara andal

Semua hal di atas sebagian besar dapat diisolasi dengan melihat sendiri apakah sinyal pengukuran benar-benar aktif saat Anda submit. Langkah-langkahnya sederhana.

  1. Buka form kontak dan buka DevTools browser Anda
  2. Pada tab "Network", filter dengan conversion atau collect (GA4)
  3. Submit form secara nyata dan amati apakah request pengukuran aktif pada saat itu
  4. Periksa juga "Console" untuk error dan apakah event submit terjadi
  5. Jika Anda menggunakan GTM, buka mode Preview dan lihat apakah trigger aktif saat form disubmit

Dan fondasi dari tracking yang andal adalah secara eksplisit memberi sinyal sendiri untuk event submit berhasil. Di dalam callback yang berjalan ketika submit form berhasil, kirim satu custom event tracking — pendekatan ini menghindari sebagian besar Diagnosis 1–4, baik form menggunakan AJAX, SPA, maupun modal.

Jebakan umum: dengan ad blocker atau perlindungan tracking browser aktif, request itu sendiri diblokir dan terlihat seperti "tidak aktif." Verifikasi dalam kondisi bersih dengan keduanya dimatikan.

Alat form pihak ketiga yang di-embed via iframe

Jika form Anda berasal dari alat pihak ketiga — HubSpot, Typeform, Formstack, atau sejenisnya — dan di-embed di halaman Anda di dalam iframe, batas itu menciptakan blind spot tracking. Iframe adalah browsing context terpisah: GTM yang berjalan di halaman Anda tidak bisa melihat event di dalam iframe, sehingga trigger Form Submission yang mengarah ke sana tidak akan pernah aktif.

  • Form berada di dokumen milik iframe itu sendiri, dan pembatasan cross-origin mencegah script di halaman Anda membaca atau mendengarkan event-nya
  • Beberapa alat (misalnya embed JavaScript HubSpot) memicu callback di halaman induk saat form disubmit — tapi hanya jika Anda menggunakan embed berbasis script mereka, bukan iframe mentah
  • Halaman penyelesaian berbasis redirect di dalam iframe tidak memicu event page-load di halaman luar Anda

Perbaikannya bergantung pada alat yang digunakan. Periksa apakah penyedia form Anda menawarkan callback atau event JavaScript saat submit berhasil (misalnya onFormSubmitted milik HubSpot). Jika ada, push dataLayer event dari callback tersebut dan picu tag konversi Anda berdasarkan itu. Jika alat tersebut hanya menyediakan iframe tanpa hook ke halaman induk, pertimbangkan beralih ke embed berbasis script atau menggunakan pendekatan server-side yang mendengarkan submission di backend.

Jebakan umum: "saya sudah setup tracking GTM tapi tidak ada yang aktif" pada embed HubSpot atau Typeform hampir selalu merupakan masalah batas iframe. Verifikasi metode embed mana yang Anda gunakan sebelum men-debug tag itu sendiri.

Persetujuan cookie dan pembatasan privasi diam-diam menghilangkan konversi

Bahkan ketika tracking form Anda secara teknis sudah benar, persetujuan cookie dan pembatasan privasi browser dapat mencegah konversi tersebut tercatat sama sekali. Ini adalah kategori kegagalan yang berbeda dari Diagnosis 1–5 — tag-nya aktif, tapi datanya tidak sampai.

  • Pengunjung yang menolak banner persetujuan cookie (atau tidak pernah berinteraksi dengannya) tidak akan memiliki cookie iklan yang ditulis, sehingga ping konversi menjadi cookieless atau diblokir sepenuhnya
  • Intelligent Tracking Prevention (ITP) milik Safari dan Enhanced Tracking Protection milik Firefox membatasi atau menghapus tracking cookie secara default, memengaruhi sekitar 35–40% traffic web
  • Dengan Consent Mode V2, ketika ad_storage ditolak, Google hanya menerima ping yang dianonimkan — konversi dimodelkan, bukan diukur secara langsung, yang dapat mengurangi volume yang dilaporkan

Hasilnya: form Anda aktif dengan benar dan inquiry masuk, tapi Google Ads menampilkan konversi lebih sedikit dari yang sebenarnya. Kesenjangan ini cenderung lebih besar di wilayah dengan regulasi privasi ketat (UE/EEA, Inggris) atau pada situs dengan traffic Safari/mobile-Safari yang tinggi.

Untuk memulihkan atribusi yang hilang, aktifkan Consent Mode agar Google dapat memodelkan konversi dengan consent yang ditolak, dan siapkan Enhanced Conversions (lihat di bawah) untuk mencocokkan konversi menggunakan data first-party alih-alih cookie. Untuk pembahasan lebih dalam tentang kehilangan data khusus Safari, lihat Safari ITP dan Kehilangan Konversi.

Jebakan umum: jika jumlah konversi Anda turun setiap kali Anda memperbarui atau memperketat cookie banner, penyebabnya bukan bug tracking — melainkan kehilangan data terkait consent.

Enhanced Conversions: memulihkan atribusi yang hilang karena cookie

Form memiliki keunggulan alami dibanding banyak jenis konversi lain: mereka mengumpulkan data first-party — alamat email, nomor telepon, nama — pada momen persis saat konversi terjadi. Enhanced Conversions menggunakan data ini untuk memulihkan atribusi yang seharusnya hilang akibat pembatasan cookie.

Cara kerjanya: ketika form berhasil disubmit, tag konversi meng-hash data yang diberikan pengguna (email, telepon, alamat) dengan SHA-256 dan mengirimkannya bersama ping konversi. Google mencocokkan hash tersebut dengan data pengguna yang sedang login untuk mengatribusikan konversi kembali ke klik iklan — tanpa memerlukan cookie pihak ketiga.

Untuk mengaturnya di GTM:

  1. Aktifkan Enhanced Conversions di level akun pada Google Ads (Conversions → Settings)
  2. Edit tag Google Ads Conversion Tracking Anda di GTM dan aktifkan "Include user-provided data from your website"
  3. Petakan field form (email adalah minimum; telepon dan nama meningkatkan match rate) ke variabel yang sesuai
  4. Publish dan tunggu 48–72 jam, lalu verifikasi kesehatan tag di tab Diagnostics

Untuk form, Enhanced Conversions biasanya memulihkan 5–25% konversi yang seharusnya hilang, dengan besaran pastinya bergantung pada berapa banyak pengunjung Anda yang login di Google. Dikombinasikan dengan pemodelan Consent Mode, ini menutup sebagian besar kesenjangan antara "inquiry yang diterima" dan "konversi yang dilaporkan." Untuk langkah verifikasi, lihat Verifikasi Enhanced Conversions.

Jebakan umum: jika Enhanced Conversions sudah diaktifkan tapi variabel data yang diberikan pengguna tidak dipetakan ke field form yang benar, hash-nya akan kosong dan match rate akan nol. Selalu verifikasi bahwa variabel email benar-benar menangkap nilai di mode GTM Preview.

Yang tidak bisa diberitahu oleh pemeriksaan di komputer Anda sendiri

Submit form sendiri untuk melihatnya aktif memang berguna, tapi memeriksa sekali di komputer Anda sendiri memiliki dua batasan struktural.

  1. Lingkungan Anda bukan lingkungan pengunjung Anda. Anda sudah menyetujui banner cookie, dan ekstensi serta kondisi IP kantor Anda berbeda. Bisa saja aktif dengan baik saat Anda submit, tapi bagi pengunjung di lingkungan yang berbeda listener tidak terpasang atau tag terlewat.
  2. Konversi yang melibatkan klik iklan sulit diverifikasi. Untuk benar-benar melihat "apakah benar-benar terlacak saat seseorang yang datang lewat iklan menyubmit form," Anda perlu mengklik iklan yang sedang berjalan untuk mereplikasi jalur tersebut — yang membawa risiko pelanggaran kebijakan iklan sebagai self-click.

Menilai "aktif saat saya submit, jadi sudah baik-baik saja" cenderung melewatkan masalah data yang hilang di jalur nyata yang dilalui pengunjung Anda.

Checklist: memverifikasi tracking form submission

  • Benar-benar menyubmit form dan memastikan request pengukuran aktif di tab Network DevTools
  • Memeriksa Console untuk error saat submit
  • Untuk AJAX submit (tanpa navigasi), memastikan desainnya aktif pada event submit-success
  • Memastikan listener terpasang pada form yang muncul belakangan (popup, SPA)
  • Dengan GTM, memastikan trigger aktif saat form disubmit di mode Preview
  • Memastikan Anda menghitung "submit berhasil," bukan klik tombol, sebagai goal
  • Untuk form multi-step, sudah menentukan dengan jelas step mana yang dihitung sebagai goal
  • Sudah diverifikasi dalam lingkungan bersih dengan ad blocker, tracking protection, dan pengecualian IP internal dimatikan
  • Untuk embed form pihak ketiga (HubSpot, Typeform, dll), memastikan metode embed-nya menyediakan callback ke halaman induk — bukan iframe mentah tanpa hook
  • Memeriksa bahwa pengaturan persetujuan cookie dan Consent Mode tidak diam-diam memblokir ping konversi
  • Jika Enhanced Conversions diaktifkan, memastikan variabel data yang diberikan pengguna menangkap nilai nyata di GTM Preview

Pertanyaan yang sering diajukan

T. Email inquiry masuk, tapi konversi tidak terlacak. J. Notifikasi email adalah proses di sisi server pada alat form Anda; konversi adalah tag pengukuran di sisi browser — jalur yang berbeda. Biasanya AJAX submit tidak menyebabkan navigasi sehingga tidak ada yang aktif (Diagnosis 1), atau tidak ada listener yang terpasang untuk menangkap submit (Diagnosis 2). Submit secara nyata dan pastikan tag-nya aktif.

T. Saya sudah memasang trigger "Form Submission" GTM tapi tidak aktif. J. Pada form yang dikendalikan JavaScript, preventDefault() atau validasi sering membuat timing tidak sinkron dengan deteksi GTM, sehingga tidak aktif (Diagnosis 3). Beralihlah ke mengirim custom event saat submit berhasil — itulah jalur yang andal.

T. Mengapa tidak ada yang terlacak padahal pesan penyelesaian muncul? J. Kemungkinan besar ini adalah AJAX submit atau modal di mana URL tidak pernah berubah, sehingga pemicu firing tag (load halaman) tidak pernah terjadi (Diagnosis 1). Anda memerlukan desain yang aktif pada event submit-success.

T. Jumlah konversi saya lebih tinggi dari jumlah inquiry sebenarnya. J. Anda mungkin menghitung klik tombol, bukan submit yang berhasil (Diagnosis 4). Klik berulang dan submit yang gagal juga ikut terhitung, menggembungkan angkanya. Jadikan momen submit berhasil sebagai goal.

T. Saya menggunakan embed HubSpot (atau Typeform) dan tidak ada yang terlacak. J. Jika form di-embed sebagai iframe, GTM di halaman Anda tidak bisa melihat event di dalamnya — pembatasan cross-origin memblokir akses. Beralihlah ke embed berbasis script dari penyedia tersebut dan gunakan callback JavaScript-nya (misalnya onFormSubmitted milik HubSpot) untuk push dataLayer event yang menjadi pemicu tag konversi Anda.

T. Tracking form berjalan baik di komputer saya tapi Google Ads menampilkan konversi lebih sedikit dari inquiry sebenarnya. J. Persetujuan cookie dan pembatasan privasi browser adalah penyebab yang paling mungkin. Pengunjung yang menolak cookie atau menggunakan Safari/Firefox mungkin berhasil menyubmit form sementara ping konversinya diblokir atau menjadi cookieless. Aktifkan Consent Mode dan Enhanced Conversions untuk memulihkan kesenjangan tersebut.

T. Pada form multi-step, titik mana yang seharusnya menjadi goal? J. Sebagai aturan umum, keberhasilan submit terakhir. Mengaktifkan pada "Next" di tengah alur akan menghitung orang yang kemudian drop off, menggembungkan angkanya. Jika Anda ingin melihat penyelesaian tiap step, lacak sebagai event terpisah, dipisahkan dari goal.

Kesimpulan: lacak form pada event submit berhasil

Form submission tidak terlacak karena beberapa alasan: ① AJAX submit tanpa navigasi, ② listener yang hilang, ③ trigger Form Submission GTM tidak aktif, ④ campur aduk antara klik dan submit, dan ⑤ ambiguitas tentang goal pada form multi-step. Semuanya terselesaikan dengan meninggalkan pemicu lama "load halaman" dan mengadopsi desain yang secara eksplisit memberi sinyal sendiri untuk event submit berhasil. Untuk gambaran lengkap tentang verifikasi, gunakan Checklist Verifikasi Tracking Konversi.

Tapi pemeriksaan firing di komputer Anda sendiri punya batasan. Melangkah lebih jauh — memastikan form submission benar-benar tercatat, di jalur nyata yang dilalui pengunjung Anda, termasuk pengunjung di lingkungan yang berbeda, di production — itulah makna sebenarnya dari "sudah terlacak." Untuk titik masuk diagnostik, lihat Tidak Ada Konversi di Google Ads? Panduan Diagnostik Langkah demi Langkah.

ConversionOK menjalankan halaman live Anda di browser independen yang terisolasi dan mencegat request pengukuran yang sebenarnya terkirim saat form disubmit, lalu memverifikasinya — tanpa perlu mengklik iklan Anda sendiri dan tanpa gangguan dari lingkungan kantor Anda. Mulai dengan pemeriksaan statis gratis untuk memastikan titik masuk pengukuran Anda.