How to Send Birthday Campaigns with Pardot

Share this article...

Birthday campaigns are a way marketers can touch prospects on their special day; even just a simple greeting with a discount makes an impact. It’s the unexpected things you do that gets your brand noticed.

Question is: how can you fully automate this process? This has been on my mind, as I just celebrated my birthday this past weekend, so I wrote this post to walk you through the set up. You will learn how to get the data into the correct format, and build the Pardot automation that will drive the celebratory messages.

Note on Pre-requisites – before we start, I am assuming that you have a birthdate field in Salesforce already set up.

Step 1: Transform Birthdate to Birthday

This first step will use Salesforce automation to turn the birthdate (the actual day they were born), to their birthday (the day and month, this year).

Birthdate is a standard field on Contacts.

First, create a new custom field on the contact object. This custom field needs to have a field type of ‘date’.

Call it ‘Birthday’ or ‘Next Birthday’.

On Step 4 of the field create wizard, deselect all the page layouts listed. You don’t need to add the field to any page layouts, because it is only an operational field – for behind the scenes work.

Now, open up Process Builder.

Before you go any further – if you are not the Salesforce Admin, check in with your Admin about creating this process. It is best to combine processes wherever possible, especially as Salesforce can get overwhelmed when trying to execute multiple processes at once.

Here is what I named my new process. For “The process starts when*” dropdown, select ‘When a record changes’:

Once you’re into the Process Builder, click ‘+ Add Object’. The sidebar will appear.

  • Select ‘Contact’
  • Start the process = “when a record is created or edited”
  • Select the checkbox in the advanced collapsable section

Click ‘+ Add Criteria’. The sidebar will appear.

  • Criteria Name should be descriptive, for example: “Change Birthdate – current year”*
  • Criteria for Executing Actions = “Conditions are met”
  • Set Conditions, click ‘Find a field’

*you will see why later!

A window will appear, where you need to search for the birthdate field, then click ‘choose’.

Once you have returned to the main screen, select the following:

  • Next to Birthdate: ‘Is null’ — Boolean — True
  • Click ‘Find a field’, and select the ‘Birthday’ or ‘Next Birthday’ field you created earlier.
  • Next to Birthday/Next Birthday: ‘Is null’ — Boolean — True
  • ‘Find a field’, and select the ‘Birthdate’ once again.
  • Next to Birthdate: ‘Is changed’ — Boolean — True

It should look like the below images:

  • Conditions, select “Customize the logic”
  • Paste this into the Logic box that appears below: (1 AND 2) OR 3

What you have just told Salesforce to do is take action when:

  • The contact has a Birthdate*, but the contact has no Birthday (*Note the double negative!)
  • Or, when the Birthdate is changed

This is the finished product:

Let’s get to the action!

Click ‘+ Add Action’. The sidebar will appear.

  • Action Type = “Update Records”
  • Action Name = “Update Birthday” (or anything you fancy)
  • Record Type = “Select the Contact record that started your process”

 

  • Criteria for Updating Records = “No criteria—just update the records!”

Scroll down to the “Select and Define Action” section.

  • Click ‘Find a field’, and select the ‘Birthday’ or ‘Next Birthday’ field you created earlier.
  • Type = Formula
  • Click ‘Build a formula’. The formula editor will appear. Copy and paste the below into the box.
  • Finally, click ‘Use this formula’, then Save.

IF (AND(MONTH([Contact].Birthdate)=2,DAY([Contact].Birthdate)=29),
IF (OR(MOD( YEAR(TODAY()), 400 ) = 0,AND(MOD( YEAR(TODAY()), 4 ) = 0, MOD( YEAR(TODAY()), 100 ) != 0)),
IF (DATE(YEAR(TODAY()), 2, 29) > TODAY(),
DATE(YEAR(TODAY()), 2, 29),
DATE(YEAR(TODAY())+1, 2, 28)
),
IF (DATE(YEAR(TODAY()), 2, 28) > TODAY(),
DATE(YEAR(TODAY()), 2, 28),
IF (OR(MOD( YEAR(TODAY())+1, 400 ) = 0,AND(MOD( YEAR(TODAY())+1, 4 ) = 0, MOD( YEAR(TODAY())+1, 100 ) != 0)),
DATE(YEAR(TODAY())+1, 2, 29),
DATE(YEAR(TODAY())+1, 2, 28)
)
)
),
IF (
DATE(YEAR(TODAY()), MONTH([Contact].Birthdate),DAY([Contact].Birthdate ))>TODAY(),
DATE(YEAR(TODAY()), MONTH([Contact].Birthdate),DAY([Contact].Birthdate )),
DATE(YEAR(TODAY())+1, MONTH([Contact].Birthdate),DAY([Contact].Birthdate ))
)
)

NB: you will need to add the name of your custom field, which may be different to mine above! Search for your field name using the ‘Insert’ boxes on the formula editor – you can see this highlighted in the image above.

Note on Leads: remember I said Birthdate is a standard field on Contacts? If you want to roll this campaign out to your Lead database too, then there’s an extra step involved to create the Birthdate field for leads.

Step 2: Test the Birthdate to Birthday Automation

Go to a test record, insert or change the birthdate, and watch the birthday field populate when saved.

Step 3: Create & Map a Pardot Custom Field

In Pardot, name the field and map it to your Salesforce Birthday field. When you reach Sync Behavior, chose If Pardot and Salesforce values differ when data sync occurs: Use Salesforce’s value; this is because the Salesforce formula will be responsible for changing the birthday date, year by year. Finally, make sure you select Date type – this will open up the correct Pardot automation choices in the next step.

Step 4: Create the Segment

By using an Automation Rule, you can single out anyone with a birthday today (the criteria), and send them the birthday email (the action).

An Automation Rule is my preferred option, because you can set the criteria and action in one place. Here is how the criteria should be set:

Match all:
Prospect custom field — [Birthday] — days ago greater than or equal to — 0
Prospect custom field — [Birthday] — days in future less than or equal to — 0

This is telling Pardot to include anyone whose birthday date is less than 1 day away, and less than 1 day ago – in short, today.

If you want to make your birthday campaign into a longer sequence of emails, create a dynamic list using the same criteria (image below). Later, you can use this as the starting point of an Engagement Studio program.

Step 5: Add the Email Automation

The next section on the Automation Rule is the Action section. For this one-shot email, we can use the ‘Send prospect email’ action. Note that your email has to be an email template, otherwise it will not show up to select.

Step 6: Reset Birthday To Next Year

Hop back into your Process Builder – there’s one last thing to add!

Click on the ‘+ Add Criteria’ diamond, the sidebar will appear.

Criteria Name should be descriptive, for example: “Change Birthday – next year”
Criteria for Executing Actions = “Conditions are met”
Set Conditions, click ‘Find a field’, and select the Birthday field.

Change the operator to ‘does not equal’.
Set the type as ‘Formula’
Copy and paste this formula into the formula editor:

PRIORVALUE([Contact].Birthday__c )

Click ‘Use this Formula’ to confirm.
Then, scroll down the page, and select the checkbox in the advanced collapsable section:

We are now going to create a scheduled action. You can see the ‘Set Schedule’ button in the image below.

The sidebar will appear, where you “Set Time for Actions to Execute”: 1 days after birthdate.

Click ‘+ Add Action’, and the sidebar will appear.

Then repeat the same as before! I’ve pasted it all below to save you scrolling up.

  • Action Type = “Update Records”
  • Action Name = “Update Birthday – next year” (or anything you fancy)
  • Record Type = “Select the Contact record that started your process”

 

  • Criteria for Updating Records = “No criteria—just update the records!”

Scroll down to the “Select and Define Action” section.

  • Click ‘Find a field’, and select the ‘Birthday’ or ‘Next Birthday’ field you created earlier.
  • Type = Formula
  • Click ‘Build a formula’. The formula editor will appear. Copy and paste the below into the box.
  • Finally, click ‘Use this formula’, then Save.

IF (AND(MONTH([Contact].Birthdate)=2,DAY([Contact].Birthdate)=29),
IF (OR(MOD( YEAR(TODAY()), 400 ) = 0,AND(MOD( YEAR(TODAY()), 4 ) = 0, MOD( YEAR(TODAY()), 100 ) != 0)),
IF (DATE(YEAR(TODAY()), 2, 29) > TODAY(),
DATE(YEAR(TODAY()), 2, 29),
DATE(YEAR(TODAY())+1, 2, 28)
),
IF (DATE(YEAR(TODAY()), 2, 28) > TODAY(),
DATE(YEAR(TODAY()), 2, 28),
IF (OR(MOD( YEAR(TODAY())+1, 400 ) = 0,AND(MOD( YEAR(TODAY())+1, 4 ) = 0, MOD( YEAR(TODAY())+1, 100 ) != 0)),
DATE(YEAR(TODAY())+1, 2, 29),
DATE(YEAR(TODAY())+1, 2, 28)
)
)
),
IF (
DATE(YEAR(TODAY()), MONTH([Contact].Birthdate),DAY([Contact].Birthdate ))>TODAY(),
DATE(YEAR(TODAY()), MONTH([Contact].Birthdate),DAY([Contact].Birthdate )),
DATE(YEAR(TODAY())+1, MONTH([Contact].Birthdate),DAY([Contact].Birthdate ))
)
)

Step 7: Evaluate Next Criteria

Ensure that the ‘Stop’ button at the end of the first line (known as an action group) is changed to ‘Evaluate the next criteria’. Do this by clicking on it:

Summary

This post has taken you through how to build a birthday campaign in Pardot, step-by-step. You will have fully automated this process, including getting the data into the correct format, and build the Pardot automation that will drive the celebratory messages. Perhaps after this post is published, Pardot prospects all over will be showered by birthday messages!

Credit to Lara Black for her answer on the Pardot B2B Marketing Automation Trailblazer Community Group, which inspired this post.

6 thoughts on “How to Send Birthday Campaigns with Pardot

  1. Avatar

    Sébastien de Heaulme

    Reply

    Thank you for this complete post. I have read it more than 10 times but there is still something I don’t undersand. A process builder is launched when a record is created or modified. Thus in you post the Birthday will be calculated at the creation. But it won’t work more than once. If there is no modification in the contact record for 1 year, i will miss next birthday.

    1. Lucy Mazalon

      Hi Sebastien, thanks for pointing that out – I’ve updated the post with steps 6 & 7 to ensure the date is reset to the next birthday. Let me know your thoughts!

  2. Avatar

    Copy/pasting the formula you have into the Process Builder yields a syntax error.

    The formula expression is invalid: Syntax error. Missing ‘=’

    I have no idea where it is. Could you provide a corrected formula?

    Thanks!

    1. Lucy Mazalon

      Hi Matt, thanks for letting me know – I repasted the formula that I have working in my org. Do you mind trying again please?

  3. Avatar

    Hi,

    I’ve followed your step by step for adding Birthday date on Salesforce, adapted the fields to our owns in the formula. It should be working, but it’s not…The record itself is a person account, working with contact fields and the contact record on the process builder should not be an issue in itself no?

    Looking forward to solving this with your help if possible !

    Thanks

    1. Lucy Mazalon

      Hi Pierre, thanks for your comment, and what a challenge to be confronted with! Let me take this away and have a look into it…person accounts are a weird object 🙂

Leave a Reply