Hi,
So there is an upcoming tradeshow and we are giving out free passes to people who submit the form.
There are a limited number of passes, and the pass codes have been provided to us.
I am searching for a way to automatically send out these confirmation emails with the unique codes embedded in the emails.
I also need to know when we have exhausted the codes that we have.
I tried looking on the Nation, but didn't see a solution.
Thanks,
Stephen
Solved! Go to Solution.
- Create a custom text {{my.passcode}} token local to your program (add a placeholder default value as the token value)
- ...
This is a little development heavy method and you'll definitely need a technical person to pull this off. I'll let Sandy confirm if there's a comparatively less dev heavy/easier solution to pull this off! 🙂 Thank you.
Hm. That sounds far too complex. You need to keep a pointer to the most recent code on the stack, which means a separate database. And you need a separate web app to call the REST API!
You want to avoid both REST API calls and any (trivially hackable) calls made from the form. All logic should be initiated on the Marketo server side.
The better way to do this is via a webhook-compatible service. It shares some of the general logic above. But you can store the codes in a simple text file in Design Studio. Then each time the webhook is called, you increment the pointer by 1 and get the Nth line in the file. Return that in the webhook: done.
I’ve done this a bunch of times and if you search my past posts you’ll get some pointers. It’s like < 10 lines of code.
Easier still is to “reverse the charges”: have Marketo generate the unique code, then call an external service to say “Hey, I assigned such-and-such code to the lead with this email address.” You can generate an acceptably unique code by mixing together the person’s Marketo Unique Code with the Program ID. The end user will not be able to guess this.
if you must use pre-determined codes, then go with @SanfordWhiteman's approach. A great option for the webhook compatible service he's talking about is flowboost. Sanford didn't mention it as he wrote it.
cheers
Jo
I am searching for a way to automatically send out these confirmation emails with the unique codes embedded in the emails.
To be clear, you have a stack of unique codes (not preassigned) and you want to pull a new code off the stack whenever somebody submits the form, assigning it to that lead?
To be clear, you have a stack of unique codes (not preassigned) and you want to pull a new code off the stack whenever somebody submits the form, assigning it to that lead?
Yes, that is correct.
I have a list of codes and need to assign them when the form is submitted.
Off the top of my head, here's what you can do -
This is a little development heavy method and you'll definitely need a technical person to pull this off. I'll let Sandy confirm if there's a comparatively less dev heavy/easier solution to pull this off! 🙂 Thank you.
- Create a custom text {{my.passcode}} token local to your program (add a placeholder default value as the token value)
- ...
This is a little development heavy method and you'll definitely need a technical person to pull this off. I'll let Sandy confirm if there's a comparatively less dev heavy/easier solution to pull this off! 🙂 Thank you.
Hm. That sounds far too complex. You need to keep a pointer to the most recent code on the stack, which means a separate database. And you need a separate web app to call the REST API!
You want to avoid both REST API calls and any (trivially hackable) calls made from the form. All logic should be initiated on the Marketo server side.
The better way to do this is via a webhook-compatible service. It shares some of the general logic above. But you can store the codes in a simple text file in Design Studio. Then each time the webhook is called, you increment the pointer by 1 and get the Nth line in the file. Return that in the webhook: done.
I’ve done this a bunch of times and if you search my past posts you’ll get some pointers. It’s like < 10 lines of code.
Easier still is to “reverse the charges”: have Marketo generate the unique code, then call an external service to say “Hey, I assigned such-and-such code to the lead with this email address.” You can generate an acceptably unique code by mixing together the person’s Marketo Unique Code with the Program ID. The end user will not be able to guess this.
if you must use pre-determined codes, then go with @SanfordWhiteman's approach. A great option for the webhook compatible service he's talking about is flowboost. Sanford didn't mention it as he wrote it.
cheers
Jo
Indeed! The FlowBoost webhook payload would be like:
var fileOfCodes = "https://pages.example.com/rs/111-222-333/images/sample_codes.txt";
var counter = "/distributed_codes/{{Program.Id}}/v1";
FBHttp.fetch(fileOfCodes)
.then( resp => resp.text() )
.then( respT => respT.split(/\r?\n/) )
.then( codes =>
FBCounter.count(counter)
.catch( count => 0 )
.then( count =>
count < codes.length
? FBCounter.autoAdd(counter).then( resp => success(codes[count]))
: failure("All outta codes!")
)
)
.catch(failure)
Where sample_codes.txt is a simple text file in your Design Studio with one code per line:
QNFTMGPXLKC2
L09J6I8BTLJF
SQ5L263BDN23
AHDX8LZD91NT
UTWMHM7GFRTV
Then the webhook will return one code at a time like
{
"response": "QNFTMGPXLKC2"
}
{
"response": "L09J6I8BTLJF"
}
until it runs out.
I’ve also been working on a recipe for a very streamlined webhook-compatible service that you can spin up in seconds on AWS. It does 2 things, and 2 things only:
With those 2 simple features you can achieve some really complex stuff.
Let’s say you have a file codes.json in your Design Studio:
[
"QNFTMGPXLKC2",
"L09J6I8BTLJF",
"SQ5L263BDN23",
"AHDX8LZD91NT",
"UTWMHM7GFRTV"
]
Then your webhook URL could be like:
https://hookones.teknkl.com/?file=codes.json&counter=counter1
And the webhook payload is just the one-liner:
$.[${counter}]
The variable ${counter} gets replaced by the counter value, so each time you call it the JSONPath changes:
$.[0]
$.[1]
$.[2]
thereby fetching a new code off the stack.
Hi SanfordWhiteman,
My name is Jeff and I'm assisting my colleague Steve with this task. I'm a web developer but have zero experience with Marketo and using these built in web hooks.
Do you know of a resource that I can reference, other than this Marketo Nation forum community, that shows step by step, how to build this webhook and connect it to the Marketo workflow? This is my understanding of the process so far:
1) User fills out the form and submits
2) Marketo replies with an email confirming their submission
a) during the creation of the email, we call the webhook and retrieve the pass code via : "response": "QNFTMGPXLKC2"
b) if we have a value, we place the value of the response in a token (a placeholder??) or
if the webhook returns no value (there are no more codes), we may let the customer know that we have exhausted all pass codes (codes)
3) In your sample webhook code (1st one) , you have two lines at the top
var fileOfCodes = "https://pages.example.com/rs/111-222-333/images/sample_codes.txt";
var counter = "/distributed_codes/{{Program.Id}}/v1";
fileOfCodes is a variable holding the text file, we import that file into marketo and adjust the https://pages.example.... with the actual path where we uploaded the text file
counter is a variable holding the count. What does or how does the "/distributed_codes/{{Program.Id}}/v1" keep track of the count?
When creating the webhook, where do we put the sample code?
var fileOfCodes = "https://pages.example.com/rs/111-222-333/images/sample_codes.txt";
var counter = "/distributed_codes/{{Program.Id}}/v1";
FBHttp.fetch(fileOfCodes)
.then( resp => resp.text() )
.then( respT => respT.split(/\r?\n/) )
.then ( codes =>
FBCounter.count(counter)
.catch( count => 0 )
.then( count =>
count < codes.length
? FBCounter.autoAdd(counter).then( resp => success(codes[count]))
: failure("All outta codes!")
)
)
.catch(failure)
What I really would like to see is how to create a webhook step by step and how to integrate the new webhook in the workflow process.
Thanks so much for your help.
Jeff
Hi Jeff,
I’ll answer in a few parts for readability.
2) Marketo replies with an email confirming their submission
a) during the creation of the email, we call the webhook and retrieve the pass code via : "response": "QNFTMGPXLKC2"
b) if we have a value, we place the value of the response in a token (a placeholder??) or
Wouldn’t exactly say “during creation” of the email here as you’d call the webhook in response to the form fill.
In the webhook Response Mappings, you’d set the Response Attribute (left-hand-side) to response and the Marketo Field (right-hand-side) to a new custom String field you create for this purpose.
That Last_Passcode field will automatically be available as the token {{lead.Last Passcode}} in emails.
if the webhook returns no value (there are no more codes), we may let the customer know that we have exhausted all pass codes (codes)
Yes, you can detect the error message “All outta codes!” in a couple of different ways:
1. Map the Response Attribute errorMessage to another Marketo Field like Last Passcode Fetch Error or similar, and watch for changes to that field.
2. Trigger on the Webhook is Called activity with the response containing “All outta codes!”.