Changelog
Release Notes
Every feature, every improvement, every fix since v1.0.0.
Page 14 of 20 — 576 releases, newest first.
Stories, the Instagram Way: One "Latest Posts" Bubble That Plays Your Recent Content
Improved
- Automatic post stories were redesigned around how Instagram actually works: instead of one bubble per post crowding the strip, there is now a SINGLE "Latest Posts" bubble — tap it and the posts from your chosen window (3, 7, 15, 30 days… up to 90) play as slides, newest first, each with its featured image, title and a "Read Post" button. The bubble is fully virtual: nothing is written to the stories database, new posts appear in it the moment they are published, old ones drop off as they leave the window, and the ring lights up again whenever a new post arrives.
- The bubble's name follows the site language ("Son İçerikler" / "Latest Posts") and can be customized in settings. Bubbles you created by hand are untouched and keep their place next to it; the per-post bubbles generated by the previous version are cleaned up automatically.
Fixed
- Opening the Stories admin page by its direct URL (without a module parameter) returned a server error — a strict-mode array access crashed before the page could render. The page now opens correctly from anywhere.
Stories Strip Becomes a True Latest-Posts Showcase
Improved
- With auto-stories enabled, the strip now carries EVERY post published within the story lifetime window (7 days by default) — not just posts published after the feature was switched on. Older posts are backfilled automatically every hour, each story retires based on its post's publish date, and the newest post always sits first in the strip, Instagram-style.
- The strip now announces itself: when auto-stories are on and no custom heading is set, a heading in the site's language appears above the circles — "Son İçerikler" on Turkish sites, "Latest Posts" on English ones. Set your own heading to override it, or enter "-" to hide it entirely.
Image Captions Done Right: Visible Captions Are Now a First-Class Editor Feature
Added
- New "Caption" field in the image details dialog: add a visible caption under any image, shown identically on every theme via self-contained styling. The dialog now clearly separates the two concepts — alt text is invisible and for search engines and screen readers; the caption is the text readers actually see. Captions render live in the editor and are editable with one click.
Fixed
- Editing a post that contained figure-wrapped images could leak the old caption markup as a visible plain paragraph under the image — the editor did not understand the figure/figcaption structure, so saving unwrapped it and turned caption text into body text. The editor now parses figures natively: real captions survive editing round-trips intact, and legacy captions that merely duplicated the alt text are dropped automatically instead of becoming visible.
- Opening the image details dialog could scroll the page behind it, so you lost sight of which image you were editing. The background now stays exactly where it was while the dialog is open and after saving.
Click, Resize, Align: Full Image Editing Inside the Editor
Added
- Images in the post editor are now fully editable in place, the way WordPress users expect. Click an image and a floating toolbar appears right on it: size presets (Small 300px / Medium 600px / Full width), left-center-right alignment, a details button and remove — plus four corner handles you can drag to resize freely, with a live pixel readout while you drag. Aspect ratio is always preserved.
- New image details dialog (toolbar pencil or double-click the image): see and edit the alt text, title tooltip, exact pixel width and the image URL in one place, with a live preview. Alt text finally gets a proper editing home after insertion — good for accessibility and image SEO.
- Sizing and alignment are written into the content as self-contained inline styles, so they render identically on every theme — no theme CSS support required, and images never overflow on mobile (max-width is built in).
Fixed
- The alt text label in the image insert dialog was hardcoded in Turkish and appeared untranslated on English admin panels.
Posts List: One-Click SEO Score Refresh, Editor and List Finally Agree
Added
- New "Recalculate SEO Scores" button on the posts list: refreshes every post's stored SEO score with the current scoring engine — in batches of 100 with live progress, so a 1,000-post site takes seconds instead of hitting a timeout. Useful after upgrading, since scores saved by older versions used the old scoring rules.
Fixed
- The score in the editor and the score in the posts list could differ: the editor's live analyzer inspects the actual page structure (headings, tables, snippet blocks) while the save-time engine cannot, so recomputing on save produced a different number. The editor now passes its own score along when you save — the list shows exactly what the editor dial showed.
- The "Analyze All" AI button appeared on every installation, including ones with no AI provider configured, where clicking it could only show a setup notice. The button now appears only when AI is actually configured.
SEO Score You Can Trust: Fixed Budgets, No More Reward for Leaving Fields Empty
Improved
- Each check group in the SEO widget now shows its point contribution (e.g. "20/25p" next to Keyword) so you can see exactly where a score comes from and which section is worth fixing first.
Fixed
- A post with NO focus keyword could score 80-90, and the score DROPPED the moment you entered one — the old ratio model removed the keyword checks from the denominator when the field was empty, so withholding information was mathematically rewarded. Scoring now uses fixed category budgets (keyword 25, content 20, structure 15, basics 15, readability 10, visuals 10, schema 5): an empty keyword field burns its whole 25-point budget, and filling in information can only raise your score, never lower it. The same flaw existed in the score saved on every post update (an even stronger version: keyword-less posts were graded out of 50 and could reach 100) — post saves now use the same fixed-budget engine as the SEO Optimizer page, so all scores finally speak the same language.
- Turkish keywords containing İ/I (e.g. "İçerik Pazarlaması") silently failed every match — title, content and density checks all reported "keyword not found" because of a Unicode case-folding quirk. Keyword matching is now Turkish-aware across the editor widget, the save-time score and the SEO Optimizer. Density also counts whole words only (a short keyword inside longer words no longer inflates the percentage) and word counting is UTF-8 correct.
- The title length check said "good" up to 70 characters while the SERP preview's pixel meter showed the same title being cut at ~580px — the two now agree (60-character budget), and a keyword missing from the title is no longer punished twice.
SEO Assistant: Content Structure Checks, Pixel-Accurate SERP Preview, Wider AI Analysis
Added
- New "Content Structure" check group in the editor's SEO assistant — seven checks that mirror how editors actually review a draft: duplicate H1 in the body (your title is already the page H1), skipped heading levels (H2→H4), a too-thin intro before the first heading, a missing conclusion/summary section on long posts, table and list usage, and a featured-snippet readiness check that looks for a question heading followed by a concise 40–60 word answer.
- The SERP preview now measures your title and description in pixels, the way Google actually truncates them (~580px for titles, ~990px for descriptions on desktop). Character counts stay, pixel widths appear next to them and turn red when the limit is exceeded — no more titles that pass the character check but still get cut in results.
- AI deep analysis covers four new dimensions: overall content quality (informativeness, originality, freshness), Google Helpful Content fit, AI-search readiness (would an AI Overview cite this page?), and AdSense policy suitability — including thin-content and clickbait-mismatch warnings before you publish.
Fixed
- The SERP preview showed a broken icon instead of your favicon: it pointed at a file path that only exists on jekcms.com, not on customer installations. The preview now resolves the site's real favicon through the same priority chain the front end uses (uploaded favicon, site-root favicon files, generated icon), with a letter-badge fallback so the slot is never empty.
Google Console: PageSpeed Tab, Fresh Search Data, Stability Fixes
Added
- New PageSpeed tab: measure any page of your site with Google PageSpeed Insights (Lighthouse) right from the panel — mobile and desktop scores for Performance, Accessibility, Best Practices and SEO, lab metrics (FCP, LCP, TBT, CLS, Speed Index) and real-user Core Web Vitals (CrUX) when Google has field data for your site. Works without a Google connection; results are cached for 24 hours. An optional API key setting raises the measurement quota.
Fixed
- Search Console reports were consistently thinner than the GSC interface: the API omits the last ~2 days by default ("final" data), so recent queries and clicks simply never appeared — the exact "my search terms don't show up" complaint. All Search Console reports now request fresh data, matching what the GSC UI shows.
- The Top Queries and Top Pages cards swallowed API errors and displayed a misleading "No data" — a quota or permission problem now shows its actual, actionable message on the card itself (same for the Analytics tables).
- When Google was unreachable, every page load fired the full set of live API calls with 20-second timeouts each, freezing the panel; failed responses are now briefly cached so the page stays responsive, and the Refresh button retries immediately. The response cache table also cleans up its expired rows, which previously accumulated forever.
ZeroTrack Analytics: Data Collection Restored on Production Sites
Fixed
- ZeroTrack silently stopped recording visits on production installations: the standalone beacon endpoint read database credentials only from .env, but production installs keep the real credentials in .env-production (the installer writes them there). The endpoint could never connect, answered every beacon with a polite 204, and the dashboard showed zeros while the site had traffic. The endpoint now uses the same environment-file priority as the rest of the CMS (.env-production first), and a failed database connection is written to the error log instead of disappearing without a trace.
- Page views could be counted twice: both the plugin hook and the core footer injected the tracker script, and the plugin side ignored the once-per-page guard. The guard is now honored on both paths — one tracker, one beacon, one count per view.
SEO Analyzer: Turkish-Correct Matching, Keyword Cannibalization Warning, New Checks
Added
- Keyword cannibalization warning: as you type a focus keyword, the analyzer checks whether another post already targets it and names that post — the classic premium-plugin feature, built in.
- Three new checks: a warning when the meta description merely copies the title, a nudge when no image alt text contains the focus keyword, and a heads-up for slugs containing Turkish/special characters.
Fixed
- Turkish focus keywords were silently failing: JavaScript lowercases dotted İ into a combining character, so a title like "İçerik Rehberi" never matched the focus keyword "içerik" — the analyzer wrongly reported the keyword missing from the title, description, headings, and first paragraph. A Turkish-aware folder now backs every comparison, and the slug check ascii-folds the keyword ("beslenme önerileri" correctly matches "beslenme-onerileri").
- Keyword density counted substrings ("spor" also counted "sporcu"); it now counts whole words. Internal/external link detection resolves the real hostname instead of matching the site name anywhere in the URL. The analyzer also stopped re-rendering every 2.5 seconds, which used to force categories you had collapsed back open.
- On installations without the AI settings table, the editor died mid-page with "Server Error" while rendering the AI tab; the check is now failure-safe and the editor always loads.
- The social preview card showed a broken image for uploads-relative featured paths; description length limits were aligned to 160 everywhere.
Health Theme Speaks Your Site Language on the Frontend
Fixed
- On Turkish sites the Health theme still printed dozens of hardcoded English strings — section titles (Most Popular, Trending Topics, Latest Articles, Recommended), the entire footer navigation (About, Categories, For You, Editorial, Connect and every link inside them), the author card (About Author, View All Articles), the comment form (Leave a comment, Name, Email, Post comment), search, 404, tags, and the fallback header menu (Home, About). All of them now follow the site language setting: Turkish sites read fully Turkish, English sites are unchanged.
Health and Travel Headers No Longer Leak Broken Markup
Fixed
- On the Health and Travel homepages the brand link's H1 was printed inside the aria-label attribute, breaking the attribute and leaking a literal « — home"> » text next to the logo (most visible on fresh installs without a logo). The H1 now renders inside the link body where it belongs; the accessibility label and the SEO site-name signal both work as intended.
Wizard Polish: Come Back Days Later, Nothing Is Lost
Improved
- Take the prompt, close the browser, come back next week with the AI's JSON: the wizard now remembers every choice, greets you with a "Jump to import" shortcut, and the step chips are clickable so you can move to any step directly — no more starting over.
- The Content Studio menu is now one flat list in a clear order (Overview, Content Wizard, AI Content, Automation, Content Queue) — the confusing "Advanced" sub-group is gone — and it stays visible inside the Content Queue and Automation pages too, so sub-pages no longer feel like leaving the studio.
- The Pinterest and external-link option cards were realigned (checkbox beside the title instead of floating above it) and light up when selected.
Fixed
- The sample JSON no longer carries a fixed example date in scheduled_at — some AIs copied that stale date into every article. Scheduling belongs to the wizard's own final step.
- The old JSON generator form inside the import tab was removed (the wizard replaced it); the tab now cleanly hosts the raw import tools (JSON file, Google Sheets, CSV) with a pointer to the wizard.
Content Wizard: Plan, Create, and Schedule in One Guided Flow
Added
- The new Content Wizard (Content Studio → Content Wizard) replaces the old maze of JSON wizard, batch planner, and import tab with one step-by-step experience: how many articles → topic and keywords → richness (word count, images, Pinterest, authority links) → who creates it → schedule. Your theme profile is auto-detected, so recipe, travel, and finance themes automatically request their special fields.
- Two creation paths, same quality contract: use your own ChatGPT/Claude/Gemini account for free (copy one prompt, drop the returned JSON back — the wizard imports and validates it), or let jekcms generate everything through your API key, article by article with a live progress bar. Both land in the same review queue.
- The final step schedules the whole batch on a rhythm (daily, every 2-3 days, weekly) with a randomized time window, and explains the image workflow plainly: every article ships with a ready image plan (per-image generation prompts); generate covers automatically via the AI Images plugin, or create them anywhere, name them by slug, upload to uploads/temp and press Match Images.
Improved
- Content Studio's inner menu was decluttered (Posts and New Post moved back to the main sidebar where they belong) and it now stays visible on every studio sub-page, so you never lose your bearings. The n8n automation planner and raw queue live under a clearly labeled "Advanced" section.
- The single-draft AI tool now shares one AI client with the wizard (Gemini, Groq, and OpenAI — OpenAI upgraded to gpt-4o-mini).
The Finance Footer Shows Your Logo Instead of Plain Text
Fixed
- The Finance theme footer always printed the site name as plain text and never used the logo you uploaded. It now shows the logo, preferring the dark-mode variant because the footer background is dark in both themes. Sites without a logo keep the text heading exactly as before.
A Newly Uploaded Logo Now Appears Immediately
Fixed
- Replacing your logo from Settings → Branding could leave visitors looking at the old one for a long time. Uploads are served with a one-year "immutable" cache header, so once a browser or CDN had the file at that address it never asked again — and a CDN could keep serving a stale copy even after the file on the server changed. Logo URLs now carry the file's modification time, so a new upload is a new address and every visitor sees it on the next page load.
Author Pages Get Photos and an Archive Layout Fix
Improved
- Author archive pages now show the author's photo next to their name in both Finance and Pets — the header no longer reads as an anonymous text block.
Fixed
- Finance archive pages (category, tag, author) stacked the sidebar full-width below the article cards because the layout container had no grid rules; the sidebar is back in its right-hand column. The archive breadcrumb also lost its detached white band, matching single posts.
- Author archive pages claimed every author was a "Financial Analyst" when no credential was set; the fabricated fallback was removed and only real credentials render.
- On the Pets homepage, when the newest post was the only one published, the grid below the featured card rendered as a large blank area; a short "more articles on the way" note now fills it.
Finance Theme: Sans Headings, Breadcrumb Fix, Dark-Mode Readability
Improved
- The default heading font switched from the serif Fraunces to Inter: every heading across the theme now shares one modern sans family. Sites that picked a custom heading font in the Customizer keep their choice.
Fixed
- On single posts the breadcrumb sat in a detached band that ended up unreadable behind the colored post header; it now lives inside the header as light, legible text.
- In dark mode, links inside articles and the table of contents used the light-mode teal and nearly disappeared against the dark background; dark mode now switches them to a bright, readable tone without touching buttons or the hero.
Finance Theme: Sticky Table of Contents, Author Bio, Tidier Cards
Improved
- The "In This Article" table of contents no longer pushes the article down from the top of the content: it moved into the right sidebar, where it stays visible (sticky) while the reader scrolls through long articles.
- Article cards were tidied up: date and reading time sit on one muted line separated from the content, and the author appears as an aligned chip with a round photo instead of a loose letter placeholder. The homepage now also loads author photos for its cards.
- More breathing room between the homepage hero and the "Latest Articles" section.
Fixed
- The author box under articles rendered without the author's biography because the router does not pass it; the template now loads the bio itself, so the full author card (photo, name, bio) appears.
Finance Theme: Design Consistency Pass and Author Byline Fix
Fixed
- Every Finance article showed "Staff Writer" as the byline and skipped the author box entirely, even when the post had a real author. The template expected author data in a nested array while the router provides flat fields; the template now reads both, so the correct name, avatar and author box render on every post.
- The Finance theme received a design consistency pass: the serif display font is now reserved for article headlines while all interface labels use the sans family, the color palette was unified around the theme's navy and gold (the off-brand purple button and blue underlines are gone), the newsletter box no longer blends into the hero, the unused gray band between header and hero was removed, the trending numbers and footer fine print are readable, the author avatar aligns with its name, and archive pages say "1 Article" instead of "1.00 Articles".
- Hardcoded newsletter and footer texts that promised "market analysis and investment tips" were replaced with neutral wording that fits any finance site built on the theme.
Logo Variants: Dark-Mode and Retina Logos, Uploaded from the Panel
Added
- Settings → Branding now accepts three optional logo variants alongside your main logo: a dark-mode logo and 2x (retina) versions of both. When the visitor switches to dark mode the logo swaps instantly — no page reload — and high-density screens automatically receive the sharper file. If you never upload a dark logo, nothing changes: the light logo is used everywhere, exactly as before.
- Themes with permanently dark areas (like the Pets footer) automatically prefer the dark-mode logo there when one is uploaded, so a dark-text logo no longer disappears into a dark background.
Fixed
- The Finance homepage never listed articles on any installation: the home route loaded the template without passing it data, so the "Latest Articles" section always claimed the site was empty. The template now queries published posts itself, with pagination.
- A sweep of rough edges reported on fresh installs: the tagline no longer duplicates next to the logo in the Finance header, raw emoji icons were removed from category chips and lists in both Finance and Pets, a literal "NULL" tag and a "0.00 views" line no longer render in the Finance sidebar, empty tag boxes hide themselves, the featured-post category badge no longer overlaps the title in Pets, and legal pages regained a readable header in all themes.
Theme Honesty: Placeholder Stats Removed, Fresh-Install Language Fixed
Fixed
- The Finance theme homepage shipped with hard-coded placeholder claims — invented reader counts, satisfaction percentages and a fake "expert analysts" figure. All of it is gone: the hero now speaks with your site name and tagline, and the stats strip only appears once it has real numbers from your own database to show.
- Fresh installs now seed the site language from the setup wizard. Previously the language row was never written, so every new site quietly fell back to Turkish in the footer and legal pages — even when everything else was in English.
- Finance and Pets headers printed the logo and the site name side by side, doubling the brand. With a logo set, the text is now kept for screen readers only; without a logo, the text brand still shows.
- The Pets homepage listed every category — including empty ones and the seeded "Uncategorized" — each with a "0" badge. Category lists now show only categories that actually have published posts, without count badges.
Zero-Setup Scheduling: Posts Publish On Time Without a Server Cron
Added
- Scheduled posts and the content queue no longer depend on a server cron job. A built-in scheduler keeps a "next job due" timestamp and, when that moment arrives, runs the publishing engine right after a page response has been delivered to the visitor — so a post scheduled for 14:37 goes live on the first visit at or after 14:37, and the visitor never waits for it. On hosts that cannot detach the response, the work is handed to a lightweight background request instead.
- A real cron job is still first-class: when one is configured it takes over completely and the visitor-triggered scheduler switches itself off, adding zero overhead. It can also be disabled explicitly with the JEK_DISABLE_PSEUDO_CRON constant.
Improved
- The old fallback rolled a dice on every request (a 1% chance), which meant late posts on quiet sites and wasted database work on busy ones. The new scheduler is deterministic: on a normal request it reads one or two tiny files and does nothing else — no database queries, no guesswork.
First-Publish Journey: Redesigned Welcome Guide
Improved
- The dashboard welcome guide was rebuilt as a slim one-line journey rail: a circular progress ring, five connected step dots and a single call-to-action for whatever comes next. It takes a fraction of the space of the old checklist and reads at a glance.
- The five steps now follow the real order of setting up a site: site identity (name and tagline), logo, first category, first published post, and securing your admin password. Every step updates live as you complete it anywhere in the admin, and each links straight to the right screen.
- "Pick a theme" and "connect an AI provider" are no longer setup steps — keeping the theme you chose during installation is a perfectly good choice, and AI is optional.
Featured Image Path Fix in Theme Templates
Fixed
- A handful of theme templates (Recipes cards and pages, Starter posts, Pets error page) printed the featured image path exactly as stored in the database. Relative paths then resolved against the site root and returned 404, so those images never showed. All of these now resolve through the central image helper, which builds the correct uploads URL and serves the best available format.
Logo Aspect Ratio & Accessibility Fixes
Fixed
- Site logos in the Health and Travel themes now declare their real pixel dimensions instead of fixed placeholder values, so uploaded logos of any shape render at the correct aspect ratio without distortion or layout-shift warnings.
Setup Wizard 2.0: WordPress Migration at Scale & Smart Recovery
Added
- Resumable WordPress migration: progress is saved on the server after every batch — if your browser closes or the connection drops mid-migration, reopening the wizard offers to continue exactly where it left off.
- Same-server fast path: when WordPress lives on the same hosting account, images are copied directly from disk instead of downloaded over HTTP — large media libraries migrate in a fraction of the time.
- Smarter server pre-check: disk space, memory limit, upload size and next-gen image support are now verified up front, with plain-language guidance for anything that needs attention — required items block, optional ones just warn.
- Full WordPress fidelity: pending, private and scheduled posts keep their status, comment reply threads are preserved, comment author links are carried over, and your site logo is localized automatically.
Improved
- Wizard actions are protected with a per-session token, and the legacy parameter that allowed re-running installation on an already-installed site has been removed.
Fixed
- In-place migrations (same domain) now migrate images correctly: previously same-domain image URLs were skipped as "already local", and removing the old WordPress files afterwards broke every image in your content.
- Large sites no longer risk server timeouts: imports run in time-budgeted batches with keyset pagination, and comments are imported in batches too — sites with tens of thousands of posts and comments migrate reliably on shared hosting.
- Tag and category names containing commas are no longer split into separate terms, and long tag lists are no longer truncated.
- Your existing .htaccess is backed up before installation replaces it, featured images resolve from WordPress metadata instead of unreliable legacy URLs, and stale responsive image attributes pointing at the old site are cleaned up.
- The setup wizard now speaks your language end to end — every server-side message is available in English and Turkish, and unrecoverable server errors return a readable explanation instead of a blank response.
Managed-Install Indicator Hardening
Fixed
- Centrally-managed installations without the license enforcement stack no longer show a dead-end "Update Available" banner and sidebar badge — the managed-install marker is now honored everywhere the update UI is rendered.
Commerce Core: Updates, License Portability, Plan Upgrades & Support
Added
- License portability from the customer panel: see every site bound to your license, remove one to free the slot, add a new domain, and activate there — moving a license between sites takes a minute and needs no support ticket.
- Theme and plugin updates now flow through the same signed channel as core: RSA-signed manifest covers every package, one-click theme/plugin updates work in the admin panel, and a publish pipeline ships them (package → verified upload → catalog).
- Plan upgrades from the customer panel: pay only the difference, your license key stays the same, and your site limit rises the moment payment completes — no re-activation on your sites.
- Support hardening: ticket confirmation emails to customers, staff notifications on replies, customer file attachments, priority support wired to your plan (Pro+ can open urgent tickets), and contact-form messages now land in the support queue instead of a write-only table.
Improved
- Core update notes in the admin panel now show the real release changelog instead of a generic package label.
- Update access tier is now read from the license record, so plan upgrades take effect on the update channel instantly.
Fixed
- License seat operations no longer depend on the execution context — the customer panel, admin, and API all use the same database seam (previously the panel path could fail fatally).
- Support tables are now guaranteed with self-healing schema (including legacy installs), so the customer portal cannot hit a missing-table error.
Site-Wide SEO Hardening
Added
- Archive pages (category, tag, author, search) now generate their own unique titles, meta descriptions, and Open Graph tags — no more duplicate-title clusters across archives, on every theme, with no theme changes required.
- Optional tag archives: a new SEO setting turns /tag/ pages into real, sitemap-listed archives (thin tags stay auto-noindexed). Off by default, matching modern crawl-budget guidance.
- Feeds now declare a WebSub hub, so feed readers and discovery services get real-time update pushes; uploaded images receive an automatic humanized alt text when none is provided.
Improved
- The first large content image on each page is now promoted to eager loading with high fetch priority — a direct LCP (Core Web Vitals) win on image-led pages.
- Meta descriptions no longer cut words in half: automatic descriptions now end on word boundaries with clean punctuation.
- Retired Google/Bing sitemap-ping calls were removed from the publish path (they only added seconds of dead waiting), and duplicate IndexNow submissions were deduplicated to a single ping per publish.
- Sitemap accuracy: real last-modified dates in the index, paginated post sitemaps are announced above 50k URLs, and video sitemaps join the index when video posts exist.
Fixed
- Structured data output is hardened: post content is now escaped everywhere a schema is written, so no article can break the schema block.
- Open Graph URLs on archive pages pointed to the homepage; they now match the canonical URL. og:locale now always agrees with the html lang attribute.
- On subdirectory installs the og:image check failed silently and social cards shipped without an image; the base path is now resolved correctly.
- Non-existent category and author URLs returned an empty page with HTTP 200 (soft-404); they now return a real 404. Duplicate Recipe/FAQ schema emissions are prevented page-wide.
Go live today
Setup, content management, SEO and image optimization — all in one platform. Get started in 30 minutes.
View Pricing- Setup and live in 30 minutes
- 14 ready-made themes
- AVIF/WebP image optimization
- Automatic SEO — Sitemap, Schema.org
- Cookieless built-in analytics (ZeroTrack)