Automatically Create Facebook Ads from Google Sheets
Go to WorkflowDescription
Who is this for?
This template is designed for Marketing Managers, Performance Marketers, and Ad Ops professionals who want to automate Facebook ad creation using structured data in Google Sheets. It’s ideal for teams running multiple creatives or testing ad variations without having to manually use Meta Ads Manager.
> ⚠️ Important Note:
This is not a plug-and-play workflow. It requires:
A configured Facebook Business account
A valid Facebook App, Page, and Ad Account
Access tokens** and the correct Facebook Graph API credentials
A basic understanding of the Meta API and JSON to tweak ad set parameters like demographics, optimization goals, or sales objectives
Additionally, launching Facebook ads will incur real advertising costs, so this template is best suited for users willing to make a time investment to set things up properly and test responsibly. Expect to spend time customizing targeting and budget strategies based on your campaign needs.
What problem does this solve?
Manually uploading creatives, setting up ad sets, and creating ads in Meta’s Ad Manager is time-consuming, repetitive, and error-prone—especially at scale. This workflow eliminates the manual work by pulling data from Google Sheets and using it to automatically:
Generate Facebook Ad Sets
Upload creative images
Build and launch Ad Creatives and Ads
Update your source spreadsheet with generated Ad IDs
What this workflow does
Using a trigger from a Google Sheets row update, this workflow:
Reads ad parameters (like message, render URL, and campaign info) from a Google Sheet
Generates ad set configuration dynamically using variables in an “Edit Fields” node
Creates a Facebook Ad Set via the Graph API
Fetches the ad image from a render URL
Uploads the image to Facebook Ads Library
Creates the Ad Creative using the uploaded image and dynamic text
Launches the Ad using the generated Ad Set and Creative
Updates the same Google Sheet with the generated Ad ID and status
All configuration fields like campaign_id, act_id, pixel_id, age ranges, interest targeting, and call-to-action links are defined up front in a single Edit Fields node, making the template easy to maintain or extend.
Google Sheet Structure
| Hooks | Render URL | Generate Ad | Ad ID |
|-------|------------|-------------|-------|
| Static ad text (e.g., “Visit us at...”) | Link to the creative asset (image) | Status: generate, generated, or error | Populated by the workflow with the created Facebook Ad ID |
Hooks**: This is the primary ad copy. It will be used as the main text for the static ad.
Render URL**: Direct link to the media asset (image or video) for the ad.
Generate Ad**: Dropdown or text value that controls workflow execution:
generate — workflow will attempt to create the ad
generated — already processed
error — error occurred during generation
Ad ID**: The Meta Ad ID will be written here once the ad is successfully created.
Setup
Copy this Google Sheet template and populate it with your data
Create a Facebook App and retrieve the access credentials for the Facebook Graph API
In n8n:
Connect your Google Sheets and Facebook Graph API accounts
Update the Edit Fields node with your actual ad account ID, page ID, campaign ID, pixel ID, and destination link
Deploy the workflow
This workflow runs every time the generate ad column in your sheet is updated.
How to customize this workflow to your needs
Modify the Edit Fields node to adjust ad set parameters like targeting, budget strategy, CTA type, and more
Expand interest-based targeting using more interest objects in the array
Add extra Google Sheet columns and map them to Facebook ad fields (e.g. different messages, URLs, creative assets)
Add logic to pause or duplicate ads based on performance