1. Overview
The AxisPoints Gravity Forms Add-On is a custom WordPress plugin designed to extend Gravity Forms by enabling interactive, image-based data collection through configurable axis points. The plugin is architected to support complex consultation workflows by linking user interactions on an image to Gravity Forms fields and logic.
This document provides a technical deep dive intended for developers, covering architecture, backend implementation, known frontend limitations, root-cause analysis, and final conclusions.
1.1 Architecture Overview
Core Design
The plugin follows a WordPress-native, Gravity Forms–compliant architecture with a strict separation between backend configuration and frontend rendering.
Key Components
1. Custom Plugin Extending Gravity Forms
Built as a standalone WordPress plugin
Hooks into Gravity Forms APIs where supported
Avoids core Gravity Forms overrides
2. Custom Post Type (CPT): AxisPoints Manager
The CPT acts as the configuration hub for each interactive experience.
Each AxisPoints Manager post stores:
Uploaded image (base visual layer)
AxisPoint definitions (XY coordinates)
Mapped Gravity Form fields
Shortcode configuration for frontend rendering
3. Data Storage Model
AxisPoints data is persisted using post meta, structured as JSON objects:
Image metadata
AxisPoint identifiers
XY coordinate values (percentage-based)
Associated Gravity Form field IDs
This approach ensures:
Portability
No custom database tables
Compatibility with WordPress backups and exports
4. Frontend Rendering
Rendering is performed via a shortcode generated in the admin UI
-
Shortcode outputs:
The configured image
Interactive AxisPoint markers
The associated Gravity Form
1.2 Backend Implementation Status
All backend functionality is complete, stable, and production-ready.
Implemented Features
AxisPoints Manager CPT
Registered using register_post_type
Admin-only access
Supports title and custom metaboxes
Image Upload & Preview
Uses WordPress Media Uploader
Supports JPG and PNG formats
Live preview within admin UI
AxisPoint Lifecycle Management
Add AxisPoint via image click
Store normalized XY coordinates
Edit AxisPoint metadata
Delete AxisPoints cleanly
Gravity Form Assignment
Dropdown populated dynamically
Lists only eligible Gravity Forms
Selection stored as post meta
Field Mapping Persistence
AxisPoints mapped to Gravity Form field IDs
Mappings validated on save
Data integrity enforced server-side
Shortcode Generation
Auto-generated shortcode displayed in admin UI
Example:
[axispoints id="123"]Copy-ready for editors
Admin UI Configuration
Custom metabox layout
JavaScript-driven interactions
Nonce-protected AJAX saving
1.3 Frontend Technical Limitation (Known Issue)
Affected Workflow Stage
Issues occur during Step 2: Final Consultation, where Gravity Form fields are dynamically revealed based on prior AxisPoint selections.
Observed Issues
When previously hidden Gravity Form fields are revealed dynamically:
Conditional logic does not trigger
Dependent fields fail to appear
Product pricing calculations break
Order totals do not recalculate
Calculated fields return incorrect or empty values
These issues occur consistently and predictably.
1.4 Root Cause Analysis (Gravity Forms Core Behavior)
1. JavaScript Initialization Timing
Gravity Forms initializes its JavaScript logic once, at page load.
During initialization, Gravity Forms scans:
Conditional logic rules
Calculation formulas
Field dependencies
Pricing and product fields
This scan assumes all relevant fields are:
Present in the DOM
Visible
Available at load time
2. Hidden Fields Limitation
Fields that are:
Hidden using display: none
Not visible at page load
are excluded from Gravity Forms’ initialization process.
When these fields are later revealed:
They are not registered
Conditional logic does not bind
Calculations are not evaluated
3. No Reinitialization API
Gravity Forms does not provide any supported API to:
Reinitialize conditional logic
Rebind dependencies
Recalculate pricing dynamically
Trigger a full form re-scan
Attempts to force reinitialization via custom JavaScript are:
Unsupported
Unstable
Prone to breaking on Gravity Forms updates
4. Gravity Forms Support Confirmation
Official confirmation from Gravity Forms support:
Staged or multi-step flows that hide core fields at load time are unsupported
There is no official workaround
Reinitializing hidden fields is not possible within supported APIs
1.5 Key Constraint Summary
Gravity Forms is architected for:
Static forms
Fields visible at initial page load
Any architecture that:
Hides essential form fields initially
Reveals them dynamically later
will inherently break:
Conditional logic
Field dependencies
Pricing calculations
Totals and product logic
This is a core platform limitation, not an implementation defect.
2. Conclusion
The AxisPoints Add-On backend is fully functional, stable, and correctly implemented.
All admin-side configuration, data persistence, and shortcode rendering behave as designed.
Frontend issues are caused exclusively by Gravity Forms architectural constraints.
No supported workaround exists within Gravity Forms to resolve these limitations.
Any future solution would require:
A different form engine
A fully custom calculation layer
Or a Gravity Forms core enhancement
3. Final Notes for Developers
Avoid hiding Gravity Forms product, calculation, or dependency fields at load time
-
If dynamic workflows are required, consider:
Multiple static forms
Separate submission steps
Custom-built calculation logic outside Gravity Forms
This documentation reflects the current technical reality and aligns with Gravity Forms official support guidance.