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.
Key variable
form_IDPaperForm
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 submissionpaperformStepChange, 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
<!-- 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
{
"event": "paperformSubmissionEvent",
"form_ID": "abc123",
"submission_ID": "sub_xyz789",
"event_timestamp": "2024-01-15T10:30:00Z",
"formData": { "field_1": "value_1" }
}Step Change Event
{
"event": "paperformStepChange",
"form_ID": "abc123",
"paperForm_Step": 2,
"paperForm_Total_Step": 4
}Triggers to Create
| Trigger | Event Name |
|---|---|
| CE – PaperForm Submission | paperformSubmissionEvent |
| CE – PaperForm Step Change | paperformStepChange |
Variables to Capture
| Variable Name | DL Key | Example |
|---|---|---|
| DLV – PF Form ID | form_ID | "abc123" |
| DLV – PF Submission ID | submission_ID | "sub_xyz789" |
| DLV – PF Step | paperForm_Step | 2 |
| DLV – PF Total Steps | paperForm_Total_Step | 4 |
GA4 Mapping
| GA4 Event | Trigger | Parameters |
|---|---|---|
generate_lead | PaperForm Submission | form_id, submission_id |
form_progress | PaperForm Step Change | form_id, step, total_steps |
Compute completion percentage in GA4:
// Custom JS Variable
function() {
return Math.round(({{DLV - PF Step}} / {{DLV - PF Total Steps}}) * 100) + '%';
}Debugging
| Problem | Cause | Fix |
|---|---|---|
| Events not firing | PaperForm using older embed | Check PaperForm embed method |
formData concerns | Contains PII | Exclude from push or hash PII fields |
Best Practices
- Use
submission_IDfor GA4 event deduplication - Track step changes for funnel analysis in GA4 Explorations
- Exclude sensitive
formDatafields before pushing to dataLayer