What we shipped.
Every release in the last ~6 months. No vapor announcements. If a feature isn't below, it isn't live. Items marked "parked" (Phase 28 Autopilot, Phase G Local SEO) intentionally don't appear here.
Billing: upgrade from anywhere, change plans in place, prices in your currency
Hitting a plan limit now opens one upgrade window wherever you are, instead of an error. Paid workspaces change plan or switch monthly/annual on their existing subscription with a prorated charge, credits carry over properly, and prices show in your local currency.
- NewOne upgrade window across the app: AI credits, feature gates and plan limits all open the same upgrade prompt, with one-click checkout for free workspaces.
- NewChange plan or switch between monthly and annual billing on your existing subscription. Upgrades are prorated and add the new plan's extra credits; downgrades ask you to confirm first.
- NewA billing status strip warns about a failed payment, a scheduled cancellation or a plan that ended, with a one-click way to fix it. Owners can keep a subscription that was set to cancel.
- NewTeam members see a read-only billing page with the plan and who to ask, instead of a dead end.
- ImprovedPrices follow your country (USD, INR, EUR, GBP, CAD, AUD and more) everywhere: homepage, pricing, billing and checkout charge the currency you were shown.
- ImprovedBought and granted credits are kept when your monthly credits refill; annual plans refill every month.
- ImprovedIf your bank asks you to confirm a payment, the confirmation page opens in a new tab and the plan changes as soon as it's paid.
- FixedPayments, renewals and refunds are processed exactly once, even when Stripe retries or sends events out of order.
- FixedThe keyword expander and SEO advisor show the upgrade prompt when you're out of AI credits instead of failing silently.
- FixedScheduled SMS campaigns no longer stall after a quiet-hours window.
AI Calling: connect your own Twilio number
Bring the phone numbers you already own. The workspace owner connects a Twilio account (or we reuse the one from your SMS settings) and imports any of its numbers from the Numbers tab; the AI agent calls from them on our voice platform (and answers calls to them) while Twilio's per-minute rates stay on your own bill — your plan's minutes still apply.
- NewConnect Twilio in Calling → Numbers: paste your Account SID and Auth Token (verified against Twilio, stored encrypted, owner-only), or use the Twilio account already saved in SMS settings.
- NewImport from Twilio lists your account's numbers with their friendly names, marks the ones already imported, and imports each with one click after confirming the takeover (the number's voice routing in Twilio moves to our platform); imported numbers carry a Twilio badge next to Vapi ones.
- NewCalls to an imported number are answered by your AI agent — the saved agent you updated most recently.
- NewOn the shared platform calling account you can now bring your own numbers this way — platform Vapi numbers stay assigned by support.
- ImprovedRemoving an imported Twilio number releases it from our voice platform too (your Twilio account keeps it — then re-set the number's voice webhook in Twilio if you want it to ring somewhere else), and the console says if the release didn't go through; a number in use by a campaign or a live call can't be removed until it finishes. Changing or removing the Vapi key is refused while imported numbers exist — remove them first.
Social Media: only your own accounts, no double posts, and failed posts you can actually retry
Twelfth feature reviewed against its own code. An account ID typed into one workspace could publish to another business's page, a slow publish could post twice or get stuck, and the Retry button on failed posts could never work. All fixed, plus starter drafts that can't go out by accident and reports that cover the right month.
- FixedCreating a post by hand or with "Fill my week" no longer fails with an error.
- FixedA workspace can only publish to social accounts it has been verified to own, chosen from a list instead of typed in; each account belongs to one workspace, and ownership is re-checked every time a post goes out.
- FixedA post is never sent twice to the same channel — not after a slow network call, not after a retry, not when a channel was listed twice — and a post can no longer get stuck in "publishing".
- FixedRetry on a failed or partly published post works from the Today screen; you're warned first if a channel may already have gone out, and a channel that keeps failing can be dropped.
- FixedOnce a post has gone out on any channel its text is locked; its date can still be changed while channels are left to retry.
- Fixed"Fill my week" drafts are marked as starters and can't be scheduled until edited; clicking twice doesn't double them, late-day posts move to tomorrow, and times in the past are refused.
- FixedDaylight-saving days, brand timezones and the monthly report's month are handled correctly; the monthly report now covers the whole previous month and is sent once.
- ImprovedEach plan has a clear number of connected accounts (Starter 3, Growth 8, Agency 25); after a downgrade the extra accounts show as "Paused — over plan limit" instead of failing silently.
- ImprovedThe AI assistant shows the caption it is about to publish, lists what blocks a post, and won't publish into the past; caption writing counts against your AI budget with a fair hourly limit.
AI Calling: no calls to the wrong person, respectful calling hours, and every call counted
Thirteenth feature reviewed against its own code. Bare Indian numbers were dialed as North American ones, single calls skipped the do-not-call list, campaigns dialed at any hour, and a slow provider reply could call someone twice or leave a call uncounted. All fixed, with three rounds of checks on top.
- FixedNumbers without a country code use your calling number's country — a +91 workspace no longer dials 9876543210 as a North American number.
- FixedThe do-not-call list is checked on every call: campaigns, "Call now" and calls the AI assistant places.
- FixedCalls only go out 8am–9pm in the person's local time (9am–9pm in India), including retries; Hawaii, Alaska, Atlantic Canada and the Caribbean use their own clocks, and countries we can't time-check are refused.
- FixedA slow or failed reply from the calling provider never leads to a second call to the same person; the call is found and recorded instead.
- FixedEvery call's minutes are counted, and calls in progress hold minutes so a workspace can't run far past its monthly allowance.
- FixedCampaigns no longer stall on one bad number, get stuck "calling", or stop other workspaces from dialing; a paused campaign finishes when its last calls end.
- FixedA workspace can only call from its own numbers; call logs and recordings are limited to owners and admins, and only the owner can change the Vapi key.
- ImprovedStarting a campaign asks first; imports explain skipped rows (duplicates, do-not-call, other countries) and read Excel/Sheets CSVs with the phone in any column; campaigns can be scheduled, deleted and paged; inbound calls show in the log.
Team chat tasks: turning task tracking off stops it, and escalated tasks stop repeating
In one group the AI kept asking about tasks after the group's admin had turned task tracking off, and one task reached "strike 23 of 3". Turning tracking off now closes the group's open tasks, and an escalated task gets no more daily strikes.
- FixedTurning off "Track task commitments" closes that group's open tasks at once — no strikes counted, no more reminders, and they leave the daily brief. Groups that were already switched off are cleaned up automatically.
- FixedOnce a task is escalated to the group admins, the AI says it will stop asking and does; it no longer adds a strike every day.
- ImprovedStrike counts past the limit read "strike 4 (already escalated)" instead of "strike 4 of 3".
Email Marketing: Pause and Cancel always stick, opt-outs and complaints are always honoured, no duplicate sends
Tenth feature reviewed against its own code. A campaign cancelled mid-send could start sending again, a brief database hiccup could send an email twice or lose a bounce, and addresses with capital letters slipped past replies, GDPR requests and revenue. All fixed, plus fairer sending across workspaces and clearer screens.
- FixedPausing or cancelling a campaign always takes effect, even mid-send; campaign actions only allow sensible moves (a sent campaign can't be cancelled or resent) and explain why when they can't.
- FixedNo more duplicate emails after a provider timeout or database hiccup; the sending job answers its scheduler straight away so it can't be switched off for running long.
- FixedThe monthly contact limit counts emails waiting in the queue, so two big campaigns can't together go over it; paused campaigns don't use up next month's limit.
- FixedUnsubscribes, complaints and bounces always stop mail: a missed bounce notice is retried, shared-sender bounces are recorded, an unsubscribe never downgrades a complaint, and re-subscribing only lifts the person's own opt-out.
- FixedEmail addresses with capital letters are matched properly for GDPR export and erase, reply-to-stop on sequences, bounce clean-up and campaign revenue.
- FixedDouble opt-in needs a real click on a confirm button, so email security scanners can't subscribe someone; link-scanner clicks no longer count as real clicks or opens.
- FixedContent in the drag-and-drop editor is cleaned and previews run in a locked-down frame; Send, Schedule and Test stop if saving your edits failed.
- ImprovedSequences and journeys are processed fairly across workspaces; replies in a connected mailbox stop sequences; journeys can't loop without a wait and start from lead-form, booking, workflow and list-add events.
- ImprovedCampaign revenue is counted when payment is confirmed and credits the latest click; segments with "is not" include contacts whose field is empty.
- ImprovedYou can see why a campaign or journey was paused automatically; AI drafts count against your AI budget; image uploads and the send API have fair-use limits.
SMS Marketing: every STOP honoured, no double texts, local times and Indian numbers handled
Eleventh feature reviewed against its own code. A reply like "Stop." wasn't treated as an opt-out, a database hiccup after Twilio accepted a text could send it twice, new campaigns defaulted to UTC quiet hours, and bare Indian numbers were turned into North American ones. All fixed, plus fairer sending across workspaces and a new analytics tab.
- FixedOpt-outs are recognised however they're written — "Stop.", "STOP!", "please stop", "remove me", OPTOUT, REVOKE — and are recorded even while Twilio is disconnected. A STOP a person sent can't be removed by the team; only their START lifts it.
- FixedA text Twilio has accepted is never sent again after a timeout or database hiccup; when the outcome is unknown the app says it may have been sent instead of "rejected".
- FixedNew campaigns use your device's timezone for quiet hours (and warn when a campaign is on UTC); PST, EST, IST and similar names are understood.
- FixedNumbers without a country code use your SMS sending number's country — a +91 sender (or an INR workspace) keeps 9876543210 Indian instead of turning it into a +1 number.
- FixedCancel, pause and consent always stick while a campaign is sending; a campaign can't lose its consent and still go out.
- ImprovedEvery connected workspace gets its turn to send, sending jobs can't freeze on a slow Twilio call, and the weekly and monthly limits count texts already queued and only contacts that can actually be texted.
- ImprovedWorkflow texts respect 8 am–9 pm, add the opt-out line on first contact, support Messaging Services and accept local number formats.
- ImprovedNew SMS Analytics tab; the opt-out list gets bulk import, CSV export and search by local format; MMS attachments open safely.
Rank Tracker: 59 countries, organic positions, one digest per project — and an honest page
A review of the rank tracker against its own code. The public page promised share-of-voice, postcode-level local pack, white-label PDF export and anomaly alerts that were never built; it now describes what exists. Under the hood: a shared country table with 59 markets replaces four disagreeing 14-country copies, positions are organic rank rather than absolute SERP slot, the daily email is sent per project, and plan limits apply everywhere they should.
- Improved59 countries for rank checks (was 14, with everything else silently tracked against US Google). Unsupported codes are refused when a keyword is saved.
- FixedPosition is the organic rank (DataForSEO rank_group), not the absolute SERP slot that counted ads, videos and People Also Ask.
- FixedDaily rank email is built per project, so every link points at the right client and a site without a project no longer silences the whole workspace.
- FixedOvernight movement is measured against the previous day's stored check, so a manual refresh during the day no longer hides the move.
- FixedRefresh and Refresh-all respect the plan's tracked-keyword cap; the nightly run skips Free workspaces and caps downgraded ones.
- ImprovedRefresh all runs server-side at bounded concurrency; the tab no longer has to stay open.
- ImprovedThe tracked-keyword counter in the Rank Tracker tab is workspace-wide, matching the limit it is compared to.
- FixedSwitching a keyword between desktop and mobile resets its cached position instead of showing the other device's number.
Keyword Intelligence: difficulty on every keyword, a gap measured against your own rankings, and an honest page
Second feature reviewed against its own code. Keyword difficulty now arrives for every saved keyword and in every expansion row (it was missing unless the keyword came from a research run). The competitor gap compares against the keywords your domain actually ranks for instead of the ones you happened to save. Research results are cached for 30 days. The public page no longer promises SERP-feature icons, a CSV import wizard or Claude reading the top-10 SERP.
- ImprovedKeyword difficulty (DataForSEO Labs KD) is fetched for every saved keyword and shown in expansion results; the Easy wins filter now works for keywords you added by hand.
- ImprovedExpansion rows carry intent, and saved keywords keep it — no waiting for a weekly backfill.
- ImprovedCompetitor keyword gap: 'you rank for it' means your domain is in the top 20 for the term (from DataForSEO, refreshed weekly), with your position in a new column and in the CSV.
- ImprovedKeyword research results are cached 30 days per seed and locale; 59 countries and 30 languages in the picker.
- FixedEnrichment and intent classification of newly added keywords now reliably run after the save instead of only when the server happened to stay warm.
- FixedCompetitor sync respects each workspace's plan cap.
Technical Audits: desktop Core Web Vitals, a score you can trust, issue status, CSV export — and a page that says what it is
Third feature reviewed against its own code. The audit is a single-page check with Claude fix guidance, not the full-site Playwright crawl the page described; the page now says so. Underneath: private and internal URLs are refused, PageSpeed runs for desktop as well as mobile, the score is computed from the issues rather than by the model, issues can be marked resolved, every audit downloads as CSV, and each plan has a monthly audit allowance.
- FixedAudit fetches go through the same SSRF guard as the public tools: private ranges, localhost and cloud metadata addresses are refused, redirects re-checked, bodies capped at 2 MB.
- ImprovedCore Web Vitals on desktop as well as mobile. INP is reported only when measured (it was substituted with Time to Interactive).
- ImprovedDeterministic 0–100 score from the issues found — the same page gets the same number twice.
- NewMark issues resolved or ignored; open ones sort first. Download any audit as CSV with fix steps.
- FixedIssue ordering was alphabetical on the impact label (medium before high); now high → medium → low, then severity, then effort.
- FixedMeta and canonical detection no longer misses tags that carry data-* attributes or unusual attribute order; nested header/nav/footer no longer shrink the word count.
- ImprovedAudits per month per plan: Free 3, Starter 30, Growth 150, Agency 500, Scale 2,000. Queuing a URL that is already running returns that audit instead of a second run.
Pages & Indexing: IndexNow that actually reaches Bing, an honest Google quota, safer discovery
Fourth feature reviewed against its own code. IndexNow was sent with a key no customer had ever been shown, so Bing and Yandex rejected every notification; the key, a live check and one-click install are now on the Pages screen. The Google quota now reflects that every customer shares one daily Indexing API pool, reads your plan correctly, and article publishes count against it. Sitemap discovery and the crawler are protected against internal addresses and oversized files.
- FixedIndexNow: your key and the URL to host it at are shown on the Pages screen with a live check; one click installs it on ItzSEO-built sites. Submissions report per host whether IndexNow was sent.
- FixedDaily Google submission quota reads your workspace plan (Enterprise and admin-upgraded workspaces were getting the Free quota) and accounts for the shared daily pool; the meter shows both.
- FixedArticle publishes and resubmits now count against the same quota as the Pages screen.
- FixedA Google rate-limit no longer counts as a failed attempt; the URL is queued for the next day instead.
- FixedSitemap discovery and the page crawler refuse private and internal addresses, re-check redirects and cap file sizes; one crawl per project at a time.
- FixedSitemaps using CDATA or & in <loc> are read correctly; a <urlset> at a sitemap_index URL is no longer treated as an index.
AI Search Visibility: a security fix, Gemini working again, who gets cited instead — and a page that matches the product
Fifth feature reviewed against its own code. The review found an access-control bug in the shared project check, fixed for every project API. Gemini scans had been failing since Google retired the model they used, and could never match your domain even before. Scans are now bounded and resumable, results say whether you were linked or only named, the dashboard shows which domains the engines cite for your questions, recommendations are one per question, llms.txt links only to your real pages, and each plan has a tracked-question allowance. The feature page now describes four engines scanned on demand.
- FixedProject API routes now always act on the project in the URL; a mismatched ?projectId= is refused instead of being used for the permission check.
- FixedGemini moved to a current model (configurable with GEMINI_MODEL) and its citations are read from Google's grounding data correctly, so Gemini can match your domain.
- FixedBrand-name matching no longer counts generic words ("seo", "best plumber") as a mention; .co.uk-style domains are handled; results say linked or named.
- ImprovedScans run a few questions at a time with a 60-second limit per engine and continue automatically in batches; failed engine calls are refunded.
- NewWho the engines cite for your questions: top domains by share of answers, with your own position.
- ImprovedOne Claude tip per question covering every engine that missed you (was one per engine), up to 20 per click.
- Fixedllms.txt is built from your Search Console, sitemap and crawled pages and links only to them (it used to invent paths and prices). 1 credit per generation.
- ImprovedTracked questions per workspace: Starter 10, Growth 50, Agency 200, Scale 500. The table and share trend always show the latest result for every engine.
- FixedOpen-opportunity cards no longer list audit issues you marked resolved or ignored.
Integrations: GA4 ownership check, daily Search Console and GA4 sync, safer fetches — and a page that lists what exists
Sixth feature reviewed against its own code. Connecting GA4 through ItzSEO's shared service account now requires proving you control the website the property measures; connections made before this need one re-verification. Search Console and GA4 data now refresh daily instead of only when someone clicked Sync. WordPress publishing, the WordPress connection test, workflow webhooks and the ownership check only reach public addresses, and Meta tokens are encrypted at rest. The Integrations page now lists the integrations that exist — Linear, Jira, Shopify and Webflow were never built.
- FixedGA4 service-account connections need a web data stream on the project's domain and proof of that domain (meta tag, DNS record, or the project's verified Search Console connection). Existing ones show Re-verify and are paused until then.
- NewDaily Search Console (28 days, top queries and pages) and GA4 (30-day totals) refresh for every connected project; reports and weekly insights read fresh data.
- FixedImages downloaded for WordPress publishing go through the SSRF guard (public addresses, images only, 15 MB cap). The WordPress connection test and API calls refuse internal addresses and explain redirects instead of silently following them.
- FixedWorkflow HTTP steps resolve the host and refuse private addresses; names like fcc.gov or fdic.gov are no longer blocked by mistake.
- FixedMeta Ads access tokens are encrypted at rest like every other integration credential.
- ImprovedThe Google sign-in callback re-checks the connect permission before saving tokens.
- FixedIntegrations, Content Studio, Tasks, pricing, plan lists, FAQ, persona pages and help articles no longer mention Linear, Jira, Shopify, Webflow, a WordPress plugin, or API plan tiers that don't exist. The REST API and workflow webhooks are on every plan.
Answer Engine: who holds Google's answers for your keywords, and how to win them
A new tab next to AI Search. For every keyword you track, the daily rank check now records who holds the featured snippet, which sites the AI Overview cites and who answers each People Also Ask question. Answer Engine marks each keyword yours, winnable or rank-first, shows the domains holding the most answers, lists every question people ask, checks your ranking page's answer readiness for free and writes a how-to-win plan on request.
- NewAnswer Engine tab: featured snippet owner, AI Overview sources and People Also Ask answers per tracked keyword, filtered by yours / winnable / rank first / no answer box.
- NewQuestion bank of every People Also Ask question across your keywords, the ones you don't answer first, each one click from a Content Studio draft.
- NewAnswer-readiness checklist for your ranking page (free) and Claude's how-to-win plan (2 credits).
- NewThe daily rank email lists featured snippets won or lost once the change holds for two checks; client reports and the portal show answers held.
- ImprovedOwning the featured snippet now counts as ranking at the snippet's position (#1). Google often drops the quoted page from the results below it, which the Rank Tracker used to show as "not ranking".
- ImprovedOn Growth and above, rank checks also load AI Overviews that Google renders after the page.
- FixedThe Rank Tracker's AI Overview and People Also Ask badges now work: rank checks used a DataForSEO endpoint that never reports either, so both were always off.
Content Studio: real links, sourced figures, tables that render — and a page that matches the product
Seventh feature reviewed against its own code. Generated articles linked to pages that didn't exist on the client's site and stated statistics with no source; both are fixed. Tables, dividers and lists now render everywhere an article is shown or published. Long pillar pages no longer get cut off silently, a blank audience no longer breaks the brief, and briefs follow the project's country. Briefs and articles now use credits, refunded when a generation fails. The feature, persona and comparison pages now describe the product that exists.
- FixedInternal links only to pages that exist on your site (Search Console, Pages & Indexing, crawl, published articles); any other link to your site becomes plain text on save, publish, preview and export — including articles written before this fix when they're republished.
- FixedFigures, prices and studies only from the brief's facts taken from the live search snippets, linked to their source.
- FixedMarkdown tables, horizontal rules, code blocks and lists after a line of text render in the editor preview, client portal, site blogs and WordPress (they showed as pipes and dashes). Raw HTML is still never rendered.
- FixedArticles up to 8,000 words are no longer cut off at ~6,000; a run that stops early or fails says so in the generator and on the article, and a failed run leaves no empty draft.
- FixedA blank Target audience no longer fails the brief, and pillar-length briefs (over 6,000 words) work.
- ImprovedBriefs use the project's country and language for the live results, and articles are written for that country instead of always in US English.
- ImprovedBriefs cost 1 credit and articles 1 credit per started 1,000 words, refunded in full on failure and in part when cut off.
- FixedContent Studio, Voice-Preserved Import, the persona pages, the homepage and the Surfer/Frase/Clearscope comparisons no longer claim live SEO scoring, 30+ schema types, an editable outline step, AI Actions, per-plan article quotas, FAQ/schema in the SEO footer, bulk CSV import or which model competitors use.
Web Design: published sites can't act on your account, undo that restores the right thing, custom domains on every paid plan
Eighth feature reviewed against its own code. A published site could send requests to the app as a signed-in visitor, and the editor's preview could reach the app; both are closed. Undo, restore and theme changes no longer lose work, AI edits no longer overwrite a page you saved meanwhile, and forms can't be used to flood your inbox or CRM. Custom domains now come with every paid plan, and the feature page describes the product that exists.
- FixedPublished sites and the editor preview can no longer make requests to the app with your session; site files are served so they can't run scripts; imports, logo fetches and page matching can't reach private addresses; oversized ZIPs are refused instead of filling memory.
- FixedUndoing a shared header or footer edit restores the header or footer — it used to paste the old header into the page. Undo keeps site-wide styles changed later on other pages, and says so.
- FixedChat and AI element edits no longer overwrite a page saved while Claude was working (you're told and the credit comes back); code edits are saved before a chat message is sent.
- FixedRestoring a published version to the draft keeps pages added since and can be undone page by page; theme changes can be undone; the "unsaved changes" banner no longer offers to restore an old copy over newer work.
- ImprovedCustom domains on every paid plan (up to 5 per site), with SSL for the domain and its www; unverified claims expire after 7 days. A verified domain becomes the site's canonical address in page tags, the sitemap and robots.txt.
- ImprovedAI element edits cost 1 credit and Code IDE agent steps 1 credit each, refunded on failure. Long site builds and chat turns no longer get cut off with credits spent, and a stalled build no longer charges again.
- FixedForms: floods, link spam and oversized posts are filtered before they reach the inbox, CRM or email; notification emails go only to workspace members; the Submissions tab no longer breaks on an unusual page URL.
- FixedAn unpublished site keeps its address for 30 days, then it can be claimed; published sites get their own favicon, manifest, CSS and JS files at the root; sites over a downgraded plan's limit show a paused page.
- FixedThe Web Design page, homepage, agency page and web-design pricing no longer claim a drag-and-drop builder, Cloudflare Worker hosting, auto-submission to Google, built-in schema, "no ecommerce", a 14-day trial, more sites or badge removal on Starter, or priority generation.
Site blog: approval on every publish path, blog pages that look like the site, and posts that can't vanish
Ninth feature reviewed against its own code. The AI assistant could publish a post the client hadn't approved; deleting an article or moving a site could leave posts gone or unmanageable. Blog pages on imported sites had no menu or footer. Canonical addresses, the sitemap, the feed and post titles now agree, and images written into an article body are kept with the post.
- FixedThe client-approval check runs on every way a post goes live, including the AI assistant.
- FixedDeleting an article that's live on a site blog is refused until it's unpublished; moving a site with live posts is blocked with an explanation.
- FixedBlog pages on sites without a shared header (most imports) use the home page's header, footer and styles, and the Blog menu link appears on those sites.
- FixedTurning on the blog checks every kind of page for a /blog clash, a new page can't be created at /blog while the blog is on, and publish checks warn about one.
- ImprovedLinks, canonicals, previews and the RSS feed use the site's primary domain while the plan serves it; the sitemap lists /blog and leaves out posts that point to their WordPress copy.
- ImprovedA post's title, byline and description stay as published until you republish; page numbers past the last page return a 404.
- ImprovedImages written into the article body are copied with the post; image downloads stop at 10 MB; unpublished posts free their media space.
- ImprovedBlog settings: Republish and Publish again buttons, a confirmation before unpublishing, and an old post address can't be taken by another post.
- FixedStore pages on imported sites now show the site's header and footer too, with a canonical on the site's primary domain; a deleted site's or project's blog images are removed from storage.
Every module now has a public page, plus llms.txt and a generated pricing table
The public site described about half the product. Twelve new feature guides (email, SMS, social, graphics studio, live chat, calling, booking, team chat, workflows, accounting, courses, store), every feature page in the sitemap, /llms.txt and /llms-full.txt for AI assistants, structured data on every marketing page, and a pricing matrix generated from the plan definitions instead of typed by hand.
- New39 feature guides under /features, all linked from the features index.
- New/llms.txt and /llms-full.txt describe every module for ChatGPT, Perplexity, Claude and Copilot.
- Improved/pricing feature matrix is derived from lib/plans.ts — real limits for email, SMS and calling; no invented gates.
- FixedThe 28 free SEO tools were behind sign-in since 9 September; public again.
- InfrastructureIndexNow submission for the marketing site (Bing, Yandex, Naver, Seznam).
Inbox reliability: response-time ladder, Revenue tab, knowledge base and a grounded AI first responder
A customer paid and refunded within 27 minutes because four threads about one question went unanswered. Customer conversations now get a holding reply at 5 minutes, a re-alert at 15 and escalation to a named teammate at 60; they sit on their own Revenue tab; and the widget assistant answers only from a knowledge base you write, handing refunds, complaints and cancellations to a human at once.
- New5 / 15 / 60-minute SLA ladder on every customer thread, with settings for the holding reply, reply window, fallback teammate and booking link.
- NewRevenue and Internal inbox tabs; first-response-time reporting weekly and on Team performance.
- NewKnowledge base (/settings/kb) with verified dates; stale entries that quote a price are never used.
- NewWidget AI assistant: grounded answers, price post-check, escalation gate for money and complaints.
- NewOne contact, every thread: chat, lead-form, email and social conversations linked to the same person; contact timeline in the chat pane.
- FixedExternal visitors were shown as "Unknown" in threads; test form submissions no longer create contacts or emails.
Social Graphics Studio editor: canvas, resize, rotate, add layers, undo
Generated graphics are now editable on a canvas: select and drag with snapping, resize and rotate, add buttons and text, pin a change to one size or apply it everywhere, undo and redo, and warnings drawn on the exact layer that overflows or sits under a platform's own UI.
- NewCanvas editing with per-size scope and a layer inspector.
- NewRenders report when they are behind the design; one-click re-render of every size.
- FixedOpening a design from the library could push it onto the previous design's undo stack.
Social Graphics Studio: one brief, nine sizes, text that is never misspelled
A brand kit (colours, fonts, logos, contrast-checked), ten templates with real Story layouts, an AI art director that writes copy to fit each box, imagery generated once and reflowed into Instagram, Story, LinkedIn, X, Facebook, YouTube and Google Business sizes. Renders attach to scheduled posts.
- NewBrand kit at /settings/brand-kit, seeded from workspace branding, with WCAG contrast checks.
- NewArt director validates copy before any imagery is paid for; templates with no image slot never call an image model.
- FixedText painting through text on 58 of 90 template/format combinations is now detected and warned.
Live chat widget for any website
One script tag adds a chat bubble to your site. Messages land in the team inbox; visitors can be asked for name and email first; no cookies; a typed email is confirmed from the inbox before it ever receives a live link.
- New/settings/live-chat: colours, allowed domains, designated agents, pre-chat form.
- NewLazy-loaded panel, DB-backed rate limits, stateless signed sessions.
- FixedExternal chat no longer exposed internal members' email addresses to guests.
Hubs navigation is the default; AI kill switch; landing-page forms
Every account now starts on the hub navigation (rail + contextual sidebar); Classic stays one click away. A global AI kill switch lets the platform restrict AI to workspaces with a live subscription or an explicit grant. Lead forms gained a landing-page layout, paired fields and a polished success state.
- ImprovedHUBS nav default with a permanent Classic hatch in both directions.
- InfrastructureAI entitlement gate covers every AI call site, including crons and webhooks.
- ImprovedOne reaction per user per message, WhatsApp-style.
Chat Quick Panel, IDE screenshots, AI group tools
Notes, reminders and your tasks sit beside the chat; a message becomes any of them in one tap. The code IDE's agent chat accepts screenshots. The AI agent can create groups and add members by name — including names with emoji in them.
- NewQuick Panel in the chat shell with autosaving notes.
- NewScreenshot attachments in the Code IDE agent chat.
- ImprovedPerson matching ignores emoji and whitespace so real display names resolve.
Hosting moved to Vercel
The app now runs on Vercel with Neon Postgres and Cloudflare R2 storage. Faster cold starts and builds, and customer domains provision SSL through the Vercel Domains API.
- InfrastructureServerless deployment; file storage fully on R2.
- InfrastructureCustomer-domain SSL via Vercel alongside the previous provider.
- InfrastructureWhatsApp inbox paused: it needs an always-on connection the new hosting does not provide.
AI is paid-only; 42 new agent tools
Generative AI (chat assistant, articles, website building, images) now requires a paid plan; the Free plan keeps audits, Search Console, publishing and the core tools. The in-chat agent gained tools for forms, booking, the workflow builder, calling, insights and more.
- ImprovedFree-plan copy states plainly what needs a paid plan.
- NewAgent tools for forms, booking pages, workflows, calling campaigns and insights.
Site Blog on every ItzSEO-built website; SMS analytics
Articles from Content Studio publish to a blog on any site built in ItzSEO — /blog index, per-post pages in the site's own theme, RSS, sitemap, Article schema, 301s on slug changes. SMS campaigns gained segment counting, click tracking, analytics and compliance checks.
- NewDual-target publishing: WordPress and ItzSEO-hosted sites, tracked independently.
- NewSMS: GSM-7/UCS-2 segment counter, link clicks, delivery analytics, carrier warm-up pacing.
Account delegates, command palette, SMS conversations
Invite a freelancer or technician with account-level access under their own login, with optional Integrations, Store and Accounting scopes and audit-stamped actions. A global command palette (⌘K) indexes every page. SMS replies land in the inbox as conversations.
- NewDelegate access with owner-controlled scopes; billing and ownership never delegated.
- New⌘K palette with recents and pinned pages.
- NewSMS reply composer and outbound-first SMS threads.
Bulk SMS campaigns over your own Twilio
Compose with merge tags, send to lists and segments, honour STOP/START, quiet hours and a frequency cap, and see Twilio's delivery status per recipient. Recurring campaigns that rotate through a list followed on 29 August.
- NewOpt-out registry, consent attestation, auto opt-out footer on first contact.
- NewMPS-paced send queue with per-recipient delivery ledger.
Transactional email API, WordPress plugin, attendance rules engine
Send transactional email from your own apps through the API, with a WordPress plugin. Per-employee attendance rule profiles with shadow mode, deductions that flow into payroll, absence reporting and a weekly owner digest.
- NewPOST /api/v1/email/send with scoped API keys and docs.
- NewAttendance rules: presets, per-weekday minimums, monthly deduction summary with one-click waivers.
Attendance and task commitments inside team chat
Clock in and out by messaging a group; the tracker asks office or home, keeps an on/off/break ledger and follows up. Assignments in chat become tracked commitments with AI follow-ups. A nightly report grades the day and DMs the owner.
- NewGroup attendance tracker with HR reports.
- NewTask-commitment tracker; nightly compliance report with standup cross-reference.
- ImprovedRead receipts on all group messages, image download, notification sounds.
Email marketing growth wave: journeys, block builder, deliverability
Journeys that start when a contact joins a list or gets a tag, a block-based composer, re-opt-in flows, deliverability signals, throughput controls, forms that subscribe straight to lists, and a campaign command centre with the sending plan and recipient ledger.
- NewJourneys with branches, waits and exit-on-purchase.
- NewHostinger mailboxes (IMAP/SMTP) in the unified inbox.
- ImprovedVisible hourly send timeline per campaign.
Mobile 2.0 and WhatsApp-parity chat
Five mobile passes: a More menu generated from the navigation map, project chip bar on phones, 44px touch targets, swipe actions, decide-in-place approvals, tap-to-join meetings. Chat gained the unread divider, link previews, presence header, camera capture, voice-note speed and chat export.
- ImprovedMobile parity guard in CI between desktop navigation and the More menu.
- NewChat export, delete-for-me, exact read times.
Hub navigation (opt-in)
A new way around the product: a hub rail with a contextual sidebar, grouped by the job you are doing rather than by module. Opt-in at first, with a Classic toggle and a find-a-page search.
- NewHub rail + sidebar, hub-grouped mobile More menu.
- InfrastructureNavigation-map drift guard so every listed page resolves to a real route.
AI phone calling
Voice agents with their own phone numbers place outbound calls to lead lists through Vapi, within a monthly minute budget, with a do-not-call list and a log of every call. Bring your own Vapi account or use the platform default.
- NewCall campaigns with pasted leads, throttle and per-plan minutes.
- NewCourse pages: enriched Course schema, sitemap and editable meta.
Code IDE unification; courses get notes, search, drip, import and AI quizzes
The website builder's classic editor and the code IDE now read and write the same files: themes, section library, form builder and click-to-edit all work inside the IDE, and publishing runs from files. Courses gained student notes, search, drip release, JSON import/export and AI-generated quizzes.
- ImprovedFile-backed sites publish with a parity checker.
- NewAI quiz generation from a lesson's own text or a topic.
Live 1-on-1 course sessions; email send windows and daily campaign reports
Instructors attach a booking page to a course so students book live sessions on a real calendar, and sell session packs on the same 90/10 split. Email campaigns can be held to a sending window and report daily. Any site built in ItzSEO can publish its own llms.txt.
- NewSession packs, entitlements and bookings for courses.
- NewScheduled send windows and daily campaign reports.
- New"Save to my site" publishes llms.txt to ItzSEO-hosted sites.
Bulk email marketing through your own domain, SMTP or ESP
Campaigns and sequences that never send from a shared pool: verified domain, SMTP, or your own Resend, SendGrid, Amazon SES or Postmark key. One-click unsubscribe headers, postal-address footer, per-list double opt-in, a 14-day warm-up and an automatic pause at 0.3% complaints or 5% hard bounces.
- NewLists, segments, suppression lists, AI-drafted subject and body.
- NewCold outreach allowed from Growth over your own SMTP/ESP only.
Online store, accounting engine, voice and video calls, workflow builder, community
A dense week. A storefront on any ItzSEO-built site with your own Stripe or Razorpay account; double-entry accounting with invoices, bills, GST and reports; voice and video calls in chat; the visual workflow builder with approval cards; and a community layer with profiles, posts, Q&A and moderation.
- NewStore: products, variants, stock, shipping zones, tax, refunds, fulfilment, invoice PDFs.
- NewAccounting: chart of accounts, estimates, credit notes, recurring invoices, aging, P&L, balance sheet.
- NewCalls with screen share; owner impersonation for support; collaborator access.
- NewWorkflows: triggers, branches, waits, actions, human approval in chat.
In-chat AI agent, meetings and recordings, default support chat
The ItzSEO agent joins your chat with dozens of tools across the platform, running reads immediately and writes behind an approval card, within a daily budget. Meetings get Zoom and Google Meet scheduling, recordings transcribed by Whisper and summarised by Claude, and an offline mobile recorder. Every new signup gets a support chat with the team.
- NewAgent runtime with approval gate, budget meter and Haiku triage.
- NewMeeting pipeline: audio → transcript → summary → chat message + push.
Android and iOS apps; chat-first mobile mode
ItzSEO ships as native Android and iOS apps with native sign-in, push notifications and a chat-first home screen, with a Work mode for tasks and HR. External chat members can join by email invite and claim the thread when they sign up.
- NewCapacitor apps with native auth and FCM push.
- NewUnified start-chat modal; invite by email; magic-link grace period.
Team Chat: WhatsApp-style messaging for the whole workspace
Direct and group chats, external groups with magic links, media sharing, reactions, replies, read receipts, voice messages, typing indicators, @mentions, mute, and push + email notifications. Public chat-request intake for prospects.
- NewDMs, internal groups, external groups, media, voice notes.
- NewNotifications by push, email and bell with @mentions.
Performance leaderboard: champions + 11 badges shipped
Phase 38.3 closes the leaderboard arc. Workspace-level Champions widget (top output, top consistency, top quality, top collaboration), 7 individual achievement badges (streaks, first-time wins, recoveries), weekly cron firing every Sunday 23:00 IST.
- New/me/scoreboard now displays earned badges in a 'My badges' section.
- New/leaderboard/[deptId] rows include compact badge row next to each name.
- NewChampionsWidget surfaces this week's 4 champions per workspace.
- InfrastructureWeekly cron /api/cron/leaderboard-champions wired (needs scheduler hookup at cron-job.org).
Reminders v1 — multi-channel with two-way client negotiation
Phase 37 ships end-to-end. Account-level personal reminders + client-portal-initiated reminders with two-way date negotiation (counter-propose / accept-date). Multi-channel notifications: morning digest, day-of, overdue. Quiet hours + bell badge.
- New/reminders page with Today / Upcoming / Snoozed / Done / Overdue tabs.
- NewClient portal request form (every other todo tool requires owner-creates-only).
- NewCounter-propose modal — client can suggest alternative dates, owner accepts.
- NewSLA badges + Overdue filter chip on /reminders.
- InfrastructureHourly cron /api/cron/reminders-tick for digest + day-of + overdue email delivery.
Configurable HRMS — Phase 31 fully shipped
Every Blogrator HR policy now lives in HrPolicyConfig per-workspace. Ships with 5 starter packs (Indian agency, US salaried, etc.). 8 sub-phases including config wizard, punch system, personal calendar, HR oversight, leave with comp-off, workspace holidays, shifts + auto-close, overtime, HR reports with CSV.
- NewPhase 31.0 config wizard — 15-minute setup with starter-pack templates.
- NewPhase 31.1–31.2 punch + personal calendar.
- NewPhase 31.3 HR oversight + retroactive-add for HR-managed corrections.
- NewPhase 31.4 leave system with workflow + comp-off.
- NewPhase 31.5 workspace holidays with template import.
- NewPhase 31.6 shifts + nightly auto-close cron.
- NewPhase 31.7 overtime auto-detection + comp-off via OT credit.
- NewPhase 31.8 HR reports — monthly attendance grid + leave usage + OT with CSV export.
Project hierarchy: parent-as-aggregator (Phase 29)
Workspaces can now nest projects up to depth=1. Parent project aggregates child Tasks / Articles / Standups for reporting. Delete-refuse when children exist. Blogrator Web Service is now the parent of 45 child projects; 293 tasks aggregating.
- NewParent project list shows rolled-up child task counts + status chips.
- NewSettings card to add/remove child projects to/from a parent.
- ImprovedBulk-visibility scope corrected post-QA — parent-only managers no longer see siblings.
Annual billing — 2 months free toggle live
Phase B4 adds monthly/annual interval toggle to /pricing and /settings/billing. 24 new annual Stripe Prices loaded. 'Two months free' math surfaced as a savings badge. Default to annual selection.
- NewMonthly / Annual toggle on /pricing — annual default-selected.
- NewPer-tier 'save 2 months' badge with computed dollar amount.
- InfrastructureSTRIPE_PRICE_*_ANNUAL_USD/INR/CAD/EUR/GBP/AED env vars for all paid tiers.
Multi-currency billing live — 6 currencies end-to-end
Phase B3.5 ships USD/INR/CAD/EUR/GBP/AED with IP-detected default + manual override via ?currency=. All 48 Stripe Prices loaded. Stripe Tax gated behind STRIPE_TAX_ENABLED env var (India accounts can't enable it).
- NewCurrency picker on /pricing — small unobtrusive link row.
- NewIP-based default via Cloudflare cf-connecting-ip → ipapi.co → currency.
- InfrastructurestripeTaxFields() helper in lib/stripe.ts — only attaches tax fields when STRIPE_TAX_ENABLED=1.
Records: Notion-style tables with per-row history (Phase 36)
Typed tables with 7 column types (TEXT/NUMBER/DATE/DROPDOWN/CHECKBOX/PERSON/URL). Per-row revision history + 30-day soft-delete trash. No formulas in v1 (explicit design choice). Replaces the Google Sheets habit for arbitrary record-keeping.
- New/projects/[id]/records — list, create, edit, delete tables.
- NewPer-row revision viewer modal showing diff between versions.
- NewTrash page with restore + 30-day auto-purge cron.
- NewCSV export + import wizard (round-trip safe).
Hosted publishing live at slug.itzseo.com
Phase 5 publishing ships. Customers can publish content to slug.itzseo.com (Cloudflare-proxied) or attach a custom domain. Snapshots + rollback supported. WordPress + Shopify integrations remain for direct-to-CMS publish.
- NewPer-article publish to a customer microsite at slug.itzseo.com.
- NewCustom domain attachment with auto-DNS validation.
- NewSnapshot system — rollback to any previous published version.
- InfrastructureCloudflare Worker routing for wildcard *.itzseo.com.
Pages & Indexing — Phase E shipped
Google Search Console + sitemap parser + bounded crawler + auto-submit cron + URL Inspection recheck. Per-tier daily caps via lib/pages/quota.ts. IndexNow stubs for Bing/Yandex/Naver fire-and-forget.
- New/projects/[id]/pages — filter chips + table view + per-row Inspect.
- NewSitemap generator + crawler bounded by robots.txt.
- NewAuto-submit toggle — daily cron submits new URLs to GSC.
- NewWeekly URL Inspection recheck cron.
- ImprovedFailure-reason tooltip on Not-indexed pill.
Keyword Intelligence — F1 through F4
DataForSEO integration for volume + difficulty + CPC + intent + SERP features. ProjectCompetitor model for keyword gap analysis. Cannibalization detection from GSC page+query data. Claude-powered intent classification.
- NewInline enrichment on +Add keyword — DataForSEO populates metrics in seconds.
- NewFilter chips: Easy wins / High volume / SERP feature opportunities.
- NewKeyword Gap comparison view per competitor domain.
- NewCannibalization tab — surfaces 'two pages, one keyword' patterns.
- InfrastructureMonthly enrichment cron refreshes stale keyword data.
Voice-preserved import + AI SEO footer (Phase H)
New article import mode that keeps your body untouched, plus an optional AI SEO footer below it. (Corrected 2026-09-27: the footer is a short closing with a few tracked keywords and links to your other articles — it has no FAQ, takeaways or schema.)
- NewVoice-preserved import modal in Content Studio.
- NewAI-generated SEO footer: a closing that works in tracked keywords, plus "Continue reading" links to your published articles.
- ImprovedPolish + safety rails preventing body modification.
Daily standups + activity signals (Phase 26)
Schema + API + composer + history shipped. /daily-report auto-prefills from yesterday's activity (commits, articles published, tasks moved). Activity-vs-hours signal for HR with quiet-day filter.
- NewComposer auto-prefills with yesterday's items — edit and submit.
- NewToday's strip on /dashboard showing who's submitted.
- NewFrom-standup → task conversion in one click.
Agency department layer + role gating (Phase 24)
Configurable departments with branch nesting. Per-department task visibility, SLA cron, partial-unique-index for null-branch. Engagement editability with pencil-edit modals + two-click confirm on Cancel/Complete.
- NewPer-department task scoping — managers see only their dept's work.
- NewEngagement detail/financials/deliverables editable inline.
- ImprovedTwo-click confirm for destructive actions (Cancel/Complete engagement).
Want release notes by email?
We don't have a newsletter yet. For now: bookmark this page, follow blogrator.com for our agency's perspective, or email hello@itzseo.com to be added to a notify-on-release list.