Tantangan Field Tersembunyi pada Contact Form 7

Formulir Contact Form 7 dengan conditional logic dapat menampilkan field tambahan saat pengguna memilih "Support" pada dropdown untuk memasukkan order number, atau memilih "Sales" untuk memasukkan company size. Kondisi tersebut hanya mengatur tampilan field melalui plugin Conditional Fields for Contact Form 7. Field yang disembunyikan tetap berada dalam submission formulir Contact Form 7 dan tidak dihapus dari proses pengiriman. Hal ini menyebabkan seluruh field terkirim ke API meski tidak pernah terlihat oleh pengguna. Kondisi tersebut menghasilkan payload berisi field kosong untuk pertanyaan yang tidak relevan. Data tersebut diterima oleh CRM dalam bentuk tidak terpilah. Tim harus memilah data yang tidak relevan secara manual. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Pengiriman seluruh field ke API menimbulkan masalah teknis pada integrasi CRM. Field kosong memenuhi record CRM dengan entri seperti "Order Number: (empty)" dan "Company Size: (empty)" bersamaan dengan field yang relevan. Automation pada CRM dapat terpicu secara keliru karena bergantung pada nilai field, termasuk nilai kosong. Data quality menjadi sulit dipertahankan karena tidak dapat dibedakan antara "pengguna melewatkan field" dan "field tidak berlaku" untuk kasus tersebut. Masalah ini bersifat struktural pada submission Contact Form 7. Solusinya bukan mengubah penyembunyian visual, melainkan mengatur payload API. Conditional API logic diperlukan untuk membatasi field yang dikirim berdasarkan kondisi yang sama dengan pilihan pengguna. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Conditional API logic diterapkan dengan mengonfigurasi plugin "Contact Form to Any API" agar menghasilkan payload berbeda sesuai kondisi. Plugin tersebut mendukung conditional field logic dalam konfigurasi API. Changelog versi 5.1.1 mencatat: "New - Added conditional field logic functionality in API configuration". Aturan dapat ditetapkan, seperti: jika inquiry-type equals "Support", kirim order-number dan issue-description ke API. Jika inquiry-type equals "Sales", kirim company-size dan budget-range sebagai pengganti. Jika budget-range is greater than 10000, kirim lead ke API endpoint berbeda. Evaluasi kondisi dilakukan pada saat submission. Hasilnya CRM menerima data bersih dan relevan sesuai pilihan pengguna. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Dua Lapisan Konfigurasi Integrasi

Integrasi memerlukan dua lapisan konfigurasi terpisah. Lapisan 1: conditional fields pada formulir Contact Form 7 melalui Conditional Fields for Contact Form 7. Field dibungkus dalam [group] tags, seperti [group support-fields] dan [group sales-fields], dengan kondisi yang diatur pada tab Conditional Fields. Lapisan 2: conditional logic pada plugin "Contact Form to Any API" untuk menentukan field yang masuk ke payload. Kedua lapisan tidak saling mewarisi pengaturan. Konfigurasi lapisan 1 mengontrol tampilan. Konfigurasi lapisan 2 mengontrol isi JSON payload yang dikirim ke API. Pemisahan ini diperlukan karena field tersembunyi tetap ada dalam submission dan hanya dapat dikecualikan pada level API. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Contoh teknis routing lead berdasarkan customer-type: [select* customer-type "Residential" "Commercial"] dengan [group residential-fields] berisi home-address dan service-type, serta [group commercial-fields] berisi company-name, employee-count, contract-type. Konfigurasi API: Endpoint 1 (Residential CRM) dengan condition customer-type equals "Residential" dan payload name, email, phone, home-address, service-type. Endpoint 2 (Commercial CRM) dengan condition customer-type equals "Commercial" dan payload name, email, phone, company-name, employee-count, contract-type. Setiap submission memicu API call terpisah sesuai kondisi. Lead residential hanya mengirim data residential. Lead commercial hanya mengirim data commercial. CRM tidak menerima field kosong yang tidak relevan. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Kesalahan Umum dalam Konfigurasi

Kesalahan umum perlu diperhatikan dalam konfigurasi ini. Pertama, field name tidak boleh duplikat antar [group] meski field tersembunyi. Jika dua group memiliki field bernama sama, nilai group terakhir akan menimpa nilai lain dan payload API salah. Solusi: gunakan field name unik seperti residential-email dan commercial-email, atau letakkan field bersama di luar group. Kedua, tidak mengasumsikan plugin API mewarisi pengaturan CF7 Conditional Fields. Ketiga, field tersembunyi tetap disubmit oleh Contact Form 7 sehingga conditional logic pada API wajib mengesampingkan field tersebut dari payload. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Debugging conditional API logic dapat dilakukan berdasarkan gejala terukur. Jika seluruh field terkirim: API conditional logic belum dikonfigurasi. Jika nilai field salah: duplicate field names antar group. Jika condition tidak terpicu: field name mismatch pada condition. Jika payload kosong: condition syntax error pada pengaturan plugin. Pemeriksaan ini berfokus pada nama field persis, operator Equals atau Not Equals, dan keberadaan kondisi pada konfigurasi "Contact Form to Any API". Untuk struktur JSON mapping lebih lanjut, referensi teknis: panduan pemetaan JSON Contact Form 7. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.

Pengembangan lebih lanjut dapat memanfaatkan kondisi lanjutan sesuai dukungan plugin. Multi-condition rules: mengirim lead ke Endpoint A hanya saat customer-type equals "Commercial" AND employee-count is greater than 500. Nested conditions: jika service-type equals "Installation", sertakan site-survey-required; jika service-type equals "Repair", sertakan warranty-number sebagai pengganti. Fallback payloads: payload default saat tidak ada condition yang cocok untuk mencegah API call kosong. Operator yang didukung umumnya Equals dan Not Equals. Perbandingan greater than atau less than dapat memerlukan PRO version atau custom hook. Satu formulir dapat mengirim subset data berbeda ke beberapa sistem melalui multiple API integrations. Sumber: https://dev.to/rahul_sharma_15bd129bc69e/cf7-conditional-logic-api-send-different-data-based-on-field-value-3c86.