-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Description
Create a custom database table for daily aggregated form analytics, implement client-side form view tracking via JavaScript, and hook into the existing submission flow to record submissions.
Technical Context:
- No custom tables exist today, all storage is
wp_options. - Upgrade routines live in
mailchimp_upgrade.phpusingplugins_loaded. - Form views require client-side JS tracking (AJAX call when form loads in browser)
- Frontend JS is enqueued in
mailchimp_sf_load_resources()asmailchimp_sf_main_js - Form submissions are handled by
Mailchimp_Form_Submission::handle_form_submission()inincludes/class-mailchimp-form-submission.php - Block forms embed
mailchimp_sf_list_idin hidden inputs, shortcode/widget forms usemc_list_idoption
Implementation Breakdown
1. Custom Database Table
- Create
includes/class-mailchimp-analytics-data.phpwithMailchimp_Analytics_Dataclass. - Table:
{prefix}_mailchimp_sf_form_analyticswith columns (High level overview, detailed columns to be determined during implementation):id,list_id,form_id(will be used in the future to track multiple forms),event_date,views,submissions; UNIQUE KEY on(list_id, form_id, event_date). - Implement
create_table()viadbDelta(),increment_views(),increment_submissions()usingINSERT ... ON DUPLICATE KEY UPDATE. - Implement
get_analytics_data( $list_id, $start_date, $end_date )andget_totals( $list_id, $start_date, $end_date )query methods. - Add creation to plugin activation hook and migration to
mailchimp_upgrade.php; storemailchimp_sf_analytics_db_versionoption.
2. Client-Side Form View Tracking
- Register REST/AJAX endpoint to track form views (public access, validates list_id).
- Add
data-list-idattribute to form wrappers or hidden input for list_id in form markup. - Add tracking JS in
assets/js/mailchimp.js: find.mc_signup_form[data-list-id]on DOM ready, fire asyncfetch()POST, deduplicate per page load - Pass REST/AJAX URL and nonce via
wp_localize_script()inmailchimp_sf_load_resources()
3. Form Submission Tracking
- Add
do_action( 'mailchimp_sf_form_submission_success', $list_id )inMailchimp_Form_Submission::handle_form_submission()after successful subscription - Hook into this action from
Mailchimp_Analytics_Datato callincrement_submissions() - Ensure it fires for both block and shortcode/widget submissions, do NOT track failed/spam submissions
Acceptance Criteria
- Custom table is created on activation and via upgrade routine for existing installs
- All queries use
$wpdb->prepare() - Form views are recorded via JS when forms load in browser.
- Multiple forms on one page each track their respective list_id
- Successful submissions increment the correct list's daily count
- Failed/spam submissions are not tracked
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels