Syncific

Syncific Documentation

The complete guide to syncing creative assets from any source to any CMS, automatically.

Syncific connects your creative tools (Adobe Lightroom & Photoshop, Figma, Canva, Dropbox, Google Drive, OneDrive, Shutterstock) to your CMS platforms (WordPress, Shopify, HubSpot, Contentful, Webflow) through a secure broker architecture.

New to Syncific? Start with the Quick Start guide to sync your first asset in under 5 minutes.

Key Concepts

  • Sources — where your creative assets live (Lightroom, Figma, Canva, etc.)
  • Destinations — where you publish them (WordPress, Shopify, HubSpot, etc.)
  • Broker — Syncific's patent-pending secure middleware that handles OAuth, encryption, and asset delivery
  • Sync — the process of pushing assets from source to destination with optimization

How it Works

  1. Connect your sources via OAuth (your credentials are encrypted and never stored on your CMS)
  2. Add your destination CMS platforms
  3. Browse your source assets, select what to sync
  4. Syncific compresses (AVIF/WebP), generates alt text, and pushes to all selected destinations

Quick Start

Get syncing in 5 minutes:

1. Sign Up

Go to app.syncific.com and choose a plan. All plans include a 14-day free trial — your card is collected at signup but not charged until the trial ends.

2. Connect a Source

Go to Sources and click Connect on any platform. You'll be redirected to authorize via OAuth. Your credentials are encrypted with AES-256 and stored securely in the Syncific broker — never on your CMS.

3. Add a Destination

Go to Destinations and click Add Destination. Choose your CMS type:

  • WordPress — uses Application Passwords (WP 5.6+)
  • Shopify — OAuth connection to your store
  • HubSpot — OAuth connection to your portal
  • Contentful — OAuth connection to your space
  • Webflow — OAuth connection to your site

4. Browse & Sync

Go to Browse, select a source tab, choose your assets, select destination(s), and click Sync. Syncific handles compression, alt text, and delivery automatically.

Tip: Use the All Sources tab to see assets from every connected source in one view.

Plans & Pricing

All plans include a 14-day free trial. Cancel anytime before the trial ends.

FeatureSoloAgencyMax
Monthly price$49/mo$149/mo$399/mo
Annual price$33/mo$99/mo$266/mo
Concurrent sessions13Unlimited
Client workspaces110Unlimited
SourcesAllAllAll
Destinations3 (+$10/mo each)15 (+$10/mo each)Unlimited
Assets/monthUnlimitedUnlimitedUnlimited
WebP & AVIF optimizationYesYesYes
Auto alt textYesYesYes
Scheduled syncYesYesYes
Groups & governanceYes
AI scoring + A/B testingYesYes
GSC intelligenceYesYes
Analytics (CSV export)YesYes
Claude AI (MCP)YesYes
Team roles + permissionsYes
Priority supportYes
Dedicated onboardingYes
Running an agency with multiple clients? See Client Workspaces — isolate each client's destinations, sync history, and activity under one Syncific account.

Sources Overview

Syncific connects to 7 built-in creative asset sources plus custom API sources and AI generation via OpenRouter. Built-in connections use official OAuth flows. Custom sources use Personal Access Tokens stored in an AES-256 encrypted vault. Your credentials are never stored on your CMS.

All sources on every plan. Solo, Agency, and Max all get the full source set — Adobe Lightroom & Photoshop, Dropbox, Figma, Canva, Google Drive, OneDrive, and Shutterstock. The differences between tiers are users, workspaces, destinations, and advanced features.

Adobe Lightroom & Photoshop

Source

Sync photos directly from Adobe Creative Cloud. One authorization covers both Adobe Lightroom Cloud and Photoshop cloud documents — access all your catalogs, albums, and cloud PSDs.

Setup

  1. Go to Sources → click Connect on Lightroom
  2. Sign in with your Adobe ID
  3. Authorize Syncific to access your Lightroom catalog

Browsing

In Browse, select the Lightroom tab. Choose your catalog, then an album. Assets display with thumbnails from Adobe's CDN.

Syncing

Lightroom assets are downloaded at up to 2048px resolution, compressed to AVIF/WebP in your browser (zero server cost), then pushed to your destinations.

Tip: Lightroom renditions are generated on-demand. First sync may take slightly longer while Adobe processes thumbnails.

Figma

Source

Export frames and components from Figma files. Supports all frame types including components, groups, and sections.

Setup

  1. Go to Sources → click Connect on Figma
  2. Authorize with your Figma account
  3. Add Figma files by URL or file key in the Browse sidebar

Browsing

Select the Figma tab in Browse. Your added files appear in the left panel. Click a file to see its frames. Each frame/component can be synced individually.

Canva

Source

Sync designs directly from your Canva account. All design types are supported.

Setup

  1. Go to Sources → click Connect on Canva
  2. Authorize with your Canva account

Syncing

Canva designs are exported as high-quality PNG via the Canva Export API, then compressed to AVIF/WebP before delivery to your destinations.

Note: Canva export uses the Canva API which may take a few seconds per design to generate the export file.

Dropbox

Source

Sync images from your Dropbox folders. Supports recursive folder browsing.

Setup

  1. Go to Sources → click Connect on Dropbox
  2. Authorize with your Dropbox account

Browsing

Browse your Dropbox folder structure. Images are displayed with thumbnails. Click into folders to navigate deeper.

Google Drive

Source

Sync images from Google Drive folders. Thumbnails are provided directly by Google's API.

Setup

  1. Go to Sources → click Connect on Google Drive
  2. Authorize with your Google account
  3. Grant read-only access to your Drive files

OneDrive

Source

Sync images from Microsoft OneDrive. Requires a personal Microsoft account (Outlook/Hotmail/Live).

Setup

  1. Go to Sources → click Connect on OneDrive
  2. Sign in with your Microsoft account
Note: Work/school accounts (Microsoft 365) require SharePoint Online access. Personal accounts work out of the box.

Shutterstock

Source

Sync your licensed Shutterstock images. Only images you've already licensed are available.

Setup

  1. Go to Sources → click Connect on Shutterstock
  2. Authorize with your Shutterstock account

Custom Sources

Source Agency & Max

Connect any API as a creative source via Personal Access Token (PAT). Browse and sync assets from stock libraries, DAMs, headless CMSes, or any custom API endpoint — alongside your built-in OAuth sources.

Extends your source library. Custom sources appear in the Browse tab alongside Lightroom, Figma, Canva, and other built-in sources. Assets from custom sources get the full Syncific pipeline: compression, AI metadata, sync map tracking, and autosync.

How to set up

  1. Go to Sources → Custom Sources → Add Custom Source
  2. Choose a preset (auto-fills API URL, headers, and response mapping) or select Custom API to configure from scratch
  3. Paste your Personal Access Token (API key) for the service
  4. If using Custom API, configure the response mapping so Syncific knows how to extract assets from the API response
  5. Click Verify & Connect — Syncific tests the endpoint and stores your token securely

Available presets

PresetCategoryWhat you need
UnsplashStockAccess Key from Unsplash Developers
PexelsStockAPI Key from Pexels API
PixabayStockAPI Key from Pixabay API
FlickrStock / PersonalAPI Key from Flickr API
SmugMugPhotographyAPI Key + OAuth token
500pxPhotographyConsumer Key
CloudinaryDAMAPI Key + API Secret
BrandfolderDAMAPI Key
BynderDAMOAuth token
ContentfulHeadless CMSCDA token + Space ID
SanityHeadless CMSAPI token + Project ID
AirtableDatabasePersonal Access Token
NotionDatabaseIntegration token
WordPressCMSApplication Password + site URL
Custom APIAnyAPI URL + token + response mapping

Response mapping

When using a custom API (or overriding a preset), configure how Syncific extracts asset data from the API response:

FieldDescriptionExample
items_pathJSON path to the array of items in the responseresults, data.images, photos
id_fieldField name for the unique asset IDid, asset_id
name_fieldField name for the asset name / titledescription, title, alt_description
thumb_fieldField name or path for the thumbnail URLurls.thumb, src.tiny
download_fieldField name or path for the full-resolution download URLurls.full, src.original
per_page_paramQuery parameter name for page sizeper_page, limit
per_pageNumber of items per page (default: 30)30

Security

Your Personal Access Token is stored in an AES-256 encrypted vault file on the broker server. It is:

  • Never stored in the database — only in the encrypted vault file
  • Never sent to the client — API calls are made server-side through the broker
  • Never logged — tokens are redacted in all activity logs

Plan availability

PlanCustom sources
Solo
AgencyUp to 5
MaxUnlimited

MCP tools

Two MCP tools are available for custom sources:

  • list_custom_sources — List all custom API sources and their connection status
  • browse_custom_source — Browse assets from a custom API source by source ID, with pagination

Example: "What custom sources do I have connected?" → calls list_custom_sources. Then "Show me my latest Unsplash photos" → calls browse_custom_source with the Unsplash source ID.

Destinations Overview

Syncific pushes optimized assets to 5 CMS platforms. Each destination stores credentials encrypted with AES-256. Images are compressed in your browser before upload — zero server-side processing cost.

WordPress

Destination

Upload to any self-hosted WordPress site using Application Passwords (WP 5.6+).

Setup

  1. In your WordPress admin, go to Users → Profile → Application Passwords
  2. Enter "Syncific" as the name and click Add New
  3. Copy the generated password
  4. In Syncific, go to Destinations → Add → WordPress
  5. Enter your site URL, username, and application password
  6. Click Verify & Connect
Format support: WordPress accepts JPEG, PNG, WebP (5.8+), and AVIF (6.5+). If your site doesn't support AVIF, Syncific automatically falls back to WebP.

Wordfence / Security Plugins

If you're using Wordfence or another security plugin that blocks Application Passwords or the REST API:

  1. In Wordfence, go to Firewall → All Firewall Options → Allowlisted URLs
  2. Add /wp-json/wp/v2/media to the allowlist
  3. Alternatively, whitelist the Syncific worker IP range in your firewall rules
  4. If Application Passwords are disabled, go to Wordfence → Login Security → Settings and enable Allow Application Passwords
Alternative: Use Site Invites to let the site owner connect their own credentials directly — bypasses Application Passwords entirely.

Shopify

Destination

Upload product images and files to your Shopify store via OAuth.

Setup

  1. In Syncific, go to Destinations → Add → Shopify
  2. Enter your Shopify store domain (e.g., my-store.myshopify.com)
  3. Click Connect — you'll be redirected to Shopify to authorize

HubSpot

Destination

Upload assets to your HubSpot CMS file manager.

Setup

  1. In Syncific, go to Destinations → Add → HubSpot
  2. Click Connect — authorize via HubSpot OAuth

Contentful

Destination

Upload assets to your Contentful space via OAuth.

Setup

  1. In Syncific, go to Destinations → Add → Contentful
  2. Click Connect — authorize via Contentful OAuth
  3. Syncific automatically detects your space and environment

Webflow

Destination

Upload assets to your Webflow site via OAuth.

Setup

  1. In Syncific, go to Destinations → Add → Webflow
  2. Click Connect — authorize via Webflow OAuth
Note: If Webflow rejects an AVIF upload, Syncific automatically falls back to WebP.

Browse & Sync

The Browse page is where you view, select, and sync assets from any connected source to any destination.

Source Tabs

Switch between sources using the tabs at the top: All Sources, Lightroom & Photoshop, Figma, Canva, Dropbox, Google Drive, OneDrive, Shutterstock.

Selecting Assets

Click on assets to select them. Use Select All to select everything in the current view, or Select Updates to select only changed assets.

Syncing

Choose destination(s) from the sync bar at the bottom and click Sync. Syncific will:

  1. Resolve source download URLs
  2. Compress images in your browser (AVIF → WebP → JPEG, whichever is smallest)
  3. Push compressed images to all selected destinations in parallel
  4. Generate alt text if auto metadata is enabled
  5. Record the sync in the Sync Map

Auto Metadata

Syncific can automatically generate alt text, titles, captions, and keywords for your synced assets.

Modes

ModeHow it worksCost
OffNo auto metadataFree
BasicDerives alt text from filename (e.g., "hero-banner-2024.webp" → "hero banner 2024")Free
AIUses OpenRouter vision AI (Gemini 2.5 Flash) to analyze the image and generate descriptive metadataUses OpenRouter credits

Configure in Settings → Auto Metadata.

Autosync

Set up scheduled syncs that run automatically. Syncific checks your sources on a schedule you define and pushes changes to all destinations.

Setup

  1. Go to Autosync
  2. Enable autosync
  3. Choose your interval (5 min to daily)
  4. Select which sources to monitor

Groups & Governance

Groups bundle multiple destinations together so one sync pushes to all of them. Governance rules enforce standards per group.

Creating a Group

  1. Go to Groups → New Group
  2. Name it and select destinations to include

Governance Rules

  • Max file size — reject files over a size limit
  • Min dimensions — reject images below a minimum width/height
  • Allowed formats — only accept specific image formats
  • Allowed sources — restrict which sources can sync to this group
  • Auto-compress — always compress before push
  • Autosync enabled — toggle whether autosync runs for this group
  • Approval required — queue syncs for manual approval before pushing
  • Default folder — set a default destination folder for the group

Optimize

Convert JPG and PNG images to modern formats (AVIF/WebP) directly on your destination's media library — even images that weren't synced through Syncific.

How it Works

  1. Go to Optimize
  2. Select a destination
  3. Browse the destination's media library — images are shown with size, format, and optimization status
  4. Select individual images or use Select All
  5. Set quality and max dimension
  6. Click Optimize Selected

Compression happens in your browser. Optimized images replace the originals on the destination — attachment IDs are preserved (WordPress with LightSync Pro plugin), so no broken links. Modern formats (WebP, AVIF) are automatically excluded since they're already optimized.

Progress is shown in real-time with per-image diagnostics. Average savings: 60-75% file size reduction.

WordPress users: For in-place replacement that preserves attachment IDs, install the LightSync Pro plugin on the destination site. Without it, optimized images are uploaded as new attachments.

Intelligence

Agency+

GSC-powered hero scores, A/B testing, and AI variant generation.

Hero Scores

Each synced image gets a hero score (0-200) based on quality metrics multiplied by a GSC performance weight. Tiers:

  • Hero (150+) — top performers driving real traffic
  • Strong (100-149) — solid performers
  • Average (50-99) — room for improvement
  • Weak (0-49) — underperforming or no GSC data

A/B Testing

Auto-detected when you sync similar assets to the same destination. Results based on GSC impressions and clicks.

AI Generate

Generate images using AI models via OpenRouter. Currently supports Google Gemini image generation models (Gemini 2.5 Flash Image, Gemini 3 Pro Image, Gemini 3.1 Flash Image).

Requirements

Connect your OpenRouter API key in Settings → OpenRouter.

How it Works

  1. Enter a text prompt describing the image you want
  2. Choose a model and aspect ratio
  3. Click Generate — the image appears in the preview panel
  4. Add alt text, select a destination, and click Compress & Sync
  5. The generated image is compressed to AVIF/WebP in your browser and pushed to the destination

Suggestions

Syncific scans your synced assets and proposes optimization actions: missing alt text, stale assets, format improvements, and more.

Review suggestions in the Suggestions page. Approve or dismiss each one individually.

Claude MCP Connector

Agency+

Syncific is the first creative asset platform with a native Claude AI (MCP) integration. Manage your entire sync workflow through conversation.

Setup

  1. Go to Settings → Claude.ai MCP Connector
  2. Copy the MCP URL
  3. In Claude.ai, go to Settings → Integrations → Add Integration
  4. Paste the URL

What You Can Do

  • Browse and search your source assets
  • Sync assets to destinations (with update-in-place — no duplicates)
  • Trigger autosync on demand
  • Detect and re-sync changed source files
  • Sync specific pages of multi-page Canva designs
  • Check sync status and activity per destination
  • Generate AI images and metadata
  • View hero scores and intelligence data

MCP Automation Recipes

Agency+

Ready-to-use prompts for Claude.ai. Copy these into Claude after connecting your MCP integration.

Daily Workflows

Morning sync check

"Check my Syncific activity from the last 24 hours. Show me what synced successfully, anything that failed, and how many assets are now live across my destinations."

New asset push

"Browse my Lightroom portfolio album and show me any assets that aren't in my sync map yet. List them with thumbnails so I can decide which ones to sync."

Quick single asset sync

"Sync the most recent asset from my Lightroom portfolio album to WordPress and Shopify. Generate alt text and set it as featured."

Campaign & Launch Workflows

Campaign launch

"Sync everything in my Figma '[Campaign Name]' file to all destinations. Generate AI alt text for each asset and confirm when complete."

Product launch — Shopify focus

"Browse my [source] and find assets tagged '[product name]'. Sync them all to Shopify only. Add the tag 'launch-2025' to each one."

Multi-source consolidation

"Pull all assets from my Lightroom '[Campaign]' album and my Figma '[Campaign]' file. Sync everything to WordPress and HubSpot. Show me a summary of what was pushed."

Canva Multi-Page Workflows

Sync specific pages of a design

"Show me the pages of my Canva design '[design name]'. I only want to sync pages 1, 3, and 5 to Shopify."

Full multi-page sync

"List all the pages in my Canva '[campaign name]' design and sync each page to WordPress as a separate asset."

Preview pages before syncing

"Get the page thumbnails from my Canva design [design id]. Show me all of them so I can pick which ones to push."

Autosync & Update Workflows

Run autosync now

"Trigger autosync right now — I just updated a bunch of source files and want the destinations refreshed immediately without waiting for the schedule."

Detect changed assets

"Check my source platforms and find any assets that have changed since the last sync. Show me the list before pushing anything."

Update in place without duplicates

"The Dropbox version of [filename] has been updated. Push the new version to all destinations it was originally synced to — I don't want duplicates, just replace the existing files."

Per-destination sync audit

"Show me every asset synced to my Shopify store specifically. Which ones are up to date and which need re-syncing based on source changes?"

Quality & Intelligence Workflows

Hero score audit

"Show me all my synced assets with a hero score below 40. Group them by destination and tell me which ones are worth updating versus removing."

Top performer report

"List my top 10 performing assets across all destinations by hero score. Tell me which sources they came from and which destinations they're on."

Identify missing alt text

"Scan my sync map and find all assets missing alt text. How many are there per destination? Then generate AI alt text for all of them."

Metadata & Enrichment Workflows

Bulk alt text generation

"Find all assets on my WordPress destination that have basic alt text instead of AI alt text. Regenerate them all using AI."

Alt text review

"Show me the AI-generated alt text for my last 20 synced assets. Flag any that seem generic or inaccurate so I can review them."

Agency & Client Workflows

Client site audit

"Check all assets synced to [client site URL]. Show me hero scores, missing alt text, and anything that hasn't been updated in the last 90 days."

Client onboarding sync

"I've just connected a new WordPress site for [client name]. Sync their Lightroom album '[album]' to it and generate AI alt text for every asset. Confirm when done."

Multi-site status report

"Give me a sync status summary across all my connected WordPress destinations. How many assets are on each site, when was the last sync, and are there any failures?"

Troubleshooting Workflows

Sync failure investigation

"Check my activity log for any failed syncs in the last 7 days. What failed, which destinations were affected, and what were the error reasons?"

Destination health check

"Test my connection to all destinations and tell me which ones are responding correctly and which have issues."

Tips

  • Be specific about albums and folders. The more specific you are (album name, folder path, file name) the faster Claude can act.
  • Chain prompts for complex workflows. Start with "show me" before "sync" — confirm the asset list looks right, then tell Claude to proceed.
  • Use "confirm before syncing" when in doubt. Add this to any prompt and Claude will show you what it plans to do before executing.
  • Hero scores need GSC data. Connect Google Search Console in Settings to unlock hero scoring.
  • AI alt text uses OpenRouter credits. Basic alt text (filename-derived) is always free.

Google Search Console

Agency+

Connect GSC to enable hero scoring and performance-based image intelligence.

Setup

  1. Go to Settings → Google Search Console → Connect
  2. Authorize with your Google account
  3. GSC data is used to score your synced images based on real search impressions and clicks

OpenRouter

OpenRouter powers AI image generation and AI metadata enrichment.

Setup

  1. Go to Settings → OpenRouter → Connect
  2. Authorize via OpenRouter OAuth (or enter an API key manually)

Used by: AI Generate, AI Metadata mode

Notifications

Receive real-time notifications when events happen in Syncific. Use notification hooks to trigger external workflows (Zapier, n8n, custom APIs).

Events

EventFires when
asset.syncedAn asset is successfully pushed to a destination
sync.completedA batch sync operation completes
autosync.ranAn autosync cycle completes
destination.connectedA new destination is connected (including via site invite)
enrichment.completedAI metadata is generated for an asset
action.approvedA proposed action is approved and executed
action.rejectedA proposed action is rejected
upload_link.createdA client upload link is created
upload_link.uploadedA client uploads file(s) via an upload link — includes filename, alt text, destinations
upload_link.expiredAn upload link expires, hits its file limit, or is revoked

Setup

  1. Go to Notifications → Create Notification
  2. Enter the endpoint URL
  3. Select events to listen for

All notification hooks are signed with HMAC-SHA256 for verification.

Custom Destinations

Push assets to any platform that has an HTTP endpoint. If your CMS, DAM, or internal tool isn't one of the five native destinations, custom destinations let Syncific deliver optimized, tagged images anywhere. Available on Agency and Max plans.

Same pipeline, any platform. Custom destinations get the full Syncific treatment: AVIF/WebP compression, AI metadata, fan-out sync, autosync, asset ID tracking, and sync map history. The only difference is your endpoint handles the storage.

How it works

  1. Go to Destinations → Add Destination → Custom Destination
  2. Enter a name (e.g. "Strapi Production") and your endpoint URL
  3. Syncific generates an HMAC signing secret — copy and save it
  4. Your endpoint receives assets as multipart POST requests

What Syncific sends

Every push is a application/json POST containing the file as a base64 string alongside all metadata. No multipart parsing required.

Payload fields

FieldTypeDescription
filenamestringOriginal filename (e.g. hero-banner.webp)
mimestringMIME type (e.g. image/webp, image/avif)
alt_textstringAI-generated or filename-derived alt text
sourcestringWhere the asset came from (lightroom, figma, canva, dropbox, etc.)
size_bytesnumberFile size in bytes
sync_idstringUnique ID for this sync event (UUID)
destination_idstringSyncific destination ID
workspace_idstringSyncific workspace ID
file_base64stringBase64-encoded image bytes (decode to get the file)
existing_asset_idstringIf set, this is an update — the ID your endpoint returned on the original upload
timestampnumberUnix timestamp of the request

Headers

HeaderDescription
X-Syncific-SignatureHMAC-SHA256 hex digest of the full JSON body, signed with your secret
X-Syncific-TimestampUnix timestamp of the request
Content-Typeapplication/json

Expected response

Your endpoint must return JSON with the asset ID and URL so Syncific can track it in the sync map:

{
  "asset_id": "abc-123",
  "asset_url": "https://cdn.example.com/images/abc-123.avif"
}

Return any 2xx status for success. Non-2xx responses are treated as failures and logged in the activity feed.

Signature verification

Always verify the X-Syncific-Signature header to ensure the request came from Syncific. The signature is an HMAC-SHA256 hex digest of the full JSON body, signed with your signing secret.

Node.js / Express

import crypto from 'crypto'
import express from 'express'

const app = express()
app.use(express.json({ limit: '10mb' }))
const SECRET = process.env.SYNCIFIC_SECRET

app.post('/syncific/upload', (req, res) => {
  // Verify signature
  const body = JSON.stringify(req.body)
  const expected = crypto.createHmac('sha256', SECRET)
    .update(body).digest('hex')
  if (req.headers['x-syncific-signature'] !== expected) {
    return res.status(401).json({ error: 'Invalid signature' })
  }

  // Decode the file from base64
  const fileBuffer = Buffer.from(req.body.file_base64, 'base64')

  // Save the file however your platform needs
  const assetId = saveToMyStorage(fileBuffer, req.body.filename)
  const assetUrl = `https://cdn.example.com/${assetId}`

  // If existing_asset_id is set, this is an update (re-sync)
  if (req.body.existing_asset_id) {
    replaceInMyStorage(req.body.existing_asset_id, fileBuffer)
  }

  res.json({ asset_id: assetId, asset_url: assetUrl })
})

Python / Flask

import hmac, hashlib, json, base64
from flask import Flask, request, jsonify

app = Flask(__name__)
SECRET = 'your_signing_secret'

@app.route('/syncific/upload', methods=['POST'])
def receive():
    body = request.get_data(as_text=True)
    signature = request.headers.get('X-Syncific-Signature', '')
    expected = hmac.new(SECRET.encode(), body.encode(),
                        hashlib.sha256).hexdigest()
    if not hmac.compare_digest(signature, expected):
        return jsonify(error='Invalid signature'), 401

    data = request.get_json()
    file_bytes = base64.b64decode(data['file_base64'])

    asset_id = save_to_storage(file_bytes, data['filename'])
    asset_url = f'https://cdn.example.com/{asset_id}'

    return jsonify(asset_id=asset_id, asset_url=asset_url)

PHP

<?php
$secret = getenv('SYNCIFIC_SECRET');
$body   = file_get_contents('php://input');
$sig    = $_SERVER['HTTP_X_SYNCIFIC_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $body, $secret);

if (!hash_equals($expected, $sig)) {
    http_response_code(401);
    echo json_encode(['error' => 'Invalid signature']);
    exit;
}

$data = json_decode($body, true);
$file = base64_decode($data['file_base64']);

$id  = save_to_storage($file, $data['filename']);
$url = "https://cdn.example.com/{$id}";

echo json_encode(['asset_id' => $id, 'asset_url' => $url]);

Wix Velo

// backend/http-functions.js
import { ok, badRequest } from 'wix-http-functions'
import { mediaManager } from 'wix-media-backend'

export function post_syncific(request) {
  return request.body.json().then(async data => {
    const buffer = Buffer.from(data.file_base64, 'base64')
    const result = await mediaManager.upload(
      '/syncific', buffer, data.filename,
      { mediaOptions: { mimeType: data.mime } }
    )
    return ok({
      body: JSON.stringify({
        asset_id: result.fileUrl,
        asset_url: result.fileUrl
      })
    })
  }).catch(err => badRequest({ body: JSON.stringify({ error: err.message }) }))
}

Update vs. create

When Syncific re-syncs a changed source asset, the metadata JSON includes existing_asset_id — the ID your endpoint returned on the original upload. Use this to update the asset in place rather than creating a duplicate.

Metadata-only updates

When AI re-enrichment generates new metadata (alt text, title, caption, keywords) for an already-synced asset, Syncific fires a metadata-only POST to your endpoint without re-uploading the file. Detect these by checking the event field in the payload or the X-Syncific-Event header:

{
  "event": "metadata.updated",
  "existing_asset_id": "abc-123",
  "alt_text": "Updated AI-generated description",
  "title": "New title",
  "caption": "...",
  "keywords": ["tag1", "tag2"],
  "sync_id": "uuid",
  "destination_id": "5",
  "workspace_id": "1",
  "timestamp": 1776299939
}

No file_base64 is sent on metadata updates — your endpoint should look up the asset by existing_asset_id and update the metadata fields without touching the file.

In-Place Updates by Platform

When Syncific re-syncs a changed source asset, what happens depends on the receiving platform's capabilities. Some platforms support true in-place updates (same URL, new bytes — references on your site never break). Others assign new URLs on every upload, requiring find-and-replace or duplicate management.

Why this matters: If your platform supports in-place updates, a re-sync is invisible to your visitors — the image at example.com/hero.jpg just shows the new version. If it doesn't, you'll get a new URL and any existing references break.
PlatformIn-Place?How / Notes
WordPressYesNative — LSP plugin uses update_attached_file(). Same attachment ID, same URL.
ShopifyYesNative — Files API supports byte updates by ID.
HubSpotYesNative — Files v3 API supports replace.
ContentfulYesNative — Asset version updates with optimistic locking.
WebflowNo (auto-fixed)Webflow assets are immutable. Syncific uploads new + walks pages/components/CMS to swap references automatically.
Cloudinary (custom)YesUse the preset which sets public_id: "{{filename}}" + overwrite: true. Same filename = same Cloudinary URL forever.
AWS S3 (custom)YesPUT to a deterministic key (e.g. /images/{{filename}}) overwrites the object at the same URL.
Cloudflare R2 (custom)YesSame as S3 — PUT to same key = overwrite.
DigitalOcean Spaces (custom)YesS3-compatible. PUT to same key = overwrite.
Bunny Storage (custom)YesPUT to /{{filename}} = overwrite. CDN cache may take a moment to invalidate.
Vercel Blob (custom)PartialPUT to same path overwrites by default, but Vercel may add a random suffix unless addRandomSuffix: false is configured. Use deterministic paths.
Supabase Storage (custom)YesUse x-upsert: true header (already in preset). PUT to same path overwrites.
Firebase Storage (custom)YesPOST with same name param overwrites the object.
Sanity (custom)PartialSanity creates a new asset on every upload, but you can reference assets by document/field. Use Sanity's deduplication or write a transaction to replace asset references.
Strapi (custom)NoStrapi uploads create new media. Use the fileInfo field to set a deterministic name; manual cleanup of old uploads required for true in-place behavior.
Ghost (custom)NoGhost's media upload always creates a new file with a hash-prefixed URL. References to old URLs break unless your post content uses Ghost's auto-resize URLs.
Bynder (custom)YesBynder supports asset versioning by ID. Use existing_asset_id to upload as a new version of the same asset.
Uploadcare (custom)NoEach upload creates a new UUID. Reference files by your own ID stored in the response, then update those references.
DatoCMS (custom)PartialDatoCMS uploads create new asset records. To update in place, use the upload's id and PATCH with new file ref.
Wix (custom)NoWix Media Manager doesn't expose a "replace" API. Each upload creates a new file with a new URL. Pages reference specific file URLs, so old references break. Workaround: route Wix images through Cloudinary and use Cloudinary URLs in Wix.
SquarespaceNoNo public media replace API. Same workaround as Wix — use external CDN URLs.
BigCommerce (custom)PartialProduct image API supports update by ID. Standalone media library doesn't have replace API.
Generic Custom EndpointDependsYour code controls this. Read existing_asset_id from the payload and update by that ID in your storage. Return the same asset_id to maintain the chain.

Best Practice for Custom Webhook Endpoints

If you control the receiving endpoint, follow these patterns to ensure clean updates:

  1. Use existing_asset_id as the lookup key. When set, treat the request as an update, not a new upload.
  2. Return a stable, deterministic asset_id. Syncific stores this and sends it back on future updates.
  3. Use deterministic URLs / filenames in your storage. If your storage uses content-hashed URLs, the URL changes every update — consider mapping a stable slug to the latest version.
  4. Handle metadata.updated events to apply alt text / title changes without re-uploading the file.
  5. Don't trust the filename for uniqueness. Two different source assets can have the same filename; use the sync_id + existing_asset_id pair for tracking.

Platform Presets (One-Click Setup)

The webhook setup includes presets for 14 popular platforms. Click a preset to auto-fill the URL, format, headers, and template — then swap in your platform-specific values.

PresetWhat to swap inAuth method
CloudinaryYOUR_CLOUD, YOUR_PRESET (unsigned preset name)Unsigned preset (no header)
UploadcareYOUR_PUB_KEYPublic key in form field
Supabase StorageYOUR_PROJECT, YOUR_BUCKET, YOUR_SERVICE_KEYBearer token header
Vercel BlobYOUR_RW_TOKENBearer token header
Firebase StorageYOUR_BUCKET, YOUR_TOKENBearer token header
AWS S3 PresignedYour presigned PUT URLURL-embedded signature
Bunny StorageYOUR_ZONE, YOUR_STORAGE_KEYAccessKey header
SanityYOUR_PROJECT, YOUR_DATASET, YOUR_TOKENBearer token header
StrapiYour Strapi URL, YOUR_TOKENBearer token header
GhostYour Ghost URL, YOUR_ADMIN_API_KEYGhost admin API key
BynderYOUR_DOMAIN, YOUR_TOKENBearer token header
DatoCMSYOUR_API_TOKENBearer token header
DigitalOcean SpacesYour presigned PUT URLURL-embedded signature
Cloudflare R2Your presigned PUT URLURL-embedded signature
CustomAny URL — configure format/headers manuallyYour choice

Choosing the Right Format

Webhook destinations support three body formats. Pick based on what your platform's upload API expects.

FormatWhen to useBody
JSON (default)Custom endpoints, headless CMS APIs, serverless functionsJSON with file_base64 or file_data_uri
Form DataCloudinary, Uploadcare, Strapi, Ghost, Bynder — anything that expects multipart/form-data uploadMultipart form with file attached as file
Raw FileS3 presigned URLs, Vercel Blob, Bunny Storage, Cloudflare R2, Supabase Storage — anything that takes the raw bytes as the bodyImage bytes only, Content-Type set to the image MIME

HTTP Method

Default is POST. Use PUT for presigned URL uploads (S3, DO Spaces, R2), Vercel Blob, and Bunny Storage.

Custom Headers

For platforms that require authentication via HTTP headers (most modern APIs), add them as JSON. Template variables work inside header values too.

{
  "Authorization": "Bearer YOUR_TOKEN",
  "Content-Type": "{{mime}}"
}

URL Path Templating

If the target platform expects the filename in the URL path (like Bunny, Vercel Blob, Supabase), include {{filename}} in the webhook URL:

https://storage.bunnycdn.com/YOUR_ZONE/{{filename}}

Syncific URL-encodes the filename automatically.

Template Variables Reference

All available variables for payload templates, URLs, and header values:

VariableExampleDescription
{{filename}}hero-banner.webpImage filename
{{mime}}image/webpFull MIME type
{{format}}webpFile extension (no dot)
{{file_base64}}UklGRh...Base64-encoded image bytes
{{file_data_uri}}data:image/webp;base64,UklGRh...Full data URI
{{alt_text}}golden retriever on beachAI or filename-derived alt text
{{source}}lightroomWhere the asset came from
{{source_asset_id}}lr-abc123Stable source identifier — use as a deterministic key for in-place updates
{{action}}create or updateWhether this is a new asset or an update to a previously synced one
{{is_update}}true or falseBoolean flag — simpler alternative to action
{{existing_asset_id}}abc-123The destination platform's ID from the previous sync (empty on first sync)
{{existing_url}}https://cdn.example.com/img.webpThe previous destination URL — use to overwrite the same resource
{{size_bytes}}25093File size in bytes
{{sync_id}}c0a617cf-5165-4ee3-8c2bUnique per-sync UUID
{{folder}}productsGovernance default folder (if set)
{{folder_path}}products/hero-banner.webpFolder + filename — use as the object key for storage platforms
{{destination_id}}19Syncific destination ID
{{workspace_id}}1Syncific workspace ID
{{timestamp}}1776299939Unix timestamp

In-Place Updates

When an asset is re-synced after a source change, Syncific sends {{action}}: "update" along with {{existing_asset_id}} and {{existing_url}} from the previous sync. Use these to overwrite the existing resource instead of creating a duplicate:

  • Object storage (S3, R2, Bunny, Supabase, Firebase, Vercel Blob, DO Spaces) — PUT to the same {{folder_path}}. Presets do this by default.
  • Cloudinary — set public_id: "{{source_asset_id}}" with overwrite: true. Same public ID = same URL forever.
  • Custom endpoints — check {{is_update}} in your receiver logic and use {{existing_asset_id}} to update the right record.

If the asset hasn't changed since the last sync (checksum matches), Syncific skips the push entirely — no duplicate, no wasted bandwidth.

Editing Existing Destinations

Click the Edit button on any destination card to update its name, URL, payload template, headers, HTTP method, or site domain. Changes take effect immediately for the next sync.

Decision Tree — Which Setup Do I Use?

  1. Is your platform in the preset list? → Click the preset. Swap in your values. Done. Presets are pre-configured for in-place updates where supported.
  2. Is it a custom endpoint you control? → Use the default JSON format. Check {{action}} to decide create vs update.
  3. Does the platform have an upload API that expects multipart? → Use Form Data. Set template to the form fields it wants (e.g. upload_preset, public_id).
  4. Did the platform give you a presigned URL? → Use Raw File body with PUT method. Include {{folder_path}} in the URL for deterministic paths.
  5. Platform needs a bearer token? → Add it to Custom Headers: {"Authorization": "Bearer YOUR_TOKEN"}

Troubleshooting

ErrorCommon causeFix
HTTP 400Wrong body format or missing required fieldCheck the platform's API docs for the exact payload it expects
HTTP 401Missing or invalid auth tokenAdd/fix the Authorization header in Custom Headers
HTTP 403Token doesn't have upload permissionsGenerate a new token with write access to media/storage
HTTP 404Endpoint URL wrong or not deployedVerify the URL in a browser. Make sure your function/endpoint is published.
HTTP 413File too large for the endpoint's limitLower governance max_dimension to produce smaller files
Test passes, sync failsTest sends a 1x1 pixel; real files may hit different limitsCheck the activity log for the real error message from the destination

Compatible Platforms

Beyond the presets, any platform with an HTTP upload API can receive Syncific pushes:

  • Headless CMS — Strapi, Sanity, Prismic, DatoCMS, Ghost, Keystone, Contentstack, Storyblok
  • DAM / Media — Bynder, Cloudinary, Uploadcare, imgix
  • Storage — AWS S3, DigitalOcean Spaces, Backblaze B2, Cloudflare R2, Bunny.net, Firebase Storage, Supabase Storage, Vercel Blob
  • E-commerce — BigCommerce, WooCommerce (headless)
  • AI Agents — Image moderation, auto-tagging, or content generation endpoints
  • Social Media (via Buffer, Zapier, or custom middleware) — Instagram, Facebook, LinkedIn, Pinterest, X
  • Automation — Zapier, Make.com, n8n catch-hooks
  • Custom — Any internal tool, serverless function, or Rails/Django/Express app

Settings

Manage your account, integrations, and preferences.

  • Plan & Billing — view current plan, upgrade, manage billing via Stripe
  • Account Name — set your account display name
  • MCP Connector — Claude AI integration URL
  • OpenRouter — connect for AI features
  • Google Search Console — connect for intelligence
  • Auto Metadata — choose Off / Basic / AI mode
  • Theme — toggle dark/light mode

Billing

Manage your subscription, upgrade/downgrade plans, and access invoices.

Manage Billing

Click Manage Billing in Settings to open the Stripe customer portal. From there you can update payment method, view invoices, or cancel.

Free Trial

All plans include a 14-day free trial with full feature access. Your card is collected at signup but not charged until the trial ends. Cancel anytime from Settings.

Concurrent Sessions

Each plan limits how many devices can be signed in at the same time:

  • Solo — 1 session. Signing in on a new device logs you out of the previous one.
  • Agency — 3 concurrent sessions. Up to 3 team members can use Syncific simultaneously.
  • Max — Unlimited sessions.

Sessions expire automatically after 60 minutes of inactivity. The most recent sign-in always takes priority — if you exceed your limit, the oldest session is signed out with a notification explaining why.

Team

Agency+

Invite team members to collaborate on your Syncific account.

Roles

RolePermissions
OwnerFull access — billing, settings, team management
EditorBrowse, sync, manage destinations and sources
ViewerView-only access to browse and sync map

Inviting Members

  1. Go to Team → Send Invite
  2. Enter their email and choose a role
  3. They'll receive an email with an invite link

Team Member Login

Team members log in via email — no license key needed. On the login page, click "Team member? Log in with email" and enter the email used for the invite.

Client Workspaces

Agency+

A workspace is an isolated environment for a single client. Each workspace has its own destinations, sync history, activity log, optimize history, webhooks, and governance rules. Switching workspaces is like switching between entirely separate accounts — except you only pay for one Syncific subscription, only sign in once, and manage everything from one dashboard.

Why this matters for agencies. If you manage creative assets for multiple clients, you never want Client A's destinations showing up when you're working on Client B. Workspaces give each client full isolation. Your team signs in once and picks which client they're working on from a dropdown.

When to use workspaces

You are…Recommended setup
A solo creative1 workspace (the default). You don't need to think about workspaces at all — Solo plan.
An agency with 3–10 ongoing clientsOne workspace per client. Start on Agency ($149/mo, up to 10 workspaces).
An agency with 10+ clients or multiple brand portfoliosOne workspace per client or brand, unlimited. Max ($399/mo).
An in-house team managing multiple brandsOne workspace per brand. Agency if ≤10 brands, Max if more.

What's isolated per workspace

  • Destinations — each workspace connects its own WordPress, Shopify, HubSpot, Contentful, and Webflow sites. Client A's WordPress doesn't appear in Client B's destinations list.
  • Sync history — the sync map (which assets went where) is workspace-scoped.
  • Activity log — every sync event, error, and autosync run stays in the workspace where it happened.
  • Optimize history + rollbacks — per-workspace optimize runs and rollback snapshots.
  • Autosync rules + schedules — each workspace has its own autosync config. Client A can autosync every 15 minutes while Client B runs daily.
  • Notifications + deliveries — your Zapier/n8n notifications for Client A never fire on Client B events.
  • Governance rules — max file size, min dimensions, allowed formats, allowed sources, approval workflows — all per workspace.
  • Google Search Console connection — each workspace connects its own client's GSC property.
  • Destination invites — the magic-link invites you send to client webmasters are scoped to the workspace that created them.

What's shared across workspaces

  • Your Syncific account and billing — one subscription covers all your workspaces.
  • Team members — your agency team is defined at the account level (you don't re-invite people per workspace).
  • Sources — your Lightroom, Dropbox, Figma, Canva, etc. connections are currently shared across all workspaces. Per-workspace source connections are on the roadmap for agencies where each client has their own source accounts.
  • Your license key and login — one license, one login, many workspaces.

Creating a workspace

  1. Click the workspace switcher in the top command bar of the app (shows the current workspace name with a dropdown arrow).
  2. Click + New workspace.
  3. Enter a name (e.g., Acme Corp, Blue Ridge Bakery).
  4. Optionally pick an accent color for visual distinction.
  5. Click Create workspace. The app reloads with the new workspace selected and empty — ready for you to connect destinations, configure autosync, and start syncing.

You can also create and manage workspaces from the Workspaces page in the Account section of the sidebar.

Switching workspaces

Click the workspace name in the top command bar → pick a different workspace from the dropdown. The app performs a full reload so there's zero chance of cached data from one workspace leaking into another. Your workspace selection is saved in your browser, so next time you log in you land in the same workspace you left.

Switching is a hard reload by design. Cached React Query data never crosses workspace boundaries. This is a feature, not a bug — it guarantees you'll never accidentally see Client A's data while looking at Client B's workspace.

Agency Rollup

Agency and Max plans get an All Workspaces dashboard tab showing totals across every workspace: total assets synced, destinations, bytes saved, last activity per client. Great for monthly client reporting and for spotting workspaces that are going cold.

Renaming and archiving

From the Workspaces page in your account settings:

  • Rename — click Rename on any workspace. The slug stays the same, just the display name changes.
  • Archive — soft-deletes a workspace. Its data stays in the database (so you can recover it if needed) but it disappears from the switcher and the rollup view. You cannot archive your default workspace.
  • Switching out — before archiving a workspace you're currently in, switch to a different workspace first.

Client portal — coming later

A future release will let agency owners invite end clients into a read-only view of their own workspace — they see only their assets, destinations, and reports, with no access to your agency dashboard or other clients. If this is important for your workflow, let us know — it shapes our roadmap priority.

Moving things between workspaces

Not currently supported. If you connect a destination to the wrong workspace, the cleanest fix is to archive it and reconnect under the correct workspace. We're tracking this as a feature request — watch for a "move to workspace" action in a future release.

Common scenarios

One agency, agency-owned creative assets, many client sites.
You shoot product photos for 10 clients under your own Adobe Creative Cloud account. Each client has their own WordPress site.
→ One workspace per client. Your Lightroom library is shared across all workspaces (same source credentials), but each client's workspace has only their WordPress destination connected. Sync Client A's album to Client A's workspace → only Client A's site updates.

Agency managing client-owned assets (each client has their own Dropbox).
Each client gave you OAuth access to their Dropbox.
→ Currently not fully supported — source credentials are account-level, so you'd need to reconnect Dropbox each time you switch. Per-workspace source connections are on the roadmap. Workaround: use one Dropbox folder per client under your own Dropbox and ask clients to share folders into yours.

In-house team with multiple brand portfolios.
You run marketing for a parent company that owns 4 distinct consumer brands. Each brand has its own Shopify store and its own Figma team.
→ One workspace per brand. Your team members are shared at the agency level, but each person picks which brand they're working on from the workspace switcher.

Freelance creative with one site.
→ Solo plan. You'll never see the workspace switcher. The app behaves as if workspaces don't exist.

Site Invites

Invite website owners to connect their CMS to your Syncific account. Useful for agencies managing client sites.

How it Works

  1. Go to Site Invites → Send Invite
  2. Choose the platform (WordPress, Shopify, etc.)
  3. Enter the site URL and recipient's email
  4. They receive an email with a connect link
  5. They enter their CMS credentials directly — you never see them

Direct Upload

Upload images from your desktop directly to any destination — no source connection needed. Images are compressed in your browser and pushed directly. Nothing is stored on Syncific servers.

How it Works

  1. Go to Upload in the sidebar (or drag files onto any Browse page)
  2. Drop images or folders — Syncific reads all images recursively
  3. Select destination(s) from the bottom bar
  4. Click Sync — an optional alt text modal appears for each image
  5. Images compress (AVIF/WebP) in your browser and push to all selected destinations

Update in Place

Re-uploading a file with the same filename replaces the existing image at every destination. Same URL, same attachment ID — no duplicates. The sync map tracks each upload for dedup and change detection.

Tip: You can also upload images through Claude via MCP. Share an image in the conversation and say "push this to my WordPress site" — Claude calls the upload_local tool.

Client Upload

Create shareable upload links so your clients can push images directly to your destinations — without a Syncific account.

Creating a Link

  1. Go to Client Upload → Create Link
  2. Add a label (e.g. "Product Photos for Client A")
  3. Select which destination(s) receive the uploads
  4. Set max file count and expiration (1–90 days)
  5. Optionally set a password and/or require alt text
  6. Share the generated URL with your client

Security

  • Write-only — clients can upload but cannot see, browse, or delete anything
  • Password protection — optional SHA-256 hashed password gate
  • Rate limited — 5 uploads per minute per link
  • File cap — link stops accepting uploads after the max file count
  • Expiration — link auto-expires after the set duration
  • Revocable — kill any link instantly from the dashboard
  • Auto-cleanup — expired/revoked links are deleted after 30 days

Tracking

Every client upload appears in your activity log and sync map as source: upload-link. Update-in-place works the same as direct upload — same filename through the same link replaces the existing file.

Security

Syncific uses a patent-pending broker architecture designed for zero credential exposure.

How Credentials Are Protected

  • OAuth tokens — encrypted with AES-256, stored server-side in the broker
  • Destination credentials — encrypted in Cloudflare D1, never exposed to frontend
  • Your CMS never stores third-party source credentials
  • Your sources never see your CMS credentials
  • Webhooks — signed with HMAC-SHA256
  • JWT tokens — short-lived, revocable, with role-based scoping

Programmatic Access

Syncific provides programmatic access through its Claude MCP integration — not a traditional REST API. This means you interact with Syncific through natural language in Claude.ai, and Claude handles the underlying operations for you.

Getting Started

Connect Syncific to Claude.ai in under a minute:

  1. Go to Settings → Claude.ai MCP Connector in your Syncific dashboard
  2. Copy the MCP URL
  3. In Claude.ai, go to Settings → Integrations → Add Integration
  4. Paste the URL and authorize

Once connected, Claude can browse your sources, sync assets, generate metadata, manage destinations, and more — all through conversation. See Claude MCP Connector and MCP Recipes for the full list of capabilities and ready-to-use prompts.

Available MCP Tools

Syncific's MCP server exposes 28 tools that Claude can call through natural language. You never need to type tool names — just describe what you want and Claude selects the right tool.

ToolDescriptionExample Prompt
Platform StatusAccount health, connected sources, destinations, subscription status"What's my Syncific status?"
Push AssetPublish an asset to a destination or group with automatic format optimization"Publish these photos to WordPress and Webflow"
Sync MapSee which assets are published where, when they were synced, and if the source changed"Which photos are already on the Shopify site?"
AI MetadataGenerate alt text, titles, captions, and keywords using AI"Generate alt text for everything I just published"
Get EnrichmentView AI-generated metadata for an asset across all destinations"What alt text was generated for DSC_1234?"
Update MetadataManually edit and push alt text and titles to the destination"Change the hero alt text to: Denver skyline at sunset"
Score AssetsGet SEO and quality scores — find low-scoring assets that need attention"Which assets have the lowest SEO scores?"
Scan SiteStart an Intelligence Optimizer audit — crawl, score every image, generate fix recommendations"Scan my WordPress site for image SEO issues"
Audit StatusCheck scan progress and results — pages, images, issues, overall score"How is the site audit going?"
List IssuesView issues by tier: Tier 1 (act now), Tier 2 (worth fixing), Tier 3 (watch list)"Show me all Tier 1 issues from the latest audit"
Fix IssueApply a single fix — update alt text, compress image, convert format"Fix issue #42 with custom alt text"
Fix All Alt TextBulk-apply AI-generated alt text across an entire site (WordPress, Elementor, Shopify, etc.)"Fix all missing alt text on my WordPress site"
Optimizer SettingsConfigure monthly auto-audit and auto-approve for Tier 1 recommendations"Enable auto-audit and auto-approve Tier 1 fixes"
Propose ActionsList AI-recommended actions awaiting approval — with rationale and confidence"Show me pending optimization suggestions"
Approve / RejectExecute or dismiss a proposed action immediately"Approve the high-confidence suggestions"
Changed AssetsDetect source assets that changed since last sync"What Lightroom photos changed since last sync?"
Auto-SyncTrigger sync immediately or configure scheduling"Run autosync now"
Activity LogRecent sync activity — what was pushed, where, when"What synced in the last 24 hours?"
Weekly StatsWeekly summary: assets synced, optimized, bytes saved"Give me this week's sync stats"
Canva PagesGet per-page metadata for multi-page Canva designs"Show me the pages in my Brand Guidelines design"
Upload LocalPush an image from the conversation directly to destinations — no source connection needed"Push this screenshot to my WordPress site"
SettingsAccount configuration, enrichment mode, preferences"Update my OpenRouter API key"

All tools are workspace-aware. If you have multiple workspaces, tell Claude which one to use and it will scope all operations accordingly.

Tip: For custom automation beyond MCP, use Custom Destinations to push assets to any platform with an HTTP endpoint, or set up Notifications to trigger external workflows on sync events.