PRO endpoint for retrieving form performance metrics.
GET /formforge/v1/analytics/{form_id}
Get analytics stats for a form. Requires manage_options and PRO license. Returns aggregate view count, persisted submission count, and conversion rate for the last 30 days. views are counted from wp_formforge_analytics; submissions are counted from wp_formforge_submissions, not from raw submit analytics events. The returned/displayed conversion rate is capped at 100 so imported or partially tracked historical data cannot produce impossible rates above 100%.
bash
curl -s -u "admin:XXXX XXXX XXXX XXXX"
https://example.com/wp-json/formforge/v1/analytics/1json
{
"views": 1250,
"submissions": 87,
"conversion_rate": 6.96
}json
{
"code": "pro_only",
"message": "Analytics requires Pro plan.",
"data": { "status": 403 }
}Custom Period Queries via PHP
php
// Get stats for the last 7 days
$stats = FORMFORGE_Analytics::instance()->get_stats( $form_id, 7 );
// Last 90 days
$stats = FORMFORGE_Analytics::instance()->get_stats( $form_id, 90 );Daily Breakdown for Charting
sql
SELECT
DATE(created_at) AS day,
event_type,
COUNT(*) AS count
FROM wp_formforge_analytics
WHERE form_id = 1
AND created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY day, event_type
ORDER BY day DESC;Building a Custom Analytics Dashboard Widget
php
add_action( 'wp_dashboard_setup', function() {
wp_add_dashboard_widget(
'formforge_analytics_widget',
'Form Forge Analytics',
function() {
if ( ! class_exists( 'FORMFORGE_Analytics' ) ) {
echo '<p>Form Forge PRO required.</p>';
return;
}
$forms = FORMFORGE_Form_Builder::instance()->get_all();
echo '<table style="width:100%;"><tr><th>Form</th><th>Views</th>'
. '<th>Submissions</th><th>Rate</th></tr>';
foreach ( $forms as $form ) {
$stats = FORMFORGE_Analytics::instance()->get_stats( $form->id, 30 );
printf(
'<tr><td>%s</td><td>%d</td><td>%d</td><td>%.1f%%</td></tr>',
esc_html( $form->title ),
$stats['views'],
$stats['submissions'],
$stats['conversion_rate']
);
}
echo '</table>';
}
);
} );—