Integration

Zapier Integration

Connect Share.cy to 6,000+ apps with Zapier. Automate your social media workflow without writing code.

API Key
Use your Share.cy API key to connect
5 events
Start Zaps from Share.cy events
5 actions
Control Share.cy from other apps

Setup Guide

1

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.

2

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.

3

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.

4

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

  1. User selects Share.cy in Zapier
  2. Zapier prompts for an API key
  3. User pastes their shcy_live_... key
  4. Zapier sends a test request to GET /api/v1/companies to verify
  5. On success, the connection is saved and used for all Zaps

Required Scopes

ScopeNeeded For
readAll triggers, viewing posts and accounts
writeCreating posts, scheduling, managing library
publishPublishing 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.published

Fires when a post is successfully published to any social platform.

Payload

{ "post_id": "uuid", "content": "...", "platforms": ["twitter", "linkedin"], "published_at": "..." }

New Post Created

post.created

Fires when a new post is created (draft or scheduled).

Payload

{ "post_id": "uuid", "content": "...", "platforms": [...], "status": "draft" }

New Inbox Message

inbox.message_received

Fires when a new social inbox message is received.

Payload

{ "platform": "twitter", "from": "@user", "content": "...", "message_id": "uuid" }

New Support Ticket

support_ticket.created

Fires when a customer creates a new support ticket.

Payload

{ "ticket_id": "uuid", "ticket_number": "SHARE-001", "subject": "...", "category": "..." }

Post Failed to Publish

post.failed

Fires 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: write

Create a new post as a draft.

Input Fields

Content (required)Platforms (required)Image URL

Schedule Post

POST /api/v1/postsscope: write

Create a post and schedule it for a specific date/time.

Input Fields

Content (required)Platforms (required)Scheduled At (required)Image URL

Approve Post

PATCH /api/v1/posts/:idscope: write

Approve a post that is pending approval.

Input Fields

Post ID (required)

Generate AI Posts

POST /api/v1/postsscope: write

Create posts using AI-generated content from a topic or prompt.

Input Fields

Topic/Prompt (required)Platforms (required)ToneCount

Add to Content Library

POST /api/v1/libraryscope: write

Upload a file or save content to the media library.

Input Fields

File URL (required)NameTags

Example Zaps

InstagramSlack

New Instagram CommentSend Slack Notification

Get notified in Slack when someone comments on your Instagram posts.

WordPressShare.cy

New WordPress PostCreate Social Media Posts

Automatically create social posts whenever you publish a new blog article.

Share.cyGoogle Sheets

New Post PublishedLog to Google Sheets

Keep a spreadsheet log of all published social media posts.

Share.cyGmail

Post Failed to PublishSend Email Alert

Receive an email whenever a scheduled post fails to publish.

TypeformShare.cy

New Form SubmissionCreate Support Ticket

Automatically create support tickets from form submissions.

Share.cyAsana

New Inbox MessageCreate 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.