Zapier Integration
Connect Share.cy to 6,000+ apps with Zapier. Automate your social media workflow without writing code.
Setup Guide
Create an API Key
Go to Settings → API Keys in your Share.cy dashboard and create a new key with the scopes you need (read, write, publish). Save the key — it is shown only once.
Connect in Zapier
In Zapier, search for "Share.cy" and select it as a trigger or action app. When prompted for authentication, paste your API key.
Choose a Trigger or Action
Select the event that starts your Zap (trigger) or the action Share.cy should perform. Zapier will guide you through mapping fields.
Test and Enable
Zapier will send a test request to verify the connection. Once confirmed, turn on your Zap and it runs automatically.
Authentication
Share.cy uses API Key authentication for Zapier. This is the simplest method — no OAuth flow required.
How it works
- User selects Share.cy in Zapier
- Zapier prompts for an API key
- User pastes their
shcy_live_...key - Zapier sends a test request to
GET /api/v1/companiesto verify - On success, the connection is saved and used for all Zaps
Required Scopes
| Scope | Needed For |
|---|---|
read | All triggers, viewing posts and accounts |
write | Creating posts, scheduling, managing library |
publish | Publishing posts immediately |
For full Zapier functionality, create a key with all three scopes. Create API Key
Triggers
Events that start a Zap. Powered by Share.cy webhooks — when Zapier subscribes, it creates a webhook via our API.
New Post Published
post.publishedFires when a post is successfully published to any social platform.
Payload
{ "post_id": "uuid", "content": "...", "platforms": ["twitter", "linkedin"], "published_at": "..." }New Post Created
post.createdFires when a new post is created (draft or scheduled).
Payload
{ "post_id": "uuid", "content": "...", "platforms": [...], "status": "draft" }New Inbox Message
inbox.message_receivedFires when a new social inbox message is received.
Payload
{ "platform": "twitter", "from": "@user", "content": "...", "message_id": "uuid" }New Support Ticket
support_ticket.createdFires when a customer creates a new support ticket.
Payload
{ "ticket_id": "uuid", "ticket_number": "SHARE-001", "subject": "...", "category": "..." }Post Failed to Publish
post.failedFires when a post fails to publish (e.g., API rate limit, invalid content).
Payload
{ "post_id": "uuid", "error": "Rate limited by platform", "platform": "twitter" }How triggers work under the hood
When a user enables a Zap with a Share.cy trigger, Zapier calls POST /api/v1/webhooks to create a webhook subscription for the relevant event. When the event fires, Share.cy delivers a signed POST to Zapier's URL, which then runs the Zap. When the Zap is turned off, Zapier deletes the webhook.
Actions
Things Zapier can do in Share.cy. Each action calls our public API.
Create Post
POST /api/v1/postsscope: writeCreate a new post as a draft.
Input Fields
Schedule Post
POST /api/v1/postsscope: writeCreate a post and schedule it for a specific date/time.
Input Fields
Approve Post
PATCH /api/v1/posts/:idscope: writeApprove a post that is pending approval.
Input Fields
Generate AI Posts
POST /api/v1/postsscope: writeCreate posts using AI-generated content from a topic or prompt.
Input Fields
Add to Content Library
POST /api/v1/libraryscope: writeUpload a file or save content to the media library.
Input Fields
Example Zaps
New Instagram Comment → Send Slack Notification
Get notified in Slack when someone comments on your Instagram posts.
New WordPress Post → Create Social Media Posts
Automatically create social posts whenever you publish a new blog article.
New Post Published → Log to Google Sheets
Keep a spreadsheet log of all published social media posts.
Post Failed to Publish → Send Email Alert
Receive an email whenever a scheduled post fails to publish.
New Form Submission → Create Support Ticket
Automatically create support tickets from form submissions.
New Inbox Message → Create Task in Asana
Create an Asana task for each new social inbox message that needs attention.
For Zapier App Developers
If you are building or maintaining the Share.cy Zapier app, here is the technical configuration:
Authentication Config
// authentication.js — API Key auth type
module.exports = {
type: 'custom',
test: {
url: 'https://share.cy/api/v1/companies',
method: 'GET',
headers: {
Authorization: 'Bearer {{bundle.authData.api_key}}',
},
},
fields: [
{
key: 'api_key',
label: 'API Key',
type: 'string',
required: true,
helpText: 'Find your API key in [Share.cy Settings → API Keys](https://share.cy/app/api-settings)',
},
],
connectionLabel: (z, bundle) => {
return bundle.inputData.name || 'Share.cy Account';
},
};Trigger Config (REST Hook)
// triggers/new_post_published.js
module.exports = {
key: 'new_post_published',
noun: 'Post',
display: {
label: 'New Post Published',
description: 'Triggers when a post is published.',
},
operation: {
type: 'hook',
performSubscribe: (z, bundle) => {
return z.request({
url: 'https://share.cy/api/v1/webhooks',
method: 'POST',
body: {
url: bundle.targetUrl,
events: ['post.published'],
},
}).then(res => res.data);
},
performUnsubscribe: (z, bundle) => {
return z.request({
url: `https://share.cy/api/v1/webhooks/${bundle.subscribeData.id}`,
method: 'DELETE',
});
},
perform: (z, bundle) => {
// Zapier passes the webhook payload as bundle.cleanedRequest
return [bundle.cleanedRequest.data];
},
performList: (z, bundle) => {
// Fallback: fetch recent posts for Zap setup
return z.request({
url: 'https://share.cy/api/v1/posts?status=published&limit=3',
}).then(res => res.data.data);
},
sample: {
post_id: '550e8400-e29b-41d4-a716-446655440000',
content: 'Hello from Share.cy!',
platforms: ['twitter', 'linkedin'],
published_at: '2026-03-21T12:00:00Z',
},
},
};Action Config
// actions/create_post.js
module.exports = {
key: 'create_post',
noun: 'Post',
display: {
label: 'Create Post',
description: 'Creates a new social media post.',
},
operation: {
inputFields: [
{ key: 'content', label: 'Content', type: 'text', required: true },
{
key: 'platforms',
label: 'Platforms',
type: 'string',
list: true,
choices: ['twitter', 'linkedin', 'facebook', 'instagram'],
required: true,
},
{ key: 'scheduled_at', label: 'Schedule For', type: 'datetime' },
{ key: 'image_url', label: 'Image URL', type: 'string' },
],
perform: (z, bundle) => {
const body = {
content: bundle.inputData.content,
platforms: bundle.inputData.platforms,
status: bundle.inputData.scheduled_at ? 'scheduled' : 'draft',
};
if (bundle.inputData.scheduled_at) {
body.scheduled_at = bundle.inputData.scheduled_at;
}
if (bundle.inputData.image_url) {
body.image_url = bundle.inputData.image_url;
}
return z.request({
url: 'https://share.cy/api/v1/posts',
method: 'POST',
body,
}).then(res => res.data.data);
},
sample: {
id: '550e8400-e29b-41d4-a716-446655440000',
content: 'Hello from Zapier!',
platforms: ['twitter'],
status: 'draft',
},
},
};Security Notes
- All API requests use HTTPS with Bearer token authentication
- Webhook deliveries are signed with HMAC-SHA256 (see webhook docs)
- API keys can be scoped to limit access (read/write/publish)
- Keys can be rotated at any time with a 1-hour grace period
- Rate limits apply to all API requests based on your plan
Troubleshooting
Zapier says "Invalid API Key"
Verify the key starts with shcy_live_ and has not been revoked. Create a new key if needed.
Triggers are not firing
Check that the webhook was created in Settings → Webhooks. Ensure the webhook status is "active" and not paused or disabled.
Actions fail with "Missing scope"
Your API key needs the correct scope. Create a new key with read + write + publish scopes.
Webhook deliveries are failing
Check the delivery log in Settings → Webhooks for the error details. After 10 consecutive failures, webhooks are auto-disabled.