Skip to main content

benecaster_telemetry_payload

Filter Premium

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 →