Skip to content

Trip Reviews

[trip_rating_summary] Shortcode

Updated July 31, 2026 6 min read

This page documents public WordPress hooks for customizing InquiryFlow front-end behavior, lead handling, emails, and admin exports. Use these in a child theme functions.php or a small custom plugin.


Display and frontend

inquiryflow_hide_inquiry_widget (filter)

Force-hide the floating inquiry widget on the current request.

Parameters: bool $hide, mixed $queried (current queried object)

add_filter( 'inquiryflow_hide_inquiry_widget', function ( $hide, $queried ) {
    if ( is_page( 'contact' ) ) {
        return true;
    }
    return $hide;
}, 10, 2 );

inquiryflow_button_display_rules (filter)

Fallback display rule when trip/post/page toggles do not match. Return true to show the widget.

Parameters: bool $show, mixed $queried

add_filter( 'inquiryflow_button_display_rules', function ( $show, $queried ) {
    if ( is_singular( 'product' ) ) {
        return true;
    }
    return $show;
}, 10, 2 );

inquiryflow_inquiry_widget_should_display (filter)

Final pass on whether the auto-mounted widget should display.

Parameters: bool $show, mixed $queried

add_filter( 'inquiryflow_inquiry_widget_should_display', function ( $show, $queried ) {
    return $show && ! is_user_logged_in();
}, 10, 2 );

inquiryflow_frontend_config (filter)

Modify the JavaScript config object passed to the front-end widget (inquiryflowIb).

Parameters: array $config, array $settings

add_filter( 'inquiryflow_frontend_config', function ( $config, $settings ) {
    $config['buttonLabel'] = 'Request a quote';
    return $config;
}, 10, 2 );

inquiryflow_whatsapp_message (filter)

Change the prefilled WhatsApp message before {trip_title} replacement.

Parameters: string $message, array $trip (trip context array)

add_filter( 'inquiryflow_whatsapp_message', function ( $message, $trip ) {
    return 'Hello! I am interested in ' . ( $trip['title'] ?? 'your trips' ) . '.';
}, 10, 2 );

Lead lifecycle

inquiryflow_inquiry_created (action)

Fires after a new lead is saved.

Parameters: Lead $lead

add_action( 'inquiryflow_inquiry_created', function ( $lead ) {
    error_log( 'New inquiry from ' . $lead->email );
} );

inquiryflow_inquiry_status_changed (action)

Fires when an admin changes lead status.

Parameters: Lead $updated, string $old_status

add_action( 'inquiryflow_inquiry_status_changed', function ( $updated, $old_status ) {
    if ( 'booked' === $updated->status ) {
        // Notify ops channel.
    }
}, 10, 2 );

inquiryflow_inquiry_fields (filter)

Modify lead row data (including meta) before sanitization and insert.

Parameters: array $row (fields + meta key)

add_filter( 'inquiryflow_inquiry_fields', function ( $row ) {
    $row['meta']['utm_campaign'] = sanitize_text_field( $_COOKIE['utm_campaign'] ?? '' );
    return $row;
} );

inquiryflow_format_lead (filter)

Modify the REST/API representation of a lead returned to admin or integrations.

Parameters: array $data, Lead $lead

add_filter( 'inquiryflow_format_lead', function ( $data, $lead ) {
    $data['crm_url'] = 'https://crm.example.com/lead/' . $lead->id;
    return $data;
}, 10, 2 );

inquiryflow_validate_inquiry (filter)

Add custom validation before a public inquiry is accepted. Return WP_Error to reject.

Parameters: null|\WP_Error $error, array $params, \WP_REST_Request $request

add_filter( 'inquiryflow_validate_inquiry', function ( $error, $params, $request ) {
    if ( empty( $params['message'] ) ) {
        return new \WP_Error( 'message_required', 'Please include a message.', array( 'status' => 400 ) );
    }
    return $error;
}, 10, 3 );

Allowed values

inquiryflow_allowed_lead_sources (filter)

Whitelist lead channel sources. Default: form, whatsapp, exit_intent, trip_builder.

Parameters: string[] $sources

add_filter( 'inquiryflow_allowed_lead_sources', function ( $sources ) {
    $sources[] = 'partner_api';
    return $sources;
} );

inquiryflow_allowed_lead_types (filter)

Whitelist lead types. Default: inquiry.

Parameters: string[] $types

add_filter( 'inquiryflow_allowed_lead_types', function ( $types ) {
    $types[] = 'group_booking';
    return $types;
} );

inquiryflow_allowed_inquiry_meta_keys (filter)

Register custom meta keys allowed on public submissions (max 20 keys unless filtered elsewhere).

Parameters: string[] $keys

add_filter( 'inquiryflow_allowed_inquiry_meta_keys', function ( $keys ) {
    $keys[] = 'utm_campaign';
    return $keys;
} );

Email notifications

inquiryflow_admin_email_recipients (filter)

Change who receives admin new-inquiry emails.

Parameters: string[] $recipients, Lead $lead, string $context (admin or admin_test)

add_filter( 'inquiryflow_admin_email_recipients', function ( $recipients, $lead, $context ) {
    $recipients[] = '[email protected]';
    return $recipients;
}, 10, 3 );

inquiryflow_admin_email_headers (filter)

Modify email headers for admin notifications.

Parameters: string[] $headers, Lead $lead, string $context

add_filter( 'inquiryflow_admin_email_headers', function ( $headers, $lead, $context ) {
    $headers[] = 'Reply-To: ' . $lead->email;
    return $headers;
}, 10, 3 );

inquiryflow_email_template (filter)

Override admin email subject or body text. Context: admin_subject, admin_body, admin_test_subject, admin_test_body. Pro also uses this for follow-up templates.

Parameters: string $text, string $context, Lead $lead

add_filter( 'inquiryflow_email_template', function ( $text, $context, $lead ) {
    if ( 'admin_subject' === $context ) {
        return 'URGENT: New trip inquiry from ' . $lead->name;
    }
    return $text;
}, 10, 3 );

inquiryflow_admin_email_body_sections (filter)

Append HTML sections to the admin notification body.

Parameters: string[] $sections, Lead $lead, array $args

add_filter( 'inquiryflow_admin_email_body_sections', function ( $sections, $lead, $args ) {
    $sections[] = '<p><strong>Priority:</strong> VIP client</p>';
    return $sections;
}, 10, 3 );

inquiryflow_admin_email_context_rows (filter)

Modify label/value rows in the admin email context table.

Parameters: array $rows, Lead $lead, ?array $trip

add_filter( 'inquiryflow_admin_email_context_rows', function ( $rows, $lead, $trip ) {
    $rows[] = array( 'label' => 'Office', 'value' => 'Sydney' );
    return $rows;
}, 10, 3 );

Captcha

inquiryflow_verify_captcha (filter)

Short-circuit or replace captcha verification. Return true/false to override; return null to use built-in verification.

Parameters: bool|null $result, string $provider, string $token, Core $core

add_filter( 'inquiryflow_verify_captcha', function ( $result, $provider, $token, $core ) {
    if ( 'custom' === $provider ) {
        return my_custom_captcha_verify( $token );
    }
    return $result;
}, 10, 4 );

inquiryflow_captcha_frontend_config (filter)

Adjust captcha settings sent to the front end (site key, provider flags).

Parameters: array $config, string $provider, Core $core, array $settings

add_filter( 'inquiryflow_captcha_frontend_config', function ( $config, $provider, $core, $settings ) {
    $config['theme'] = 'dark';
    return $config;
}, 10, 4 );

Settings

inquiryflow_settings_loaded (filter)

Modify settings array after load from storage.

Parameters: array $settings

add_filter( 'inquiryflow_settings_loaded', function ( $settings ) {
    $settings['button_label'] = 'Enquire now';
    return $settings;
} );

inquiryflow_settings_schema (filter)

Add or modify setting field definitions (keys, defaults, sanitize callbacks).

Parameters: array $schema

add_filter( 'inquiryflow_settings_schema', function ( $schema ) {
    $schema['fields']['custom_banner'] = array(
        'type'    => 'string',
        'default' => '',
    );
    return $schema;
} );

Admin list and export

inquiryflow_admin_lead_columns (filter)

Customize Inquiries table columns. Each item: array( 'id' => '', 'label' => '' ).

Parameters: array $columns

add_filter( 'inquiryflow_admin_lead_columns', function ( $columns ) {
    $columns[] = array( 'id' => 'phone', 'label' => 'Phone' );
    return $columns;
} );

inquiryflow_export_csv_columns (filter)

Customize CSV export column headers (key => label).

Parameters: array $columns

add_filter( 'inquiryflow_export_csv_columns', function ( $columns ) {
    $columns['phone'] = 'Phone';
    return $columns;
} );

inquiryflow_export_csv_row (filter)

Modify a single CSV row at export time.

Parameters: array $row, Lead $lead, array $columns

add_filter( 'inquiryflow_export_csv_row', function ( $row, $lead, $columns ) {
    $row['phone'] = $lead->phone ?? '';
    return $row;
}, 10, 3 );