Skip to main content
Integrations let you connect SnowSEO to the external tools your team already uses — so you can publish content, track performance, and monitor search visibility without switching between platforms.
All integrations are configured per brand. If you manage multiple websites, connect each brand to its own set of tools independently.

Accessing the Integrations Page

To manage your integrations, open the user menu at the bottom-left of the dashboard and select Integrations from the dropdown. Accessing the Integrations page from the dashboard user menu — the Integrations option is highlighted in the dropdown This opens the Integrations drawer with tabs organized by function: CMS & Publishing, Analytics & Performance, SEO & AI Tools, Social Media, API, and MCP. Each integration uses an accordion pattern — click the row to expand it and see connection details.

Recommendations: What to Connect First

Not all integrations are equally important. Here’s the priority order:
The CMS & Publishing tab lists content management platforms you can connect for direct article publishing. Once linked, you can push SEO-optimized articles from SnowSEO straight to your live website.CMS and Publishing tab showing WordPress, Ghost CMS, Webflow, and Shopify integrations with Connect buttons
Connecting a CMS unlocks the Publish Now and Schedule buttons inside the Article Editor. Without it, you can still write and optimize content — but you’ll need to manually copy the output to your website.

WordPress

Connect your WordPress site to create and publish posts directly from SnowSEO. Supports both WordPress.com and self-hosted WordPress.org installations.
WordPress Connection Prerequisites & Common Issues:
  • WordPress Version: You must be running WordPress 5.6 or higher. Older versions do not support Application Passwords or the REST API v2 needed for the OAuth and Password methods.
  • REST API Blocks: Security plugins (like Wordfence, iThemes Security, or Sucuri) and some hosting configurations can block the WordPress REST API. Make sure /wp-json/ endpoints are accessible.
  • Disabling Security Blocks: If you use Wordfence, ensure it is not blocking Application Passwords (you may need to allow them in Wordfence settings or temporarily disable the plugin to connect).
  • Fallback to Plugin Method: If your firewall or security setup strictly blocks the REST API, use the Plugin method which is designed to bypass these restrictions.
SnowSEO offers three connection methods — choose based on your hosting setup:
Best for: WordPress.com sites and self-hosted sites where the WordPress REST API is accessible.This is the simplest method — no manual credential management required.OAuth connection flow showing WordPress authorization window
1

Click Connect + on the WordPress row

In SnowSEO, find WordPress in the CMS & Publishing tab and click Connect +. The panel expands with three tab options.
2

Select the OAuth tab

It’s selected by default. You’ll see a single field: Site URL.
3

Enter your WordPress Site URL

Type the main domain of your WordPress site (e.g., wordpress-blog.com). Do not include /wp-login, /wp-admin, or https:// — those are added automatically.
4

Click Connect

Click + Connect. A secure WordPress authorization window opens where you sign in to your WordPress admin and grant SnowSEO permission. Once authorized, the status changes to Connected.
OAuth is the fastest method. Try it first — if your WordPress site blocks the REST API (common with certain hosting providers or security plugins), fall back to the Password or Plugin method.
Once connected, the WordPress accordion shows:
  • Site Title — Your WordPress site name
  • Site URL — The connected domain
  • Connection Method — Tag showing OAuth, App Password, or Plugin
  • Disconnect button (red) — removes the integration
You can only have one active CMS integration per brand. If you connect WordPress, then try to connect Ghost, the previous connection gets replaced. Disconnect first if you want to switch platforms cleanly.

Ghost CMS

Professional publishing platform. Connect your Ghost publication to manage and schedule content directly from SnowSEO.Ghost CMS connection flow showing Admin API key setup
1

Click Connect + on the Ghost CMS row

In SnowSEO, find Ghost CMS and click Connect +.
2

Create a custom integration in Ghost

In your Ghost admin:
  1. Go to Settings → Integrations
  2. Click Add custom integration and name it “SnowSEO”
  3. Ghost generates an Admin API Key and shows an API URL — keep this screen open
3

Paste the Admin API Key

Copy the Admin API Key from the integration and paste it into the Admin API Key field.
4

Enter the API URL and connect

Copy the API URL shown in the same integration (e.g., https://your-site.ghost.io) into the API URL field, then click + Connect. Use this exact URL — not your public site domain. They are often different, and using the public domain can cause publishing to fail with an authentication error. The status changes to Connected once verified.
Use the API URL Ghost shows inside the custom integration, not your public-facing site address — on Ghost(Pro) with a custom domain these differ, and the public domain can redirect API requests in a way that drops authentication. The Admin API Key includes both a key ID and a secret in a single string — SnowSEO handles everything else. If you ever regenerate the key in Ghost, you’ll need to reconnect SnowSEO with the new key.

Webflow

Connect Webflow to manage CMS items on your published sites.Webflow connection flow showing Site ID and API token setup
1

Click Connect + on the Webflow row

In SnowSEO, find Webflow and click Connect +.
2

Get your Webflow Site ID

In your Webflow dashboard:
  1. Open the site you want to connect
  2. Go to Site settings → General
  3. Find your Site ID (a string like 1234567890abcdef) Leave this tab open — you’ll need it after creating the token.
3

Create an API Token in Webflow

Still in Webflow:
  1. Go to Account → Integrations → API access
  2. Click Generate API token
  3. Give it a name (e.g., “SnowSEO”)
  4. Enable CMS Read & Write access — required for publishing
  5. Copy the token immediately — Webflow only shows it once
4

Enter the Site ID and paste the token

Back in SnowSEO:
  1. Paste the Site ID into the first field
  2. Paste the API Token into the second field
  3. Click + Connect
Once connected, you’ll see two dropdowns:
  • Webflow Site — Select which site to publish to
  • CMS Collection — Select which collection (blog, articles, etc.)
The API Token is shown only once by Webflow. If you lose it, you must generate a new one in Webflow and reconnect. Keep it in a password manager until the SnowSEO connection is verified.
After connecting, make sure you’ve selected the correct CMS Collection in the expanded panel. SnowSEO will only publish to the collection you select. If you don’t see any collections, make sure your site has at least one CMS collection defined in Webflow.

Framer

Connect Framer to publish content directly into your Framer CMS. SnowSEO offers two connection methods — choose based on how hands-off you want publishing to be:
Best for: most users — publishes directly to your Framer CMS from SnowSEO’s servers, so you don’t need to keep Framer open.SnowSEO writes articles straight into a Framer CMS collection using a project-scoped Server API key. This is Framer’s official Server API (currently in open beta) and works on any Framer plan — no special tier required.
1

Create a Server API key in Framer

In your Framer project, open Site Settings → General → API Keys and click Add. Name it (e.g. “SnowSEO”), click Create, and copy the key — Framer shows it only once.
2

Copy your Framer project URL

Open the project in the Framer editor and copy the address-bar URL — it looks like https://framer.com/projects/YourSite--AbC123. This is the project URL, not your published .framer.app site URL.
3

Connect the project in SnowSEO

In SnowSEO, expand the Framer panel and select the Server API tab. Paste the Project URL and Server API Key, then click Connect Project. SnowSEO fetches your project’s editable CMS collections.
4

Choose a collection

Pick Use existing collection and select the blog/articles collection you want to publish into, or choose Create SnowSEO collection to have SnowSEO create a ready-made “SnowSEO Articles” collection for you (handy if the project has no CMS collection yet).
5

Map the fields

Match your SnowSEO article fields to Framer collection fields — Title and Content are required; Image, Meta Description, and Created At are optional. Common field names are auto-detected and pre-selected. Keep Add SnowSEO tracking field on (it’s on by default).
6

Save Framer Setup

Click Save Framer Setup. The status changes to Connected and you can publish articles straight to Framer.
The “SnowSEO Article ID” tracking field is essential. SnowSEO adds a hidden text field to your collection and stores each article’s Framer item ID in it, so re-publishing an edited article updates the same Framer item instead of creating a duplicate. This is what makes “update live post” work — leave it enabled.
  • Draft vs. Published — publishing as Published also deploys your Framer site so the item goes live; publishing as Draft leaves it as a CMS draft (not publicly visible) until you publish the Framer site.
  • Added a collection or field in Framer? Use the refresh icon next to the collection dropdown to re-fetch collections and fields without reconnecting.
  • Change your setup later — the connected panel has a Reconfigure button to switch collection or remap fields anytime.
Prefer the Server API method whenever possible — it publishes without you needing to keep Framer open, and it’s what powers scheduled and automated publishing to Framer.

Grigora

Connect a Grigora project to create, update, schedule, and synchronize articles directly from SnowSEO. You can send an article as a draft for review or publish it immediately.
1

Create a project API key in Grigora

In your Grigora dashboard, open Settings → Advanced → API. Enter a descriptive name such as SnowSEO, click Create, and copy the generated key.
2

Open the Grigora integration in SnowSEO

In SnowSEO, go to Integrations → CMS & Publishing, find Grigora, and click Connect.
3

Paste the API key

Paste the key exactly as Grigora displayed it into the API Key field. Do not add Bearer or another prefix.
4

Enter your public Grigora site URL

Enter the public base URL where readers access your posts, such as your-site.com/blog. SnowSEO automatically uses HTTPS and appends each article’s slug to this URL.
5

Connect and verify

Click Connect. SnowSEO verifies the key with Grigora before saving it. Once connected, the panel displays the public site URL and the Article Editor enables Grigora publishing and scheduling.
Grigora displays an API key only once. Store it securely when you create it. If you lose or revoke it, disconnect Grigora in SnowSEO, generate a new key, and reconnect.
Publishing and synchronization behavior:
  • Save as Draft in CMS creates or updates a Grigora post with draft status.
  • Publish Now creates or updates the post with published status.
  • SnowSEO sends the article’s formatted HTML, slug, categories, tags, SEO title and description, featured image, and summary.
  • Re-publishing an already linked article updates the existing Grigora post instead of creating a duplicate.
  • SnowSEO periodically reconciles the linked post’s status, first-published time, and public URL with Grigora.
Set Site URL to the base path immediately before the article slug. For example, if a post is available at https://example.com/blog/my-post, enter example.com/blog. Grigora’s create/update API returns the post ID and slug but not the public URL, so SnowSEO uses this base URL to build the article link.
See Grigora’s API key guide if you need help generating or revoking a key.

Webhook

Receive real-time CMS publish payloads at your own endpoint. Unlike other CMS integrations, Webhook allows multiple connections — you can set up separate webhooks for different services (e.g., a Next.js blog, a custom headless CMS, and a Zapier automation).
See a working Next.js example on GitHub.
1

Click Connect on the Webhook row

The panel expands. If you have no webhooks yet, an empty form appears automatically.
2

Enter an Integration Name

A descriptive name so your team can identify this connection (e.g., Next.js Blog, Zapier Automation). Must be 2–30 characters.
3

Add your Webhook Endpoint URL

The destination URL where SnowSEO sends events (e.g., https://your-site.com/api/webhook). Must be HTTPS and publicly reachable. In development mode, http:// URLs are also accepted.
4

Set an Access Token

A secret token you choose. SnowSEO sends this in the Authorization header as Bearer <your-token>. Your endpoint should verify this token before processing payloads.
5

Click + Connect

SnowSEO sends a webhook.connected validation ping to your endpoint, carrying your token in the Authorization: Bearer header. Your endpoint should verify that token and reply with a 2xx status — then the webhook is saved and connected. You can add more webhooks by clicking Add New Webhook.
6

Test by publishing an article

Publish any article from the dashboard. Your endpoint should receive a POST request with the article.published or article.drafted event payload.
Managing Webhooks:
  • Each webhook shows a row with its name, endpoint URL, and an active/inactive toggle
  • Click the pencil icon to edit name, URL, or secret — SnowSEO re-validates by sending a webhook.connected ping after any credential change
  • Click the trash icon to delete the webhook — SnowSEO sends a webhook.disconnected event to your endpoint before removal
  • Use Disable All to turn off all webhooks at once
  • Toggle Send events even with another CMS to have your webhook endpoints notified on every publish and unpublish, even when a CMS like WordPress or Ghost is the publish target. When off (the default), webhooks only fire when a webhook is the publish target. Your endpoints receive the same article.published / article.drafted / article.unpublished payloads; the article’s CMS record stays owned by that CMS.
  • The overall integration shows as “Connected” when at least one webhook is active
Webhook Payload Structure:When SnowSEO publishes an article, your endpoint receives a POST request with the following JSON body:
categories and tags are string arrays of the article’s taxonomy (empty arrays when none are assigned). If your receiver’s CMS supports categories/tags, map them — creating any that don’t exist yet.language is the raw language code the article was written in — always a code, never a display name, so map it yourself. It is a lowercase two-letter code (en, es, de) with three exceptions to handle: Chinese is sent as zh_CN or zh_TW, and Hebrew is sent as iw (the legacy code Google uses, not he). Treat the value as an opaque identifier rather than assuming strict ISO 639-1. It reflects the brand’s Writing Language (Settings ▸ Content & CMS ▸ Articles) at the time the article was created, so it stays stable even if that setting changes later. Articles created before this field existed report the brand’s default language.The cms object is present only when the event fired alongside a real CMS publish/unpublish (the “Send events even with another CMS” toggle). It carries that CMS’s own post provider, articleId, and url (url omitted on unpublish) so your automation can correlate the SnowSEO article with the WordPress/Ghost/etc. post. It is absent when the webhook is the primary publish target.Event Types:
  • article.published — Sent when an article is published
  • article.drafted — Sent when an article is saved as draft
  • article.unpublished — Sent when an article is unpublished or removed
  • webhook.connected — One-time validation ping sent after connecting or updating credentials
  • webhook.disconnected — Sent to your endpoint before the webhook is removed
Response (optional):Your endpoint can optionally return JSON with cmsArticleId and/or cmsUrl to store CMS metadata back to SnowSEO:
Always validate the Authorization Bearer token in your webhook handler. Log failed requests for easier debugging. The access token is encrypted at rest but sent in plaintext with each request.

Shopify

Coming soon. Publish SEO-optimized articles to your Shopify store blog. The integration fields are already built — connect your shop domain and Admin API access token once released.

Frequently Asked Questions

Start with Google Search Console — it unlocks the majority of SnowSEO’s value by providing real search data. Next, connect your CMS (WordPress, Ghost, Webflow, or Framer) so you can publish directly. Finally, add Google Analytics for comprehensive traffic and ROI reporting.
No — each brand can have only one active CMS integration at a time. If you need to switch (e.g., migrating from WordPress to Webflow), disconnect the current integration first, then connect the new one. Webhooks are an exception — you can have multiple webhook endpoints active simultaneously.
Historical data already imported into SnowSEO (rankings, traffic history, published articles) is retained. However, SnowSEO will stop pulling new data from the disconnected service until you reconnect. If you reconnect later, data sync resumes — you don’t lose the time in between, but there will be a gap in your historical timeline.
First, check the data sync delay:
  • Google Search Console: Data is updated daily (Google’s limitation). Allow up to 48 hours.
  • Google Analytics: Can take 24–48 hours for initial data to populate.
  • PostHog / Plausible / Bing: Usually available within minutes.
If it’s been longer than expected:
  1. Click Reconnect from the expanded integration panel — this re-authenticates the connection
  2. Verify the correct property/site is selected in the dropdown
  3. Check that your account still has the required permissions in the external platform
  4. If using GSC, ensure your property is verified in Google Search Console
If none of these work, disconnect and reconnect the integration.
Yes. SnowSEO uses OAuth 2.0 for all major integrations (Google Search Console, Google Analytics, Bing Webmaster Tools, WordPress). Your passwords are never stored — only secure, revocable access tokens are used.For integrations that require API keys or application passwords (PostHog, Ghost, Webflow, WordPress Plugin/Password methods), these are encrypted at rest and sent only when communicating with the respective service. You can revoke access at any time from either SnowSEO or the third-party platform.
Yes, but each connection replaces the previous one. If you originally connected via OAuth and want to switch to the Plugin method, disconnect first, then reconnect using the new method. Wordpress.com sites must use OAuth — the Password and Plugin methods only work with self-hosted WordPress.org installations.
This happens because Cloudflare’s WAF or Bot Fight Mode blocks SnowSEO’s requests before they reach your WordPress site. In Cloudflare, go to Security → WAF → Custom rules and create a rule that matches path /wp-json/snowseo/* where User-Agent contains SnowSEO, with action Skip (skip the relevant checks — WAF Managed Rules, Rate Limiting, and Bot Fight Mode/Super Bot Fight Mode as applicable). Make sure this rule is ordered before any rule that would Block or Challenge the request.If your firewall setup makes WAF rules impractical to manage, use the Plugin connection method instead — it still goes through the same /wp-json/snowseo/* routes, so the same Cloudflare rule applies, but the dedicated plugin can better surface which security layer (Cloudflare, Wordfence, etc.) is responsible when a connection attempt fails.
Expand the Google Search Console integration row. There’s a Search Console Property dropdown that lists all properties your connected Google account has access to. Select a different property from the dropdown — SnowSEO will automatically start fetching data from the new property. No need to disconnect and reconnect.
Click Reconnect in the expanded integration panel. This re-authenticates with Google and issues a fresh token. OAuth tokens typically expire after a few hours, but SnowSEO handles automatic refresh behind the scenes — you should only need to manually reconnect if the refresh fails (e.g., if you changed your Google password or revoked SnowSEO’s access).
Double-check your four fields:
  1. Host URL — Make sure it points to your actual PostHog instance (e.g., https://us.i.posthog.com not https://app.posthog.com)
  2. Project API Key (phc_) — This is found in Project Settings, not User Settings
  3. Personal API Key (phx_) — This is found in User Settings → User API Keys
  4. Project ID — This is the numeric ID visible in the URL or Project Settings
The most common mistake is mixing up the two keys or using the wrong Host URL for cloud vs. self-hosted instances.
Yes — use the Webhook integration. Set up an endpoint on your site that receives SnowSEO’s publish payloads (title, content, metadata, etc.), then write your own logic to handle the data. This works with any stack: Next.js, Nuxt, Gatsby, custom PHP, or anything else that can accept HTTPS POST requests.
SnowSEO requests read-only access to your Search Console account. This means:
  • Can read: Impressions, clicks, CTR, keyword positions, indexing status, sitemaps
  • Cannot modify: Settings, users, properties, sitemaps, or any other data
The same applies to Google Analytics — read-only access to GA4 property data only.
API keys are available on the Scale plan and require an owner or admin role in at least one team within the organization. If you’re on a lower plan or have a member role, the tab will show a “Scale Plan Required” message. Upgrade your plan or ask your organization owner to generate a key for you.Each key is scoped to a specific brand — if you need access to multiple brands, generate a separate key for each one.