...what about merging the annonymus and known lead from a smart list? After the campaign goes live you could look at traffic and mannualy merge the records...not ideal but this is a start to the discussion... 🙂
Good idea - not sure how scalable that is going to be as this campaign is going out to a lot of records. Right now we are looking at doing a post to a Marketo form that will automatically submit the users email address and redirect them to their landing page.
Will let you guys know the results of this approach.
I can think of something automated and scalable but it takes some custom work.
Setup an external database storing these fields (add or remove fields to spec): MKTO_LeadId MKTO_Email MKTO_FirstName MKTO_LastName MKTO_PURLcustomfield
Create a webhook that POSTs the above values to a script which inserts / updates the external database.
Add the webhook to the flow that runs the direct mail piece. (You may also want to create a smart campaign that listens for a change in any of those fields and POSTs to the webook to update the external database)
On the landing page leads are directed to, use a script to parse the subdomain URL, then make an AJAX post to a script that will query the external database using the subdomain value and return the MKTO_LeadId or MKTO_Email. After you have the LeadId or Email, a basic API call can be made to effect the record. (SyncLead then RequestCampaign etc.)
There are probably a few ways to do this with varying languages, but hope this helps. I added the PURLcustomfield option because that might be a better key to query on rather than a name (John Smith might come up many times).
Not the prettiest so hopefully there's a really easy way we're all over looking 😃
It should be noted that all of this would not be necessary if the Marketo API supported querying by custom field or your own unique key rather than the out of the box options.
A 2nd option would be to use the Marketo LeadId in the PURL or have the landing page ask for an "access code" which is really the Marketo LeadId used to identify the contact through some API code.
Forgot to mention- We have some challenges with our CRM's API and response times so the external database may not be necessary in all use cases. Depending on your systems instead of setting up the custom database you could try querying the CRM