QuickSEO
PricingToolsBlog
Get Started

Documentation

Getting Started
Get StartedConnect Google Search ConsoleSet Up AI Visibility
Search Analytics
Search Analytics DashboardPage GroupsBranded vs Non-Branded
AI Visibility
AI Visibility ScoresManaging PromptsSentiment AnalysisCompetitor TrackingCited PagesAI Recommendations
Site Settings
Brand TermsSite ManagementWebhook Publishing
Billing & Account
Plans & PricingManage Your Subscription
Data & Privacy
Get Your DataDelete Account

Webhook Publishing

Send AI-generated articles directly to your CMS or website. When you click Publish on an article, QuickSEO sends the content as a JSON payload to your configured webhook URL.

Setting Up Your Webhook

  1. Go to Settings for your site
  2. Scroll to the Webhook Publishing card
  3. Enter your webhook endpoint URL (must be HTTPS)
  4. Click Save

A bearer token is automatically generated when you save. Copy it and configure your webhook receiver to verify incoming requests.

How It Works

When you publish an article, QuickSEO sends a POST request to your webhook URL with:

  • Header: Authorization: Bearer <your-token>
  • Header: Content-Type: application/json
  • Header: X-QuickSEO-Event: article.published

Payload Format

{
  "event": "article.published",
  "timestamp": "2026-01-15T12:00:00.000Z",
  "article": {
    "id": "uuid",
    "title": "Your Article Title",
    "slug": "your-article-title",
    "description": "A short summary of the article.",
    "tags": ["seo", "ai"],
    "cover_image_url": "https://example.com/image.jpg",
    "html": "<h1>Your Article Title</h1><p>Full HTML content...</p>",
    "markdown": "# Your Article Title\n\nFull markdown content...",
    "created_at": "2026-01-15T12:00:00.000Z"
  }
}

Both html and markdown versions of the article content are included so you can use whichever format your CMS supports.

Verifying Requests

Always verify the Authorization: Bearer header matches your token before processing the payload. This ensures the request is genuinely from QuickSEO.

Example: Node.js / Express

app.post('/api/webhook', (req, res) => {
  const token = req.headers['authorization']?.replace('Bearer ', '')

  if (token !== process.env.QUICKSEO_WEBHOOK_SECRET) {
    return res.status(401).json({ error: 'Unauthorized' })
  }

  const { article } = req.body
  // Save article to your database or CMS
  console.log('Received article:', article.title)

  res.status(200).json({ success: true })
})

Example: Next.js API Route

export async function POST(request: Request) {
  const authHeader = request.headers.get('Authorization')
  const token = authHeader?.replace('Bearer ', '')

  if (token !== process.env.QUICKSEO_WEBHOOK_SECRET) {
    return Response.json({ error: 'Unauthorized' }, { status: 401 })
  }

  const { article } = await request.json()
  // Save article to your database or CMS

  return Response.json({ success: true })
}

Retries

If your endpoint returns a non-2xx status code or times out (10 second limit), QuickSEO will retry up to 3 times with increasing backoff:

AttemptDelay
1stImmediate
2nd30 seconds
3rd2 minutes

After 3 failed attempts, the delivery is marked as failed. You can re-publish the article to try again.

Testing Your Webhook

Use the Send Test Article button in Settings to verify your endpoint is working before publishing real content. The test sends a sample article payload with placeholder content.

Managing Your Token

  • Regenerate: Click Regenerate Token in Settings to create a new token. The old token is immediately invalidated — update your webhook receiver.
  • Copy: Use the copy button to grab the full token. The token is only visible right after saving or regenerating.

Disabling the Webhook

Toggle the Enabled switch off to temporarily stop sending articles without deleting your configuration. Toggle it back on when ready.

To permanently remove the webhook, click Remove Webhook.

Need Help?

If you have questions or need support, reach out to us at support@quickseo.ai.

QuickSEO

HomeBlogTemplatesFree ToolsDocs

AI Visibility Tools

Claude SEO Rank TrackerChatGPT SEO Rank TrackerGemini SEO Rank TrackerPerplexity SEO Rank Tracker

Features

Search AnalyticsAI Visibility ScoresTracked PromptsSentiment AnalysisPage GroupsBranded vs Non-BrandedCompetitor TrackingCited Pages

Track

ChatGPTClaudeGeminiPerplexity

Legal

Terms of usePrivacy policy

Contacts

support@quickseo.ai