Support Log in

48. Debugging Form Issues

Developer Guide
Prefer video? Watch the Fillin Forge tutorials 9 short guides covering every feature Watch

Tools and techniques for diagnosing form problems.

Enable WordPress Debug Logging

php
// wp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

With WP_DEBUG_LOG on, the Telegram and WhatsApp notifications write each attempt to wp-content/debug.log as [formforge.telegram] and [formforge.whatsapp] followed by a JSON entry. Other integrations do not log there.

Delivery logs in the database

Fillin Forge keeps the last results in options, whether or not debug logging is on:

  • formforge_webhook_log: the last 30 generic webhook calls. Each entry has ts, status (ok, error or skip), message and form_id.
  • formforge_telegram_log and formforge_whatsapp_log: the last 20 attempts of each.
  • formforge_gsheets_log: the Google Sheets results.

Read one with WP-CLI:

bash
wp option get formforge_webhook_log --format=json

Checking What a Submission Triggers

php
add_action( 'formforge/submission_created', function ( $submission_id, $payload ) {
    error_log( sprintf( 'Fillin Forge: submission %d on form %d, %d fields', $submission_id, $payload['form_id'], count( $payload['fields'] ) ) );
}, 1, 2 );

The event fires after the submission is saved and after the notifications, webhooks and integrations have run. If the line never appears, the submission did not get that far. Test submissions sent from the form builder do not fire it.

Verifying Table Existence

php
global $wpdb;
$tables = [
    $wpdb->prefix . 'formforge_forms',
    $wpdb->prefix . 'formforge_submissions',
    $wpdb->prefix . 'formforge_analytics',
];

foreach ( $tables as $table ) {
    $exists = $wpdb->get_var( "SHOW TABLES LIKE '{$table}'" ) === $table;
    echo "{$table}: " . ( $exists ? 'OK' : 'MISSING' ) . "\n";
}

Browser Console Debugging

The front-end script does not write to the console. It fires two jQuery events on the form, formforge:submission-success and formforge:submission-error, and the Network tab shows the request to admin-ajax.php with action=formforge_submit and its JSON answer. To watch the events:

js
jQuery( document ).on( 'formforge:submission-success formforge:submission-error', '.formforge-form', function ( event, payload ) {
    console.log( event.type, payload );
} );

Common Issues

SymptomCauseFix
Form not found. where the form should beThe id in the shortcode does not match a formCopy the shortcode from the Forms list
Security check failed. on submitA stale nonce, for example from a cached page (see Caching Considerations)Keep the cache lifetime of the page under 12 hours or leave the page out of the cache
Submissions not savedA database table is missing (check with the snippet above)Deactivate and activate the plugin: activation creates the tables
Webhooks not firingThe URL is refused: only http and https are accepted, and localhost or a private address is blockedUse a public URL, and look for blocked by URL safety policy in formforge_webhook_log
File upload failsPHP upload_max_filesize or post_max_size is lower than the limit of the fieldRaise both in php.ini to at least the limit of the field (10 MB by default)
Forge AI Assistant Online

Hi! I'm the Fillin Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs