Developer Documentation

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.