benecaster_telemetry_payload
Filters the COMPLETE payload sent on the daily POST /validate ping to the license server — not only the nested telemetry sub-array, the whole request body, including site_url, plugin_version, wp_version, php_version, subscriber_count, total_token_count, follower_count, over_limit_token_count, is_staging, and the nested telemetry object. Intended for appending custom data points or adjusting opt-in analytics fields — not for removing or altering enforcement fields.
Protected fields — cannot be changed by this filter: plugin_version, wp_version, php_version, and subscriber_count (all top-level), plus telemetry.show_count and telemetry.active_bridge_slugs (the last only when present pre-filter — it is opt-in gated and legitimately absent for a site that has not opted into telemetry). These six are re-asserted to their freshly-computed values immediately after this filter runs, regardless of what the callback returns for those keys — a callback may still add new keys or remove or change any other key freely. Removing or altering a protected field in your own callback has no effect and is not an error; it is simply overwritten.
A non-array return from this filter is discarded entirely and the pre-filter payload is used as-is, rather than risking a malformed or empty body reaching the license server.
Deliberately not protected: telemetry.core_files_modified, telemetry.core_modified_file_count, and telemetry.core_modified_files — these are detection-only core-file-integrity fields with no enforcement consequence, so a callback able to blank them gains nothing.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
$payload |
array |
— | The complete outer /validate request body, including the nested telemetry sub-array |
Returns:
array
Example
add_filter( 'benecaster_telemetry_payload', function( array $payload ): array {
// Append a custom data point for the license server dashboard.
$payload['active_integrations'] = count( get_option( 'my_active_integrations', [] ) );
return $payload;
} );
Need this built rather than just documented? See our services →