Code
Contents
Here is the source code for the Pardot example. To use it:
- Create a new channel and copy paste the code below into main().
- Create a new shared module called “node” and copy paste in the code below.
- Add the code require(‘urlcode’) and require(‘node’) at the top of the main module.
- Follow this urlcode example to link in the urlcode module.
- Test using sample data.
Code for main:
require("urlcode") require("node") function main(Data) local msg, name = hl7.parse({vmd = 'demo.vmd', data = Data}) local A={email='----------------------------', -- your email in Pardot password='----------', -- your Pardot password user_key='--------------------------------'} -- your Pardot user_key local B = urlcode.encodeTable(A) -- retrieve an "API key" local R,C,H = net.http.post{ live=true, -- for testing url='https://pi.pardot.com/api/login/version/3', body=B} --parameters=A} -- parameters also work local X=xml.parse{data=R} local ApiKey=X.rsp.api_key[1]:nodeValue() -- read prospects using POST as recommended by Pardot A = {api_key=ApiKey, user_key='--------------------------------',-- your Pardot user_key assigned_to_user='----------------------------',limit=10} -- your email in Pardot B = urlcode.encodeTable(A) local D=net.http.post{ live=true, url='https://pi.pardot.com/api/prospect/version/3/do/query', body=B} --parameters=A}-- parameters also work local X=xml.parse{data=D} -- you can also read by using GET A = {api_key=ApiKey, user_key='--------------------------------',-- your Pardot user_key assigned_to_user='----------------------------',limit=10} -- your email in Pardot local D=net.http.get{ live=true, url='https://pi.pardot.com/api/prospect/version/3/do/query', parameters=A} local X=xml.parse{data=D} -- create a new prospect in Pardot local firstName=msg.PID[5][1][2]:nodeValue() local lastName=msg.PID[5][1][1][1]:nodeValue() local Email=msg.PID[13][1][4]:nodeValue() A = {api_key=ApiKey, user_key='-------------------------------',-- your Pardot user_key email=Email, -- required, must not exist in Pardot first_name=firstName,last_name=lastName} -- optional B = urlcode.encodeTable(A) local D=net.http.post{ live=true, url='https://pi.pardot.com/api/prospect/version/3/do/create', body=B} -- parameters=A}-- parameters also work local X=xml.parse{data=D} end
Code for node module:
function node.S(ANode) return tostring(ANode) end
Possible modifications interesting notes etc:
- You need to change the login details (“——————–” in main), get the user_key from MySettings in Pardot.
- Gotcha: I limited the the rows returned to 10 for a quick response (note: the default of 200 causes http timeout errors).
- Pardot recommends passing parameters in the POST message body (see authentication and using the API), this requires url encoding. If you want to avoid the extra step of encoding you can use GET/POST parameters.
- Pardot hides useful examples at the bottom of the using pages for Prospects, Users etc – so be sure to scroll down…
Back to: Connecting to Pardot