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.