# Hooks

Flowcrafter's actions and filters, from the documentation in its code. A filter changes a value Flowcrafter is about to use; an action runs your code when something happens. Each hook's page has its parameters and examples.

## Filters

| Hook | What it does |
| --- | --- |
| [`flowcrafter_addon_is_compatible`](https://gravitywiz.com/documentation/flowcrafter_addon_is_compatible/) | Filter whether a feed add-on can be used in a workflow's GF Feed step. |
| [`flowcrafter_advertised_node_types`](https://gravitywiz.com/documentation/flowcrafter_advertised_node_types/) | Advertise node types from add-ons that are not currently installed. |
| [`flowcrafter_cancel_actions_page_size`](https://gravitywiz.com/documentation/flowcrafter_cancel_actions_page_size/) | Filter the page size used when cancelling pending actions in bulk. |
| [`flowcrafter_confirmation_loading_text`](https://gravitywiz.com/documentation/flowcrafter_confirmation_loading_text/) | Filter the loading text shown while the workflow is processing |
| [`flowcrafter_confirmation_poll_interval`](https://gravitywiz.com/documentation/flowcrafter_confirmation_poll_interval/) | Filter the polling interval for the confirmation status endpoint. |
| [`flowcrafter_default_entry_source_field`](https://gravitywiz.com/documentation/flowcrafter_default_entry_source_field/) | Filter the default entry_source field definition. |
| [`flowcrafter_default_form_source_field`](https://gravitywiz.com/documentation/flowcrafter_default_form_source_field/) | Filter the default form_source field definition. |
| [`flowcrafter_editor_localize_data`](https://gravitywiz.com/documentation/flowcrafter_editor_localize_data/) | Filter the data localized for the workflow editor script. |
| [`flowcrafter_evaluate_conditional_logic`](https://gravitywiz.com/documentation/flowcrafter_evaluate_conditional_logic/) | Let a plugin own conditional-logic evaluation for a workflow node. |
| [`flowcrafter_feed_node_test_meta_keys`](https://gravitywiz.com/documentation/flowcrafter_feed_node_test_meta_keys/) | Filter the entry meta keys that GFFeedNode should snapshot and restore during test runs. |
| [`flowcrafter_freeze_conditions`](https://gravitywiz.com/documentation/flowcrafter_freeze_conditions/) | Freeze condition data this class does not know about. |
| [`flowcrafter_loop_max_items_per_callback`](https://gravitywiz.com/documentation/flowcrafter_loop_max_items_per_callback/) | Filters how many For Each items one background callback may process. |
| [`flowcrafter_loop_time_budget_seconds`](https://gravitywiz.com/documentation/flowcrafter_loop_time_budget_seconds/) | Filters the soft time limit for one For Each callback. |
| [`flowcrafter_new_workflow_status`](https://gravitywiz.com/documentation/flowcrafter_new_workflow_status/) | Filters the status assigned to a new workflow. |
| [`flowcrafter_node_capabilities`](https://gravitywiz.com/documentation/flowcrafter_node_capabilities/) | Filter the capabilities reported for a node type. |
| [`flowcrafter_node_create_entry_node_entry`](https://gravitywiz.com/documentation/flowcrafter_node_create_entry_node_entry/) | Filter the entry array before it is inserted. |
| [`flowcrafter_node_get_entries_node_entries`](https://gravitywiz.com/documentation/flowcrafter_node_get_entries_node_entries/) | Short-circuits the full-entry query path. |
| [`flowcrafter_node_get_entries_node_entry_ids`](https://gravitywiz.com/documentation/flowcrafter_node_get_entries_node_entry_ids/) | Short-circuit the ID-only query path. |
| [`flowcrafter_node_get_entries_node_lookup_settings`](https://gravitywiz.com/documentation/flowcrafter_node_get_entries_node_lookup_settings/) | Filter lookup settings before direct entry ID shortcuts run. |
| [`flowcrafter_node_get_entries_node_query_args`](https://gravitywiz.com/documentation/flowcrafter_node_get_entries_node_query_args/) | Filter the query arguments before fetching entries. |
| [`flowcrafter_node_http_request_node_allow_internal_hosts`](https://gravitywiz.com/documentation/flowcrafter_node_http_request_node_allow_internal_hosts/) | Filter whether this request may reach internal/private hosts. |
| [`flowcrafter_node_http_request_node_max_timeout`](https://gravitywiz.com/documentation/flowcrafter_node_http_request_node_max_timeout/) | Filter the longest a single HTTP Request node may wait. |
| [`flowcrafter_node_http_request_node_output`](https://gravitywiz.com/documentation/flowcrafter_node_http_request_node_output/) | Filter the node output after receiving the HTTP response. |
| [`flowcrafter_node_http_request_node_request`](https://gravitywiz.com/documentation/flowcrafter_node_http_request_node_request/) | Compose the whole request, instead of patching the pieces. |
| [`flowcrafter_node_http_request_node_request_args`](https://gravitywiz.com/documentation/flowcrafter_node_http_request_node_request_args/) | Filter the request arguments before sending. |
| [`flowcrafter_node_output`](https://gravitywiz.com/documentation/flowcrafter_node_output/) | Generic post-execution filter — fires after every node's execute() |
| [`flowcrafter_php_code_node_capability`](https://gravitywiz.com/documentation/flowcrafter_php_code_node_capability/) | Filters the capability required to manage PHP Code nodes. |
| [`flowcrafter_run_retention_days`](https://gravitywiz.com/documentation/flowcrafter_run_retention_days/) | Filters how many days completed workflow runs are retained. |
| [`flowcrafter_run_stall_threshold`](https://gravitywiz.com/documentation/flowcrafter_run_stall_threshold/) | Filters how long an inactive run may remain open before it is marked failed. |
| [`flowcrafter_schedule_reconcile_interval`](https://gravitywiz.com/documentation/flowcrafter_schedule_reconcile_interval/) | Filter the interval (in seconds) between scheduled trigger reconciliation runs. |
| [`flowcrafter_send_email_max_attachments`](https://gravitywiz.com/documentation/flowcrafter_send_email_max_attachments/) | Filter the maximum number of attachments a Send Email node may carry. |
| [`flowcrafter_send_email_max_file_bytes`](https://gravitywiz.com/documentation/flowcrafter_send_email_max_file_bytes/) | Filter the per-file attachment size cap, in bytes. |
| [`flowcrafter_send_email_max_total_bytes`](https://gravitywiz.com/documentation/flowcrafter_send_email_max_total_bytes/) | Filter the combined attachment size cap, in bytes. |
| [`flowcrafter_templates`](https://gravitywiz.com/documentation/flowcrafter_templates/) | Filter the full list of workflow templates before dev-gating. |
| [`flowcrafter_upsell_config`](https://gravitywiz.com/documentation/flowcrafter_upsell_config/) | Filter the upsell config localized to the editor. |

## Actions

| Hook | What it does |
| --- | --- |
| [`flowcrafter_admin_scripts`](https://gravitywiz.com/documentation/flowcrafter_admin_scripts/) | Fires after the Flowcrafter admin script is enqueued. |
| [`flowcrafter_editor_scripts`](https://gravitywiz.com/documentation/flowcrafter_editor_scripts/) | Fires after the workflow editor script is enqueued and localized. |
| [`flowcrafter_php_code_log`](https://gravitywiz.com/documentation/flowcrafter_php_code_log/) | Fires after a PHP Code node adds a log entry. |
| [`flowcrafter_register_admin_sections`](https://gravitywiz.com/documentation/flowcrafter_register_admin_sections/) | Fires when extensions may register Flowcrafter admin sections. |
| [`flowcrafter_register_node_extension_providers`](https://gravitywiz.com/documentation/flowcrafter_register_node_extension_providers/) | Allow third-party plugins to register extension providers. |
| [`flowcrafter_register_node_extensions`](https://gravitywiz.com/documentation/flowcrafter_register_node_extensions/) | Allow third-party plugins to register extensions for built-in node types. |
| [`flowcrafter_register_nodes`](https://gravitywiz.com/documentation/flowcrafter_register_nodes/) | Allow third-party plugins to register custom node types. |
| [`flowcrafter_run_node_state_write_failed`](https://gravitywiz.com/documentation/flowcrafter_run_node_state_write_failed/) | Fires when a run node-state write fails to persist. |

:::tip
Gravity Forms has hundreds of hooks of its own. The [Gravity Forms Hook Reference](https://gravitywiz.com/gravity-forms-hook-reference/) lists them all.
:::
