Menu
Sign up

Zapier image generation with Webhooks by Zapier: a recipe

Generate images in a Zap with Webhooks by Zapier: the Custom Request setup, field mapping, sending the image URL to Drive or Slack, and plan limits.

Published November 6, 2026 · 4 min read

To generate images in Zapier, add a Webhooks by Zapier step with the Custom Request event: method POST, URL https://shareglint.com/v1/images?wait=true, an Authorization: Bearer header with your API key, and a JSON body with the template and the values mapped from the trigger. The step's output has the finished image's public url, which any later step can use as a file. There is no Shareglint app in Zapier's directory; this one step is the integration.

What you need on the Zapier side

Webhooks by Zapier is a premium app: Zapier's help center shows it for Professional, Team and Enterprise plans, not Free (Zapier Help, updated 2026-08-10). The alternatives are no better on Free:

  • API by Zapier (beta) is also premium and paid-only; its advantage is that it keeps the API key out of plain step fields (Zapier Help).
  • Code by Zapier runs on Free, but with a 1-second runtime there (30 seconds on Professional and Team) — not enough to wait for a render (Code by Zapier).

On the Shareglint side, create a separate API key for Zapier in the dashboard, so you can revoke it without touching other integrations.

Recipe: an image for every new row (or post, or order)

Trigger → Webhooks by Zapier: Custom Request → where the image goes.

The trigger can be anything with the text you need: a new row in Google Sheets, a new WordPress post, a new Shopify product, a new form entry. Configure the webhook step:

  • Event: Custom Request. (The plain POST event builds the body from key-value pairs; the API expects a nested modifications object, which Custom Request sends exactly as written. Zapier points to Custom Request for nested JSON too.)
  • Method: POST
  • URL: https://shareglint.com/v1/images?wait=true
  • Data (raw JSON; insert the trigger's fields where the values go):
{
  "template": "blog-og",
  "format": "jpeg",
  "modifications": {
    "title": "{{Title from the trigger}}",
    "author": "{{Author from the trigger}}",
    "site": "northwind.dev"
  }
}
  • Headers: Authorization → Bearer sk_live_…, and Content-Type → application/json.

Run Test step. The response comes back parsed, with fields such as id, status and url. That url is the image.

One caution about raw JSON: Zapier inserts mapped values as they are, so a title containing a double quote breaks the JSON. If your data can contain quotes, add a Formatter step before the webhook (Text → Replace " with \"), or use API by Zapier, which builds the body for you.

Using the image in the next step

Zapier's file fields take "a URL link that supports files" if it is publicly accessible and a direct download, not a preview page (Zapier Help: files). The render URL is both, so map url straight into:

  • Google Drive → Upload File: File = url; the image lands in a folder.
  • Slack → Send Channel Message: put url in the message, or in a file field to upload it.
  • Google Sheets → Update Row: write url into a column, and =IMAGE(…) on that cell shows it in the sheet.
  • WordPress, Webflow, a CMS: set the post's featured or og:image field to url.
  • Social media steps that take an image URL: pass url as the post's image.

For several sizes of the same image, add "sizes": ["og", "square", "story"] to the body. The response then has a renders list with one url per size, in the order you listed the sizes, so later steps can pick each by position.

Many rows at once

A Zap runs once per trigger item, which suits new rows and new posts. For a back catalogue — 500 products, last year's posts — one batch call is simpler than 500 Zap runs: send the rows to POST /v1/batches (a csv_url of a published sheet works) and collect one ZIP. Rows per batch by plan: Free 50, Starter 500, Pro 1,000, Scale 2,000, Business 5,000. The CSV and Google Sheets guide has the details.

When something goes wrong

  • 402 quota_exceeded: the month's renders are used up; nothing is charged. Zapier shows the step as errored. Raise the plan or add a top-up pack of 1,000 images for $8.
  • 422: an invalid request — an unknown template, size or format, for example; the body says which.
  • 503 sync_overloaded: the image was not ready within the wait. The body still has the render's id; a later GET /v1/images/{id} step (a Custom Request with GET) returns it, and nothing renders twice. Zapier does not publish a timeout for webhook steps, so for animated GIF or MP4 renders, which take longer, use a webhook (webhook_url) to a "Catch Hook" Zap instead of ?wait=true.

Retried or replayed Zap runs are safe: the same template with the same values returns the existing image without using quota.

Cost

One render per image and size; repeats are free. The Free plan's 100 renders a month carry a watermark; Starter is $9 a month for 2,000 renders (pricing). Zapier bills its own tasks separately.

What it does not do

  • No native Zapier app, triggers or searches; everything goes through the webhook step.
  • It does not run on Zapier's Free plan, because the HTTP steps it needs are premium.
  • It does not store your Zapier data: each request carries the values, and only the rendered image is kept, for your plan's retention period.

FAQ

Is there a Shareglint app on Zapier?

No. A Zap calls the API with Webhooks by Zapier (or API by Zapier), Zapier's general HTTP steps. One Custom Request step with a URL, an Authorization header and a JSON body is the whole integration.

Does this work on Zapier's Free plan?

No. Zapier lists Webhooks by Zapier and API by Zapier as premium apps for paid plans, and Code by Zapier on the Free plan stops after 1 second, too short to wait for a render. You need a paid Zapier plan.

How do I get the image into Google Drive or Slack?

Map the url field from the webhook step into the next app's File field. Zapier accepts a public, direct-download URL there, and the render URL is exactly that.

What if the Zap runs twice for the same item?

The same template with the same values returns the existing image for free, so a replayed or duplicated Zap run does not use more quota.