[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fintegrations\u002Fplatform-capabilities":3},{"id":4,"title":5,"body":6,"description":429,"extension":430,"meta":431,"navigation":432,"order":433,"path":434,"seo":435,"stem":436,"summary":437,"__hash__":438},"docs\u002Fdocs\u002Fintegrations\u002Fplatform-capabilities.md","Platform capability matrix",{"type":7,"value":8,"toc":419},"minimark",[9,13,17,22,140,143,146,149,174,188,191,194,197,217,225,232,236,239,241,258,275,278,281,284,309,312,315,318,321,346,353,359,363,412,415],[10,11,5],"h1",{"id":12},"platform-capability-matrix",[14,15,16],"p",{},"Use this page to pick the right website connection. It is written in customer-facing terms: what you connect, what 42flows can publish, and what your website still owns.",[18,19,21],"h2",{"id":20},"quick-comparison","Quick comparison",[23,24,25,47],"table",{},[26,27,28],"thead",{},[29,30,31,35,38,41,44],"tr",{},[32,33,34],"th",{},"Website path",[32,36,37],{},"Setup",[32,39,40],{},"New content",[32,42,43],{},"Existing pages",[32,45,46],{},"Best fit",[48,49,50,68,85,102,123],"tbody",{},[29,51,52,56,59,62,65],{},[53,54,55],"td",{},"WordPress",[53,57,58],{},"WordPress publishing access and 42flows companion plugins where needed.",[53,60,61],{},"Posts with body, SEO fields, schema, category, and optional image.",[53,63,64],{},"Strong support for Page Optimizer on WordPress pages and posts.",[53,66,67],{},"WordPress sites that want publishing and in-place improvements.",[29,69,70,73,76,79,82],{},[53,71,72],{},"Shopify",[53,74,75],{},"Shopify store connection.",[53,77,78],{},"Shopify blog articles with SEO fields, tags, body, and optional image.",[53,80,81],{},"Use Shopify admin\u002Ftheme workflows for existing-page changes.",[53,83,84],{},"Stores that use Shopify's blog for SEO articles.",[29,86,87,90,93,96,99],{},[53,88,89],{},"GitHub\u002FNuxt Content",[53,91,92],{},"GitHub App access to the repo and branch.",[53,94,95],{},"Markdown files and optional assets committed to the repo.",[53,97,98],{},"Good when the existing page is a markdown file.",[53,100,101],{},"Nuxt Content and other file-backed sites.",[29,103,104,107,114,117,120],{},[53,105,106],{},"Nuxt direct receiver",[53,108,109,113],{},[110,111,112],"code",{},"@42flowsdotcom\u002Fnuxt-content"," package and a receiver token.",[53,115,116],{},"Content sent to the receiver endpoint.",[53,118,119],{},"Depends on how the receiver stores and renders content.",[53,121,122],{},"Self-hosted Nuxt sites that want direct delivery.",[29,124,125,128,131,134,137],{},[53,126,127],{},"Universal webhook",[53,129,130],{},"One HTTPS endpoint and bearer token.",[53,132,133],{},"Markdown, HTML, metadata, schema data, and slug sent to your app.",[53,135,136],{},"Your app owns existing-page edits.",[53,138,139],{},"Next.js, Astro, SvelteKit, Rails, Laravel, Django, and custom CMS sites.",[18,141,55],{"id":142},"wordpress",[14,144,145],{},"WordPress is the most complete website path because it has a stable publishing API and a mature plugin layer.",[14,147,148],{},"42flows can:",[150,151,152,156,159,162,165,168,171],"ul",{},[153,154,155],"li",{},"Publish posts.",[153,157,158],{},"Set titles, body content, categories, and featured images.",[153,160,161],{},"Work with common SEO plugin fields.",[153,163,164],{},"Add 42flows metadata needed for verification.",[153,166,167],{},"Read pages\u002Fposts for Page Optimizer.",[153,169,170],{},"Apply targeted improvements where the page structure supports them.",[153,172,173],{},"Restore a saved WordPress snapshot after a Page Optimizer apply.",[14,175,176,177,182,183,187],{},"Start with the ",[178,179,181],"a",{"href":180},"\u002Fwordpress","WordPress setup guides"," and the ",[178,184,186],{"href":185},"\u002Ffeatures\u002Fwordpress-publishing","WordPress publishing feature page",".",[18,189,72],{"id":190},"shopify",[14,192,193],{},"Shopify is the right path when the store uses a Shopify blog for SEO content.",[14,195,196],{},"42flows can publish a blog article with:",[150,198,199,202,205,208,211,214],{},[153,200,201],{},"Title.",[153,203,204],{},"Body HTML.",[153,206,207],{},"Summary.",[153,209,210],{},"Tags.",[153,212,213],{},"SEO title and description.",[153,215,216],{},"Optional featured image.",[14,218,219,220,224],{},"Your Shopify theme controls how the article looks on the public site. If the store is headless or stores content somewhere outside Shopify's blog, use the ",[178,221,223],{"href":222},"\u002Fdocs\u002Fintegrations\u002Fwebhook","universal webhook"," instead.",[14,226,227,228,187],{},"Read the standalone ",[178,229,231],{"href":230},"\u002Fdocs\u002Fintegrations\u002Fshopify","Shopify publishing setup",[18,233,235],{"id":234},"github-and-nuxt-content","GitHub and Nuxt Content",[14,237,238],{},"Use GitHub-backed delivery when content lives as files and your deploy pipeline turns those files into pages.",[14,240,148],{},[150,242,243,246,249,252,255],{},[153,244,245],{},"Inspect the repo enough to find the content folder and route shape.",[153,247,248],{},"Commit a markdown article file.",[153,250,251],{},"Commit optional article assets.",[153,253,254],{},"Let the customer's normal deploy pipeline publish the page.",[153,256,257],{},"Verify the public URL after deployment.",[14,259,260,261,265,266,270,271,187],{},"For Nuxt, start with the ",[178,262,264],{"href":263},"\u002Fnuxt","Nuxt setup guides",", ",[178,267,269],{"href":268},"\u002Fnuxt\u002Fconnect-via-github-app","Connect your Nuxt site via the GitHub App",", and ",[178,272,274],{"href":273},"\u002Fdocs\u002Fintegrations\u002Fgithub-nuxt-content","GitHub and Nuxt Content integration",[18,276,106],{"id":277},"nuxt-direct-receiver",[14,279,280],{},"The Nuxt receiver is useful when the site can accept content directly instead of receiving Git commits.",[14,282,283],{},"The customer installs:",[285,286,291],"pre",{"className":287,"code":288,"language":289,"meta":290,"style":290},"language-bash shiki shiki-themes github-light github-dark","npm install @42flowsdotcom\u002Fnuxt-content\n","bash","",[110,292,293],{"__ignoreMap":290},[294,295,298,302,306],"span",{"class":296,"line":297},"line",1,[294,299,301],{"class":300},"sScJk","npm",[294,303,305],{"class":304},"sZZnC"," install",[294,307,308],{"class":304}," @42flowsdotcom\u002Fnuxt-content\n",[14,310,311],{},"The site then exposes a health check and a content receiver endpoint protected by a bearer token. This is best for Nuxt sites where the customer controls the server\u002Fruntime and wants direct delivery.",[18,313,127],{"id":314},"universal-webhook",[14,316,317],{},"The webhook is the cleanest path for custom apps.",[14,319,320],{},"42flows sends the article payload. Your app:",[322,323,324,327,334,337,340],"ol",{},[153,325,326],{},"Verifies the bearer token.",[153,328,329,330,333],{},"Accepts the ",[110,331,332],{},"ping"," test.",[153,335,336],{},"Saves or updates the article by slug.",[153,338,339],{},"Triggers revalidation, cache purge, or build work if needed.",[153,341,342,343,187],{},"Returns the public ",[110,344,345],{},"postUrl",[14,347,348,349,352],{},"The key guidance is simple: make the handler idempotent by ",[110,350,351],{},"article.slug",". If 42flows sends the same article again, your app should update the existing article rather than create a duplicate.",[14,354,355,356,187],{},"Read the ",[178,357,358],{"href":222},"universal webhook integration",[18,360,362],{"id":361},"which-one-should-i-choose","Which one should I choose?",[23,364,365,375],{},[26,366,367],{},[29,368,369,372],{},[32,370,371],{},"If this is true",[32,373,374],{},"Choose",[48,376,377,384,391,398,405],{},[29,378,379,382],{},[53,380,381],{},"The site is WordPress and the customer wants 42flows to publish posts.",[53,383,55],{},[29,385,386,389],{},[53,387,388],{},"The site is a Shopify store with a blog.",[53,390,72],{},[29,392,393,396],{},[53,394,395],{},"The site is Nuxt Content or another file-backed site deployed from GitHub.",[53,397,89],{},[29,399,400,403],{},[53,401,402],{},"The site is Nuxt and wants direct API delivery.",[53,404,106],{},[29,406,407,410],{},[53,408,409],{},"The site is Next.js or any custom app with its own content model.",[53,411,127],{},[14,413,414],{},"The safest choice is the one that matches how the website already publishes content.",[416,417,418],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":290,"searchDepth":420,"depth":420,"links":421},2,[422,423,424,425,426,427,428],{"id":20,"depth":420,"text":21},{"id":142,"depth":420,"text":55},{"id":190,"depth":420,"text":72},{"id":234,"depth":420,"text":235},{"id":277,"depth":420,"text":106},{"id":314,"depth":420,"text":127},{"id":361,"depth":420,"text":362},"What each 42flows website connection can do for WordPress, Shopify, Nuxt Content, GitHub-backed sites, and webhooks.","md",{},true,25,"\u002Fdocs\u002Fintegrations\u002Fplatform-capabilities",{"title":5,"description":429},"docs\u002Fintegrations\u002Fplatform-capabilities","A plain-language comparison of the website publishing paths supported by 42flows.","xkTbvCzo0txSgAT9wPa6ystP74muvSJ2PpICSXjv5_g"]