There are many different ways to integrate landing pages/online forms with a user's email and data into Iterable. One that we've seen used by several customers (and have used ourselves) is to use Zapier as an intermediary.
Zapier is helpful because it lets you clean/manipulate the data you pass into Iterable without any coding. Doing this on your own would require you to write a script and host it somewhere. If you are not that technical, or want to set up something quickly, doing it via Zapier is the way to go.
For this specific integration example, you need:
There are three high-level things you will do in this integration:
- Set up Unbounce to send your form data to a Zapier webhook.
- Set up Zapier to catch that data, optionally manipulate it in some way, and send it to an Iterable webhook.
- Optional: Set up a workflow in Iterable to do something with the user's data once it is in your project.
Here are the step-by-step instructions:
1) In Zapier - start a new Zap.
- Make it a Webhook (catch) to Webhook (post) Zap.
- Then copy the custom webhook URL they generate for you. Note: do not share this custom URL - it should be private to your project.
Leave this browser tab in Zapier open since you will come back to it in a minute.
2) In Unbounce - activate their "Webhook: Post to URL" integration.
And paste the custom webhook URL from Zapier into the field in the window that comes up. Press "Save and Continue".
3) In Unbounce - map your form data.
You need to map the information you collect in the form to the data you want to send to Zapier. The interface looks as follows:
In the case above, we mapped the email we are collecting in the form ("Work email") to a field called "email" in the Webhook. You can similarly map any other field (or create custom fields) in this interface. We recommend you have a custom field that passes an arbitrary string (like "unbounce_signup") that will come in handy later.
This step is what determines what form data you send and what it is called. This is important for later in the integration.
Once you are done mapping, press Done. This will set up the webhook on the Unbounce side.
Note: At this point, you should fill in and submit your Unbounce form a couple of times with test data. This will send some data up to Zapier, which uses it to gather information on your fields.
4) In Zapier - set up any data filters (optional).
You can filter the data you will receive from Unbounce. This is useful if you don't want to process every single form entry (e.g., those that did not opt-in to a newsletter). If you don't need to filter, skip this step.
Zapier lets you choose the field you want to filter on and then the type of filter (e.g., matches an exact string, as in the screenshot below).
Note: this last item is why you want to send some initial test data from Unbounce to the Zapier webhook. Zapier needs to see example data in order to know what fields to expect and potentially filter on.
In this example, we are filtering on the "Newsletter" field and only letting through entries where that field exactly matches the string "Sign up for the Iterable newsletter".
5) In Iterable - get your API key.
Click on the "Integrations" tab in the side navigation and the "API Keys" sub-tab. Then click on the "Create API Key" button (with Standard as the selected option) and then copy the API key that was just generated. Note: Do not share this API key - it is private to your project.
6) In Iterable - construct the webhook URL.
For the purposes of this integration, you will use Iterable's events/track API to "catch" the data on the Iterable side. There are other options, but this one is very flexible (click here to see more information on all Iterable APIs).
Take the key you just copied and paste it to the end of this string:
This whole string (the URL above with the actual key appended to it) is the URL on the Iterable side that will catch the Zapier webhook in your account.
7) In Zapier - enter data destination and final mapping.
Further down the screen, you will tell Zapier what URL to post the information to (on the Iterable server) and what data to send.
- Paste the URL you just created (with the Iterable key) into the URL field.
- Make sure the Payload Type is JSON.
Please note: Select "yes" for "Unflatten"
Finally, you need to tell Zapier what data to send to Iterable and with what field names. The Iterable events/track API is expecting the following fields:
- eventName - this can be an arbitrary string like "unbounce_signup" or whatever else you choose from what you are sending from your form. The best way to address this may be to create a "custom field" back in Unbounce that contains this arbitrary string (this was mentioned in step 3).
- email - this is your user's email address
- dataFields - this is OPTIONAL. See the note below for an explanation of how this works.
You tell Zapier what fields to map by clicking the "Insert Fields" button you see to the right of each field. Note: This, again, is why you sent test data from your form - Zapier needs to have seen an example of your data in order to make those fields available to you here.
NOTE (on dataFields): Iterable is expecting dataFields to potentially contain multiple values (or key-value pairs). These could be any of the other fields you are collecting in your Unbounce form beyond email. The way to tell Zapier to send multiple key-value pairs within a single field is to do what is shown in the screenshot above.
For example, lets say you want to pass 2 fields to Iterable: "age" and "height". In Zapier, in the textfields on the left you would enter:
dataFields__age (instead of dataFields__field1)
dataFields__height (instead of dataFields__field2)
PLEASE NOTE: those are two (2) underscores, not just one
And in the fields on the right, you would once again press the "Insert fields" button to select what fields you will assign.
Once you have finished this step, scroll down in the Zapier page and press "Turn Zap On".
At this point you are set up to send data from Unbounce to Zapier, and from Zapier to Iterable. Since you are using your private Iterable API key, Iterable will see that Zapier is sending data via a webhook, will catch the data and will add it to your project.
NOTE: Since this example uses the event/track API call, a custom event will be recorded in Iterable. However, this will NOT create a user profile that can be used in Segmentation.
You will be able to find the user through the User Lookup tool, but the user will not be found in any Segmentation queries until you create the user profile through an add list action, update API call, or send message action, or update subscriptions action.
If you want to do something additional with the user data in Iterable, there is one final step. One example of something you may want to do is add the user to a specific list in your Iterable project. We will do that in the next step.
8) In Iterable - create a workflow.
You can accomplish this last step with a Workflow (you may want to review our Workflow Overview guide). Go to the "Workflows" side tab and click on "New Workflow".
You want to create a workflow that looks something like this:
The green node is the trigger. If you double click it, you will see that it is triggered on a custom event. In this case, the custom event is "unbounce_signup". You may recall this is the eventName field we included in the Zapier webhook call. You can call it any name you like, you just have to be consistent. When Iterable sees that event name, it will trigger this workflow.
The next step is a simple action node. In this case, it adds the user to the list "Email newsletter signups".
Finally, we have an extra option here that updates the user's profile with "web-requestdemo" as the "marketingsource". This is just an example - you could skip this node entirely, or use it to update with any info relevant to your project.
And that's it. You have taken data from your Unbounce landing page/form, sent it up to Zapier and then on to Iterable, where you can manipulate it as necessary with our workflows.