Integrations

Publish AI search pages straight to your CMS

In short: GEOHATS publishes the pages it writes to WordPress, Webflow, Shopify, Framer, Ghost, HubSpot, Wix (beta) and GitHub, or sends them to Zapier, Make or n8n through a signed webhook. Each website gets its own connection, and you choose whether new pages stay off, arrive as drafts or go live.

Every integration at a glance

GEOHATS publishing integrations
PlatformPublishes asDraft / liveWhat you needSite fixes
WordPressPosts (REST API, wp/v2/posts)Both. A Contributor account lands as pending review.Site URL, username, Application Password; optional IndexNow keyAll 8 fix types, through the free GEOHATS Connector plugin
WebflowItems in your blog CMS collection (Data API v2)Both. Drafts are staged items; live uses Webflow's live item endpoints.Site API token with CMS read and write, and Sites readTitles and meta descriptions on static pages
ShopifyOnline Store blog articles (Admin GraphQL API)Both. Drafts are saved as unpublished articles.Store address (.myshopify.com) and an Admin API access token (shpat_)Titles and meta descriptions on products, pages, collections and articles
FramerItems in your Framer CMS collection (Server API)Both. Live adds the item, then publishes and deploys the whole project.Project URL and a project API keyNone yet. Copy fixes from the dashboard.
GhostPosts (Admin API, sent as HTML)BothAdmin API key (id:secret) and the API URLTitle, meta description, canonical, FAQ and Article schema
HubSpotBlog posts (CMS Blog Posts API v3)Both. Republishing a live post pushes the update live.Private app token (pat-) with the content scopeTitles and meta descriptions
Wix (beta)Blog posts (Blog Draft Posts API)Both. GEOHATS creates a draft post, then publishes it for live.API key with Wix Blog permissions and the Site ID; author member ID only if Wix asksNone yet. Copy fixes from the dashboard.
GitHubA file in your repo: Markdown with front matter, or an HTML fragmentCommit to the branch for live, or open a pull request. Drafts always open a pull request.Fine-grained token with Contents read and write (plus Pull requests read and write for review mode)Use the MCP server: your agent applies fixes in the repo
WebhookA signed JSON POST to your URL (Zapier, Make, n8n or your own backend)Both. Events page.draft and page.publish; your automation decides what to do.An https webhook URL. GEOHATS generates the signing secret.All 8 fix types, sent as seo.fix events
SquarespaceNot supported: no post APIn/an/an/a

“Site fixes” are the technical changes from the site optimizer: titles, meta descriptions, canonical tags, FAQ, Article and Organization JSON-LD, image alt text and internal links. Where a platform supports write-back, you apply them with one click and can undo each one.

How publishing works

Auto-publish modes: off, draft or live

Auto-publish modes
ModeWhat happens when GEOHATS generates a page
OffNothing is sent. You click Publish on each page in the dashboard.
Send as draftA page that passes the quality gate lands in your CMS as a draft for you to review. New connections start here.
Publish liveA page that passes the quality gate goes live on your site automatically.

Auto-publish is best effort: if the CMS is unreachable, the page stays in GEOHATS with a Publish button and nothing is lost. Pages your coding agent saves through the MCP server are published with its publish_page tool, which needs a publish-scoped token and an explicit confirmation.

Setup steps for each platform

WordPress

Publishes: Posts (REST API, wp/v2/posts). Draft / live: Both. A Contributor account lands as pending review.

  1. In WordPress, go to Users → Profile.
  2. Under Application Passwords, name it GEOHATS and click Add.
  3. Copy the password it shows. Use an Administrator account for best results.
  4. Optional, for one-click fixes from the site optimizer: install the free GEOHATS Connector plugin (download the zip, then Plugins → Add New → Upload).

Limits

  • The site must be on https. GEOHATS will not send the password over plain http.
  • WordPress removes JSON-LD and custom styling from posts made by roles without the unfiltered_html capability, which on a standard single-site install means anything below Editor (on multisite, everyone except Super Admins).
  • A security plugin that blocks the REST API (for example Wordfence or Disable REST API settings) blocks the connection too.

Full WordPress guide

Webflow

Publishes: Items in your blog CMS collection (Data API v2). Draft / live: Both. Drafts are staged items; live uses Webflow's live item endpoints.

  1. In Webflow, open Site settings → Apps & integrations → API access.
  2. Generate an API token with CMS: read & write and Sites: read.
  3. Paste the token. GEOHATS finds your blog collection and its Rich Text field automatically; you can name the collection if you have several.

Limits

  • Webflow rich text does not support tables or structured data, so JSON-LD is dropped and tables publish as plain text. Headings, lists and links survive.
  • The collection needs a Rich Text field for the body. A collection with other required fields GEOHATS cannot fill is refused at connect.
  • SEO fixes apply to static pages only, and you publish your Webflow site to push them live.

Shopify

Publishes: Online Store blog articles (Admin GraphQL API). Draft / live: Both. Drafts are saved as unpublished articles.

  1. In Shopify admin, go to Settings → Apps and sales channels → Develop apps → Create an app.
  2. Under Admin API scopes, enable read_content and write_content, then install the app.
  3. Reveal the Admin API access token (it starts with shpat_) and copy it. GEOHATS picks your blog automatically, or you can name one.

Limits

  • The store needs a blog first (Online Store → Blog posts).
  • Article bodies keep the page HTML, including tables and JSON-LD, and render inside your theme.

Framer

Publishes: Items in your Framer CMS collection (Server API). Draft / live: Both. Live adds the item, then publishes and deploys the whole project.

  1. Open your project in Framer and copy the URL from the browser (framer.com/projects/...).
  2. Go to Site settings → General → API keys and create a key.
  3. Paste both. GEOHATS finds your blog collection and its fields automatically. Optionally set the blog path on your site, such as /blog.

Limits

  • Needs a paid Framer plan.
  • Publishing live publishes your whole Framer project, so unpublished design edits go live with the new page. Choose Send as draft if you would rather publish from Framer yourself.
  • The collection needs a Text field for the title and a Formatted Text field for the body. JSON-LD is not carried over.

Ghost

Publishes: Posts (Admin API, sent as HTML). Draft / live: Both

  1. In Ghost Admin, go to Settings → Integrations → Add custom integration.
  2. Name it GEOHATS.
  3. Copy the Admin API key and the API URL.

Limits

  • The API URL must be https.
  • Ghost converts the HTML to its editor format and keeps blocks it does not know, such as tables and JSON-LD, as HTML cards.
  • Homepage SEO is set in Ghost's own settings, so fixes for the homepage are shown for you to copy.

HubSpot

Publishes: Blog posts (CMS Blog Posts API v3). Draft / live: Both. Republishing a live post pushes the update live.

  1. In HubSpot, go to Settings → Integrations → Private apps → Create a private app.
  2. Under Scopes, add content, then create the app.
  3. Copy the access token (it starts with pat-). GEOHATS finds your blog and author automatically, or you can name them.

Limits

  • The account needs a blog and at least one blog author (Blog → Authors) before you connect.

Wixbeta

Publishes: Blog posts (Blog Draft Posts API). Draft / live: Both. GEOHATS creates a draft post, then publishes it for live.

  1. Go to manage.wix.com → API Keys and generate a key with Wix Blog permissions.
  2. Copy the Site ID from your site's dashboard URL (the code after /dashboard/).
  3. Paste both.

Limits

  • Wix stores posts in its own format, so GEOHATS converts the page with Wix's converter. Headings, lists, links and tables carry over; custom styling and structured data do not.
  • Long pages are converted in sections of about 28,000 characters and joined. The integration is marked beta while that conversion gets more real-world use.

GitHub

Publishes: A file in your repo: Markdown with front matter, or an HTML fragment. Draft / live: Commit to the branch for live, or open a pull request. Drafts always open a pull request.

  1. Create a fine-grained token at github.com/settings/tokens for this repository.
  2. Give it Contents: read & write, and Pull requests: read & write if you want review mode.
  3. Enter the repository (owner/repo), the folder your site builds pages from (default content/blog), the branch, the file format, commit or pull request, and the page URL pattern (default https://yoursite.com/blog/{slug}).

Limits

  • For Next.js, Astro, Hugo, Jekyll or any site built from files in a repo. Your site must build pages from that folder and render them on the server, because AI crawlers do not run JavaScript.
  • Markdown files get front matter with title, slug, description and date, and the page HTML as the body.

Webhook

Publishes: A signed JSON POST to your URL (Zapier, Make, n8n or your own backend). Draft / live: Both. Events page.draft and page.publish; your automation decides what to do.

  1. Create a catch hook: Webhooks by Zapier, a Make custom webhook, an n8n Webhook node, or your own endpoint.
  2. Paste its URL. GEOHATS sends a test ping and shows your signing secret.
  3. Each page arrives as JSON (title, slug, HTML, excerpt, JSON-LD). Reply with {"url": "..."} to record the live link.

Limits

  • Requests are signed with HMAC-SHA256 in the X-Geohats-Signature header and time out after 20 seconds.

Full Webhook guide

Squarespace

Squarespace does not offer an API for creating blog posts, so no tool can publish to it automatically. Open the page in GEOHATS, click Download HTML, and paste it into a Squarespace post with a Code block.

What has been tested

WordPress (including the Connector plugin, checked against a real WordPress with no SEO plugin, with Yoast and with Rank Math) and the webhook have been tested end to end against real endpoints. Webflow, Shopify, Framer, Ghost, HubSpot, Wix and GitHub were added in October 2026. Their requests are tested against each platform’s documented API, and every connection is validated live against your own account when you connect, so a wrong token or missing permission shows up before anything is published.

FAQ

Which CMS platforms can GEOHATS publish to?

WordPress, Webflow, Shopify, Framer, Ghost, HubSpot, Wix (beta) and GitHub, plus a signed webhook for Zapier, Make, n8n or your own backend. Squarespace has no API for creating blog posts, so for Squarespace you download the page HTML and paste it into a post.

Can GEOHATS publish pages automatically?

Yes. Each website's connection has an auto-publish mode: Off, Send as draft or Publish live. In draft or live mode, a page GEOHATS generates is sent to your CMS as soon as it passes the quality gate. New connections start in Send as draft.

Does republishing create a duplicate post?

No. GEOHATS stores a reference to the post, item, article or file it created, so publishing the same page again updates it in place. On WordPress it also looks up the slug before creating a post, so a retry after a timeout does not create a second one.

Can I connect a different CMS for each website?

Yes. Connections are per website. A workspace with several sites can publish one to WordPress, another to Webflow and a third to GitHub, each with its own credentials and auto-publish mode.

Are my CMS credentials stored safely?

Connection settings are stored encrypted (AES-256-GCM). Requests to addresses you supply go through a guard that blocks private and cloud-metadata network addresses. For WordPress, GEOHATS only sends the Application Password to the same domain you typed, over https.

What if my platform is not listed?

Use the webhook. It sends every page as signed JSON, so Zapier, Make or n8n can create the post in almost any tool that has an integration there. You can also download any page as HTML from the dashboard.

Connect your site and publish the pages that win

Every plan includes all publishing integrations and the MCP server. You pay once and use your own AI keys.

See pricing

Last updated