# Get Revnu's Posts Onto Your Site

> Which way to publish Revnu's posts for your kind of site, from Next.js and static sites to Wix, Lovable, Webflow, Shopify and WordPress, a subfolder or a subdomain, a reverse proxy, a headless CMS, and how to keep your old posts.

Canonical: https://revnu.com/docs/blog-setup-options
Last updated: 2026-10-18

Revnu writes the posts. Your site shows them. How they get there depends on what your site is built with:

- **Most sites with a developer:** the Content API. Your site fetches the posts and renders them in its own design, on your own domain.
- **No developer:** the Revnu-hosted blog on a subdomain such as blog.yourdomain.com, which takes one DNS step.

## Pick the setup for your site

| Your site | What to use | Who does the setup |
|---|---|---|
| Next.js or Astro | The Content API, rendered on the server or at build time | Your developer or coding agent, once |
| A static site (built ahead of time) | The Content API plus a rebuild hook, so each new post triggers a rebuild | Your developer, once |
| Sanity, Contentful, Strapi or another headless CMS | The Content API. Your site's frontend reads Revnu's posts next to your CMS content | Your developer, once |
| Wix, Squarespace, Webflow, Framer or Ghost, a Lovable or Vite app, or any site that can't run its own server code | The Revnu-hosted blog, on a subdomain like blog.yourdomain.com | You, by adding a DNS record |
| WordPress or Shopify | The Revnu-hosted blog on a subdomain, or a developer connecting the Content API | You, or a developer |
| You want it at yourdomain.com/blog, and your site can't render the Content API | A reverse proxy to your Revnu-hosted blog | Your developer adds one rewrite rule, and Revnu's team sets your address on its side |
| Any site whose code is in a GitHub repo | Pull requests that add each post to your repo | Revnu opens them, you merge |

The setup pages:

- [The Content API](/docs/content-api) and [rendering posts in Next.js or Astro](/docs/host-your-blog) are for your developer.
- [The Revnu-hosted blog](/docs/hosted-blog) covers the subdomain, the DNS record and the reverse proxy.
- [Posts as GitHub pull requests](/docs/github-blog-posts) covers the repo route.

## Set it up

For the Content API:

### 1. Enter your blog's address

Open **Visibility > Posts**. Type your blog's address, for example yourcompany.com/blog, and click **Continue**.

### 2. Choose what happens to your old posts

If Revnu finds posts already published there, choose **Import All N Posts** (N is how many it found) or **Start with New Posts Only**. See [Keep your old posts and their URLs](#keep-your-old-posts-and-their-urls).

### 3. Hand the key and the prompt to your developer

On the **Connect Your Site** screen, click **Copy Key** and **Copy Setup Prompt**, and give both to your developer or coding agent. The key goes in a server-side setting, never in the page.

> **Warning:** The key is shown once. Copy it before you leave the screen. If it's lost, rotate it in **Visibility > Publishing Settings**. The old key stops working straight away.

### 4. Tell Revnu it's deployed

When your developer has deployed it, click **I've Connected It**. Revnu checks the live site and reports back.

For the hosted blog instead, tell Revnu in chat which subdomain you want, for example "put my blog on blog.acme.com". It sends you the DNS records to add.

## Subfolder or subdomain?

A subfolder is yourdomain.com/blog. A subdomain is blog.yourdomain.com. Both can rank, and Revnu sets the canonical tag correctly for either one. The real difference is the work:

| | Subfolder (yourdomain.com/blog) | Subdomain (blog.yourdomain.com) |
|---|---|---|
| How | The Content API, or a reverse proxy | The Revnu-hosted blog plus one DNS record |
| Needs a developer | Yes | No |
| Design | Content API: your site's design. Reverse proxy: the hosted blog's design | The hosted blog's design |
| Search Console | Your main site's property | A domain property covers it, or add the subdomain |

> **Tip:** Pick the one you can set up this week and keep running. A blog that's live beats a better setup that's stuck waiting on a developer.

## Why single-page apps need the hosted blog

Search engines and AI engines read the HTML your server sends. A Wix page, a Lovable or Vite app, or any site that builds its pages in the browser sends very little of that, so posts fetched there are close to invisible. The hosted blog sends complete pages. Use it for these sites, or have a developer render posts on the server.

Adding a blog app inside your site builder, such as the Wix Blog app, doesn't connect anything to Revnu. Revnu doesn't publish into site-builder blogs.

## WordPress and Shopify

Three ways get Revnu's posts onto a WordPress or Shopify site. (The setup screen may also show **One-Click WordPress Connect Is Coming Soon**, or Shopify.)

1. Put the Revnu-hosted blog on a subdomain such as blog.yourdomain.com. This needs no developer.
2. Have a developer connect the Content API to your theme.
3. Click **Contact Support** on that note, or email support@revnu.com, and a person replies by email to help you choose.

Your existing posts:

- **WordPress.** When you enter a WordPress blog's address, Revnu reads WordPress's own list of your posts, so it can find, count and import them with **Import All N Posts**.
- **Shopify.** Revnu doesn't read Shopify's post list. It can only find posts that are linked from the blog page you enter, so expect most Shopify posts to stay in Shopify. If you move to a subdomain, they stay where they are, at their current addresses.

**Your posts live in Sanity and must stay there**

Revnu doesn't write into Sanity or any other CMS. The supported setup is for your site's frontend to read Revnu's posts from the Content API and show them next to your CMS content.

If your team needs every post inside Sanity anyway, your developer can write a small sync job. It's a workaround that you own, not a Revnu feature:

1. Page through `GET /posts` until `cursor` is null.
2. For each post, fetch `GET /posts/{slug}` and create or update the Sanity document with that slug. Store `body.markdown` (GitHub-flavoured markdown) if your CMS takes markdown, or `body.html` if it takes rich text.
3. Delete any Sanity document whose slug is no longer in the list. A post missing from the list was removed in Revnu.
4. Run the job from the rebuild hook ping, so it runs whenever a post is published, edited or removed.

Images aren't copied for you. `heroImageUrl` and any images in the body are URLs that Revnu hosts. If Sanity must own its images, the job downloads each one and uploads it to Sanity.

Your team then owns the canonical URLs, removals and redirects on your side. Revnu doesn't build the sync job for you. For questions about it, email support@revnu.com. Fields and paging: [List posts](/docs/content-posts) and [Get a post](/docs/content-post).

## Keep your old posts and their URLs

When Revnu finds an existing blog, the setup offers two choices. Either way, your old posts stay where they are until you choose otherwise.

**Import All N Posts.** Revnu copies each post at its current URL and date, so it can improve the whole library.

- Imported posts show an **Imported** tag in **Visibility > Posts**. Any change Revnu makes to them follows your Blog Posts approval setting.
- Nothing on your live site changes until your new setup is deployed and checked. Revnu checks every old URL on the new setup before calling the move done.
- Any post it can't copy is listed under **N posts not copied** with the reason, for example "The page returned 404", "Couldn't fetch the page" or "Post is too long to import". It stays where it is. Click **Retry the Rest** to try those again once the cause is fixed.

**Start with New Posts Only.** Nothing is copied. Your old posts stay in your current system, and your site shows both sets together in one blog index and one sitemap.

**Revnu says it found no posts, but I have some**

Revnu finds existing posts by reading the links on the page you enter. It misses them when:

- **You entered the wrong page.** Enter the page that lists your posts, for example yourcompany.com/blog, not your homepage. Click **Change URL** to try again.
- **The list is built in the browser.** A blog index that only fills in after JavaScript runs looks empty to Revnu.
- **Your posts aren't linked from one page.** For example, they sit in several folders.

Starting with new posts only is safe: your old posts stay exactly where they are. If you want some of them brought across, tell Revnu in chat which URLs to import.

## Who owns the posts and the URLs

With the Content API, the posts live at URLs on your domain, served by your site. Every post's canonical tag points at your domain. Section 7 of [Revnu's terms](/terms), "Your content + data", says you keep ownership of everything you give Revnu. Your developer can also save every post's full text and HTML through the Content API at any time: [if you leave](/docs/content-api#if-you-leave).

## If you don't want a blog

A blog is optional, and you choose which channel Revnu starts on. Tell Revnu in chat:

> I don't want a blog or SEO for now. Don't suggest it again unless I ask.

It remembers that and won't keep suggesting a blog.

If a daily post is already running, ask it to "stop the daily blog post". That stops the writing. Setting **Blog Posts** to **Ask Me First** in **Settings > Agent** only stops publishing: Revnu keeps drafting a post a day for you to approve, until three are waiting.

**Visibility** still tracks how AI answers mention you without a blog. You can change your mind later.

## Next step

[Control what gets published](/docs/blog-posts-control)

## Frequently asked questions

### Does Revnu work with Wix, Squarespace or Lovable?

Yes, through the Revnu-hosted blog on a subdomain such as blog.yourdomain.com. These sites build pages in the browser, so posts fetched into them aren't reliably seen by Google or AI engines. The hosted blog serves complete pages. Add the DNS records the hosted blog's card shows wherever your domain's DNS is managed, which may be your site builder.

### I built my app in Lovable. Will a blog help, and where's the setup prompt?

Yes. Each post can rank for the problem your product solves and get cited in AI answers, and the results build over weeks to months. A Lovable app renders in the browser, so use the hosted blog rather than the setup prompt. Ask Revnu in chat "put my blog on blog.myapp.com", add the DNS record it sends you wherever your domain's DNS is managed, then click **I've Added DNS** in **Visibility > Publishing Settings**.

### Can I put the blog at yourdomain.com/blog?

Yes. If your site can render posts on the server, use the Content API. If it can't, a developer can add a reverse proxy that forwards /blog to your Revnu-hosted blog. The reverse proxy needs Revnu's team to set your address, so email support@revnu.com. The steps are in [The Revnu-hosted blog](/docs/hosted-blog).

### Should my blog be on a subfolder or a subdomain?

Both can rank. A subfolder (yourdomain.com/blog) needs a developer for the Content API or a reverse proxy. A subdomain (blog.yourdomain.com) needs only a DNS record. Pick the one you can get live and keep running.

### Can Revnu publish straight into WordPress or Shopify?

Your WordPress or Shopify site gets Revnu's posts through the hosted blog on a subdomain such as blog.yourdomain.com, set up with one DNS record, or through the Content API connected to your theme by a developer. The one-click connection on the setup screen is marked "coming soon".

### Can Revnu import my WordPress or Shopify posts?

Yes. On WordPress, Revnu reads WordPress's own post list and can import every post. On Shopify, Revnu imports the posts linked from the blog page you enter, and you can tell it which other URLs to import.

### Who owns the posts Revnu writes for me?

They're published on your blog, under your business's name and at your URLs. Section 7 of [Revnu's terms](/terms) says you keep ownership of everything you give Revnu. You can save every post through the Content API at any time.

### My site is static. How do new posts show up?

A static site only shows a new post after it rebuilds. Your developer creates a deploy hook on your host and pastes it under **Visibility > Publishing Settings > Content API > Rebuild Hook**. Revnu calls it every time a post is published, edited or removed.

### Can Revnu write into my Sanity studio?

Revnu's posts sit next to your Sanity content: your site's frontend reads them from the Content API and shows them alongside what's in your CMS. If the posts must live inside Sanity, your developer can add a small sync job from the Content API.

### Revnu found no posts on my blog, but I have some. Why?

Revnu reads the links on the page you enter, so enter the page that lists your posts, not your homepage. The links need to be in the page's HTML, not added after JavaScript runs. Starting with new posts only is safe, and you can tell Revnu which URLs to import.

### Will I lose my existing posts or their rankings?

Your posts and rankings stay put. Importing copies each post at its current URL and date, and nothing on your site changes until the new setup is deployed and Revnu has checked every old URL on it. If you start with new posts only, the old ones stay where they are.
