Appearance
Formatrica - Public API Documentation
Version: 1.1.2 Last Updated: 2026-07-15
This document describes the public WordPress hook API (do_action / apply_filters) available in the Formatrica plugin.
Scope note This reference covers submission, email, and integration hooks and filters. For payments, draft saving, AI, and licensing HTTP endpoints, see the REST API reference.
Table of Contents
Actions (Hooks)
Form Submission Lifecycle
formatrica_before_submission
Fires before a form submission is processed (before validation and sanitization).
php
do_action(
'formatrica_before_submission',
int $form_id,
array $form,
array $request_data,
array $context
);Parameters:
$form_id(int) - Form ID$form(array) - Form configuration (includes fields, settings, title, etc.)$request_data(array) - Raw POST data$context(array) - Submission context (ip_address,user_agent, etc.)
Example:
php
add_action('formatrica_before_submission', function($form_id, $form, $data, $context) {
// Log submission attempt
error_log("Form {$form_id} ({$form['title']}) submission from IP: {$context['ip_address']}");
}, 10, 4);formatrica_after_submission
Fires after a submission is successfully processed.
php
do_action(
'formatrica_after_submission',
int $form_id,
array $sanitised,
array $result,
array $form,
array $context
);Parameters:
$form_id(int) - Form ID$sanitised(array) - Sanitized submission data (field values)$result(array) - Processing result with keys:success(bool) - Whether submission succeededmessage(string) - Success/error messagedata(array) - Containssubmission_id(int|null) andfields(array)email(array) - Email delivery result
$form(array) - Form configuration$context(array) - Submission context (ip_address,user_agent, etc.)
Example:
php
add_action('formatrica_after_submission', function($form_id, $sanitised, $result, $form, $context) {
// Access submission ID (null if storage disabled)
$submission_id = $result['data']['submission_id'] ?? null;
// Custom notification for specific form
if ($form_id === 5) {
wp_mail('admin@example.com', 'VIP Form Submitted', print_r($sanitised, true));
}
}, 10, 5);Integration Hooks
formatrica_integration_dispatch
Fires when a form has an enabled integration that core does not handle itself. Use it to implement custom integrations.
php
do_action(
'formatrica_integration_dispatch',
string $integration_id,
array $settings,
array $form,
array $payload,
array $context,
array $field_meta
);Parameters:
$integration_id(string) - The integration key as stored in the form config$settings(array) - The integration's saved settings for this form$form(array) - Form configuration$payload(array) - Submitted field values$context(array) - Submission context$field_meta(array) - Field metadata (labels, types) for the submitted fields
Example - Custom CRM Integration:
php
add_action('formatrica_integration_dispatch', function($id, $settings, $form, $payload, $context, $meta) {
if ($id !== 'my_custom_crm') {
return;
}
wp_remote_post('https://mycrm.com/api/leads', [
'body' => wp_json_encode($payload),
'headers' => ['Authorization' => 'Bearer ' . $settings['api_key']],
]);
}, 10, 6);formatrica_wp_post_created
Fires after the WordPress Post integration creates a post from a submission.
php
do_action(
'formatrica_wp_post_created',
int $post_id,
array $form,
array $payload
);Parameters:
$post_id(int) - The created post ID$form(array) - Form configuration$payload(array) - Submitted field values
formatrica_webhook_failed
Fires when an outbound integration HTTP request fails (network error, non-2xx response, or blocked endpoint).
php
do_action(
'formatrica_webhook_failed',
array $error,
array $form,
array $payload
);Parameters:
$error(array) - Error details with keys:endpoint(string) - The requested URLintegration(string) - Integration key (e.g.webhook,slack,mailchimp)error(string) - Error messagecontext(array) - Submission context
$form(array) - Form configuration$payload(array) - Submitted field values
Example:
php
add_action('formatrica_webhook_failed', function($error, $form, $payload) {
wp_mail(
get_option('admin_email'),
'Form integration failed',
sprintf('%s failed for %s: %s', $error['integration'], $error['endpoint'], $error['error'])
);
}, 10, 3);User Registration
formatrica_user_registered
Fires after a user-registration form creates a WordPress user.
php
do_action(
'formatrica_user_registered',
int $user_id,
array $data
);Parameters:
$user_id(int) - The new user's ID$data(array) - The form submission data
Logging
formatrica_debug_log
Fires whenever the plugin emits a debug/diagnostic message. Nothing is written anywhere by default — attach a listener to route messages to your own logger.
php
do_action(
'formatrica_debug_log',
string $message
);Example:
php
add_action('formatrica_debug_log', function($message) {
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('[Formatrica] ' . $message);
}
});Filters
Submission Processing
formatrica_submission_request
Filter the raw request data before validation and sanitization.
php
apply_filters(
'formatrica_submission_request',
array $request_data,
int $form_id,
array $form,
array $context
);formatrica_sanitized_submission
Filter the sanitized field values after validation, before storage, email, and integrations run.
php
apply_filters(
'formatrica_sanitized_submission',
array $sanitised,
int $form_id,
array $form,
array $request_data,
array $context
);Example:
php
add_filter('formatrica_sanitized_submission', function($sanitised, $form_id) {
// Normalise a phone field on form 7
if ($form_id === 7 && isset($sanitised['phone'])) {
$sanitised['phone'] = preg_replace('/[^0-9+]/', '', $sanitised['phone']);
}
return $sanitised;
}, 10, 2);formatrica_min_submission_time
Filter the anti-bot minimum time (in seconds) a form must be on screen before a submission is accepted. Default 2.
php
apply_filters(
'formatrica_min_submission_time',
int $seconds,
int $form_id
);formatrica_recaptcha_v3_min_score
Filter the minimum reCAPTCHA v3 score a submission must reach. Default 0.5; scores below the threshold are rejected.
php
apply_filters(
'formatrica_recaptcha_v3_min_score',
float $threshold,
int $form_id
);formatrica_field_display_text
Filter a field value's plain-text display form before it is used in text-first outputs (plain-text emails, Slack messages, integration summaries). $meta is the field's submission metadata (name, label, type, value, …).
php
apply_filters(
'formatrica_field_display_text',
mixed $value,
array $meta
);File Uploads
formatrica_max_upload_size
Filter the maximum upload size in bytes for a file field. The default comes from the field's Max file size setting (1–50 MB, default 5 MB).
php
apply_filters(
'formatrica_max_upload_size',
int $max_size,
array $field
);formatrica_max_image_dimension
Filter the maximum image width/height in pixels for uploaded images. Default 4096.
php
apply_filters(
'formatrica_max_image_dimension',
int $max_dimension,
array $field
);formatrica_allowed_file_types
Filter the allowed MIME types for file uploads. Defaults: JPEG, PNG, GIF, WebP, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV.
php
apply_filters(
'formatrica_allowed_file_types',
array $mime_types,
array $field
);Example:
php
add_filter('formatrica_allowed_file_types', function($types, $field) {
$types[] = 'application/zip';
return $types;
}, 10, 2);Integration Payloads
Each outbound integration passes its request body through a filter before sending. All payload filters share the same signature:
php
apply_filters(
'formatrica_{integration}_payload',
array $body,
array $form,
array $payload,
array $context,
array $field_meta
);Parameters:
$body(array) - The request body about to be sent to the service$form(array) - Form configuration$payload(array) - Submitted field values$context(array) - Submission context$field_meta(array) - Field metadata (labels, types)
formatrica_webhook_payload
Applies to Zapier, Make, and custom webhook requests.
Example:
php
add_filter('formatrica_webhook_payload', function($body, $form) {
$body['site'] = home_url();
return $body;
}, 10, 2);formatrica_slack_payload
Applies to Slack notification messages.
formatrica_mailchimp_payload
Applies to Mailchimp subscribe requests.
formatrica_brevo_payload
Applies to Brevo contact requests.
formatrica_webhook_extra_headers
Filter the extra HTTP headers sent with an outbound webhook request. Default []. Return an associative header => value array; useful for authenticating webhook receivers.
php
apply_filters(
'formatrica_webhook_extra_headers',
array $headers,
string $integration_id,
array $settings
);Email Rendering
formatrica_email_template_style
Filter the notification email's template style before the HTML body is built. Keys: accent (hex colour), font (CSS font stack), show_title (bool), show_metadata (bool), intro_text, footer_text. $options is the form's config options array.
php
apply_filters(
'formatrica_email_template_style',
array $style,
array $options
);formatrica_email_field_display_html
Override the pre-escaped HTML for a single field's value cell in the notification email table. Return null (default) for the standard escaped rendering, or an HTML string to replace it — the returned string is printed as-is, so escape it yourself.
php
apply_filters(
'formatrica_email_field_display_html',
?string $html,
array $field
);Frontend Styling
formatrica_frontend_theme_css
Append extra CSS to the inline frontend theme stylesheet. Default ''.
php
apply_filters(
'formatrica_frontend_theme_css',
string $css
);formatrica_theme_preset_class
Filter the CSS class applied to the form wrapper for the form's theme preset. Default '' (classic look). $preset is the preset id from the form's theme settings.
php
apply_filters(
'formatrica_theme_preset_class',
string $class,
string $preset
);WordPress Post Integration
formatrica_wp_post_args
Filter the wp_insert_post() arguments before the WordPress Post integration creates a post.
php
apply_filters(
'formatrica_wp_post_args',
array $postarr,
array $form,
array $payload,
array $settings,
array $context
);Example:
php
add_filter('formatrica_wp_post_args', function($postarr, $form) {
// Force specific category
if ($form['id'] === 10) {
$postarr['post_category'] = [5, 12];
}
return $postarr;
}, 10, 2);Admin
formatrica_duplicate_title
Filter the title given to a duplicated form. Default: {original title} (Copy).
php
apply_filters(
'formatrica_duplicate_title',
string $title,
array $original
);Support & Contributing
- Documentation: https://docs.nexusplugins.com/products/formatrica
- Support: https://nexusplugins.com/support
Last Updated: July 15, 2026 Plugin Version: 1.1.2