SOLVED

Re: How do I send a confirmation email with a unique code?

Go to solution
Stephen_Moore
Level 2

How do I send a confirmation email with a unique code?

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

2 ACCEPTED SOLUTIONS

Accepted Solutions
SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?


  1. Create a custom text {{my.passcode}} token local to your program (add a placeholder default value as the token value)
  2. ...

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.

View solution in original post

Jo_Pitts1
Level 10 - Community Advisor

Re: How do I send a confirmation email with a unique code?

@Stephen_Moore,

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

View solution in original post

19 REPLIES 19
SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?


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?

Stephen_Moore
Level 2

Re: How do I send a confirmation email with a unique code?



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.

Darshil_Shah1
Level 10 - Community Advisor + Adobe Champion

Re: How do I send a confirmation email with a unique code?

Off the top of my head, here's what you can do -

  1. Create a custom text {{my.passcode}} token local to your program (add a placeholder default value as the token value).
  2. Create an email, plug the {{my.passcode}} token where you want to display the passcode in the email.
  3. Create a trigger campaign with Campaign is Requested trigger source "Web Service API".
  4. In the flow of the campaign use the Send Email flow step to send the email.
  5. You'll need to customize the form submission action to execute below steps, 6 & 7 or built a web-service to do so.
  6. You can choose to store the pass-codes in a stack, and use AJAX calls to query off the pass-code from the top of the stack for each form fill. Make sure you remove the top code after each query to ensure you have un-used pass-code for the next person filling out the form.
  7. Asynchronously call the request Trigger campaign endpoint and each time supply the unique pass code value for the {{my.passcode}} token in the POST request body (the one you got after querying the stack in step 6).
  8. Depending on the platform you choose to store/manage your stack, you can see if a custom alert email can be configured to let you know when the stack gets emptied.

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.

SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?


  1. Create a custom text {{my.passcode}} token local to your program (add a placeholder default value as the token value)
  2. ...

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.

Jo_Pitts1
Level 10 - Community Advisor

Re: How do I send a confirmation email with a unique code?

@Stephen_Moore,

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

SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?

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.

SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?

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:

 

  • remembers how many times it’s been called with a set of parameters (those params are arbitrary and only have meaning to you)
  • loads a remote file and runs a JSONPath query on it

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.

jboconne
Level 1

Re: How do I send a confirmation email with a unique code?

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
 

SanfordWhiteman
Level 10 - Community Moderator

Re: How do I send a confirmation email with a unique code?

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.

SanfordWhiteman_0-1645131586652.png

 

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!”.