Skip to main content

PaperForm GTM Event Listener

Track PaperForm form submissions and step changes in Google Tag Manager. Capture form_ID, submission_ID, step data, and fire GA4 events on paperformSubmissionEvent.

paperformformsgtmga4lead-generationmulti-step

Key variable

form_ID

PaperForm

Overview

PaperForm is a versatile form and landing page builder. It dispatches two custom window events: PaperformSubmission for final form completions and PaperformPageChange for multi-step form navigation. This listener captures both events with rich context including form ID, submission ID, step data, and timestamps.

Events fired:

  • paperformSubmissionEvent, successful form submission
  • paperformStepChange, user navigates to next step

Variables: form_ID, submission_ID, paperForm_Step, paperForm_Total_Step, event_timestamp, formData

Why Use This Listener

PaperForm's multi-step tracking capability is unique, you can track funnel progression through form steps, calculate drop-off rates, and optimize individual steps. The submission event also provides a submission_ID for deduplication.

Common Use Cases

  • Track form completion as GA4 conversion event
  • Measure step-by-step drop-off in multi-page PaperForms
  • Capture submission ID for deduplication in GA4
  • Fire Google Ads conversions on form completion
  • Analyze which form steps have the highest abandonment

Installation

html
<!-- GTM Custom HTML Tag: PaperForm Listener -->
<script>
window.addEventListener('PaperformSubmission', function(e) {
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    'event': 'paperformSubmissionEvent',
    'form_ID': e.detail.submission.form_id,
    'submission_ID': e.detail.submission.id,
    'event_timestamp': e.detail.submission.created_at,
    'formData': e.detail.submission.data
  });
});

window.addEventListener('PaperformPageChange', function(e) {
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    'event': 'paperformStepChange',
    'form_ID': e.detail.form_id,
    'paperForm_Step': e.detail.current_page,
    'paperForm_Total_Step': e.detail.total_pages
  });
});
</script>

Fire on: All Pages (Pageview).

Data Layer Output

Submission Event

json
{
  "event": "paperformSubmissionEvent",
  "form_ID": "abc123",
  "submission_ID": "sub_xyz789",
  "event_timestamp": "2024-01-15T10:30:00Z",
  "formData": { "field_1": "value_1" }
}

Step Change Event

json
{
  "event": "paperformStepChange",
  "form_ID": "abc123",
  "paperForm_Step": 2,
  "paperForm_Total_Step": 4
}

Triggers to Create

TriggerEvent Name
CE – PaperForm SubmissionpaperformSubmissionEvent
CE – PaperForm Step ChangepaperformStepChange

Variables to Capture

Variable NameDL KeyExample
DLV – PF Form IDform_ID"abc123"
DLV – PF Submission IDsubmission_ID"sub_xyz789"
DLV – PF SteppaperForm_Step2
DLV – PF Total StepspaperForm_Total_Step4

GA4 Mapping

GA4 EventTriggerParameters
generate_leadPaperForm Submissionform_id, submission_id
form_progressPaperForm Step Changeform_id, step, total_steps

Compute completion percentage in GA4:

javascript
// Custom JS Variable
function() {
  return Math.round(({{DLV - PF Step}} / {{DLV - PF Total Steps}}) * 100) + '%';
}

Debugging

ProblemCauseFix
Events not firingPaperForm using older embedCheck PaperForm embed method
formData concernsContains PIIExclude from push or hash PII fields

Best Practices

  1. Use submission_ID for GA4 event deduplication
  2. Track step changes for funnel analysis in GA4 Explorations
  3. Exclude sensitive formData fields before pushing to dataLayer

Related Listeners