Account Engagement

How to Embed Tracking Pixels in an Account Engagement (Pardot) Form

Brett Thompson
6 min read

The problem: your ad platforms can't see Pardot conversions

You're running LinkedIn or Google ads, the landing page uses a Marketing Cloud Account Engagement (Pardot) form, and your ad platform reports zero conversions — because the conversion event happens inside Pardot's world, invisible to the pixel. Fixing this means firing the ad platform's tracking pixel at the moment of form submission. There are three clean ways to do it.

Option 1: Pixel in the Thank You Content (simplest)

Every Account Engagement form has a Thank You Content section — what displays after a successful submit. It accepts HTML, which means it accepts a pixel.

Open the form → Completion Actions area → Thank You Content → switch to the HTML source view, and paste the image-tag version of your pixel (every ad platform offers one alongside the JavaScript snippet):

<img src="https://px.ads.linkedin.com/collect/?pid=XXXXX&conversionId=XXXXX&fmt=gif" height="1" width="1" style="display:none;" />

When the thank-you content renders, the pixel fires. Use the image pixel here, not the JavaScript version — script tags in thank-you content are stripped or fail to execute in embedded contexts more often than not, and the image pixel works everywhere.

Option 2: Redirect to a thank-you page (cleanest)

Instead of showing thank-you content, set the form's completion action to redirect to a dedicated thank-you page on your website — and put the full JavaScript pixels for every platform on that page. Advantages: real script support (Google's gtag event snippets work properly), one thank-you page can serve many forms, your web analytics sees a distinct conversion URL, and marketing can manage pixels in one place (or via Google Tag Manager) instead of inside individual forms.

This is our default recommendation for anyone running paid traffic seriously. It also gives you a stable conversion URL for the ad platforms' own URL-based conversion rules — belt and suspenders.

Option 3: Layout template (advanced, applies to every form using it)

Pixels can also live in the form's layout template, with logic that fires them only on the submitted state. This centralizes tracking for every form sharing the template — powerful, but it couples marketing pixels to template code that most teams touch once a year. Use it when you have many forms, template discipline, and someone who owns the code. Otherwise Options 1–2 are easier to maintain.

The traps

Iframes. Embedded Pardot forms live in an iframe, so a pixel inside the form fires in the iframe's context. Image pixels don't care; some JavaScript tags do. If a platform's script pixel misbehaves, switch to its image pixel or move to the redirect approach.

Firing on load instead of submit. Put a pixel in the form's above-form or landing page content and you'll count views as conversions. Pixels belong only in thank-you content, the thank-you page, or submit-state template logic.

Consent. Ad pixels are exactly what privacy banners exist for. If you operate a consent management platform, route these pixels through it (another argument for the thank-you page + tag manager pattern) rather than hardcoding them into forms.

Double-counting. If you also imported offline conversions or track the same event via a URL rule, dedupe in the ad platform. One conversion definition per action.

Don't forget the attribution loop

Pixels tell the ad platform a conversion happened; they don't tell you which ad produced pipeline. That's the job of UTM parameters flowing into Account Engagement and on to Salesforce — covered in our UTM tracking guide. Do both: pixels optimize the ad platform's delivery, UTMs prove revenue in reports both teams trust.

Form and form-handler plumbing like this is day-one work in our Account Engagement retainer. If your conversion tracking is a shrug, let's talk.

Brett Thompson

Founder of Thompson Technology. Salesforce and Account Engagement consultant for B2B companies.

Need help with this topic?

Let's Talk