The Problem
Many Marketo users continue to rely on a familiar, yet less scalable and relatively fragile, approach for tracking form submissions: using “Fills Out Form” triggers filtered by form name and referrer URL. It’s quick to set up, but prone to breaking.
Why is it prone to breaking? Among other things it creates invisible dependencies between your marketing automation and your website structure. For example, if your team launches a site redesign, rolls out multilingual versions, or restructures content for SEO, chances are they’ve unintentionally broken a campaign in the process – often without realizing it.
As a result, valid leads go uncaptured, critical handoffs fail, and operations teams are left to audit and test whether all your referrer-based logic still works. Potentially across hundreds of forms or regions.
The Solution: Marketo Program ID (PID)
In the traditional way of doing things, form submissions are tracked using “Fills Out Form” triggers filtered by form name and referrer URL. This setup is of course only applied when using global forms - using locally created forms in the program, constraints are not necessary. If you are running a company that happens to be in a website reconstruction for instance, this way of working would potentially cause issues with future submissions. To handle it properly, a more robust solution is needed.
What would be a robust solution? Tracking form submissions via Marketo Program IDs (PIDs). This approach creates more durable campaigns, decouples logic from page structure, and gives marketing operations room to scale—without relying on brittle web dependencies.
What is a Marketo Program ID? A Marketo Program ID (PID) is a unique identifier assigned to every program in your Marketo instance. It appears in the URL when viewing a program. For example:
https://engage-lon.marketo.com/PC1234B1 -In this case, the Program ID is 1234.
So instead of tying form submissions to a specific web page (via referrer), we can now tie them to the program itself via the Program ID—making the setup significantly more stable and portable across web changes. It also makes it easier to work unitary across several workspaces or instances within your Marketo setup.
Technical deep dive
Let’s have a look at how the traditional form capture setup looks like and see how it differs from using Marketo PID.
Most forms in Marketo instances use a Smart Campaign trigger like this:
- Trigger: Fills Out Form
- Filters: Form Name + Referrer URL

The URL in question is: https://www.website.com/sv-se/produkter-och-tjanster/companyname.html
Instead of using the full URL, the Smart List uses a “Referrer contains” filter—e.g., "/ produkter-och-tjanster/companyname ". While this works, any change to the page URL structure (such as a redesign or content migration) will break the campaign logic. As a result, valid form submissions may no longer trigger the appropriate campaign, leading to missed leads or failed updates. This method is fragile and increasingly unsustainable.
With the new setup, the form logic will work like this:

The Marketo PID number was as mentioned earlier extracted from the program URL: https://engage-lon.marketo.com/PC1234B1
Form name remains as part of the trigger. Instead of “Referrer,” we’ll pass the Program ID using a hidden field on form. This hidden field will be populated dynamically from AEM (Adobe Experience Manager) via a data layer push.
When a user submits the form, the PID is submitted along with it—triggering the correct Smart Campaign in Marketo.
The Migration Process
To successfully transition from referrer-based tracking to PID-based tracking, the following steps are required:
1. Update the Forms
- Add a hidden field to each form to capture the Program ID.
- Configure AEM to populate this field using the appropriate PID via the data layer.
2. Clone and Update Smart Campaigns
- Clone all live Smart Campaigns that currently rely on referrer filters.
- Replace the “Referrer” condition with a trigger based on Program ID + Form Name.
- Don’t forget to update the Center of Excellence (CoE) templates to follow this new structure—ensuring all future programs inherit the improved logic.
3. Decommission Old Campaigns
- Shut down outdated Smart Campaigns using referrer logic. This can be set to automatically shut down by setting local asset expiration on program then selecting which smart campaign you want this to happen to during what day and time.
- Audit and document which programs are active and should be maintained, and which ones can be ignored or removed.
- Collaborate with the web team to align on which forms are linked to which programs.
Why This Matters
This migration ensures among other things that a company is no longer vulnerable to website structure changes, which are common during redesigns, A/B testing, and localization updates. By decoupling the form logic from static URLs, the marketing operations team can:
- Ensure reliable lead capture, even if URLs change.
- Reduce the risk of broken campaigns.
- Maintain a cleaner and more scalable Marketo architecture.
The new setup also gives you a consistent way of working across multiple workspaces in your Marketo instance. That makes it easier to bring new marketers on board and ensure they all work the same way across your different workspaces.
Final Thoughts
If your organization handles a high volume of web leads through Marketo, especially across multiple regions and teams, transitioning to a Program ID-based approach is highly recommended. It’s a small technical adjustment that yields significant operational resilience.
Want to make sure your form tracking is future-proof? We can review your setup, highlight risks, and help you move to a more reliable approach.