Thank you so much for your interest in my Podio Direct Mail Campaign Manager. I am sure you will have little trouble duplicating what I have setup and getting working for your business. If at any time you have questions or problems leave a comment below or send me an email at scott@strugglinginvestor.com.
What is this tutorial about?
This tutorial will show you step by step how I created my Direct Mail Campaign Manager using Podio and GlobiFlow. There are a total of 9 modules, complete with videos to help you set this up for yourself.
Why did I create the system?
I wanted a completely automated system for sending out my direct mail. This includes scheduling, mail merging, printing and delivery. If I could just upload a list of leads, assign that list to a campaign and then let it run…That would be PERFECT!
How Much will it cost you?
I’m not charging you anything for this tutorial. It’s fun for me to create these Podio setups and it gives me a chance to pay it forward because so many people have helped me out. While I may not charge you, you’ll need to spend some bucks on the lowest GlobiFlow package.
- Tutorial$0Pay It Forward
- Podio$0Free Plan
- GlobiFlow$0/moSmallest Plan
- Total$0/moCost
When you are done with this Podio Tutorial you will have a complete working Direct Mail Management System. I recommend creating a dedicated Podio Workspace for this system. Workspaces are a great way to separate the different systems in your business. Since Direct Mail is different from my Lead Funnel System I broke them up into their own Workspaces.
To get a complete overview of this Podio direct mail system, go back and read my blog post about Podio Direct Mail Campaigns. Additionally if you want a deeper understanding on why I setup the apps the way I did then take a look at my blog post about The Proper Way to Setup Your Lead Flow in Podio.
Now it’s time to get at it. In this module I’m going to go over what you are going to be setting up in tutorials 2 through 11. Each section has a description, breakdown of the fields/actions that you will setup and finally a video that takes you through the entire setup.
Podio Apps
The Direct Mail System is broken up into 5 different Apps…
Name | Description |
---|---|
Letter Templates | Where all the Letters will be stored to be used in mailings |
Mailings | Individual mailings of a campaign will be setup in this app |
Campaign Templates | These templates will be where we organize the mailings |
Campaigns | Your Direct Mailing Campaigns. Pulls together the leads and templates and runs the campaigns |
Leads | Where your leads will be uploaded and stored |
Additionally there are 4 GlobiFlow process that are run against the Campaigns App that do the following tasks…
GlobiFlow Flows
Name | Description |
---|---|
Campaign Setup | Assigns the Campaign Template and Schedules the First Mailing |
Print Letters | Prints the current mailings letters by mail merging the assigned leads. Pdf file will be created and attached to the lead |
Printing Mailings by Update Trigger | Triggered by a Category Field Change in the Campaigns App, this process calls the Print Letters Flow. |
Automating the Printing Process | Checks each day if a mailing is schedule to go out and if so runs the printing process |
The Podio side of this setup is very easy to do and shouldn’t be a problem for anyone. The GlobiFlow setup is where some people might get tripped up. I did my best to detail each step of the process so if you have copied everything I did then you should have no problem. Try not to make changes until you understand what is going on.
The first Podio App we are going to create is the Letters App. This is where I put all my letter templates. The reason for having a dedicated app just for Letters is that it gives me the opportunity to reuse the same letter in different mailings and campaigns. Additionally it makes it easy to update the content of a letter in one spot.
Let’s take a look at the fields in this app…
Name | Type | Settings | Description |
---|---|---|---|
Name | Text | Single Line | The name of the letter. Nothing special about this field, just give it a simple name to help you tell what it is for |
Type | Category | Single Choice | I like to have a field where I can categorize the letter. Gives me an easy way to group and filter. Typical categories would be Probate, Absentee, Foreclosure, Other |
Content | Text | Multi Line | The Letter’s Content. This holds the entire letters content and formatting. You can use basic HTML tags like < b >, < i >,< p > and more. The HTML will be read by Globiflow when it converts the content to a PDF. Additionally you place your merge markers here as well |
Notes | Text | Multi Line | Just a place to add any additional notes or comments about this letter. Say you have another version, you can refer to it here |
The Mailings App is sorta your middle man app. You’ll use it to define each of the separate mailings withing a campaign template. I’ll create a mailing record for each mailing I want to have in my template. While you can use the same Mailing in multiple campaign templates, I prefer to only relate one mailing to one template. Makes it easier to manage.
For each mailing, I’ll set the Letter to use, the Sequence Number in which this letter will go out and finally when (Days From Start) this letter will be sent.
Here are the fields…
Name | Type | Settings | Description |
---|---|---|---|
Description | Text | Single Line | The name of the mailing. Nothing special about this field, just give it a simple name to help you tell what it is for |
Letter | Relationship | Single References | With this field I select the Letter that I want to send out for this particular mailing. I can select any letter that I want, even use the same letter for all mailings. |
Sequence Number | Number | Display Whole Numbers | This is where I will set the order in which this mailing will go out. If this is going to be the second mailing in my template, then I’ll put a 2 here. |
Days From Start | Number | Display Whole Numbers | Here will be where I set when this mailing will be sent. All I have to do is enter in the Number of Days from the start of the campaign that I want to send this letter. If I’m sending a letter every 30 days and have 3 mailings, the value in this field for each mailing will be 0, 30 & 60 respectively. |
The Campaign Template App is the top level of the template. This is where I group my mailings together in one package to keep things organized. There are only 3 fields in this app, but it makes it possible for you to quickly schedule your campaigns by just assigning the campaign template to a campaign.
You can add as many or as few templates as you want. There are no Globiflow processes behind this, you just set it and forget it.
Here are the fields…
Name | Type | Settings | Description |
---|---|---|---|
Name | Text | Single Line | The name of the template. Nothing special about this field, just give it a simple name to help you tell what it is for |
Mailings | Relationship | Multi References | This is a relationship field where you will select which Mailings are to be included in this campaign. You can have 1 mailing or you can link 10 mailings. |
Type | Category | Single Choice | A category field where you can select what type of campaign this will be. Typical options would be Yellow Letter, Email, Text, Postcards. Just another informational field in the end. |
The Campaigns App is where everything comes together. It controls the campaign by associating the leads to the template; says when the campaign will start; when the next mailing is; and handles the printing of the letters.
What makes this all work are the Globiflow Processes behind it. Those processes are in charge of setting the mailing dates and sequence number; assigning the template; and printing out the letters.
In this module, we will only be creating the Podio App. All the GlobiFlow processes will come in modules 7 to 10. Here is a look at the fields in this App…
Name | Type | Settings | Description |
---|---|---|---|
Name | Text | Single Line | This is Name that you give the Campaign. You can put anything you want here, but it’s a good idea to come up with some naming methodology to help you keep things organized |
Campaign Template to Use | Text | Single Line | This field holds the Name of the Campaign Template that you want to use. Globiflow will use this value to look up which Template to attach to the campaign |
Campaign Template | Relationship | Single Reference | This is the actual link to what Template is being used for the campaign. It controls what letters are to be sent out and at what interval they will be sent |
Status | Category | Single Choice | Status of the Campaign. My process uses the statuses Not Started, Active, Paused, Finished |
Category | Single Choice | Here are your Action Buttons so to speak. In Podio you can use Category Fields as buttons to trigger Globiflow Processes. Here I have options to Print Letters,Print Envelopes plus resting place option called Do Nothing. My process flips the value of this field back to Do Nothing after printing is complete. | |
Start Date | Date | Hide End Date; Hide Time Entry | Status of the Campaign. My process uses the statuses Not Started, Active, Paused, Finished |
Next Mailing Date | Date | Hide End Date; Hide Time Entry | The date the next mailing should go out. The value is determined by the Globiflow process that takes the start date and adds the next mailings Days From Start value to get this date. |
Next Mailing Seq | Number | Display Whole Numbers | This is the Mailing Sequence number of when letter will be going out next. Globiflow uses this value to determine which letter to print and what the next mailing will be |
Error in Video
In this video I neglect to set the **Campaign Template to Use** field to a **Single Line** Field. Podio defaults Test fields to Multi-lined. Leaving the field Multi-Lined causes an issue with the Globiflow Process for Campaign Setup in which the Filter won’t have the **Does not equals** option.The Leads App is where you import all your lead lists into. It is also where you will keep track of leads that have responded and leads that you don’t want to mail to anymore. I keep track of those two things in a Category field called Status.
This App is very straight forward and can be expanded to include more information if needed. These are the required fields for my Podio Setup.
Name | Type | Settings | Description |
---|---|---|---|
Address | Text | Single Line | This is the property’s address field |
City | Text | Single Line | Property’s City/Town name |
State | Text | Single Line | Property’s State |
Zip | Text | Single Line | Property’s Zip Code |
Status | Category | Single Choice | This is the Lead’s Status. I use Mail, Responded and Dead as my options. This status will be used to determine if my process prints a letter for this lead or not. |
Map | Map | -default- | Populate this field with the full property address (123 Main St, Trenton NJ 07601) and Podio will show the location of the property on a map. |
Last Name | Text | Single Line | Contact’s Last Name |
First Name | Text | Single Line | Contact’s First Name |
Phone | Phone | -default- | Contact’s Phone Numbers |
-default- | Contact’s Email Addresses | ||
mailing Address | Text | Single Line | Contact’s Mailing Address |
Mailing City | Text | Single Line | Contact’s Mailing City |
Mailing State | Text | Single Line | Contact’s Mailing State |
Mailing Zip | Text | Single Line | Contact’s Mailing Zip Code |
Campaign | Relationship | Multiple References | This field is used to select the campaign that the lead belongs too |
List | Relationship | Multiple References | This field is used to assign the lead to a list. You’ll use the list so you can later pull refer back to all the leads in a particular list |
As part of my efforts to make this process as automated as possible I setup a GlobiFlow process to run when a new campaign has been created. This is not a complex process at all. What it does is the following….
- Attaches the Campaign Template
- Determines the First Mailings Date
- Sets the Sequence Number to the first mailing
- Creates a Task to remind you to print the first mailing
Here is a breakdown of what goes into the GlobiFlow Process Flow that you will create in this module. The video will walk you through the steps.
The Trigger
Step | Trigger | Description |
---|---|---|
1 | When a new Campaign Item is Created | Every time a new campaign gets created this flow will fire off. Doesn’t matter if you create the campaign manually or from the import of your leads, this will run. |
The Filter
Step | Filter | Description |
---|---|---|
1 | Field Value Match | Check to see if the Campaign Template to Use field contains a value. If it is blank then don’t run the Flow. |
The Process
1 | Assigns the Campaign Template to Use. | When I import leads from Excel, I’m only able to populate the Campaign Template to Use field. So what GlobiFlow does is, takes the value in that field, finds the Template with the matching name and links it to the Campaign that was just created. |
2 | Sets the Next Mailing Sequence value to 1. | Nothing special going on here, just telling the campaign we want to start with the first mailing. |
3 | Sets the Next Mailing Date to Start Date + Days from Start of first Mailing. | Basically, GlobiFlow will take a look at the first Mailing to get the Days From Start value then adds it to the Campaign’s Start Date that you set. |
4 | Sets the Status value to Not Started. | Just the initial status of a campaign. Once the start date comes, or you print your first mailing, it will be changed to Acitve. |
5 | Sets the Print value to Do Nothing. | Do Nothing is the resting value for this Action field. When it’s time to print a mailing you’ll click Print Letters |
6 | Create a Task for the first mailing | This task will go into your Podio Calender as well as your task list. You will get notifications letting you know when this task is due. |
Video & Screen Shot
Error in Video
This video has an error in it. I forgot to include the “Create New Variable” action between Getting the Reference and Updating the campaign item. The Screen Shot of my GlobiFlow Process on the Screen Shot Tab is correct however. I’m in the process of recreating this video to fix the problem.
My Exported Flow
GlobiFlow allows users to Export their Flows in XML format which then can be Imported into someone else’s GlobiFlow. This is handy when you are trying to recreate an entire system for someone else. That is exactly what we are doing here so I’ve attached my Campaign Setup Export here.
Campaign Setup XML (right click and select Save Link as…)
In Module 12 I’ve recorded a video showing you how to import these XMLS files.
GlobiFlow can do some incredible things and this process is a shining example of that. In this module you will create a Manual Flow that will determine which mailing a campaign is on, what letter to use and then pull in all the leads assigned to the campaign and print a letter out for each of the Active ones.
A Manual flow in GlobiFlow is a Flow in which it needs to be called by another GlobiFlow Flow. It won’t be triggered by Podio directly. The reason why I created a Manual Flow is because we are going to be calling this Process from 2 other Flows. No reason to have duplicate processes in different Flows if you can prevent it.
A word of caution before you begin this module…There is a lot going on here and it might get confusing. I did my best to explain each step and even created an over view video where I gave you a 10,000 foot explanation of what is going on. Hopefully you don’t have a problem. If you do, GlobiFlow allows you to export Flows to file and then Import them in. So I have included that export file in this module as well. You’ll see that after the Tutorial Videos.
The Trigger
Step | Trigger | Description |
---|---|---|
1 | Manually by Antother Flow | This flow can only be Triggered by calling it from another Flow |
The Filter
Step | Filter | Description |
---|---|---|
– | none | we want to run this flow every time it is called |
The Actions
Step | Action | Description |
---|---|---|
1 | Get Reference Items | First thing we need to do is get the Mailings from the Campaign Templates app. We do this by using following the references from Campaigns to Campaign Templates to Mailings. |
2 | Create a New Variable (letter) | We create and initialize the variable Letter. This variable will hold the culmination of all the letters after we mail merge |
3 | Create a New Variable (LetterContent) | We create and initialize the variable Letter Content. This variable will hold the contents of the letter template |
4 | Create a New Variable (DaysFromStart) | We create and initialize the variable DaysFromStart. This variable will hold the number of days from start of the next mailing to go out. |
4 | Create a New Variable (NumberOfMailings) | We create and initialize the variable NumberOfMailings. This variable will hold the total number of mailings that are in the campaign. |
5 | For Each Loop (Mailings) | We now are going to start to loop through the mailings of the template to find the current mailing and the next one. |
6 | Create a new Variable (Increment NumberOfMailings) | The first thing we do in the loop is to increment the total number of mailings. We use this value later on in the process to determine if we are done. |
7 | If (Sanity Check) | Check to see if the mailing we are on in the loop matches the Campaigns Next Mailing Seq field value |
8 | Create a New Variable (LetterSeqNo) | We want to store the letters sequence number for later use |
9 | Search for Item(s) in another App (Letter Template) | Here we search for the Letter Template the Mailing is using. We will pull the Content value |
10 | Create a New Variable (LetterContent) | Store the Letter’s Content value here. We will use this to mail merge the lead data |
11 | End If | This is the end of the actions for when the Mailing Sequence Equals the Campaigns Next Sequence Number |
12 | If (Next Mailing) | Checking to see if loop is on the next mailing in the sequence |
13 | Create a New Variable (DaysFromStart) | Grab the DaysFromStart value from the next mailing. We will use this to calculate the next mailing date |
14 | End If | End if the (Next Mailing) If block |
15 | Continue | This statement says to go onto the next Action once the Loop has finished |
16 | Get Reference Items (Leads) | Grab all the Leads that are assigned to the Campaign |
17 | For Each Loop (Leads) | Loop through all the leads to get their information for mail merging |
18 | If (Status is Active) | Check to see if the current lead’s status is Active. If so we want to send it a letter |
19 | Create a new Variable(Body) – ##Address## replace | Searches the LetterContent for ##address## and replaces it with the Lead’s Address. |
20 | Create a new Variable(Body) – ##city## replace | Searches the LetterContent for ##city## and replaces it with the Lead’s City. |
21 | Create a new Variable(Body) – ##state## replace | Searches the LetterContent for ##state## and replaces it with the Lead’s State. |
22 | Create a new Variable(Body) – ##zip## replace | Searches the LetterContent for ##zip## and replaces it with the Lead’s Zip. |
23 | Create a new Variable(Body) – ##name## replace | Searches the LetterContent for ##name## and replaces it with the Lead’s First Name. |
24 | Create a new Variable(Body) – ##my-name## replace | Searches the LetterContent for ##my-name## and replaces it with your name. |
25 | Create a new Variable(Body) – ##my-phone## replace | Searches the LetterContent for ##my-phone## and replaces it with your phone number. |
26 | Create a new Variable(Letter) | Adds the new LetterContent to the Letter’s Variable. The Letter’s variable will be converted to a PDF later on. |
27 | End If (Active) | Ends the If block where we were checking the lead’s status |
28 | Continue | When we are finished looping through the leads, continue on to the next Action |
29 | If (Not Last Mailing) | Check to see if we are on the last mailing. If not then run the next few actions |
30 | Update the Campaign | Calculate Next Mailing Date, Next Seq Number and reset Values for Print and Status. |
31 | Create a Task | Create a Podio task on the Next Mailing Date to remind us we need to print the next batch of mailings |
32 | End If | The end of the If (Not Last Mailing) Block |
33 | If (Last Mailing) | If we are on the last Mailing in the Campaign then run these Actions |
34 | Update the Campaign | Sets the Status to Finished, Print to Do Nothing and removes the values from Next Mailing Date and Seq. |
35 | End If (Last Mailing) | The end of the If (Last Mailing) Block |
36 | Create PDF and attach it to the campaign | The Action creates a PDF based off the content in the Letter Variable. It will also automatically attached the PDF to the Campaign Item in Podio. |
Video & Screen Shot
I broke this video up into 2 separate vidoes because I thought it would help you if I explained what was going on first. So I created an overview video that simply broke down what this GlobiFlow Flow is doing. The second video is the Step-by-Step tutorial.
Body = str_replace(“##address##”, [(ref Lead) Property Address],[(Variable) LetterContent])
Now each subsequent Body variable must build off the previous one so instead of using the [(Variable) LetterContent], you need to use the Body variable [(Variable) Body] or you are just ignoring the previous step.
So this is how each of the Body Variables should look like…
Body = str_replace("##address##", [(ref Lead) Property Address],[(Variable) LetterContent]) Body = str_replace("##city##", [(ref Lead) Property City],[(Variable) Body]) Body = str_replace("##state##", [(ref Lead) Property State],[(Variable) Body]) Body = str_replace("##zip##", [(ref Lead) Property Zip],[(Variable) Body]) Body = str_replace("##my-name##", "Daniel Fisher",[(Variable) Body]) Body = str_replace("##my-phone##", "(484)367-4995",[(Variable) Body]) Body = str_replace("##name##", [(ref Lead) First Name],[(Variable) Body]) Letter = [(Variable) Letter]."<div style='page-break-before: always;'>".[(Variable) Body]."</div>"
I will fix the video when I get the chance. Very sorry about this oversight on my part.

My Exported Flow
GlobiFlow allows users to Export their Flows in XML format which then can be Imported into someone else’s GlobiFlow. This is handy when you are trying to recreate an entire system for someone else. That is exactly what we are doing here so I’ve attached my Print Letters Export here.
Print Letters Export XML (right click and select Save Link as…)
In Module 12 I’ve recorded a video showing you how to import these XMLS files.
In this module you will setup the Flow that will run if you manually click Print Mailing from the Campaign Podio App screen. All it does is run the Print Mailing Flow that we created in the last module.
So lets take a look at what I did to set this one up…
The Trigger
Step | Trigger | Description |
---|---|---|
1 | When an Item is Updated | This flow gets triggered when we update a Campaign Item |
The Filter
Step | Filter | Description |
---|---|---|
1 | If Field Print Value has just Changed | Only run these Actions if the Print Value has just changed |
2 | AND IfPrint Value Equals Print Letter | Only run these Actions if value of Print is Equal to Print Letter |
The Actions
Step | Action | Description |
---|---|---|
Video & Screen Shot

My Exported Flow
GlobiFlow allows users to Export their Flows in XML format which then can be Imported into someone else’s GlobiFlow. This is handy when you are trying to recreate an entire system for someone else. That is exactly what we are doing here so I’ve attached my Print Letters Button Press Export here.
Print Letters Button Press Export XML (right click and select Save Link as…)
In Module 12 I’ve recorded a video showing you how to import these XMLS files.
In this module you will setup the Flow that will automatically print your mailings on the day they are scheduled to print. So basically this will completely automate your Direct Mail Campaign printing. If you are hooked up to Lob, another printer or even have hired a person to put your mailings together, you can have GlobiFlow email the PDF containing the letters so they can print, stuff, stamp, address and mail them.
What this Flow actually does is, every morning (3AM EST), checks all your campaigns to see if any of them are schedule to be printed on the current date. If so, it fires off the Print Mailing Flow for that Campaign.
So lets take a look at what I did to set this one up…
The Trigger
Step | Trigger | Description |
---|---|---|
1 | When an Item is Updated | This flow gets triggered when we update a Campaign Item |
The Filter
Step | Filter | Description |
---|---|---|
1 | If Field Print Value has just Changed | Only run these Actions if the Print Value has just changed |
2 | AND IfPrint Value Equals Print Letter | Only run these Actions if value of Print is Equal to Print Letter |
The Actions
Step | Action | Description |
---|---|---|
Video & Screen Shot

My Exported Flow
GlobiFlow allows users to Export their Flows in XML format which then can be Imported into someone else’s GlobiFlow. This is handy when you are trying to recreate an entire system for someone else. That is exactly what we are doing here so I’ve attached my Print Letters Automated Process Export here.
Print Letters Automated Process Export XML (right click and select Save Link as…)
In Module 12 I’ve recorded a video showing you how to import these XMLS files.
We have one final thing to go over before we are completely done…The Excel Import File. While this step is not hard, it’s important to get right or things may not work correctly. What this module will show you are the 3 columns that you need to add to all your lead lists before you can import them.
# | Column | Description |
---|---|---|
1 | Campaign Name | This is the descriptive name that you will give every campaign. Try and make it unique like New York City Campaign #1 |
2 | Campaign Template to Use | This will be the exact name of the Template you wish to use in for your campaign |
3 | Start Date | The date that the Campaign will start. This is the date that all Mailing dates will be based off of. |
If you have everything setup and assigned to the correct Podio fields…a Campaign will be created for all the leads in the list. Watch the video below to see how this is done.
Video
At the end of each of the GLobiFlow Modules I supplied the XML Export of each of my Flows. These files provide you with exact copies of my Flows. They can be imported into your GlobiFlow workbench and you’ll instantly have the Flow installed.
Please be advised that your Podio setups must match exactly how I have mine setup (App and Field Names, Types and Category options). If they are not exact then I can not guarantee that this will work.