Marketo has an add-on feature for Referrals that allows you to create and track Referrals with an "out-of-the-box" functionality.
However, many clients have requested further customization on the landing page so we have created a webhook to create a new record using custom fields. If you do not utilize a webhook, cookies get crossed and the person referring will now be cookied as the referral causing many issues.
Realize this is a bit dated but thought I would provide some additional insight.
It's a myth that cookies get crossed with a referral form. You just have to know how to manage cookies and understand how Forms and Munchkin interact. Using a webhook should be a last resort -- not because of the webhook itself but because you're presumably using API calls from the webhook back into Marketo, thus you are explicitly rate-limited. To let your Mkto instance scale, the goal should be to avoid as many metered resources as possible.
From multiple client testing, it is not a myth that your cookie could be associated to the wrong record. The browser’s cookie will definitely be associated to the Lead record used for the most recent form fill, unless a script is used to clear it.
It is possible to use a script to clear cookies but I do not see this as being any easier than a webhook.
I would argue that the webhook is preferable for many uses because the logic necessary to prevent record splicing lives in the reliable Marketo backend instead of in less-reliable client-side code.
I guess different use cases could present different solutions. However, for our clients we have found the webhook solution to be the best.
The myth persists because most people don't know how to build a referral form properly. If you do nothing special, then by definition the cookie must be associated to the last record. If forms didn't work this way by default, that would be a major barrier to adoption. The proper procedure for a referral form is: save the cookie onSubmit, restore it onSuccess. This was part of the tech talk I gave a couple of weeks ago at our local MUG. 8-10 lines of code (including declarations) is, self-evidently, easier than not only writing (the easy part) but maintaining a mission-critical webhook endpoint.
But more important, while webhooks in general can be part of creative solutions, if your webhook is looping back to Marketo, I assume you're using one of your 10,000 daily REST/SOAP API calls every time. Meaning that if I just pound your referral form a tiny bit, I've got a DoS attack against your instance.*
* Forms are limited to 30 posts per 60 seconds per source IP, or a post every 2 seconds. To quench your 10,000 API calls from a single IP, I would just need a half-day of very lazy automated posting.
I find the webhook solution really distasteful for a number of reasons. The simplest way to build a referral form is to simply avoid the cookie submission entirely, a solution which I've detailed here: http://developers.marketo.com/blog/clearing-marketo-tracking-cookie-from-forms-2-0-submission/
Not quite, Dan. Marketo forms look to see if the _mkto_trk cookie has been set, which it may have been by a previously tracked page, so disabling tracking on an individual page is not a safe way to avoid inaccurate association.
Could I simply add this as an HTML element to an existing landing page; or do I need to add this to the landing page template?