Skip to main content

Connecting

Connecting and disconnecting require the Admin or Owner role. Editors can publish to existing connectors but not create them.
The account’s email is unverified. Use the link in the verification email, or resend it from your account settings.
The project sits beyond the number of sites your plan covers. Upgrade, or add a site, from Billing to open it again.
The connection broke — its credentials expired or were revoked, or (for a webhook) deliveries kept failing. Click Retry and connect again with fresh credentials.

WordPress

We reached your REST API and it refused the login. Check that you used the WordPress username (not the email), and paste a fresh application password.
Something in front of WordPress answered 403 before WordPress checked the password. Allow requests to /wp-json/ from SeoSorted in your security plugin, firewall or CDN.
We tried /wp-json/ and ?rest_route= and neither returned JSON. Usual causes: a security plugin blocking the REST API, HTTP basic auth or a staging password in front of the site, or a site that isn’t publicly reachable.Check it directly: https://yoursite.com/wp-json/wp/v2/types should return JSON.
The password was cut short when pasting. Copy the whole value from WordPress again.
WordPress hides it on non-HTTPS sites. Serve the site over HTTPS, or check whether a security plugin has disabled the feature.

WooCommerce

The WooCommerce connector publishes through your store’s WordPress REST API, so every WordPress error above can appear here too.
The credentials worked, but the site doesn’t expose WooCommerce’s REST API. Activate the WooCommerce plugin (Plugins → Installed Plugins) and connect again — or, if the site isn’t a store, connect it as WordPress instead.
The store is in Coming soon mode, which hides every page from visitors who aren’t logged in. Switch it to Live in WooCommerce → Settings → Site visibility.

Ghost

You pasted something other than the Admin API key — usually the Content API key. Copy the Admin API key from your custom integration.
The key was regenerated or the integration deleted. Copy the Admin API key again from Settings → Integrations → your custom integration.
Use the API URL shown on the custom integration. On a custom domain that redirects, try the *.ghost.io address.
The URL is wrong or the site isn’t reachable from the public internet.

HubSpot

Copy the service key again from Development → Keys → Service Keys and reconnect.
Edit the service key, add the content scope, save, and connect again.
Open Content → Blog and click Start from scratch once to create the blog, then connect again.

Notion

Copy the Internal Integration Secret again from notion.so/profile/integrations.
The integration isn’t connected to the page. Open it → ••• → Connections → add your integration, then connect again.
Tick all three capabilities on the integration at notion.so/profile/integrations and connect again.

Strapi

Check the token’s permissions in Settings → API Tokens — see Strapi for the full list.
Use the collection’s plural API id, for example ss-blogs.
Remove /admin from the Strapi API URL.
The instance isn’t reachable from the public internet.
Open the Strapi card’s ⋮ menu → Configure and pick the body field in Map Strapi fields.
Stock Strapi has no REST unpublish endpoint. Expose POST /api/<collection>/:documentId/actions/unpublish on your instance and allow the token to call it — see Strapi.

Webhook

Supply a longer signing secret, or leave the field blank and we’ll generate a strong one.
Nothing is listening on that host and port. Check the URL, the port, and that the service is running and reachable from the internet.
The hostname doesn’t resolve publicly. Internal-only hostnames and localhost won’t work against the hosted app.
Your endpoint took too long. Reply within 15 seconds.
Almost always because the HMAC was computed over a re-serialized body. Sign the raw bytes exactly as received, and confirm you’re using the secret shown when the webhook was connected — reconnecting with a blank secret generates a new one.
Publish, re-publish and unpublish deliveries are retried up to 3 attempts, each with a new X-SeoSorted-Delivery id. Deduplicate on article.id + event.
Five or more deliveries failed within an hour and the connector is in Error. Fix the endpoint, click Retry, and connect again — paste your existing signing secret to keep it.

Headless API

The key was regenerated, or copied with a missing character. Copy it from the card’s ⋮ menu → View key & setup, and redeploy so your host picks up the new environment variable.
Send the key as Authorization: Bearer ss_blog_… (or X-Api-Key, or ?key=).
You went over 600 requests a minute for one key. Cache with revalidate, ISR or a CDN.
The Headless API was disconnected, which deletes every article snapshot it served. Connect it again and publish the articles again.

Google Search Console and Analytics

Expected while the app is in Google’s verification review. Click Advanced, then Go to seosorted (unsafe), and approve the read-only scope. We only ever request webmasters.readonly and analytics.readonly.
You signed in with a Google account that has no access to the property. Disconnect, connect again, and choose the right account on Google’s screen.
The connection completed but no property was chosen. Open the card’s ⋮ menu → Choose property and save one.
The chosen property belongs to a different site than this project. Open ⋮ → Choose property and pick the right one.
The GA4 property returns no data. Check the GA4 tag is on your site, or change to the property that actually receives your traffic.
The connector worked; the property has no data in the window. For GA4 this usually means the wrong property was chosen.
Search Console data lags 2–3 days and is sampled at Google’s end for some queries. Small differences against the Search Console UI are expected; large gaps usually mean a domain-property vs URL-prefix mismatch.

Webflow, Shopify and Framer

The Dev Dashboard app was created in a different Shopify account than the store. Create it again from this store’s own admin — see Shopify.
Use the admin URL (admin.shopify.com/store/yourstore) or the yourstore.myshopify.com form — custom domains are not accepted.
Framer serves CMS items only after the site is published. Publish in Framer, or turn on Publish the site after each article — see Framer.
The API token is wrong or missing a permission. In Webflow, generate a new token under Site settings → Apps & integrations → API access with sites: read, assets: read + write and cms: read + write, then connect again.
The key was copied incompletely or lacks a permission. Generate a new key for the site with Wix Blog, Manage Site Media and Wix Contacts & Members — see Wix.
Wix posts get a public address only once the Wix site itself is published. Publish the site in Wix; later publishes will include the link.

Publishing

No publishing destination is connected yet. Use Connect another destination in the dialog, or set one up in Project Settings → Integrations.
Webflow and Framer need a collection and field mapping; Shopify needs a blog. Click Finish setup in the dialog, or finish it from the card’s ⋮ menu on the Integrations tab.
That destination can’t take this content. Comparison pages can only be published to Webhook or Strapi.
Use Re-publish in the editor. It updates the existing item at the destination.
Re-publish only runs after an edit. Change the article, then re-publish.
The article was never generated or its body was emptied. Generate or write the article first.
Connect a Webhook or Strapi destination to publish comparison pages.
The destination is expired or in Error. Click Retry on its card in Project Settings → Integrations and connect again.
Check that the destination is still connected and not in Error, that the article has content, and that the plan is active. Scheduled runs skip anything that fails one of these.
Still stuck? Email hello@seosorted.ai with the connector, the exact error text, and roughly when it happened — the delivery and job logs are keyed by timestamp.