Campaign Pixel: Install & Troubleshooting Storyboard

Pick a tab. Each is a complete walkthrough video.
This video covers a Standard site, such as WordPress or Webflow. Total run time about 3:10. Every install video shares the same intro, the "Create your pixel" and "Get your pixel" steps, and the verify-and-go-live ending.
10:00-0:06~6sHook

VOThis is your quick guide to installing the PULSE campaign pixel. Pick your platform above, and let’s set it up.

On-screen caption: PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL

PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL
20:06-0:38~32sCreate your pixel: choose your goal

VOStart by creating the right pixel for your goal. In PULSE, open "Pixels" and click "New Pixel". Name it, set the "Creation Type" to "Code" or "Image", then pick your "Type". For remarketing, choose "Retargeting" to capture visitors and retarget them. For a conversion, choose "Conversion" and pick a "Conversion Category", like Purchase Funnel. To track order value, add it under "Passback" as key-value pairs: "Transaction ID" and "Order Value", which map to your site dataLayer. For lead-gen conversions, leave those blank. Click "Submit", and you are ready to pick up your pixel and implement it.

On-screen caption: PULSE > "Pixels" > "New Pixel" · "Type": "Retargeting" / "Conversion" (+ "Conversion Category") · optional "Passback": "Transaction ID", "Order Value" · lead gen = leave blank

1PULSE > "Pixels" > "New Pixel"
PULSE > "Pixels" > "New Pixel"
2"Type": "Retargeting"
"Type": "Retargeting"
3"Type": "Conversion" + "Conversion Category"
"Type": "Conversion" + "Conversion Category"
4"Passback": "Transaction ID" / "Order Value"
"Passback": "Transaction ID" / "Order Value"
What goes in Transaction ID and Order Value
  • These "Passback" fields are optional, for conversion pixels that track order value.
  • They map to your site dataLayer values (transaction_id and order_value) and are populated dynamically at fire time, for example via GTM variables.
  • For lead-gen conversions, leave them blank, no dataLayers needed.
Finding your dataLayer values
  • In Chrome, open DevTools (F12), go to the Console, type dataLayer, and inspect the values after a completed purchase. The Troubleshooting tab covers this in detail.
30:38-0:58~20sGet your pixel from PULSE

VOFirst, grab your pixel. In PULSE, open "Activate", then "Pixels", and click "Get pixel code". Click "Copy" to copy it to your clipboard. Grab the site-visit pixel for remarketing, and the conversion pixel for actions like form fills or purchases.

On-screen caption: PULSE > "Activate" > "Pixels" > "Get pixel code" > "Copy"

1PULSE > Pixels: "Get pixel code"
PULSE > Pixels: "Get pixel code"
2Click "Copy"
Click "Copy"
40:58-1:34~36sGoogle Tag Manager: website visits (recommended)

VOFor the recommended method, use Google Tag Manager. Click "New Tag", open "Tag Configuration", and choose "Custom HTML", then "Paste" your pixel code and "Save". For the trigger, pick "All Pages" for the whole site, or "Some Pages" for specific URLs. Then give the tag a clear name.

On-screen caption: GTM > "New Tag" > "Tag Configuration" > "Custom HTML" > "Paste" > "Save" > trigger ("All Pages" / "Some Pages") > name

1GTM > "New Tag"
GTM > "New Tag"
2Open "Tag Configuration"
Open "Tag Configuration"
3Choose "Custom HTML"
Choose "Custom HTML"
4"Paste", then "Save"
"Paste", then "Save"
5Trigger: "All Pages" / "Some Pages"
Trigger: "All Pages" / "Some Pages"
6Name the tag
Name the tag
51:34-2:04~30sGoogle Tag Manager: website conversions

VOConversions work the same way. Add another "Custom HTML" tag and "Paste" your conversion pixel code, then "Save". This time, set the trigger to "Form Submission" and choose "All Forms", or "Some Forms" for specific forms. Tracking a thank-you page instead? Use a "Page View" trigger that fires when the URL matches your thank-you page. Then give the tag a clear name.

On-screen caption: "Custom HTML" > "Paste" > "Save" > "Form Submission" ("All Forms" / "Some Forms") or thank-you "Page View" > name

1"Custom HTML"
"Custom HTML"
2"Paste" conversion pixel
"Paste" conversion pixel
3Trigger: "Form Submission"
Trigger: "Form Submission"
4"All Forms" / "Some Forms"
"All Forms" / "Some Forms"
5Or: thank-you "Page View"
Or: thank-you "Page View"
6Name the tag
Name the tag
62:04-2:14~10sSubmit and publish

VOOnce your tags are ready, click "Submit", then "Publish" to push everything live to your site.

On-screen caption: "Submit" > version name > "Publish"

1"Submit" changes
"Submit" changes
2"Publish"
"Publish"
72:14-2:42~28sAdd the pixel directly in your code (image tracker)

VOPrefer to add the pixel straight to your code? In PULSE, choose "Get pixel" as an image tracker. For site visits, "Paste" it into the page head tag. For conversions, "Paste" it on your thank-you page, or wherever the action happens, like a button click. Then "Save" and "Publish".

On-screen caption: PULSE image tracker (site visit / conversion) > "Paste" in head / thank-you / button event > "Save"

1Image tracker: site visit
Image tracker: site visit
2Image tracker: conversion
Image tracker: conversion
Heads-up: pasting directly on the page
  • Pasting the pixel directly on the page is an ad call, so it can affect page speed alongside any other ad calls already on the page.
  • This is a known factor, so test this format before you rely on it, as it can have implications for the page.
82:42-3:10~28sVerify, then go live

VOBefore you go live, open the PULSE Pixels dashboard and check your pixels are firing. Then run a few test purchases or lead-gen engagements in an incognito window, and confirm the data is registering in the dataLayer. If everything works as expected, you are ready to go live. You only need to contact us if you are on managed services, or self-serve with a technical issue. In that case, email greenbergadops@gmail.com so we can confirm traffic.

On-screen caption: Check dashboard fires. Test in incognito. Confirm the dataLayer. Go live. Contact greenbergadops@gmail.com only for managed services or a technical issue.

1PULSE Pixels dashboard: load numbers
PULSE Pixels dashboard: load numbers
Give it a little time
  • Pixel fire data can take up to 72 hours to appear on the dashboard console, so please be patient before assuming something is wrong.
This video covers HubSpot. Total run time about 2:26. Every install video shares the same intro, the "Create your pixel" and "Get your pixel" steps, and the verify-and-go-live ending.
10:00-0:06~6sHook

VOThis is your quick guide to installing the PULSE campaign pixel. Pick your platform above, and let’s set it up.

On-screen caption: PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL

PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL
20:06-0:38~32sCreate your pixel: choose your goal

VOStart by creating the right pixel for your goal. In PULSE, open "Pixels" and click "New Pixel". Name it, set the "Creation Type" to "Code" or "Image", then pick your "Type". For remarketing, choose "Retargeting" to capture visitors and retarget them. For a conversion, choose "Conversion" and pick a "Conversion Category", like Purchase Funnel. To track order value, add it under "Passback" as key-value pairs: "Transaction ID" and "Order Value", which map to your site dataLayer. For lead-gen conversions, leave those blank. Click "Submit", and you are ready to pick up your pixel and implement it.

On-screen caption: PULSE > "Pixels" > "New Pixel" · "Type": "Retargeting" / "Conversion" (+ "Conversion Category") · optional "Passback": "Transaction ID", "Order Value" · lead gen = leave blank

1PULSE > "Pixels" > "New Pixel"
PULSE > "Pixels" > "New Pixel"
2"Type": "Retargeting"
"Type": "Retargeting"
3"Type": "Conversion" + "Conversion Category"
"Type": "Conversion" + "Conversion Category"
4"Passback": "Transaction ID" / "Order Value"
"Passback": "Transaction ID" / "Order Value"
What goes in Transaction ID and Order Value
  • These "Passback" fields are optional, for conversion pixels that track order value.
  • They map to your site dataLayer values (transaction_id and order_value) and are populated dynamically at fire time, for example via GTM variables.
  • For lead-gen conversions, leave them blank, no dataLayers needed.
Finding your dataLayer values
  • In Chrome, open DevTools (F12), go to the Console, type dataLayer, and inspect the values after a completed purchase. The Troubleshooting tab covers this in detail.
30:38-0:58~20sGet your pixel from PULSE

VOFirst, grab your pixel. In PULSE, open "Activate", then "Pixels", and click "Get pixel code". Click "Copy" to copy it to your clipboard. Grab the site-visit pixel for remarketing, and the conversion pixel for actions like form fills or purchases.

On-screen caption: PULSE > "Activate" > "Pixels" > "Get pixel code" > "Copy"

1PULSE > Pixels: "Get pixel code"
PULSE > Pixels: "Get pixel code"
2Click "Copy"
Click "Copy"
40:58-1:28~30sHubSpot: tracking code and pixel placement

VOOn HubSpot, start with the site-wide tracking code under "Settings", "Website", "Pages". It has to be on every page. Then, under "Settings", "Website", "Pages", open "Site Header and Footer HTML". Put your remarketing pixel in the header so it fires everywhere, and your conversion pixel in the thank-you page footer.

On-screen caption: "Settings" > "Website" > "Pages" > tracking code · "Site Header / Footer HTML"

1"Settings" > tracking code
"Settings" > tracking code
2"Site Header / Footer HTML"
"Site Header / Footer HTML"
51:28-1:58~30sHubSpot: form redirect, thank-you page and QA

VOTo send a form to a thank-you page, go to "Forms", "Lead Capture", edit the form, open "Options", "Set Action", choose your thank-you page, and "Publish". For the thank-you page itself, open it under "Pages", then "Settings", "Advanced", and "Paste" your conversion pixel into the "Footer HTML". To check it is working, use HubSpot form analytics, test in an incognito window with pixel-helper tools, and review the HubSpot Ads dashboard.

On-screen caption: Form > "Options" > "Set Action" > "Choose Page" · thank-you page > "Settings" > "Advanced" > "Footer HTML" · QA

Form configuration (redirect)
  • "Forms" > "Marketing" (or "Content") > "Lead Capture" > "Forms"
  • Edit Form > "Options" > "Set Action" > "Choose Page" > Thank You Page / External URL > "Publish"
Thank-you page HTML (pixel placement)
  • "Pages" > "Content" > "Landing / Website Pages" > Thank You Page
  • "Settings" > "Advanced" > "Paste" conversion pixel into "Footer HTML" > "Publish"
Troubleshooting
  • Use HubSpot form analytics to confirm submissions are tracked
  • Test in an incognito browser with pixel-helper tools
  • Validate reporting in the HubSpot Ads dashboard
61:58-2:26~28sVerify, then go live

VOBefore you go live, open the PULSE Pixels dashboard and check your pixels are firing. Then run a few test purchases or lead-gen engagements in an incognito window, and confirm the data is registering in the dataLayer. If everything works as expected, you are ready to go live. You only need to contact us if you are on managed services, or self-serve with a technical issue. In that case, email greenbergadops@gmail.com so we can confirm traffic.

On-screen caption: Check dashboard fires. Test in incognito. Confirm the dataLayer. Go live. Contact greenbergadops@gmail.com only for managed services or a technical issue.

1PULSE Pixels dashboard: load numbers
PULSE Pixels dashboard: load numbers
Give it a little time
  • Pixel fire data can take up to 72 hours to appear on the dashboard console, so please be patient before assuming something is wrong.
This video covers Shopify Plus. Total run time about 2:50. Every install video shares the same intro, the "Create your pixel" and "Get your pixel" steps, and the verify-and-go-live ending.
10:00-0:06~6sHook

VOThis is your quick guide to installing the PULSE campaign pixel. Pick your platform above, and let’s set it up.

On-screen caption: PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL

PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL
20:06-0:38~32sCreate your pixel: choose your goal

VOStart by creating the right pixel for your goal. In PULSE, open "Pixels" and click "New Pixel". Name it, set the "Creation Type" to "Code" or "Image", then pick your "Type". For remarketing, choose "Retargeting" to capture visitors and retarget them. For a conversion, choose "Conversion" and pick a "Conversion Category", like Purchase Funnel. To track order value, add it under "Passback" as key-value pairs: "Transaction ID" and "Order Value", which map to your site dataLayer. For lead-gen conversions, leave those blank. Click "Submit", and you are ready to pick up your pixel and implement it.

On-screen caption: PULSE > "Pixels" > "New Pixel" · "Type": "Retargeting" / "Conversion" (+ "Conversion Category") · optional "Passback": "Transaction ID", "Order Value" · lead gen = leave blank

1PULSE > "Pixels" > "New Pixel"
PULSE > "Pixels" > "New Pixel"
2"Type": "Retargeting"
"Type": "Retargeting"
3"Type": "Conversion" + "Conversion Category"
"Type": "Conversion" + "Conversion Category"
4"Passback": "Transaction ID" / "Order Value"
"Passback": "Transaction ID" / "Order Value"
What goes in Transaction ID and Order Value
  • These "Passback" fields are optional, for conversion pixels that track order value.
  • They map to your site dataLayer values (transaction_id and order_value) and are populated dynamically at fire time, for example via GTM variables.
  • For lead-gen conversions, leave them blank, no dataLayers needed.
Finding your dataLayer values
  • In Chrome, open DevTools (F12), go to the Console, type dataLayer, and inspect the values after a completed purchase. The Troubleshooting tab covers this in detail.
30:38-0:58~20sGet your pixel from PULSE

VOFirst, grab your pixel. In PULSE, open "Activate", then "Pixels", and click "Get pixel code". Click "Copy" to copy it to your clipboard. Grab the site-visit pixel for remarketing, and the conversion pixel for actions like form fills or purchases.

On-screen caption: PULSE > "Activate" > "Pixels" > "Get pixel code" > "Copy"

1PULSE > Pixels: "Get pixel code"
PULSE > Pixels: "Get pixel code"
2Click "Copy"
Click "Copy"
40:58-1:40~42sShopify: remarketing, product and cart

VOOn Shopify, go to "Online Store", "Themes", "Edit code", then "Paste" your remarketing pixel into theme.liquid, in the head, for site-wide tracking. For product pages, open product-information.liquid and push the product details, ID, name, and price, into the dataLayer, like this. For add to cart, you work in main-cart.liquid. "Save" as you go.

On-screen caption: "Online Store" > "Themes" > "Edit code" · theme.liquid head · product-information.liquid (+ dataLayer) · main-cart.liquid

1"Online Store" > "Themes" > "Edit code"
"Online Store" > "Themes" > "Edit code"
2theme.liquid head
theme.liquid head
3product-information.liquid
product-information.liquid
4main-cart.liquid
main-cart.liquid

product-information.liquid: push product details to the dataLayer

<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: "product_view",
  product_id: "{{ product.id }}",
  product_name: "{{ product.title }}",
  product_price: "{{ product.price | money_without_currency }}"
});
</script>
51:40-2:04~24sShopify Plus: checkout via Customer Events

VOFor checkout on Shopify Plus, do not edit the theme. Go to "Settings", "Customer Events", and "Add custom pixel", then "Paste" your conversion pixel, "Save", and "Publish". This is the supported method for Shopify Plus. You can also subscribe to your own custom events, like an email signup, and push them to the dataLayer.

On-screen caption: "Settings" > "Customer Events" > "Add custom pixel" > "Paste" > "Save" · optional custom events

1"Settings" > "Customer Events" > "Add custom pixel"
"Settings" > "Customer Events" > "Add custom pixel"

Optional: subscribe to a custom event (e.g. an email signup)

analytics.subscribe("special_email_signup", event => {
  window.dataLayer.push({
    event: "emailSignUp",
    emailCampaignId: event.customData.email_campaign_id
  });
});
62:04-2:22~18sShopify: testing and references

VOBefore you publish, test on a duplicate theme, use Shopify theme preview, check the Customer Events activity log, run a test order, and give it twenty-four hours. The guide also links Shopify Custom Pixels and GTM-as-a-custom-pixel docs if you need more detail.

On-screen caption: Duplicate theme · theme preview · Customer Events activity log · test order · 24 hours

Troubleshooting / before publishing
  • Test on a duplicate theme before going live
  • Use Shopify theme preview
  • Check the Customer Events activity log
  • Run a test order, then wait 24 hours
Reference documentation
  • Shopify Custom Pixels documentation
  • GTM as a Custom Pixel documentation
72:22-2:50~28sVerify, then go live

VOBefore you go live, open the PULSE Pixels dashboard and check your pixels are firing. Then run a few test purchases or lead-gen engagements in an incognito window, and confirm the data is registering in the dataLayer. If everything works as expected, you are ready to go live. You only need to contact us if you are on managed services, or self-serve with a technical issue. In that case, email greenbergadops@gmail.com so we can confirm traffic.

On-screen caption: Check dashboard fires. Test in incognito. Confirm the dataLayer. Go live. Contact greenbergadops@gmail.com only for managed services or a technical issue.

1PULSE Pixels dashboard: load numbers
PULSE Pixels dashboard: load numbers
Give it a little time
  • Pixel fire data can take up to 72 hours to appear on the dashboard console, so please be patient before assuming something is wrong.
This video covers Shopify Liquid. Total run time about 3:10. Every install video shares the same intro, the "Create your pixel" and "Get your pixel" steps, and the verify-and-go-live ending.
10:00-0:06~6sHook

VOThis is your quick guide to installing the PULSE campaign pixel. Pick your platform above, and let’s set it up.

On-screen caption: PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL

PULSE DSP - INSTALL & VERIFY YOUR CAMPAIGN PIXEL
20:06-0:38~32sCreate your pixel: choose your goal

VOStart by creating the right pixel for your goal. In PULSE, open "Pixels" and click "New Pixel". Name it, set the "Creation Type" to "Code" or "Image", then pick your "Type". For remarketing, choose "Retargeting" to capture visitors and retarget them. For a conversion, choose "Conversion" and pick a "Conversion Category", like Purchase Funnel. To track order value, add it under "Passback" as key-value pairs: "Transaction ID" and "Order Value", which map to your site dataLayer. For lead-gen conversions, leave those blank. Click "Submit", and you are ready to pick up your pixel and implement it.

On-screen caption: PULSE > "Pixels" > "New Pixel" · "Type": "Retargeting" / "Conversion" (+ "Conversion Category") · optional "Passback": "Transaction ID", "Order Value" · lead gen = leave blank

1PULSE > "Pixels" > "New Pixel"
PULSE > "Pixels" > "New Pixel"
2"Type": "Retargeting"
"Type": "Retargeting"
3"Type": "Conversion" + "Conversion Category"
"Type": "Conversion" + "Conversion Category"
4"Passback": "Transaction ID" / "Order Value"
"Passback": "Transaction ID" / "Order Value"
What goes in Transaction ID and Order Value
  • These "Passback" fields are optional, for conversion pixels that track order value.
  • They map to your site dataLayer values (transaction_id and order_value) and are populated dynamically at fire time, for example via GTM variables.
  • For lead-gen conversions, leave them blank, no dataLayers needed.
Finding your dataLayer values
  • In Chrome, open DevTools (F12), go to the Console, type dataLayer, and inspect the values after a completed purchase. The Troubleshooting tab covers this in detail.
30:38-0:58~20sGet your pixel from PULSE

VOFirst, grab your pixel. In PULSE, open "Activate", then "Pixels", and click "Get pixel code". Click "Copy" to copy it to your clipboard. Grab the site-visit pixel for remarketing, and the conversion pixel for actions like form fills or purchases.

On-screen caption: PULSE > "Activate" > "Pixels" > "Get pixel code" > "Copy"

1PULSE > Pixels: "Get pixel code"
PULSE > Pixels: "Get pixel code"
2Click "Copy"
Click "Copy"
40:58-1:40~42sShopify Liquid: GTM as a custom pixel (steps 1 to 8)

VOYou can also run GTM itself through Shopify. You need admin access and your GTM container ID. Go to "Settings", "Customer Events", open the "Custom Pixels" tab, and "Add custom pixel". Name it "GTM Container". "Clear" the placeholder code, "Paste" in the full GTM snippet, and swap in your own container ID. Then "Save", and "Connect" to switch it on.

On-screen caption: "Customer Events" > "Custom Pixels" > "Add custom pixel" > name > "Clear" > "Paste" GTM code > replace ID > "Save" > "Connect"

1Step 1: "Customer Events"
Step 1: "Customer Events"
2Step 2: "Custom Pixels" tab
Step 2: "Custom Pixels" tab
3Step 3: name "GTM Container"
Step 3: name "GTM Container"
4Step 4: "Clear" placeholder, "Paste" GTM code
Step 4: "Clear" placeholder, "Paste" GTM code
5Step 8: "Save"
Step 8: "Save"
6then "Connect"
then "Connect"
51:40-2:02~22sShopify Liquid: variables and validation

VOWhen you replace the variables, the one you must change is your GTM container ID. You may also need to update the transaction ID, revenue, and currency to match your store. After a test order, confirm those values, plus product IDs if you mapped them, are landing in the dataLayer.

On-screen caption: Replace container ID (and transaction ID / revenue / currency) · validate the dataLayer after checkout

Step 6: replace the required variables
  • Required: your own GTM container ID
  • You may also need to change transaction ID, revenue, and currency to match the store (full table in the guide)
Validation after checkout
  • transactionId, revenue, and currency populate the dataLayer
  • productIds only if you mapped them
62:02-2:20~18sShopify Liquid: product IDs and testing

VOOptionally, un-comment the product-ID lines to map product IDs. When you test, use a low-cost product and a dedicated discount code, give the team a heads-up before placing test orders, confirm the values come through, and refund the orders afterward.

On-screen caption: Optional: map product IDs · test with a low-cost product + discount code · refund test orders

Step 7: product IDs (optional)
  • Un-comment the product-ID lines to map product IDs into the dataLayer
Testing best practices
  • Use a low-cost product; create a dedicated test discount code
  • Notify the team before placing test orders
  • Confirm transactionId, revenue, currency; refund or cancel test orders after
72:20-2:42~22sQA: common issues

VOA few common issues to check. No transaction ID usually means a variable-mapping problem. If GTM is not loading in checkout, use "Customer Events". Missing revenue or currency? Check your totals. Duplicate conversions usually mean a pixel is installed twice. And if it fires in GTM but does not report, check your triggers, IDs, deduplication, and attribution.

On-screen caption: No transaction ID > mapping · GTM missing > Customer Events · revenue/currency > totals · duplicates > double install · not reporting > triggers/IDs

  • No transaction ID > variable mapping
  • GTM missing in checkout > use Customer Events
  • Revenue / currency missing > check totals
  • Duplicate conversions > pixel installed twice
  • Fires in GTM, not reporting > triggers, IDs, dedup, attribution
82:42-3:10~28sVerify, then go live

VOBefore you go live, open the PULSE Pixels dashboard and check your pixels are firing. Then run a few test purchases or lead-gen engagements in an incognito window, and confirm the data is registering in the dataLayer. If everything works as expected, you are ready to go live. You only need to contact us if you are on managed services, or self-serve with a technical issue. In that case, email greenbergadops@gmail.com so we can confirm traffic.

On-screen caption: Check dashboard fires. Test in incognito. Confirm the dataLayer. Go live. Contact greenbergadops@gmail.com only for managed services or a technical issue.

1PULSE Pixels dashboard: load numbers
PULSE Pixels dashboard: load numbers
Give it a little time
  • Pixel fire data can take up to 72 hours to appear on the dashboard console, so please be patient before assuming something is wrong.
A standalone troubleshooting walkthrough of the PULSE Pixel Troubleshooting Guide. Total run time about 2:48.
10:00-0:06~6sHook

VOPixels not behaving the way you expect? This walkthrough helps you diagnose and validate your remarketing pixels, conversion pixels, and dataLayer, step by step.

On-screen caption: PULSE DSP: PIXEL TROUBLESHOOTING

PULSE DSP: PIXEL TROUBLESHOOTING
20:06-0:46~40sSection 1: Remarketing pixels on page load

VORemarketing pixels fire on every page load. First, run the checks. Confirm the correct Pixel or Tag ID is in your GTM container. The trigger should be "All Pages" or "Page View". The base pixel must fire before any event tags. If consent management is on, confirm the pixel fires after consent. And make sure the pixel is implemented only once, with no duplicates.

On-screen caption: Checks: Pixel/Tag ID · trigger "All Pages" / "Page View" · base fires first · post-consent · no duplicates

1GTM tag: Pixel / Tag ID
GTM tag: Pixel / Tag ID
2Trigger: "All Pages" / "Page View"
Trigger: "All Pages" / "Page View"
3Tag firing order
Tag firing order
4Preview: pixel fired on load
Preview: pixel fired on load
What to check first
  • Pixel ID: the correct Pixel / Tag ID is in the GTM container.
  • Trigger type: set to "All Pages" or "Page View".
  • Tag firing order: the base pixel fires before any event tags.
  • Consent mode: if enabled, the pixel fires post-consent.
  • Duplicate tags: implemented once only.
Common issues and fixes
  • Pixel not firing: confirm the GTM snippet is on the page (head and body) and the tag is published, not just saved.
  • Firing multiple times: remove duplicate hard-coded pixels and any extra GTM containers.
  • Wrong pixel ID: the GTM tag ID must match the ad platform ID exactly (case-sensitive).
  • Consent blocking: verify the pixel is allowed to fire after consent is granted.
30:46-1:24~38sSection 2: Conversion pixels: button clicks and thank-you pages

VOConversion pixels track specific actions. For a button click, in GTM create a new trigger with type "Click - All Elements", or "Just Links" for anchors, and enable the built-in Click variables you need. For a thank-you page, create a "Page View" trigger that fires only on your confirmation page, where "Page URL" contains slash thank-you. Name your triggers clearly, attach your conversion tag, and validate in Preview.

On-screen caption: Click: "Click - All Elements" + Click variables · Thank-you: "Page View" where "Page URL" contains /thank-you · validate in Preview

1"Click - All Elements" trigger
"Click - All Elements" trigger
2Enable Click variables
Enable Click variables
3"Page View" thank-you trigger
"Page View" thank-you trigger
Button click conversions (in GTM)
  • Triggers > New > Trigger type: "Click - All Elements" (or "Just Links" for anchor tags).
  • In Variables, enable the built-in Click variables you need (Click ID, Click Classes, Click Text, Click URL).
  • Attach a conversion tag and fire on the specific button.
  • Name the trigger clearly, for example PULSE - CTA Button - Sign Up.
  • To capture which button was clicked, use the Click Text or Click Element variable.
Thank-you page conversions (in GTM)
  • Triggers > New > Trigger type: "Page View".
  • Fire on the confirmation page only: "Page URL" contains /thank-you (or the exact path).
  • Name it clearly, for example Page View - Thank You Page, then attach the conversion tag.
  • Optionally pass dynamic values like order_value and order_id using Data Layer Variables.
41:24-2:04~40sSection 2: Event-based conversions (lead form and purchase)

VOFor single-page apps, embedded forms, and checkout flows, GTM can listen for custom events pushed to the dataLayer. Have the form or checkout push an event on completion. In GTM, create a "Custom Event" trigger with the event name, like lead_form_submit or purchase. Create the conversion tag, attach the trigger, map your dataLayer variables like transaction_id, value, and currency, then validate in Preview and publish.

On-screen caption: "Custom Event" trigger (lead_form_submit / purchase) · map transaction_id, value, currency · validate in Preview, then publish

1"Custom Event": lead_form_submit
"Custom Event": lead_form_submit
2"Custom Event": purchase (+ variables)
"Custom Event": purchase (+ variables)
3Preview: conversion fires
Preview: conversion fires

Purchase event pushed to the dataLayer

dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: '822321203456',
    value: 149.99,
    currency: 'USD',
    items: [{ item_name: 'new product', item_id: 'SKU-001', price: 149.99, quantity: 1 }]
  }
});
Lead form fill
  • Have the form provider or developer push a dataLayer event on submission.
  • GTM > Triggers > New > "Custom Event" > Event name: lead_form_submit.
  • Create the conversion tag (e.g. Meta Lead) and attach the trigger; test by submitting the form in Preview.
Purchase / e-commerce
  • Have the checkout push a purchase event on order completion.
  • GTM > Triggers > New > "Custom Event" > Event name: purchase.
  • Map dataLayer variables (transaction_id, value, currency) as GTM Variables and pass them into the tag.
  • Validate in Preview, then publish.
52:04-2:38~34sSection 3: dataLayer validation in DevTools

VOThe dataLayer is central to GTM tracking, and missing or wrong values are a leading cause of conversion failures. To inspect it, open Chrome DevTools with F12, go to the Console, type dataLayer, and press Enter. The console prints the current dataLayer array, which you can expand to check your events and their values. Watch for a few common issues.

On-screen caption: DevTools (F12) > Console > type dataLayer > expand and inspect events / values

1Console: dataLayer with the purchase event
Console: dataLayer with the purchase event

Valid dataLayer pushes

dataLayer.push({
  event: 'lead_form_submit',
  form_id: 'contact-form',
  form_name: 'Contact Us'
});

dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: '822321203456',
    value: 149.99,
    currency: 'USD'
  }
});
Common dataLayer issues and fixes
  • Event not appearing in GTM: the dataLayer.push is not executing. Check the Console for JavaScript errors blocking it.
  • Variable shows undefined: the GTM variable name does not match the dataLayer key. Re-check both for an exact match.
  • Conversion value is $0: the value is a string or null. Make sure it is a Number.
  • Event fires before the action: if it pushes on page load instead of on completion, conversions will be over-counted.
  • Duplicate conversions: a thank-you page runs both a hard-coded pixel and a GTM tag, so the conversion counts twice. Keep only one.
  • Missing e-commerce items array: some platform pixels, like Google Ads and Meta, require the items array. Confirm it is present and correctly structured.
62:38-2:48~10sStill stuck?

VOIf you have worked through these checks and are still stuck, reach out to the PULSE Campaign Operations team through your Greenberg Enterprises account manager.

On-screen caption: Contact PULSE Campaign Operations via your Greenberg Enterprises account manager.

PULSE DSP · Greenberg Enterprises · storyboard follows the Campaign Pixel Guide & Troubleshooting Guide
close
enlarged screen