REST API (Webhooks by Zapier) · Threads

Draft and schedule Threads posts from Zapier

Small online shops often run on Zapier already: new product, new order milestone, new review. SocialHandoff lets a Zap turn those events into Threads drafts with one webhook step. Product images are uploaded once and served to Threads at signed URLs, and each draft gets a careful look in the inbox before it goes out. Reply-chain threads and carousels are supported, and approval is always a human step.

Prompt

When a new product is published in our Shopify store, draft a Threads post with the product name, a one-line description, the price, and the product URL. Send it to the REST API with networks ["threads"] and mode submit.

How to do it

  1. Mint a Threads agent key In https://app.socialhandoff.com, open Connections, connect your Threads account, then create an agent key scoped to Threads with draft permission only. Copy the key when it is shown; only its hash is stored.
  2. Choose the trigger app Pick the trigger: a new blog item, a Notion page, a spreadsheet row, a calendar event, or anything else Zapier watches.
  3. Add a Webhooks by Zapier POST Send JSON to https://app.socialhandoff.com/v1/posts with an Authorization: Bearer header. Map body from the trigger, set networks to ["threads"], and mode to "submit".
  4. Test and turn on Run the test step, open the approval inbox, and check the draft. Then turn the Zap on. Every run creates a pending post, never a live one.

Example draft

New in the shop: the Field Notebook, 120 pages of dot grid in a waxed canvas cover that gets better as it wears in. $24, made in small batches. example.com/shop/field-notebook

Gotchas

  • Threads fetches images and video from your instance at signed, expiring URLs, so you do not need a separate public media host. The API itself must be reachable over public HTTPS; an instance that only runs on localhost cannot publish media to Threads.
  • Keep each Threads post within 500 characters, and remember that Threads counts emoji by their UTF-8 bytes, so a few emoji use more of the limit than they appear to. The per-network length guardrail flags longer drafts before they reach the inbox.
  • A draft too long for one post can go out as a reply-chain thread, with each part published as a reply to the one before. Every part has its own 500-character limit, and a carousel of 2 to 20 images or videos can lead the chain.
  • Zapier can replay a step on errors. Send an idempotencyKey built from the trigger record's id so a replay returns the same Threads draft instead of a second one.
Threads
  • Character limit: 500 characters per post. Emoji count as their UTF-8 bytes, so an emoji can use up to 4 characters of the limit.
  • Links: Up to 5 links per post. Threads generates a preview for the first one.
  • Carousels: 2 to 20 images or videos in one carousel post.
  • Image files: JPEG or PNG, up to 8 MB. Threads fetches each file from a URL at publish time.
Threads scheduler for agent drafts you approve first

Frequently asked questions

Is there a native Zapier app?
Not today. Use Webhooks by Zapier to call the REST API. It needs one POST step and a bearer header.
Can one Zapier run draft for Threads and Bluesky together?
Yes. Put both in networks. Each network gets its own target, checked against its own length rule, and you approve them in one card.
How do I connect Threads?
Open Connections in https://app.socialhandoff.com and sign in with your Threads account through the operator's own Meta developer app. Until Meta's app review approves that app, only its listed testers can publish.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial