Automate OG Image Generation with Zapier + OGPeek
Every time you publish a blog post, you need a social preview image. Creating them by hand in Figma or Canva takes 5–10 minutes per post, assumes you remember to do it, and produces inconsistent results across your team. This guide shows you how to eliminate that entire workflow by connecting Zapier to the OGPeek API—so every new post, page, or database entry automatically gets a branded 1200×630 OG image the moment it is published.
What You Will Build
By the end of this guide, you will have a Zapier automation (a “Zap”) that does the following:
- Trigger: A new blog post is published in your CMS (WordPress, Ghost, Notion, Airtable, or any platform with a Zapier integration)
- Action: A webhook fires a GET request to the OGPeek API with the post title, generating a unique social preview image
- Result: The generated image URL is stored, sent to your social sharing tool, or written back to the post’s metadata
No code to deploy. No servers to manage. No design tool to open. The entire pipeline runs in the background every time you hit “Publish.”
Why Automate OG Image Generation?
Manual OG image creation does not scale. If you publish three blog posts per week, that is 12 images per month you need to create, export, upload, and attach to the correct post. Multiply that across a team of writers and the overhead compounds quickly.
The real cost is not the time—it is the inconsistency. Some posts get polished images. Others get forgotten and shared with a blank preview card or a generic site thumbnail. That inconsistency hurts click-through rates on every platform where links are shared.
| Aspect | Manual (Figma/Canva) | Automated (Zapier + OGPeek) |
|---|---|---|
| Time per image | 5–10 minutes | 0 seconds (automatic) |
| Design consistency | Varies by designer | 100% consistent |
| Forgotten images | Common | Impossible |
| Team coordination | Requires handoff | None needed |
| Cost per month | $13+ (Canva Pro) | $0 (free tier) |
| Works at 3am | No | Yes |
| Batch retroactive | Hours of work | One Google Sheet |
Prerequisites
Before starting, make sure you have:
- A Zapier account (free tier works)
- A CMS or content source connected to Zapier (WordPress, Ghost, Notion, Airtable, etc.)
- That is it. OGPeek requires no account or API key for the free tier (50 images/day)
Step 1: Create a New Zap
Log in to Zapier and click Create Zap (or the “+” button in the top-left). You will see two panels: Trigger (left) and Action (right).
Choose Your Trigger App
In the Trigger panel, search for your CMS and select the appropriate event:
- WordPress: “New Post” (triggers when a post status changes to Published)
- Ghost: “Post Published” (triggers on new published posts)
- Notion: “New Database Item” (triggers when a row is added to a specific database)
- Airtable: “New Record” (triggers when a record is created in a specific table)
- Webflow: “New CMS Item” (triggers when a collection item is created)
- RSS: “New Item in Feed” (works with any CMS that publishes an RSS feed)
Connect your account when prompted, then select the specific blog, database, or table to watch. Click Test Trigger to pull in a sample post—you will need the title field in the next step.
Step 2: Configure the Webhook Action
In the Action panel, search for “Webhooks by Zapier” and select “Custom Request.” This is where the OG image generation happens.
Why Webhooks? OGPeek is a URL-based API—you send a GET request with parameters, and the URL itself IS the image. No parsing, no downloads, no file handling. The webhook simply constructs the URL.
Configure the webhook with these settings:
Method
GET
URL
https://todd-agent-prod.web.app/api/v1/og?title={{title}}&subtitle={{author}}+%C2%B7+{{date}}&template=gradient&theme=midnight&brandColor=%23F59E0B
Replace the {{title}}, {{author}}, and {{date}} placeholders with the corresponding fields from your trigger step. In Zapier, click into the URL field and use the dropdown to insert dynamic values from your trigger data.
Full Parameter Reference
# Required
title = The post title (mapped from your CMS trigger)
# Optional
subtitle = Secondary text (author name, date, category, etc.)
template = gradient | minimal | bold | dark
theme = midnight | ocean | sunset | forest
brandColor = %23F59E0B (hex color, URL-encoded)
Headers
Leave headers empty. The free tier requires no authentication. If you are on a paid plan, add:
Authorization: Bearer YOUR_API_KEY
Step 3: Use the Generated Image URL
The OGPeek API returns a PNG image directly at the URL you constructed. This is the key insight: the URL IS the image. You do not need to download it, store it on S3, or process it in any way. Social platforms fetch the image from the URL when they encounter it in an og:image meta tag.
There are several ways to use the generated URL in your workflow. Add one or more of these as additional Zapier actions after the webhook:
Option A: Update Your CMS
Add a second action that writes the OGPeek URL back to your post’s og:image custom field. For WordPress, use the “Update Post” action and set the featured image or a custom meta field. For Notion, use “Update Database Item” to write the URL into an “OG Image” property.
# The URL to store (constructed in Step 2):
https://todd-agent-prod.web.app/api/v1/og
?title=How+to+Build+a+REST+API
&subtitle=Engineering+Blog+%C2%B7+Mar+2026
&template=gradient
&theme=midnight
&brandColor=%23F59E0B
Option B: Share to Social Media
Add a Buffer, Hootsuite, or native Twitter/LinkedIn action that shares the post to your social channels. Attach the OGPeek URL as the image. Most social scheduling tools accept an image URL directly.
# Buffer action configuration:
Text: New post: {{title}} โ {{post_url}}
Image: {{og_image_url_from_step_2}}
Option C: Notify Your Team
Add a Slack or Discord action that sends a message to your content channel with the generated preview image:
# Slack message:
New post published: {{title}}
Preview: {{og_image_url}}
Post URL: {{post_url}}
Option D: All Three
Zapier supports multi-step Zaps. Chain all three actions together: update the CMS, share to social, and notify the team. One publish event triggers the entire content distribution pipeline.
Step 4: Test the Complete Zap
Before turning on the Zap, test each step:
- Test the trigger: Zapier pulls in a sample post from your CMS. Verify the title and other fields are present.
- Test the webhook: Zapier fires the GET request to OGPeek. Copy the URL from the test output and paste it in your browser. You should see a 1200×630 PNG image with your post title rendered on it.
- Test downstream actions: If you added CMS update, social sharing, or Slack notification steps, verify each one receives the correct data.
Once all steps pass, click Publish Zap. The automation is now live. Every new post in your CMS will automatically generate a social preview image.
CMS-Specific Setup Details
The core workflow is the same for every CMS, but the trigger configuration and available fields differ. Here are the details for the most popular platforms.
WordPress
Use the WordPress → New Post trigger. The available fields include Post Title, Post Author, Post Date, and Post Status. Map Post Title to the OGPeek title parameter and Post Author to subtitle.
To write the OG image URL back to WordPress, add an Update Post action and use the Yoast SEO or custom field for _yoast_wpseo_opengraph-image. If you use RankMath, the field is rank_math_facebook_image.
Ghost
Use the Ghost → Post Published trigger. Ghost exposes Title, Slug, Author Name, Published At, and Feature Image. Map Title to the OGPeek title parameter. Ghost supports og:image natively in its post settings, so you can use the Ghost Admin API to update the post’s og_image field via a second webhook action.
Notion
Use the Notion → New Database Item trigger. Map the Name (or Title) property to the OGPeek title parameter. Add a URL property called “OG Image” to your Notion database, then use an Update Database Item action to write the generated URL back to that property.
Airtable
Use the Airtable → New Record trigger. Map your title field to title and any secondary field (category, author) to subtitle. Add an “OG Image URL” column to your table and use an Update Record action to populate it with the generated URL.
Tip: Regardless of which CMS you use, always URL-encode special characters in the title. Zapier handles this automatically when you insert dynamic fields into the webhook URL, but if you are constructing the URL manually in a Code step, use encodeURIComponent() in JavaScript or urllib.parse.quote() in Python.
Advanced: Batch Processing Existing Posts
If you have dozens or hundreds of existing posts without OG images, you do not need to create them one at a time. Use a Google Sheet as a batch processor.
The Setup
- Export your posts to a Google Sheet with three columns:
Title,Subtitle, andPost URL. Most CMS platforms have an export feature, or you can use a quick script to pull titles from your sitemap. - Create a new Zap with the trigger Google Sheets → New or Updated Spreadsheet Row. Point it at your sheet.
- Add the webhook action exactly as in Step 2, mapping the sheet’s
Titlecolumn to the OGPeektitleparameter andSubtitletosubtitle. - Add a Google Sheets → Update Spreadsheet Row action that writes the generated image URL into a fourth column called
OG Image URL.
# Google Sheet structure:
| Title | Subtitle | Post URL | OG Image URL |
|------------------------------|-----------------------|-----------------------------|-----------------------|
| How to Build a REST API | Engineering Blog | /blog/rest-api-guide | (auto-filled by Zap) |
| Database Indexing 101 | Performance Series | /blog/database-indexing | (auto-filled by Zap) |
| CI/CD Pipeline Best Practices| DevOps Guide | /blog/cicd-pipeline | (auto-filled by Zap) |
The free tier processes 50 images per day. For a backlog of 200 posts, it takes four days to process everything automatically. If you need faster throughput, the Starter plan ($9/month) handles 10,000 images per month.
Bonus: Use the Sheet as a Preview Dashboard
Add a fifth column with a Google Sheets IMAGE() formula to preview the generated OG images inline:
=IMAGE(D2)
This turns your spreadsheet into a visual dashboard where you can review every OG image before deploying the URLs to your CMS.
Advanced: Custom Templates per Category
If your blog has multiple content categories, you can use different OGPeek templates for each one. Add a Category column to your Google Sheet or use a Zapier Filter/Paths step to route posts to different webhook configurations:
# Engineering posts: dark template, blue accent
https://todd-agent-prod.web.app/api/v1/og
?title={{title}}&template=dark&theme=ocean&brandColor=%236366F1
# Product updates: gradient template, green accent
https://todd-agent-prod.web.app/api/v1/og
?title={{title}}&template=gradient&theme=forest&brandColor=%2310B981
# Tutorials: bold template, amber accent
https://todd-agent-prod.web.app/api/v1/og
?title={{title}}&template=bold&theme=midnight&brandColor=%23F59E0B
This gives each content category a distinct visual identity in social previews while keeping the entire workflow automated.
Advanced: Zapier Code Step for Complex Logic
For workflows that need more control—truncating long titles, formatting dates, or selecting templates based on post metadata—add a Code by Zapier step (JavaScript or Python) between the trigger and webhook:
// Zapier Code step (JavaScript)
const title = inputData.title.length > 55
? inputData.title.substring(0, 52) + "..."
: inputData.title;
const subtitle = `${inputData.author} ยท ${new Date(inputData.date).toLocaleDateString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric'
})}`;
const template = inputData.category === 'engineering' ? 'dark' : 'gradient';
const brandColor = inputData.category === 'engineering' ? '%236366F1' : '%23F59E0B';
const ogUrl = `https://todd-agent-prod.web.app/api/v1/og?title=${encodeURIComponent(title)}&subtitle=${encodeURIComponent(subtitle)}&template=${template}&theme=midnight&brandColor=${brandColor}`;
output = [{ ogUrl, title, subtitle }];
This code step truncates titles longer than 55 characters (to prevent text overflow in the generated image), formats the date, and selects a template based on post category. The output ogUrl is then used in the downstream webhook or CMS update action.
Pricing: What It Costs
Both Zapier and OGPeek offer free tiers that cover most blogs and content teams.
| Tier | OGPeek | Zapier | Best For |
|---|---|---|---|
| Free | 50 images/day | 100 tasks/month | Personal blogs, side projects |
| Starter | $9/mo — 10K images | $19.99/mo — 750 tasks | Growing blogs, small teams |
| Pro | $29/mo — 50K images | $49/mo — 2K tasks | High-volume publishers, agencies |
For a blog publishing 3 posts per week, you need approximately 12 Zapier tasks and 12 OG images per month. Both free tiers handle that with room to spare.
Start Automating OG Images Today
OGPeek generates branded 1200×630 social preview images from a single URL. No API key required for the free tier. Pair it with Zapier and never create another OG image by hand.
View Pricing →Troubleshooting
Common issues and how to fix them:
Image Not Appearing in Social Previews
Social platforms cache aggressively. After setting up the automation, use the Facebook Sharing Debugger to force a re-scrape. On Twitter, card previews can take 15–30 minutes to appear after the first share. LinkedIn’s Post Inspector lets you preview and refresh.
Special Characters Breaking the URL
If your post titles contain ampersands (&), quotes, or emoji, they need to be URL-encoded. Zapier handles this automatically when you insert dynamic fields. If you are using a Code step, wrap the title in encodeURIComponent().
Title Too Long for the Image
OGPeek handles text wrapping automatically, but titles longer than 60–70 characters may look cramped. Use a Zapier Code step to truncate long titles before sending them to the API.
Webhook Returning an Error
Verify the URL structure in your Zapier webhook step. The most common mistake is a missing ? before the first parameter or using # instead of %23 for the brandColor value. Test the URL in your browser first—you should see a PNG image.
What’s Next
Once your Zapier automation is running, consider these extensions:
- Add Make.com as a backup: Run a parallel automation in Make.com (formerly Integromat) for redundancy. The OGPeek URL works identically in any HTTP client.
- Integrate with your CI/CD pipeline: For developer blogs built with static site generators, add an OGPeek URL step to your build script. See our Next.js guide and Hugo guide for framework-specific examples.
- Monitor with CronPeek: If your Zap is business-critical, set up a CronPeek monitor to alert you if the automation stops running.
- Audit SEO with SEOPeek: Use SEOPeek to verify that your og:image tags are correctly set on live pages after the Zap runs.
50 Free OG Images Per Day
No API key. No credit card. Just a URL. Connect OGPeek to Zapier in under five minutes and automate your entire social image workflow.
Get Started Free →Frequently Asked Questions
Can I use Zapier to automatically generate OG images for blog posts?
Yes. Connect your CMS (WordPress, Ghost, Notion, or any platform with a Zapier integration) to the OGPeek API via a Webhooks by Zapier action. The Zap triggers on publish, sends the post title to the OGPeek API URL, and the resulting image URL can be written back to the post’s og:image field or sent to social sharing tools.
Do I need an API key to use OGPeek with Zapier?
No. The free tier allows 50 images per day with no API key and no authentication. You construct a GET request URL with your title and styling parameters. For higher volumes (10,000+ images per month), paid plans include an API key for rate limit increases and priority rendering.
What CMS platforms work with the Zapier + OGPeek automation?
Any platform with a Zapier trigger for new content. The most common setups are WordPress (New Post), Ghost (Post Published), Notion (New Database Item), Airtable (New Record), Webflow (New CMS Item), and Contentful (New Entry). If your CMS has a Zapier integration or supports webhooks, it can trigger OG image generation.
How do I batch-generate OG images for existing blog posts?
Export your existing post titles, subtitles, and URLs to a Google Sheet. Create a Zap with a Google Sheets trigger that sends each row’s title to the OGPeek API, then writes the generated image URL back to the sheet. Process up to 50 posts per day on the free tier, or upgrade for higher-volume batch processing.
Is there a cost to automate OG images with Zapier and OGPeek?
OGPeek’s free tier covers 50 images per day. Zapier’s free plan includes 100 tasks per month. For a typical blog publishing 2–3 posts per week, both free tiers are sufficient. For higher volumes, OGPeek Starter is $9/month for 10,000 images and Zapier Starter is $19.99/month for 750 tasks.