Bolt.new via webhook
Add RankPine to a Bolt.new project through one signed server function, Bolt Database or Supabase persistence, and the existing webhook connection.
Bolt.new connects to RankPine via webhook. The setup adds a server function to your existing app and routes RankPine to the existing Webhook / REST integration. It is not a separate Bolt publishing protocol.
Before you start
- The app needs Bolt Database or a connected Supabase project with server/Edge Functions. A frontend-only site cannot protect the signing secret.
- Choose the article table and the public article route before asking Bolt to implement the receiver.
- Create a random
RANKPINE_WEBHOOK_SECRETand keep it out of source code.
Bolt's official docs place server-function secrets under the database icon's
Secrets section and publish public projects from the top-right Publish
menu to a bolt.host or custom domain. Bolt also documents that third-party
webhooks do not carry a Supabase JWT, so the receiving function needs its own
signature verification. See
Secrets,
webhook authentication,
and publishing.
1. Add the shared receiver
Download the RankPine receiver template into the server-function folder Bolt already uses. Its Web Request/Response API works in an Edge Function without a framework rewrite.
Implement its two adapter methods against the project's real data layer:
upsertByRankPineIdcreates or updates byarticle.idand returns the same external ID and canonical URL on every retry.refreshSitemapupdates, revalidates, or rebuilds the sitemap/content index owned by this Bolt app.
Copy-paste build instruction
Add RankPine publishing to this existing Bolt.new project via the existing webhook pattern. Do not replace, restyle, or restructure unrelated application code.
Create one public server/Edge Function called rankpine-webhook using https://rankpine.com/docs/templates/rankpine-webhook-receiver.ts. Read RANKPINE_WEBHOOK_SECRET from Bolt Database Secrets (or the connected Supabase Edge Function secrets), never from client code. Verify the HMAC over the exact raw bytes before parsing, enforce the five-minute freshness window, require matching X-RankPine-Event, and validate the payload.
Use the app's current database. Add only the smallest article schema change needed, with a unique RankPine article ID. Upsert title, slug, HTML, Markdown, meta description, language and translation metadata, sources, SEO metadata, featured image, inline images, publishedAt, and scheduledFor. Return stable { id, url } JSON. Update or invalidate the sitemap/content-discovery mechanism in the receiver adapter; this app owns that behavior.
This third-party webhook will not have a Supabase JWT. Disable JWT verification only for rankpine-webhook and keep mandatory RankPine HMAC verification in the function. Leave every other function's authentication unchanged. Report the exact deployed endpoint URL and all files/schema changed. Do not publish on my behalf.2. Add the secret
- Open the Bolt project and select the database icon.
- Choose Secrets and create
RANKPINE_WEBHOOK_SECRET. - If the project uses Supabase directly, add the same secret under Edge Functions → Secrets, then tell Bolt to refresh its connection.
Do not use a VITE_-prefixed variable: those values belong in browser code and
are not suitable for a signing secret.
3. Publish and obtain the URL
Deploy the server function, then choose Publish → Publish for a public site
or Publish → Update for an existing deployment. Copy the exact function URL
from Bolt's function output. A Supabase-backed URL usually ends in
/functions/v1/rankpine-webhook; a framework API route uses the public
bolt.host/custom domain plus its route path.
Do not use a private Bolt deployment URL unless it explicitly allows unauthenticated server-to-server requests.
4. Connect in RankPine
- Open Settings → Integrations → Website builders via webhook.
- On Bolt.new, choose Connect via webhook.
- Enter the deployed URL and the identical signing secret.
- Keep both HTML and Markdown enabled, then connect.
RankPine immediately sends a signed verification event. A 401 usually means
the secrets differ; a JWT/auth error means the function is still blocking the
request before its HMAC check.
5. Verify a test article
Publish one test article and check the server-function log, database row,
returned public URL, and live sitemap. Then update the same RankPine article and
confirm the unique article.id row changes in place. Bolt preview success alone
does not prove the published endpoint or production secret works.
Lovable via webhook
Add a signed RankPine receiver to an existing Lovable project with an Edge Function, server-side secret, persistent article upsert, and sitemap refresh.
Replit via webhook
Add a signed RankPine route to an existing Replit App, keep the secret in Replit Secrets, and publish with persistent storage.