Prompt
Zap: when a new webinar is added to our Google Calendar 'Webinars', post the title, date, and registration link to the REST API as a Bluesky draft with mode submit. Use the calendar event id as the idempotencyKey. How to do it
- Mint a Bluesky agent key In https://app.socialhandoff.com, open Connections, connect your Bluesky account, then create an agent key scoped to Bluesky with draft permission only. Copy the key when it is shown; only its hash is stored.
- 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.
- 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 ["bluesky"], and mode to "submit".
- 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
Live on 8 October, 17:00 UTC: Designing APIs your future self will thank you for. 45 minutes on versioning, error shapes, and pagination, with time for questions. Register: example.com/webinars/api-design
Gotchas
- Links, @handles, and #tags become clickable facets when the post publishes. Have the agent write the plain URL and handle, not markdown links.
- Connect Bluesky with an app password from Settings, never your account password. Revoking that app password cuts off only this connection.
- The 300 limit counts graphemes, so an emoji or accented letter counts as one. Anything longer should become a reply-chain thread, not a clipped post.
- Zapier can replay a step on errors. Send an idempotencyKey built from the trigger record's id so a replay returns the same Bluesky draft instead of a second one.
- Character limit: 300 graphemes per post. An emoji or an accented letter counts as 1 grapheme even if it uses several bytes.
- Media per post: Up to 4 images, or 1 video. Images and video cannot be mixed in one post.
- Image size: The AT Protocol image embed accepts blobs of about 1 MB each; the official app compresses larger photos. SocialHandoff checks for 1 MB per image.
- Video: Up to 3 minutes and 100 MB, MP4. SocialHandoff does not publish video to Bluesky.
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.
What happens if a Zapier run sends a post longer than 300 graphemes?
The length guardrail flags it and the draft waits in the inbox with the reason attached. Send a thread array instead if your source text is long.
Do I need a Bluesky app password?
Yes. Create one in Bluesky under Settings, then App passwords, and paste it when you connect the account. It can be revoked without changing your main password.