skip to content →
FIELD_MANUAL / LIVEREVISIONv1.3 · 2026.10.04Updated 2026-10-04CHAPTERS12 FILEDCH_05INTEGRATION
[ CH_05.05 / FIELD_MANUAL ]

CMS adapters

[ CH_05.05 / CMS_ADAPTERS ]

Supported CMS platforms

VectraSEO publishes directly to seven CMS options, including Zapier for the long tail. Configure your CMS type and credentials in project settings.

ADAPTER_01
WordPress
<wordpress>

Publishes via the WordPress REST API. Featured images are uploaded to your WordPress media library automatically and attached to the post.

[ CREDENTIALS ]
site_urlusernameapp_password
[ SETUP ]
  1. 01Go to your WordPress admin → Users → Profile → Application Passwords.
  2. 02Enter a name (e.g. "VectraSEO") and click Add New Application Password.
  3. 03Copy the generated password — it will only be shown once.
  4. 04In VectraSEO project settings, enter your site_url, username, and the application password.
Requires WordPress 5.6+ with Application Passwords enabled. Your WordPress site must have HTTPS and the REST API accessible at /wp-json/wp/v2.
ADAPTER_02
Wix
<wix>

Uses the Wix Headless CMS API. VectraSEO creates a draft post and automatically publishes it in a single flow.

[ CREDENTIALS ]
api_keysite_id
[ SETUP ]
  1. 01In your Wix dashboard, go to Settings → API Keys and create a new key with Blog permissions.
  2. 02Copy your API Key and Site ID (found in Settings → General under "Site ID").
  3. 03Paste both values into VectraSEO project settings.
The API key needs Blog → Posts read/write permissions. Wix handles slug generation from the post title.
ADAPTER_03
Shopify
<shopify>

Publishes to your Shopify store's blog via the GraphQL Admin API. Featured images use Shopify's native article image field.

[ CREDENTIALS ]
shop_domainblog_id
[ SETUP ]
  1. 01Install VectraSEO from Shopify Admin and approve the write_content permission.
  2. 02Find your Blog ID: go to Online Store → Blog posts, click your blog, and copy the numeric ID from the URL.
  3. 03Enter shop_domain and blog ID in project settings. The OAuth access token is stored server-side and is never shown in the form.
Shopify publishing uses the OAuth token from the installed app. If publishing fails, reopen VectraSEO from Shopify Admin and confirm the app is connected.
ADAPTER_04
Squarespace
<squarespace>

Publishes directly to a Squarespace blog collection via the Squarespace API. Posts are published immediately (not as drafts).

[ CREDENTIALS ]
api_keysite_idcollection_id
[ SETUP ]
  1. 01In your Squarespace site, go to Settings → Developer API Keys and generate a new API key.
  2. 02Find your Site ID in Settings → General.
  3. 03Find your Collection ID: go to Pages, click your blog page, and note the ID.
  4. 04Enter all three values in VectraSEO project settings.
Requires a Squarespace Business plan or higher for API access. The API key needs content management permissions.
ADAPTER_05
Blogger
<blogger>

Publishes via the Google Blogger API v3. Posts are published immediately with tags applied as labels. Featured images are embedded in the HTML body.

[ CREDENTIALS ]
api_keyblog_id
[ SETUP ]
  1. 01Go to the Google Cloud Console and enable the Blogger API v3.
  2. 02Create an API Key under Credentials (restrict it to the Blogger API for security).
  3. 03Find your Blog ID: open your Blogger dashboard, go to Settings, and copy the numeric blog ID from the URL.
  4. 04Enter the API key and blog ID in VectraSEO project settings.
The API key must have Blogger API v3 enabled in Google Cloud Console. Posts are published as the blog owner.
ADAPTER_06
Zapier
<zapier>

Sends post data to a Zapier webhook, letting you route content to any of Zapier's 6,000+ app integrations. Payloads include an action field (publish, update, or delete) plus full post data.

[ CREDENTIALS ]
webhook_url
[ SETUP ]
  1. 01In Zapier, create a new Zap and choose Webhooks by Zapier as the trigger.
  2. 02Select Catch Hook and copy the generated webhook URL.
  3. 03Paste the webhook URL into VectraSEO project settings.
  4. 04Set up your Zap's action steps (e.g. post to Ghost, Notion, email, Slack).
  5. 05Test by publishing a post from VectraSEO — the payload will appear in Zapier for mapping.
The webhook receives full post data including title, seo_title, body_html, slug, meta_description, excerpt, tags, images (CloudFront URLs), and project context. Use the action field to distinguish between publish, update, and delete events.
ADAPTER_07
Custom API
<custom_api>

Publishes to any REST endpoint. Configurable authentication, path, and retry logic with exponential backoff on server errors.

[ CREDENTIALS ]
endpoint_urlapi_keyauth_headerpublish_pathcapability_contract_urlauthorcanonical_base_urlauthor_nameauthor_urlauthor_image_url
[ SETUP ]
  1. 01Ensure your target API accepts POST requests with a JSON body (see payload format below), and PUT and DELETE on {publish_path}/{id} for updates and removals.
  2. 02Enter your endpoint_url (base URL, no trailing slash) and api_key in project settings.
  3. 03Optionally set auth_header (defaults to Authorization: Bearer), publish_path, author, and capability_contract_url.
  4. 04Publish a product capability contract at /.well-known/product-capabilities.json (unsupported capabilities should include blocked_claims, allowed_qualifiers, and preferred_wording). VectraSEO fetches it before generating and writing, so posts avoid your blocked claims from the start. If capability_contract_url is unset, VectraSEO looks for the contract at your project’s site root.
  5. 05When you reject a publish for a claim your product can’t back, return 422 with a structured violations body (see below). VectraSEO remembers each rejected claim on the project and stops re-generating it — an opaque 400 with no body just gets retried on the next post.
  6. 06Your API should return JSON with id and url fields on success.
VectraSEO makes up to 3 attempts at a create, with exponential backoff (2s, then 4s), on 5xx, 408 and 429 responses. Other 4xx errors fail immediately and keep the response body so you can see why. The payload includes separate reader and SEO metadata: title is the natural post/H1 title, seo_title is the search-result title, meta_description is the search snippet, and excerpt is the reader-facing summary. Images are sent as base64-encoded data. Requests use HTTP/2 with a 120-second timeout. The capability contract is enforced at two points: generation prompts avoid your blocked claims, and a deterministic pre-publish guard holds any post that still asserts one (remediating to your preferred wording when safe). Claims a destination reports in a 422 rejection are learned per project and fed back into the next generation.
[ END_OF_MANUAL ]
[ NEED_HELP? ]

Can't find what
you're looking for?

Reach out to the team. We answer every email and we read every bug report.