Skip to main content

Calculator

Override post request filter

Allows completely bypassing the integration's API request and returning a custom response instead. If the filter returns a non-empty array, it is used as the response and the API call is skipped.

Useful for testing, mocking responses, or conditionally short-circuiting submissions.

add_filter('es_forms_integrations_calculator_override_post_request', 'getIntegrationOverridePostRequest', 10, 5);

/**
* Override the integration API request with a custom response.
*
* @param array<mixed> $response Default response (empty array).
* @param string $itemId Integration item/list ID.
* @param array<string, mixed> $params Form submission parameters.
* @param array<mixed> $files Uploaded files.
* @param string $formId Form ID.
*
* @return array<mixed>
*/
function getIntegrationOverridePostRequest(array $response, string $itemId, array $params, array $files, string $formId): array
{
// Return a mock success response to bypass the API call.
return [
'status' => 'success',
'code' => 200,
];
}

Pre-post parameters filter

Allows modifying form field data before it's sent to calculator. Useful if you want to make values derived from the sent data, or add new fields.

add_filter('es_forms_integrations_calculator_pre_post_params', 'getIntegrationPrePostParams', 10, 2);

/**
* Modifies form field data before it's sent to calculator.
*
* @param array<string, mixed> $params Array of params.
* @param string $formId Form ID.
*
* @return array<string, mixed>
*/
function getIntegrationPrePostParams(array $params, string $formId): array
{
$formSubmissionPageLt = $params['form_submission_page_lt']['value'] ?? '';

if ($formSubmissionPageLt) {
$params['ib-submission-source'] = [
'name' => 'ib-submission-source',
'value' => $formSubmissionPageLt,
'type' => 'text',
'internalType' => '',
];
}

return $params;
}

Before success response filter

Allows modifying the response data before it is sent back to the client after a successful form submission. Runs after all internal processing (entries, variations, redirects) is complete.

add_filter('es_forms_integrations_calculator_before_success_response', 'getIntegrationBeforeSuccessResponse', 10, 3);

/**
* Modify the response before it is sent to the client.
*
* @param array<string, mixed> $response Response data with 'private', 'public', and 'additional' keys.
* @param array<string, mixed> $formDetails Full form submission details.
* @param string $formId Form ID.
*
* @return array<string, mixed>
*/
function getIntegrationBeforeSuccessResponse(array $response, array $formDetails, string $formId): array
{
$response['additional']['myCustomKey'] = 'myCustomValue';

return $response;
}

After custom result output process filter

Allows modifying the processed custom result output data after it has been prepared. Useful when using the custom result output feature to adjust the final output structure.

add_filter('es_forms_integrations_calculator_after_custom_result_output_process', 'getIntegrationAfterCustomResultOutputProcess', 10, 3);

/**
* Modify the custom result output data after processing.
*
* @param array<string, mixed> $output Processed output with 't' (title), 'st' (subtitle), and 'd' (data) keys.
* @param array<string, mixed> $formDetails Full form submission details.
* @param string $formId Form ID.
*
* @return array<string, mixed>
*/
function getIntegrationAfterCustomResultOutputProcess(array $output, array $formDetails, string $formId): array
{
$output['t'] = __('Custom title', 'text-domain');

return $output;
}