Forms are just the way to make the values enter in Marketo. But then, In Marketo, you can create a set of fields to store:
- The first set of UTMs ever received for a lead (you can capture it and store it in cookies until the lead converts and fills out a form). This will enable you "a posteriori" to reattach the lead to the very first program that triggered a visit, even if this visit was not a conversion.
- The conversion set (the set of UTM for the web session during which the first form was filled out)
- The most recent set (from the last time a lead filled out a form). Might be updated many times
You will also combine with field blocking so that first and conversion cannot be modified once captured. Depending on the effort you are willing/able to allocate to this, the First and Conversion by be the same.
At the end of the day, what is really key is to define what kind of attribution model you want to put in place.
I've read about having those fields mapped in form values, however that would only get the fields written in a "fill out the form" operation.
Any suggestion on how to record this information?
There are at least 3 scalable ways to do this that don't involve the lead filling out a form.
- Post a Marketo form in the background using the Forms 2.0 JS API. In reality this is just an Ajax database update (there is no visible form).
- Use the Munchkin API Associate Lead method. This gives you more control than  since you have to generate a hash key on your server in order for the update to be processed. (In a default config,  is a sort of an "end-around" the security of  for fields that are empty.)
- Use my trick here to log one value at a time using the Munchkin API Visit Web Page method. This method is quicker than  or  for updating a single lead field (which could include multiple UTM values, depending on where it's going to be read), but for multiple lead fields you'd need to run  multiple times, so  or  might be preferable.