Skip to content

Separate normalized form actions from conversion tracking and frontend effects #1358

Description

@danieliser

Outcome

Let extensions action a normalized form success while independently suppressing or allowing Popup Maker conversion tracking and frontend effects.

Cross-repository parent: https://github.com/PopupMaker/Pro/issues/132

Problem

The current processing guard conflates AJAX/REST transport constraints with whether a submission may be captured, actioned, tracked as a conversion, persisted, or allowed to trigger frontend behavior. Pro needs to run server-side actions without fabricating conversions or requiring browser execution.

Scope

  • Define independent decisions/phases for:
    • normalize/capture;
    • dispatch extension actions;
    • conversion tracking;
    • optional storage;
    • frontend effects.
  • Preserve existing behavior by default.
  • Add narrowly named filters/actions rather than embedding Pro concepts.
  • Make repeated delivery of the same normalized event idempotent for Core-owned tracking.
  • Document server-only, AJAX, REST, redirect, and browser-success behavior.

Out of scope

  • Pro action implementations.
  • Submission tables or profile storage.
  • Provider field schemas.
  • Lead Magnet claims or delivery.
  • Changing analytics definitions.

Acceptance criteria

  • An extension can process a valid form submission while explicitly bypassing conversion tracking.
  • Conversion tracking can run without requiring storage.
  • A browser event cannot cause the same Core conversion to count twice.
  • Existing Analytics and Split Testing attribution remains unchanged unless an extension opts into a new seam.
  • Tests cover server callbacks, frontend callbacks, duplicate events, and opt-out combinations.

Expected PR

One Core PR after the normalized context contract.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions