Lovable Integration

Written By Afonso Carvalho

Last updated 8 days ago

Watch our step by step video on how to integrate Arvow with a Lovable website:

Phase 1: Set Up the Blog Pages in Lovable

  1. Open Lovable and create a new project (or open the existing one you want Arvow to publish to).

  2. In the Lovable chat, paste this prompt:

Example
Build me a blog system for my website. I want articles to be stored in Supabase and rendered publicly. Create a Supabase table called `articles` with these columns: - id (text, primary key) β€” external article ID from the source system - slug (text, unique, not null) β€” URL slug - title (text, not null) - content (text) β€” HTML content - content_markdown (text) - tags (text array) - thumbnail (text) β€” image URL - thumbnail_alt_text (text) - metadescription (text) - keyword_seed (text) - language_code (text, default 'en') - campaign_id (text) - campaign_name (text) - batch_id (text) - created_at (timestamptz, default now()) - updated_at (timestamptz, default now()) Enable Row Level Security with a policy that allows public SELECT (anyone can read), but no public INSERT/UPDATE/DELETE. Then build two public pages using TanStack Router's flat-routing convention: 1. `/blog` β€” file: `blog.tsx` β€” index page listing all articles ordered by created_at DESC, showing thumbnail, title, metadescription, and date. Clean modern design. 2. `/blog/:slug` β€” file: `blog_.$slug.tsx` (note the trailing underscore on `blog_` β€” this is critical; it opts the route OUT of nesting under /blog so it renders as a standalone page). Single article page that renders the HTML content safely, sets the page <title> to the article title, adds a meta description tag, and sets og:image to the thumbnail. Include the thumbnail at the top, title below, and then the rendered HTML content. Do NOT use `blog.$slug.tsx` β€” that would nest it under blog.tsx and the article wouldn't render correctly. Make the design clean, minimal, and readable (good typography, max-width container, mobile-friendly).

Phase 2: Build the Webhook Edge Function

Paste this prompt into the Lovable chat:

Example
Now create a Supabase Edge Function called `arvow-webhook` to receive webhook requests from Arvow (arvow.com), an AI SEO content automation platform that will POST new articles to my site. Requirements: 1. This is a PUBLIC webhook endpoint β€” disable JWT verification for this function (set verify_jwt = false in supabase/config.toml for this specific function). External services cannot send Supabase JWTs. 2. Only accept POST requests. Return 405 for anything else. 3. Authentication: read the `X-SECRET` header from the incoming request and compare it against a secret stored in Supabase secrets as `ARVOW_WEBHOOK_SECRET`. If missing or mismatched, return 401. 4. Parse the JSON body, which has this shape: { "id": "string", "title": "string", "content": "string (HTML)", "content_markdown": "string", "tags": ["string"], "thumbnail": "string (URL)", "thumbnail_alt_text": "string", "metadescription": "string", "keyword_seed": "string", "language_code": "string", "campaign_id": "string", "campaign_name": "string", "batch_id": "string" } 5. Generate a URL-safe slug from the title: lowercase, replace spaces with dashes, strip all non-alphanumeric/dash characters, collapse multiple dashes, trim leading/trailing dashes. If a slug collision exists in the `articles` table, append a short 6-char random suffix. 6. Upsert into the `articles` table using the Arvow `id` as the primary key (on conflict, update all fields and set updated_at = now()). 7. Read an env var `SITE_URL` (e.g. https://mysite.lovable.app) from Supabase secrets. Construct the final article URL as `${SITE_URL}/blog/${slug}`. 8. Return status 200 with JSON body: { "url": "<the full article URL>" } 9. On any error, log it clearly and return 500 with { "error": "message" }. After creating the function, tell me: - The public URL of the deployed edge function - The two secrets I need to add (ARVOW_WEBHOOK_SECRET, SITE_URL) and where to add them

After sending this prompt, Lovable will ask you for two values:

  • SITE_URL: your Lovable website URL

  • ARVOW_WEBHOOK_SECRET β€” you'll get this from Arvow in the next step.

Step 3: Get the Webhook Secret from Arvow

  1. In Arvow, go to Configuration β†’ Integrations.

  2. Click Create New Integration.

  3. Select Webhook.

  4. Copy the Secret value shown in the integration form.

⚠️ Keep this Arvow integration tab open β€” you'll come back to it in Step 5 to paste the Callback URL and finish creating it.

Step 4: Paste the Secrets into Lovable

Go back to the Lovable chat and paste:

  • The ARVOW_WEBHOOK_SECRET (the secret you copied from Arvow).

  • The SITE_URL (your Lovable site URL).

Lovable will finish configuring the edge function and return a Webhook URL. Copy it.

Step 5: Finish the Integration in Arvow

  1. Go back to the Arvow integration tab you left open in Step 3.

  2. Paste the Webhook URL from Lovable into the Callback URL field.

  3. Click Create.

Your Arvow β†’ Lovable integration is now ready.

Step 6: Publish Your Lovable Site

Back in Lovable, click Publish so the blog pages go live.

Step 7: Test It

  1. In Arvow, open any article.

  2. Click Publish.

  3. Select your Lovable webhook integration as the destination.

  4. Click Publish.

Within a few seconds, your article will appear at yoursite.lovable.app/blog, fully published and SEO-optimized.