All marketers have felt the pain of making new creative. The process can especially feel rough if you rely on creative requests from other team members or agencies. Even if you have some assets, you'll often spend needless hours creating different variations in size, copy, and more.  If these pain points resonate with you, I have great news - you can automate most of the process and gain back hours of your time. 

This guide will cover the concept of creative automation, a creative automation tool called Bannerbear, and even take you through an example project. 

How does creative automation work?

What are variables?

Simply put, a variable is just a value that can change over time. 

For example, let's say you're running two ads on Meta and want to measure which post description will perform better:

  • The post description is different in each ad.
  • The audiences, image used, etc., are the same across both ads.

In this case, the post description is a variable because each ad has a different value. The rest of the factors are considered static because there aren't any changes between those ads. 

Variables have key-value pairs; a key is a property / the variable name (e.g., post description), and the value is what the property is equal to (e.g., the new description text). This sounds complicated, but if you think about it, you use key-value pairs daily in spreadsheets. How would you set it up if you wanted to document all the different post descriptions you wanted to test in a spreadsheet? You'd likely have a column titled “Post Description,” which is the key; then, every subsequent row would have a value with new description text. 

Now that you understand key-value pairs, you can start looking at code snippets like this and reading them like a spreadsheet. Here's an example of a variable snippet in Javascript:

post_description = ["Food is delicious", "Bugs are Stinky", "I have a Headache"]

As a spreadsheet, post_description would be the column, and each value (like “Food is Delicious”) would be a new row.

What are variables in a creative?

Variables are technical, which makes it hard to grasp how they could apply to something like creatives. Let's use an example of two banners from my blog to illustrate how this works:

Two different blog posts, each with their own banner.

Both of these images are almost the same, but you'll notice that two of the fields are different:

  • The Title of the Blog Post
  • The Date of the Blog Post

These fields are both variables because they can change from post to post. And whilst both authors are the same, you could also make a case for authors being another variable.

In my case, I choose to keep the rest of the design static (e.g., font, border color, background color) and use variables for the changing fields like Title, Date, and author. When designing, you set variables based on how you want to be more efficient. My use case is great for generating banners with the same design, but this wouldn't be great for testing different banner designs for the same content. In that case, you could completely reverse this logic and keep post information the same, while making other parts of the design (like background color) a variable.

How does automation work?

This seems all dandy, but it doesn't seem useful without a way to create new designs based on changing variables. That's where we introduce automation to, well, I mean, automate the creation of new images.  The core principles of automation flow are:

  • A Trigger - What was the event that enabled the flow?
  • Actions - What happens when the flow is enabled?

Automation is similar to someone knocking over a row of Dominoes. If I were to flick a domino, causing the rest of the dominos to fall: the flick would be considered a trigger. That's because none of the subsequent actions, each domino hitting the next, would've occurred without the initial flick. 

So when we think of how to use automation tools, like Zapier, we must first think, “what will cause this to happen?”. An example trigger event could be a new blog post published in WordPress. WordPress will send me information (like the post's title) when this trigger happens. Then, I want my action to be a creative automation tool (discussed in-depth in the next section) that takes the data from WordPress and uses it to create a new image for me. Instead of manually designing the banners from above, it will generate new banners whenever a new blog post is published. 

Meet Bannerbear

The action of creating dynamic images usually requires a creative automation tool. One of my favorite tools for this is Bannerbear.  While a few others in the space are more affordable (such as Placid or APITemplate), I think Bannerbear has some amazing features that make it worth the price. Some of these features include:

  • Smart cropping for pictures that don't fit in an element
  • Smart resizing for fonts
  • A simple-to-use API with a ton of integrations.
  • Features for automating gifs & videos
  • Template sets for grouping multiple creatives.

For the reasons above, the guide I'm providing today (and most in the foreseeable future) will be done using Bannerbear. However, most of the same concepts can easily apply to its competitors. 

Setting up a project

New Project

A project in Bannerbear is a way to group different sets of templates and assign granular permissions for users. You might think this is mainly a feature for agencies to provide client access. I also think it's cool for internal teams who want to separate their designs by different organizational functions. 

Aside from that, functionally, a project is used to create an API key (giving more granular security) and to trigger events (like when an image is done processing).  After creating your project, copy this API Key and store it somewhere safe for later use.

Bannerbear Project API Settings

Creating your first template

Once you're in your project, create a template and select the aspect ratio for your image. 

Selecting a size of the template in Bannerbear

Next, click the “edit template” button to land on your template's canvas. 

An example of a canvas in Bannerbear

This interface should feel relatively familiar if you've used design tools like Canva. The tool relies on creating “layers” to make a design. The beautiful part? Almost all these layers are considered variables that can be manipulated using automation. What you name your layer will be the name of the variable you will be referencing in your automation flow. Then all the properties on the right (e.g. color, font-size, etc.) are ‘children’ of that variable that can be selected. 

For example, let's say I had a rectangle layer named “background" where the width of the border was 2px, and the color was orange. If I want to change the width to 3px and the color to white; here's a reference for what that looks like;

[...]
"modifications": [
	{ 
		"name": "background",
		"border_color": "#FFF",
		"border_width": 3,
	}
]
[...]

Considering a design can have so many layers, the prospect of everything being dynamic can be intimidating. But you don't have to worry -  just because something's a variable doesn't mean you need to use it. Let's take my previous example: let's say you only want to change the border color of the rectangle and not the width; here's what the reference looks like now:

[...]
"modifications": [
	{ 
		"name": "background",
		"border_color": "#FFF",
	}
]
[...]

Since you left it blank, the border width would be the original default value in the template (2px). 

Once you understand this concept, the rest of the design process is similar to other tools. Just keep notes of what you want to be changeable in the image to reference it later.  After you're done, you just hit save, and then boom - you officially have a template you can use for automation. 

Example: Automate Testimonial Creatives

I will provide an example you can follow to learn how to create a dynamic testimonial creative. 

Goal:

  • Generate a new creative whenever a new testimonial is added to the Google Sheet.
  • Save the new image to a Google Drive folder.

Requirements:

  • An automation tool (e.g., Zapier, Bannerbear, etc.)
  • A Google Sheet
  • An empty Google Drive folder
  • A Bannerbear account
    • You can substitute Bannerbear for other alternatives I mention above.

1. Create your template in Bannerbear

In your Bannerbear project from earlier, create a new template titled “Testimonial - Square" and make it a 1:1 aspect ratio (1000x1000). Once you're done, your blank canvas should look like this:

Blank Canvas on Bannerbear

Next, add a new layer that's a dynamic text object and title it “review.” We'll want to make the font size 60 and the weight 600; the rest of the settings can default. Add in some default text.

Adding in the review text

Next, we will add another dynamic text object layer and title it “name.” We'll want to make the font size 50 and the weight 500; the rest of the settings can default. Add in some default text. After this, if your template looks similar to mine, you can hit save and move on to the next step.

Step 2 text

2. Setup your Google Sheet

Create a new Google Sheet titled “New Testimonials.” Create a new column called “Name” and another column called “Review.” Once your sheet looks like this, you can move on to the next step.

Google sheet creation step

3. Create a new folder in Google Drive and title it “Final Images”

4. Create a flow in your automation tool

Create a new workflow in your automation tool of choice. For the trigger, you will want to select “Google Sheets.” Here, connect your Google Account if you haven't already done so. You will want to select an action that happens when a new row is entered into a Google Sheet. Make sure to select the “New Testimonials” sheet that we just created. You will probably need to enter random data into your Google Sheets to test the trigger. 

Next, you'll want to create an action with “Bannerbear.” Select the “create image” action. After you connect your account and enter in the API key, select your project and template. Depending on the automation tool you have, the process of how you do this might be different, but essentially you have to:

  • Associate the “Name” column in your Google Sheet as a text value of your “name” layer.
  • Associate the “Review” column in your Google Sheet as a text value of your “review"  layer.

When you're done; test the action; if it is successful, you should see it return a URL with your newly created image.

Finally, add a final action with “Google Drive.” You want to select an action called “Create File” or “Upload File” to an existing drive folder. Select your drive folder from earlier and make the URL of the “new file” the URL that Bannerbear returned. Test the action; if it worked, you should see your new image in that URL! If you followed all the steps successfully, publish your new workflow! If you're facing errors along the way, try to isolate it to one of the earlier steps in your workflow; normally, the issue is not selecting the right properties.

5. Test it out!

Now that it's set up, go to town! Try entering a few different rows into your Google Sheets, wait a few minutes, and then check your Drive. If nothing broke, you've successfully learned how to automate a creative!

Conclusion

The concept of creative automation is still honestly one of the coolest to learn as a marketer. The above principles have saved me countless hours resizing, testing new copies, and more. There are so many use cases for this - I just wanted to cover the basics first, because some of this can get pretty advanced. If you want to see some of the cooler use-cases, subscribe to my newsletter below to stay updated on new content.