Analyzing Marketo Data with ChatGPT

This blog post will show you how you can extract and analyze data from your Marketo instance using the example of email data so that we can answer the age-old question: When is the best time to send emails?

The truth is that the best send time is not one size fits all because your email recipients are in different geographies and have different schedules. The best time to send an email to a person is unique to that person and in this blog post, we will show you how to use a person’s historic email interaction and ChatGPT to tell when is the best time to email them.

  1. Introduction
  2. Bulk Extract Vs Rest API
  3. Gathering Historic Email Activity
  4. Finding Best Send Time Using ChatGPT4
  5. Using the Best Send Time in Marketo
  6. What Marketo Data Is Next?



There are two ways to extract the historic email activity in your database. Both of these methods will use the Marketo API so if you have not used the API before then you should check out the Marketo API Quick Start Guide to learn how to:

  1. Get your authentication credentials
  2. Make your first requests using the free Postman testing tool
  3. Transition from making requests in Postman to a programming language

As discussed below the best method for your Marketo instance will depend on the available capacity you have as well as the email activity you are looking to extract and over what time frame. Marketo’s data retention limits for email activity are as follows:

  • Email Delivered: 90 days
  • Send Email: 90 Days
  • Click Email: 25 Months
  • Open Email: 25 Months
  • Unsubscribed Email: 25 Months

Obviously the more email activities in your dataset and the longer the time frame you look over the more API calls or MB you will use to extract this data from Marketo.

In the project for this blog post, it was decided to extract email delivered and email opened data since the time emails are sent will affect when emails are opened, and giving ChatGPT this extra delivery information might give more accurate results than just sending open times alone. This meant that the “Email Delivered” activity limited the furthest we could look back in time at 90 days.

N.B. While the intention was for ChatGPT to use the delivered and opened times to make its decision, as we will see later on in the “Finding Best Send Time Using ChatGPT4” section it only used the opened times when doing its analysis and gave the most frequent hour of opening as the best send time. Therefore, you can only give ChatGPT a dataset of open times or you can refine your prompt to ensure that ChatGPT’s approach also factors in the delivered times and does a more advanced analysis.


Bulk extract vs rest API

The first approach uses the bulk extract API since this is the best method for extracting large amounts of data from Marketo. If you have not used the bulk extract API before then check out the Marketo Bulk API Quick Start Guide to understand the job workflow used to extract data from Marketo.

In Marketo, you will usually have a 500MB daily extraction limit unless you have paid for an increase in this limit. The limitation to using the Bulk extract API is that you may exceed this 500MB limit if you have a large database and lots of email activity. If this is the case then take a look at whether you have sufficient REST API call quota to use the REST API to extract this email activity.

The default REST API quota in Marketo is 50k API calls per day so see if this is enough for you to be able to extract the email data you need.

In order to help you determine which approach is best go to Admin > Web Services. Here you will see your REST API and Bulk API limits as well as your usage for both over the past 7 days. Clicking into the hyperlinked numbers beside “Requests in the Last 7 Days” and “Capacity Used in the Last 7 Days in MB” will show you day-over-day usage over the past 7 days.

Based on what these numbers show you will see whether you have more REST API or Bulk Extract capacity or if you are already very close to your limits with both then you might have to contact Marketo support to get an increase in capacity or reduce the number of calls or jobs currently being created to free up capacity.

Screenshot of Marketo API limits as well as usage over the last 7 days
API requests by user over the past 7 days
Bulk extract usage by user over the past 7 days

It is hard to predict ahead of time how many API calls or MB will be needed to extract the email activity history for your database so it will take some experimentation to find out how much you need by making some API calls or creating some jobs for a subset of your database or over a short time frame. Then once you have done these small experiments you can extrapolate the API call or MB usage expected for your entire database or time frame of interest.


Gathering historic email activity

Whether you intend to use the REST API or the bulk extract API you will need the activity IDs for the email activities you are interested in. To get these:

  • Make a GET request to the  Activity Types endpoint
  • Search the response returned to Postman for each activity and note down the id

Once you have these IDs check out the Github files linked below to see how to use these IDs in API requests to extract the email activity we are interested in.

Note that the code in all the Github files linked below is designed to be plug-and-play so that once you update the variables at the top of your code with your information then you should be able to run the code right away.


Using the bulk extract API

As mentioned in the docs the maximum time span for a job is 31 days so if we want to get data over a longer time frame e.g. 90 days, then we will need to create multiple jobs and then join the data from each job together. The Bulk Extract code uses a number of functions to do just that.


Using the REST API

The REST API code works similarly to the bulk extract code except here it is data from “pages” that are being joined together instead of data from jobs. Since only a limited amount of data can be returned in a single REST API request, the data is paginated and we must loop through all the pages to extract all the data.

To begin a request is made to the paging token endpoint, specifying the start date in the past that we would like to extract data from. The paging token that is returned is then used as the starting point for a while loop that makes requests to the activities endpoint to get the activity data from each page.

As the while loop is iterating, the data returned for each page is added to a list and then this list is converted to a dataframe and saved as a CSV.


Processing the data

Once all the data over the desired timeframe is gathered some processing of the dataset is done to remove bot activity and tidy up the dataset to make it easier to process later. You can see how the data is gradually transformed by going through the leftmost tab to the rightmost tab in this sheet. You can see the code used to do this processing here.


Finding best send time using ChatGPT4

By far the easiest way to find the best send time for each lead ID is to use the “Advanced Data Analysis” option with ChatGPT-4. In order to access ChatGPT-4 you need to have a paid subscription. Then to enable “Advanced Data Analysis” from the chat screen:

  1. Click on the 3 dots beside your profile image and name at the bottom left-hand corner of the screen
  2. Click on “Settings & Beta”
  3. Click on “Beta features”
  4. Turn the toggle beside “Advanced Data Analysis” on

This “Advanced Data Analysis” feature allows us to upload our CSV of email activity and ask ChatGPT to give us an output file containing the best send time for each lead id. To analyze a file with ChatGPT-4:

  1. Click on the “GPT-4” tile at the top of the screen
  2. Click “Advanced Data Analysis” in the dropdown menu that appears
  3. Click on the plus icon to the left of “Send a message” to upload your file
  4. Enter your prompt

Based on my testing and with the prompt I used below, I found that the best format for the input data was grouping the email activity by lead ID and email as shown in the Group by Lead & Email tab. Note that the times returned from the Marketo API are in UTC time and we need to ask ChatGPT to give us the output time in the same timezone as our Marketo instance.

Given the data which contains the delivered and open times for the emails received by each lead please determine the best time of day to email these leads to maximize the chances that they will open future emails. Note that the times are in UTC time. Provide the output in a table containing 2 columns: 1 for lead Id and 1 for an optimum send time in CDT where the times should be to the nearest hour as a digit from 1-24

Once you enter your prompt and the input file ChatGPT will start analyzing the data and print out the methodology that it is using to transform and analyze the data as it is going along.

As shown in this chat using the above prompt ChatGPT actually does a very simple analysis to get the best send time where it returns the hour in which someone most frequently opened emails. If this is all you are looking for you do not even need to use ChatGPT for this, you could use Python code or Google Sheets formulas to compute this best send time for yourself.

Therefore if you want ChatGPT to do a more complex analysis and take the email delivery times into account for its analysis then you will have to refine your prompt and ask ChatGPT to make adjustments in subsequent messages as you see the approach it is taking with the analysis.

As I show you can ask questions based on the input or output data, for example, I ask ChatGPT to give me a pivot table of best send times so I can see how the best send times are distributed across the output dataset. I also asked ChatGPT why so many lead IDs were missing from the output dataset and it answered that leads with no open times were not included in the output.

Once you are happy with the analysis that ChatGPT has done you can then ask ChatGPT to export the output dataset as a CSV. Next, take a look at the “Using the Best Send Time in Marketo” section to see how we can get these send times into Marketo and start using them to optimize our email open rates.


Using the best send time in Marketo

You might have noticed that the Marketo API associates the email activity with leadID so that the output dataset of best send times is for lead IDs. However, if we want to do a list upload to Marketo to populate the best send time for these leads we need to have the best send time for each email address instead.


Uploading Best Send Times to Marketo

In order to get these best send times into Marketo for each lead follow these steps:

  1. The first step of getting the best send time for each lead into Marketo is to go to a smart list that contains every email address in your Marketo instance e.g. using the “Email Address” is not empty filter.
  2. Then go to a view or create a view that contains only leadID and Email Address
  3. Export this view with these 2 fields only
  4. Return to the ChatGPT-4 window where you have the chat with the output dataset containing the best send time for each lead ID
  5. Attach the exported dataset from Marketo containing the leadID and email address and then ask ChatGPT to join the best send time dataset with this dataset on lead id (as shown in this chat) so that we get an output dataset containing lead ID, Email Address, and Best Send Time
  6. Download this dataset as a CSV
  7. Upload the CSV of Emails and Best Send Times to a static list in the “Group Lists” folder in the “Database” section


Sending emails at the best send time

Once the best send time has been uploaded for each email address you are then ready to build a smart campaign to send emails to each person at their unique best time. Being honest building the flow for this smart campaign is a pain because it consists of 24 “Send Email” steps and 23 “Wait” steps.

Example of a Wait and Send Email action pair in a Marketo flow

The smart campaign is scheduled to run at midnight on the day that we want the email to be sent. Therefore the very first action is to send the email to anyone whose best send time is “0”. Then we wait for 45mins with the wait ending at 1am before sending the next email to anyone whose best send time is “1am”. These actions are then repeated for each of the remaining hours in the 24-hour clock.


A/B testing email performance

So long as you have this smart campaign nested within an email program in Marketo and you have the email selected in the “Control Panel” you will still be able to see the email performance in the program “Dashboard”. But what if you want to A/B test to see how sending at the best send time performs compared to sending to everyone at the same time?

In order to A/B test performance of the best send time:

  1. Create a smart list containing your usual email send criteria along with an extra “Best Send Time is not empty” condition
  2. Export this list with a view showing “Email Address” & “Best Send Time” only
  3. Ask ChatGPT to split the list of emails with best send times into 2 (as shown in this chat) so that each list has the same distribution of leads for each send time.

Then upload these 2 lists to Marketo and then use the smart campaign outlined above to send to one list at their best send times and then a second smart campaign (or the email program) to send the email to the second list at a particular time e.g. 10am CDT as is so often recommended.

A/B testing best send time in a business intelligence tool

Then either using a Business Intelligence tool that has access to your Marketo data or using the bulk extract or REST APIs to extract email activity and then using Google Sheets or Python for the analysis:

  • Pull the email activity you are interested in (Opens, Clicks, Unsubscribes) filtering on the email ID that we conducted the A/B test for
  • Join this activity data on the lead IDs from the 2 lists exported from Marketo that were involved in the A/B test, giving 2 output datasets
  • For each dataset, you can now get counts for each email activity, plot them, and compare the counts to see whether sending at the best time improved performance


What Marketo data is next?

Analyzing email activity from your Marketo instance is only the start. For example, you send lead activity information to ChatGPT and ask it to highlight the leads that are most engaged and you could then send these to your sales team. The sky is the limit!

Now that you know the power of the Marketo API you should take a look at the Marketo API Crash Course so that you can learn how to use both the REST and Bulk Extract APIs for so many different automation and marketing operations use cases.

Data Hygiene: Supercharge Your Marketo + Salesforce Databases

Data is the fuel that drives your organization forward, guiding nearly every critical business decision you make. Your company’s data needs to be accurate, organized, and reliable.

For marketing and sales teams, this means emphasizing data hygiene strategies and best practices that keep your Marketo and Salesforce databases free from dirty data, which includes:

👉 Duplicates

👉 Typos

👉 Outdated information

👉 Incomplete entries

👉 Prospects that don’t align with your target persona

While many leadership teams understand this, the data hygiene strategies they employ are often insufficient or poorly enforced. And nothing is more damaging to campaign ROI than dirty data.


Dirty data risks

A database with bad data runs the risk of campaigns going to the wrong people and will leave sales reps chasing prospects who are no longer relevant to your offers.


“A marketer’s job becomes more challenging when you have to explain why customer relationships are strained.”


This is also a surefire way to hinder your sender’s reputation when those offers are inevitably marked as spam by incorrect recipients.

As a marketer, your job becomes much more challenging when you have to explain to leadership why customer relationships are strained, and campaign performance is dropping.


Data management pain points

If you want to harness the full power that Marketo and Salesforce can offer your business, it’s essential to maintain a clean database. But this is easier said than done.

We see so many marketers constantly struggling to effectively manage their data within these systems, which aggravates common pain points such as:

1. Duplicate Information

When your Marketo instance is filled with duplicate records, your customer data becomes inaccurate and unreliable.

And, if you can’t trust your data, you lose your ability to make important decisions that impact campaign effectiveness.

Not to mention, duplicates directly translate to avoidable expenses, as Marketo charges based on record totals. For companies with a significant inflow of data coming in, cleaning and correcting duplicates by hand will plummet overall team productivity as well.


2. Complex Workflows & 3rd Party Apps

Since Marketo lacks out-of-the-box data normalization or clean up flows, many companies must resort to complex workflows and 3rd party apps to automate this process – neither of which is ideal.

These data normalization workflows in Marketo are difficult to set up and typically involve very slow flow steps that stifle momentum and productivity for teams.

And 3rd party apps that merge duplicates can get very expensive, normally costing upwards of $4,000 per year on a subscription basis.


Data hygiene management

To combat all of these issues, we’ve designed an all-in-one solution for Marketo-Salesforce customers that:

👉 Cleans existing Marketo data

👉 Prevents future bad data, and

👉 Offers a customizable Salesforce dashboard for real-time data quality status.

With this solution, you get a comprehensive set of features previously unavailable to our customer base:

➡️ Merge Marketo Duplicates: Identify and merge duplicate information in Marketo for improved data integrity and accuracy. This will streamline data management processes and boost data-driven decision-making confidence.

➡️ Streamline Data Normalization: Effortlessly update standard database fields for each record, including:

  • country
  • country phone code, and
  • website information.

This will reduce reliance on third-party apps and eliminate the need for complex, tedious flow steps in Marketo – allowing marketers to maintain a clean and reliable database for better targeting, segmentation, and personalization.

➡️ Customizable Salesforce Dashboard: A customizable Salesforce dashboard will provide real-time visibility into data quality.

The dashboard empowers users, allowing them to proactively monitor and improve data accuracy, completeness, and consistency – leading to more effective campaigns and decision-making.

➡️ Cost Savings: Since Marketo charges by the number of records in a database, eliminating duplicates will help companies save money.

In addition, companies will cut out recurring costs incurred by third-party apps, and improve the overall effectiveness of their campaigns.


“Dirty data can stifle productivity, strain customer relationships, and reduce campaign ROI.”


It’s clear that dirty data can stifle productivity, strain customer relationships, and reduce campaign ROI. And the currently available solutions for maintaining a clean Marketo and Salesforce database come with technical headaches, slowdowns, and recurring expenses.

The Data Hygiene Management Package is a direct response to these challenges, offering marketers the option to:

✅ Streamline data normalization

✅ Merge duplicate records

✅ Access real-time data quality status

All while removing reliance on third-party apps and slow flow steps in Marketo.

Learn more about how you can implement it into your current system here.

Can Marketo & Dynamics be Excellent to Each Other – With Vertify?

As far as marketing automation platforms (MAPs) and customer relationship managers (CRMs) go, Adobe Marketo Engage and Microsoft Dynamics 365 are incredibly popular and powerful tools that many marketers will have in their tech stack.

If you want to get the most out of these tools, however, effectively integrating them to eliminate data discrepancies is crucial.

Unfortunately, for many companies, this can be quite a challenge.

So in this Technically Speaking, we’ll explore your options for integrating these tools – and why we believe Vertify is your best bet for achieving Marketo-Dynamics solidarity.

The majority of this article pulls from a webinar we recently did with the Vertify team that you can watch here: Can Marketo & Dynamics be Excellent to Each Other – With Vertify?

Let’s get into it!

pink line separator

What are your Marketo-Dynamics integration options?

Marketo’s native sync has a few things going for it. As a native solution, implementation is smooth and you’ll have full access to Marketo’s tech support.

But when it comes to lighter ongoing maintenance as well as deeper functionality and customizability, there are plenty of other integration options out there that can replace it.

Essentially, there are four directions you can go:

  1. Marketo native sync
  2. Third-party integration tool
  3. Vertify
  4. A hybrid approach.

We’ve outlined the higher-level pros and cons for each option in the chart below.

tech support on sync issues for dynamics-marketo

Many third-party sync tool options have the potential to provide increased flexibility, functionality, and stability if properly configured. The downside, however, is that you are taking on full ownership of the tool.

This means you can’t rely on Marketo support to troubleshoot sync issues. Instead, you’ll have to work with support staff from the third-party company who developed the tool (if they offer support at all) or assign a power user on your team to maintain and fine-tune the connector by themselves.

The other more obvious disadvantage is that these third-party tools inevitably come with an added subscription cost.

Before diving deeper into Vertify below, the other alternative is a hybrid approach. For example, one configuration we’ve seen is to use native sync for leads, contacts, opportunities, and accounts, but use a custom API to transfer program member and status data from Marketo to Dynamics.

While select power users may be tempted to go down this road, developing custom solutions is a complex process that often requires coding expertise and will take valuable time away from higher-impact, revenue-generating activities.


Vertify may be the better solution for you.

Which brings us to Vertify: a platform with the unique ability to unify customer data across multiple revenue apps including Microsoft Dynamics and Adobe Marketo Engage – Vertify is actually Adobe’s preferred integration partner.

Unlike other third-party integration tools, Vertify shares several of the same benefits that user’s get with Marketo’s native sync:

1. Vertify is easy to implement – they streamline the implementation process by providing quick-start templates with pre-built object and field mappings based on best practice standards.

2. Vertify requires no code to set up or maintain – its interface has drag-and-drop functionality so users can easily modify parameters without technical expertise.

3. Vertify provides dedicated technical support to users on demand.

Unlike Marketo’s native sync, however, Vertify offers enhanced functionality and customizability options, which we’ll dive into below.


Sync error identification and alerting

With Marketo’s native sync, you’re required to build custom campaign email alerts – which essentially renders the notifications and sync error tabs useless. The options and parameters you can use to set up these triggered alerts are quite limited as well. For example, native sync is unable to trigger an alert on a field update failure.

Vertify, however, can be configured to notify you both in the platform itself and via email of any failure of any data movement. Written with user-friendly wording, these notifications will not only tell you what the problem is but also how to fix it and which records have been affected. In this regard, Vertify can be used as a data diagnostics and cleanliness tool as well.


Sync error resolution

Another major pain point that Marketo native sync users face is how error resolution is handled: Native sync will only retry “field updates” when a complete sync failure is restored and won’t retry “Lead Create,” “Task Create,” or “Change Owner” operations at all.

Vertify, however, has the ability to automatically retry attempts whenever any data movement failure occurs – and will do so during the next scheduled sync.

This is a game-changing feature where Vertify starts to pay for itself. Many organizations will find that Vertify’s annual subscription will cost them far less than the countless hours it takes to deal with this issue by hand.


Lookup fields functionality

dynamics marketo lookup fields functionality

If you’re using the Marketo native sync, these cryptic ID values probably look familiar.

Through Vertify, Marketo is able to see actual plain English instead of these ID values when it comes to Dynamic lookup fields. This means that marketers aren’t required to use “mirror image” workflows to populate fields in Dynamics.

Through a feature called Translation Tables in Vertify, you can easily and automatically convert the Dynamics ID values into their friendly names for Marketo, and vice versa.


Simplified lead lifecycle tracking

Identifying a lead-to-contact qualification in a Marketo-Dynamics environment can be very challenging: Because when a lead becomes a contact in Dynamics, Marketo incorrectly thinks that an entirely new contact is being created rather than an existing lead becoming a contact.

The “New Person” duplicate will then exist in Marketo until the next sync cycle occurs, during which Marketo will merge the original record with the new record. This causes a slew of issues, including Marketo scores being combined and inflated as shown in the table below.

Simplified Lead Lifecycle Tracking

Vertify has a unique “Merge Rules” feature that can prevent this lifecycle issue from occurring altogether.

And the way it works is remarkably simple.

Since Marketo uses email as a unique identifier for records, you can set up a Vertify merge rule that prevents duplicate record creation if the email already exists in your database.

It is essentially impossible for your CRM to create duplicates in Marketo as long as this rule is correctly configured:

merge rule for SFR contact MKR leadrecord


Alleviating Dynamics’ bandwidth limitations

Regular users of the Marketo native sync also know that sync scheduling is restricted to a fixed frequency of once every five minutes for all entities.

Vertify, on the other hand, offers much more customization on this front: Allowing scheduled syncs to occur as often as every one minute or as infrequent as once per day, week, or even month. Users can even configure sync frequency by individual entity – such as leads every one minute, contacts every ten minutes, and opportunities every fifteen minutes, for example.

Access to more detailed and specific sync scheduling options allows users to work more efficiently within Dynamics’ bandwidth limitations.

For example, Dynamics allows up to a maximum of 10,000 lead records to be updated per sync. If your Marketo instance wants to update 50,000 lead records, it would take 25 minutes using native sync (syncing 10,000 every 5 minutes).

If we set up Vertify to sync to occur every minute, however, we reduce this time to just 5 minutes (syncing 10,000 every 1 minute).


Update related custom entity fields directly in Dynamics

Oftentimes, companies will have custom entities (such as checkboxes on a preference form) they want to connect to their leads or contacts for added categorization, filtering, and so on.

With the native sync, Marketo is unable to update any of those additional custom entities and can only integrate with “Leads”, “Contacts”, “Accounts”, and “Opportunities”.

The workaround for this is to use a trigger field on leads and contacts that initiates a Dynamics workflow that will update those custom entity fields. Vertify’s sync, however, completely cuts out the need for trigger fields and Dynamics workflows (which can fail) and syncs those custom entity fields directly.

No need to get your technical team involved to set up, maintain, and troubleshoot workflows.

native marketo sync vs vertify sync

Tying it all together

With all of these benefits and features in mind, the true value of Vertify becomes clear when we look at tangible results.

We had the opportunity to view several case studies with actual data from real Vertify customers, and the numbers represent the long-term value that can be expected:

  • Increased lead efficiency by 10% per year. In this context, lead efficiency refers to the percentage of net new leads entering Marketo that successfully make it to the CRM without error.
  • Reduction in manual lead management efforts by 65% per year, which equals out to 520 hours per year in productivity gained. This ties back to our previous point on Vertify’s ability to automatically retry attempts whenever any data movement failure occurs. Hundreds of hours spent in “firefighting” mode to cleanup issues manually will be saved – giving you more time to spend on higher-impact, creative tasks.
  • Improved lead conversion rate by 17% per year. This was the average increase in lead-to-SQL conversion across Vertify’s customer data as regular users of the platform.
  • The average payback period for Vertify is 3 months. An analysis determined that it would take between 2 and 3 months for Vertify to pay for itself in productivity and revenue gains.

When we tie all of these benefits together, it becomes clear that Vertify is currently the best option available for the majority of Marketo-Dynamics users looking for superior integration.

And for those who are interested, our live session with the Vertify team covers deeper questions such as:

  1. How does Vertify maintain data hygiene and quality, especially with sensitive data in the finance or medical industry?
  2. How long does it take to get a new integration set up?
  3. How does Vertify’s subscription model work? Is it based on the number of records in the database like Marketo, with extra features billed as “add-ons?”

If you need help setting up any of these tools, or have other questions about Marketo-Dynamics integration options, reach out to us!

What Do Marketo’s Upcoming URL Changes Mean for You?

About two years ago, Adobe Marketo Engage changed its URL structure for images and file assets, landing pages, and forms. Most of you probably did something about this in 2021, but for anyone who still hasn’t, the old URL structure will be deprecated on August 1st, 2023.

In other words, any references using the legacy URL structure will break very soon. So let’s take a closer look at who will be impacted, the specific changes that are coming, and what you need to do about it.


Who will be impacted?

Anyone who meets the following criteria will be directly affected on August 1st:

1) Your Marketo instance was provisioned before 2021.

To put it simply, if you started using Marketo before 2021, there is a good chance you have web pages and forms that are using the legacy URLs. Marketo has also stated that all form embed codes prior to October 2020 used the legacy URL structure. Anyone who implemented their instance during or after 2021 can likely stop reading at this point.

2) You do not have a CNAME configured in Marketo.

If you’ve determined that your Marketo instance was provisioned before 2021, the next step is to verify whether or not you’ve configured a CNAME. For anyone who doesn’t know what a CNAME is, it stands for “Canonical Name.” Think of it as a unique, branded alias for landing page links, form links, or file links that are associated with your domain.

For example, our domain is If we had a landing page for blog posts that was properly configured to use a custom CNAME, it might look something like In this case, the “blog” portion of that hypothetical URL is the CNAME.

3) You do not have an SSL secured instance of Marketo.

When it comes to Marketo landing pages in particular, it’s important to ensure you have SSL (Secure Sockets Layer) enabled. If you’re unfamiliar with SSL, it’s essentially a security protocol that allows your website host to validate whether or not a subdomain is your owned property. Keep in mind that SSL is not included in your Marketo subscription by default. Users must proactively add it to their instance as a paid add-on, and it will take 48 hours to activate once ordered. If you didn’t know this, there is a chance your landing pages are not SSL compliant – which will also affect other Marketo forms embedded anywhere else on your site.

So if you have a Marketo instance that was provisioned before 2021 AND you have not configured a CNAME or secured your pages with SSL, these URL changes will impact you – below are the details of what they will look like.


What is changing?

If you haven’t configured a CNAME, Marketo will automatically update all of your links with an assigned CNAME based on your Munchkin ID. This means that any references to old URLs will result in 404 page errors, broken files, and forms that fail to load – all of which will happen on August 1st.

Images & Files

Any images and/or file assets created before 2021 that have their URLs hardcoded into Marketo landing pages without a configured CNAME will have their URLs changed to include a unique hostname – breaking the old URL. Marketo has provided this example for what these link changes will look like:


Landing Pages

The same applies to Marketo landing pages themselves. Any page that hasn’t been configured to use a custom CNAME will have its URL updated to include a unique path name, as shown in a similar example below:



When it comes to embedded forms, there are a few extra things to consider. Marketo embedded forms will break not only on landing pages without a configured CNAME but also on landing pages that aren’t secured by SSL. Here is an example of the embedded code changes from Marketo’s release notes:

marketo form legacy URL structure

Marketo URL current structure


What should you do about it?

To avoid a slew of broken pages, forms, and files, we recommend you follow these steps (which we’ve compiled directly from the Marketo Engage release):

1) Start by configuring a CNAME for your landing page URLs if you haven’t already. Marketo has an excellent guide on how to do that here.

2) Next, secure your landing pages with SSL – which you can learn how to do here.

3) Once you have SSL-secured landing pages with configured CNAME URLs, you must replace old embedded form code with the new link structure.

We want to draw your attention to this step in particular, as this will be something we think many organizations will overlook. An audit of your landing pages will be required to identify exactly where all your Marketo embedded forms exist. From there, your IT team (or whoever is in charge of website maintenance) can go in and update all of the embedded form code.

4) The final step would be auditing existing Design Studio references that are using the old URL structure. Since Marketo’s landing page editor automatically formats embedded images and forms to be compatible, this applies more so to existing hardcoded references on non-Marketo pages.

While these changes are certainly important, we don’t want to incite panic.

onsider this more of a reminder for anyone who forgot about Marketo’s initial announcement back in 2021. If you want to learn more about the URL changes, you can read the Marketo Engage release directly here.

And if you need help implementing these changes, reach out to us!