This article outlines the steps to set up the Marketo integration with Postal.
Contents
- Create API-Only User
- Create a LaunchPoint Service
- Trigger Custom Field
- Channel Setup
- Custom Activity Setup
- Enable in Postal
- Webhook Setup
- Version History
Note: you will need Admin access in Postal and in Marketo + access to all Marketing Assets |
Good to know!
- Marketo does not proactively sync contacts, but rather a Do Nothing trigger needs to be created to pull in contacts.
- Address verification occurs as contacts sync when there are multiple integrations with conflicting info
- The Marketo integration will sync addresses by default unless you change your webhook to tell it not to
Step 1: Create API-Only User
Start in Marketo.
(You may not need to do this step if you already have an API user with proper access setup)
- In Marketo navigate to Admin > Security > Users & Roles > Roles > New Role
- Role Name: API User
- Selected permissions > Access API: Read-Only Campaign, Read-Only Assets, Read-Only Person, Read-Only Sales Person, Read-Write Activity, Read-Write Activity Metadata
- Click Create
- Next, invite the API User you have just created by navigating to Admin > Security > Users & Roles > Invite New User
- Provide basic API user details
- Select the API User role and click the API Only checkbox
- Click Send (it won't actually send an email invite)
Step 2: Create a LaunchPoint Service
- Admin > Integration > LaunchPoint > New
- Display name: Postal.io
- Service: Custom
- Description: Postal.io Integration
- Select the API Only user you created in Step 1
- Click Save > Once saved, click View Details on your newly created LaunchPoint service. You will need the Client Id value and the Client Secret which can be found in your newly created LaunchPoint Service, as well as the REST API Endpoint value which you can find in Integration > Web Services
IMPORTANT: To set up your Marketo integration in Postal.io you will need the Client Id value and the Client Secret which can be found in your newly created LaunchPoint Service, as well as the REST API Endpoint value which you can find in Integration > Web Services. (Example Value: https://777-DQO-478.mktorest.com/)
Note down the following information for Step 6:
- Client ID
- Client Secret
- REST API Endpoint Value
Step 3: Trigger Custom Field
- From Admin, navigate to Database Management > Field Management > New Custom Field
- Enter the following:
|
Entry |
Value |
|
Object |
Person |
|
Type |
String |
|
Name |
Postal Trigger ID |
|
API Name |
postalTriggerID |
Step 4: Channel Setup
Creating this channel allows you to track the status of your sends.- From Admin, navigate to Tags > New > New Channel > Channel: Postal Sends
- Enter the following:
|
Status |
Step |
Success |
|
Opened |
20 |
|
|
Accepted |
30 |
|
|
Processing |
40 |
|
|
Shipped |
50 |
|
|
Delivery Error |
60 |
|
|
Delivered |
70 |
Yes |
Step 5: Custom Activity Setup
The following Custom Activites live on the Person Object in Marketo.
From Admin, navigate to Database Management > Marketo Custom Activities > New Custom Activity. You will need to create 4 activities and 3 fields.
Important! After you create these custom activities, make sure to approve them from the Custom Activities Actions dropdown menu.
Activities
|
Display Name |
API Name |
Filter |
Trigger |
|
Postal.io Opened Email |
postal.IoOpenedEmail_c |
Opened Email |
Opens Email |
|
Postal.io Accepted Item |
postal.IoAcceptedItem_c |
Accepted Item |
Accepts Item |
|
Postal.io Item Delivered |
postal.IoItemDelivered_c |
Item Delivered |
Item Delivery |
|
Postal.io Delivery Failed |
postal.IoDeliveryFailed_c |
Delivery Failed |
Delivery Failure |
Fields
|
Data Type |
Name |
API Name |
|
String* |
Item Name |
itemName |
|
Currency |
Cost |
cost |
|
String |
Program ID |
programID |
*Check the Primary Field Box when creating this Field
Step 6: Enable the Marketo Integration in Postal
Have the following from Step 2 available
- Client ID
- Client Secret
- REST API Endpoint Value
Navigate to Postal > Profile > Integrations > Connect to Marketo.
Step 7: Webhook Setup
From Admin navigate to Integration > Webhooks > New Webhook
- Name: Postal.io Trigger
- Description: Postal.io Item Trigger
- URL: (get this value from your Postal.io Integration - Marketo page)
- Request Type: POST
- Request Token Encoding: JSON
- Response type: JSON
Template:
Note: when copying the below template an extra space after the bracket "{" may be added. Please check that no extra space is present once you have pasted this into the new webhook.
{
"id": {{lead.ID}},
"email": {{lead.Email Address}},
"title": {{lead.Job Title}},
"firstName": {{lead.First Name}},
"lastName": {{lead.Last Name}},
"externalSalesPersonId": {{lead.Lead Owner Email Address}},
"companyName": {{company.Company Name}},
"address": {{lead.Address}},
"city": {{lead.City}},
"state": {{lead.State}},
"postalCode": {{lead.Postal Code}},
"country": {{lead.Country}},
"phone": {{lead.Phone Number}},
"triggerId": {{lead.Postal Trigger ID}},
"ownerId": {{lead.Lead Owner Email Address}},
"ownerIdSystem": "postal.io"
}
If you want to force Postal to use the address in your trigger, add a field after
"country": {{lead.Country}},
That is
"preferred": true,
NOTE: The Marketo integration runs every 15 minutes, so if you don't see your information in Postal right away, don't panic! Give it 15 minutes and refresh the page.