Notion Public Page SEO: Setting Title and Meta Description
🔍 WiseChecker

Notion Public Page SEO: Setting Title and Meta Description

When you publish a Notion page to the web, search engines like Google may index it. Without custom SEO settings, your page appears with a generic title and no meta description. This can lower your click-through rate from search results. Notion does not offer built-in controls for meta titles or descriptions. This article explains how to work around that limitation using Notion’s page properties and external tools.

Key Takeaways: Optimizing a Notion Public Page for Search Engines

  • Page title property in Notion: The page title you set in Notion becomes the HTML title tag on the public page.
  • No native meta description field: Notion does not generate a meta description tag. You must use a redirect or a third-party service to add one.
  • Cloudflare Workers or Zapier integration: These tools can inject a custom meta description into your public page’s HTML headers.

How Notion Generates SEO Metadata for Public Pages

When you share a Notion page via the Share menu and enable “Share to web,” Notion generates a public URL. The HTML title tag of that public page matches the page title you set in Notion. For example, if your Notion page is named “My Project Dashboard,” the browser tab and search engine snippet will display “My Project Dashboard.”

Notion does not create a meta description tag. Search engines often pick the first few sentences of visible text on the page as the description snippet. This snippet may not represent your content accurately. Notion also does not allow you to set a custom URL slug. The public URL contains a random 30-character ID, which does not help SEO.

To control the meta description and improve the snippet, you need to route visitors through an intermediate service. Options include using a domain redirect with Cloudflare Workers or a Zapier integration that updates a custom HTML page. Both methods let you define a meta description before the browser reaches the Notion page.

Steps to Improve a Notion Public Page’s SEO Metadata

The following methods assume you have a Notion workspace with at least one page shared to the web. You will need a domain you control and a Cloudflare account for the first method, or a Zapier account for the second.

Method 1: Use a Cloudflare Worker to Add a Meta Description

  1. Get your Notion public page URL
    Open the Notion page you want to optimize. Click Share in the top-right corner. Under “Share to web,” copy the public link. It looks like https://www.notion.so/yourworkspace/randomid.
  2. Set up a Cloudflare Worker
    Log in to your Cloudflare dashboard. Go to Workers & Pages and click Create application. Choose “Create Worker.” Give it a name, for example “notion-seo-worker.”
  3. Write the Worker script
    Replace the default script with the following code. Change the NOTION_URL to your public page link and set META_DESCRIPTION to your desired description text.
    const NOTION_URL = 'https://www.notion.so/yourworkspace/randomid';
    const META_DESCRIPTION = 'Your custom meta description here, up to about 160 characters.';
    
    async function handleRequest(request) {
      const response = await fetch(NOTION_URL);
      let html = await response.text();
      html = html.replace('</head>', `<meta name="description" content="${META_DESCRIPTION}"></head>`);
      return new Response(html, {
        headers: { 'content-type': 'text/html' }
      });
    }
    
    addEventListener('fetch', event => {
      event.respondWith(handleRequest(event.request));
    });
    
  4. Deploy the Worker
    Click Save and Deploy. Cloudflare assigns a workers.dev subdomain URL. Use that URL as your public-facing link.
  5. Test the meta description
    Open the Worker URL in a browser. Right-click the page and select View Page Source. Search for “description.” You should see the meta tag you injected.

Method 2: Use Zapier to Create a Landing Page with Custom Meta

  1. Create a Zapier account
    If you do not have one, sign up at zapier.com. Choose a plan that supports Webhooks by Zapier.
  2. Set up a new Zap
    Click Create Zap. Set the trigger to “Webhooks by Zapier” and event to “Catch Hook.” Copy the webhook URL provided.
  3. Build a simple HTML page
    Create an HTML file on any static hosting service (Netlify, Vercel, or GitHub Pages). Include a meta description tag in the head. Add a JavaScript redirect that sends visitors to your Notion page after a short delay. Example:
    <!DOCTYPE html>
    <html>
    <head>
      <meta name="description" content="Your meta description here">
      <meta http-equiv="refresh" content="0;url=https://www.notion.so/yourworkspace/randomid">
    </head>
    <body>
      <p>Redirecting…</p>
    </body>
    </html>
    
  4. Connect the webhook to the HTML page
    In Zapier, add an action step. Choose “Webhooks by Zapier” again, event “POST.” Set the URL to your hosting service’s endpoint that triggers a rebuild of the HTML page. This method requires a static site generator or a serverless function to update the meta description dynamically.
  5. Test the redirect
    Open the static page URL. You should see the meta description in the page source, and after a fraction of a second, the browser should redirect to the Notion page.

If the Meta Description Still Does Not Appear in Search Results

Search engines ignore the meta description

Google sometimes chooses its own snippet from page content even if a meta description exists. This is normal. To increase the chance that Google uses your meta description, keep it under 160 characters, include the primary keyword, and match the description to the visible content on the Notion page.

Notion page title changes after editing

If you rename the Notion page, the HTML title tag updates automatically. The meta description you injected via Cloudflare Worker remains unchanged because the Worker script contains a static string. Edit the Worker script and redeploy to update the description.

Public page is not indexed at all

Notion public pages can be blocked from indexing if the workspace admin has disabled search engine indexing. Go to Settings & Members > Settings > Workspace. Under “Search engine indexing,” ensure the toggle is enabled. If it is off, search engines will not crawl your page regardless of meta tags.

Notion Public Page SEO: Native vs Cloudflare Worker vs Zapier

Item Native Notion Cloudflare Worker Zapier + Static Page
Custom title tag Uses page title only Can override via script Uses static page title
Meta description Not generated Injected in HTML head Injected in static page
URL customization Random 30-character ID Custom domain possible Custom domain possible
Setup time Instant 10-20 minutes 30-60 minutes
Ongoing cost Free Free tier up to 100k requests/day Zapier paid plan may be required

Notion’s native sharing feature provides the fastest setup but lacks SEO controls. Cloudflare Workers offer a free, scalable way to inject a meta description and use a custom domain. Zapier-based solutions work if you already use Zapier but require more maintenance.

To get the best results, set your Notion page title to an SEO-friendly phrase, keep the first paragraph of the page concise, and use a Cloudflare Worker to add a meta description. Test your changes with Google’s URL Inspection tool once the page is indexed.