Story 13.1.4 Bag Vault Tracking via dataLayer.push()

General info

We are implementing frontend tracking for the Bag Vault multistep submission form using dataLayer.push() events. These events will be picked up by Google Tag Manager (GTM) and tracked in Google Analytics 4 (GA4) to analyze user funnel behavior. Tracking is triggered directly after each key interaction, including form steps, account actions, and final submission. No GTM configuration is required from dev side.

Changes

  • Add dataLayer.push() calls to the Bag Vault form steps

  • Include hashed user data (email and phone) where available

  • No changes to GTM triggers/tags

  • Triggers to fire immediately after action (button clicks)

User story

As a user submitting a bag via the Bag Vault form,

When I progress through steps or submit my form,

Then each interaction is tracked using GA4 events,

And my identity is anonymized where appropriate.

Process flow diagram:

Bildschirmfoto 2025-06-26 um 09.19.34.png

Documents

PDF with this story outline from Lukas Becker (External Marketing Tracking) lukas@lukas-becker.euDeveloper Briefing – Tra…

Developer Briefing – Tra…

Acceptance Criteria

#

Acceptance Criteria

Screenshot Reference

01

Scenario: Add Bag Details
Given the user is on the first step,
When they click “Next Step” after entering bag details,
Then push event saclab_bag_vault_add_bag_details

window.dataLayer.push({
event: 'saclab_bag_vault_add_bag_details'
});

Bildschirmfoto 2025-06-26 um 09.46.33.png

02

Scenario: Additional Info
Given the user completed condition/accessories step,

When they click “Next Step”,

Then push event saclab_bag_vault_add_additional_information

window.dataLayer.push({
event: 'saclab_bag_vault_add_additional_information'
});

Bildschirmfoto 2025-06-26 um 09.46.43.png

03

Scenario: Log In

Given the user is logging in,

When they click “Log In”,

Then push event saclab_bag_vault_step_login

window.dataLayer.push({
event: 'saclab_bag_vault_step_login'
});

Bildschirmfoto 2025-06-26 um 09.46.51.png

04

Scenario: Create Account

Given the user doesn’t have an account,

When they click “Create an Account”,

Then push event saclab_bag_vault_step_create_an_account

window.dataLayer.push({
event: 'saclab_bag_vault_step_create_an_account'
});

Bildschirmfoto 2025-06-26 um 09.46.55.png

05

Scenario: Confirm Email

Given the user is in the email step,

When they click “Confirm your email”,

Then push event saclab_bag_vault_step_confirm_your_email

window.dataLayer.push({
event: 'saclab_bag_vault_step_confirm_your_email'
});

Bildschirmfoto 2025-06-26 um 09.47.00.png

06

Scenario: Sign Up

Given the user is registering,

When they click “Sign up”,

Then push event saclab_bag_vault_step_confirm_your_email WRONG

saclab_bag_vault_sign_up RIGHT

window.dataLayer.push({
event: ‘saclab_bag_vault_step_confirm_your_email’
});

window.dataLayer.push({

event: 'saclab_bag_vault_sign_up' // right

});

Bildschirmfoto 2025-06-26 um 09.47.06.png

07

Scenario: Submit Bag Form

Given the user reviews their bag,

When they click “Submit” and it succeeds,

Then push event saclab_bag_vault_review_your_bag with user_data

window.dataLayer.push({
event: 'saclab_bag_vault_review_your_bag',
user_data: {
customer_id: '123456',
email: 'user@example.com',
email_hash: '6f1ed002ab5595859014ebf0951522d9faaa'
}
});

  • user_data.customer_id: Internal user ID (WordPress)

  • user_data.email: The user’s email address (lowercased and trimmed)

  • user_data.email_hash: SHA256 hash of the email (lowercased and trimmed)

Bildschirmfoto 2025-06-26 um 09.47.10.png

08

Scenario: Submission Success

Given the form is submitted,

When the success screen is displayed,

Then push event saclab_bag_vault_success with user_data incl. hashed phone

window.dataLayer.push({
event: 'saclab_bag_vault_success',
user_data: {
customer_id: '123456',
email: 'user@example.com',
email_hash: '6f1ed002ab5595...',
phone: '+4917612345678',
phone_hash: '5a1c123f4d2e...'
}
});

  • user_data.customer_id: Internal user ID (WordPress)

  • user_data.email: The user’s email address (lowercased and trimmed)

  • user_data.email_hash: SHA256 hash of the email (lowercased and trimmed)

  • user_data.phone: The user’s phone number in E.164 format

  • user_data.phone_hash: SHA256 hash of the trimmed E.164 phone number

Bildschirmfoto 2025-06-26 um 09.47.16.png

Comments

Leave a Reply