> ## Documentation Index
> Fetch the complete documentation index at: https://docs.surnex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# September 2026

> A personal Inbox and channels, invoices in Billing, a new dashboard, Local SEO on a Maps grid, and fixes across audits, domains and backlinks.

<Update label="30 September 2026" description="Every engine and place">
  ### Track keywords on every search engine, in any place

  * **Six search engines.** Tracked keywords can be checked on **Google, Bing, Yahoo, Baidu, Naver and Seznam**. Before, Bing and Yahoo could be chosen, but every check ran on Google. Each engine's keywords are now checked on that engine, with their own history. See [Tracked keywords](/tracking/add-keywords).
  * **Any location.** Track a keyword in any country, region, city, district or postal code the engine searches from. That's all 240 countries and territories DataForSEO lists (Taiwan, Hong Kong and Puerto Rico included) and about 270,000 places for Google, up from 187 countries and a handful of cities. Type to search, for example `austin, texas` or `10001`.
  * **Every language.** About 130 languages, up from 65. The list is the engine's own.
  * **Default search engine.** A project's rank tracking engine is the one new keywords start on. See [Add a project](/projects/add).
  * **Only what DataForSEO takes.** Keyword research defaults (Project Settings) are the country-and-language pairs research covers — South Africa in English, Brazil in `pt`. Search volume is asked only in Google Ads' 46 languages; a keyword in another is tracked with no volume. AI visibility asks Google AI Mode only in its own languages, and Claude only from its 36 countries.
  * **Checked before it's saved.** A location or language the engine doesn't search from is refused with a message, instead of a check that fails every day.
  * **API and MCP.** New: `GET /v1/reference/locations`, `GET /v1/reference/locations/lookup` and `GET /v1/reference/languages`, and the MCP tools `find_location` and `list_search_languages`. `search_engine` is validated on `POST …/tracking/keywords` and project creation. Projects return `search_engine`, their default engine.
</Update>

<Update label="30 September 2026" description="First checks">
  ### New keywords and topics get checked straight away

  * **Tracked keywords** get a first rank check of their own when you add them, instead of waiting for the next scheduled check. Positions land within about 20 minutes; search volume fills in with the next scheduled check. See [Add tracked keywords](/tracking/add-keywords).
  * **AI visibility topics** get a first snapshot from all six engines when you add them, instead of waiting up to a week. It's covered by your plan's AI prompts. See [Add prompts](/geo/overview#add-prompts).
  * **Local SEO keywords** — the first check now searches only the keywords you added, not every keyword at the location again.
  * **Fixed:** adding an AI visibility topic that was tracked in another location or language was skipped as a duplicate. It's now added as its own topic.
  * **Fixed:** a keyword that ranked on its first check sent a "rank improved" alert. First checks don't alert — there's no earlier position to compare.
  * **Fixed:** two people adding the same keyword at the same moment could make one of their lists fail. The duplicate is now skipped.
</Update>

<Update label="30 September 2026" description="Schedule run history">
  ### When your schedules ran, and when they run next

  **Project Settings → Schedules** now shows, for each recurring job, when it runs next and how its last run went: status, when, whether its schedule or someone started it, and how long it took. A failed run says why. A schedule that is overdue, or that was skipped because the organization had no active plan, says so. See [Schedules](/projects/settings#schedules).

  * **Runs** opens a run history for each job — or all four — ten runs at a time.
  * **API.** New: `GET /v1/projects/{projectId}/schedules` for where each schedule stands, and `GET /v1/projects/{projectId}/schedules/runs` for the run history, paged, with an optional `job_type`.
</Update>

<Update label="30 September 2026" description="Faster pages">
  ### Pages load what they show

  Large lists now come from the server one page at a time, and detail loads when you open it, so busy projects open faster.

  * **Backlinks.** Overview loads only the summary. Backlinks, Referring Domains, Anchor Text and New & Lost each load, search and page their own list.
  * **Site audit detail.** Duplicate Content and Resources load when you open their tab, one page at a time. An audit compared against another now counts every issue, however many there are.
  * **Local SEO.** A keyword's full map pack loads when you expand its row.
  * **Keyword research and backlink gap.** A job's keywords and a gap's referring domains load a page at a time and are searched on the server. The summary cards above research results cover every result, worked out on the server.
  * **Tracking comparison and Google AI Overviews.** Keywords are searched and paged on the server.
  * **AI search pages.** A past run's answers load when you open it.

  **API.** New paged endpoints for the backlink lists: `GET /v1/projects/{projectId}/backlinks/links` (with `dofollow_only`), `…/backlinks/referring-domains`, `…/backlinks/anchors` and `…/backlinks/new-lost` (with `mode=new|lost`). Each takes `page`, `per_page` (up to 100) and `search`; `meta.available` is false before the first analysis finishes, and `meta.missing` is true when an analysis finished without that list. `GET …/backlinks/profile` and `GET …/backlinks/profile/{profileId}` now return the summary only, without the lists.

  * `…/audits/{auditId}/duplicate-content`, `…/audits/{auditId}/resources`, `…/tracking/competitors` and `…/tracking/ai-overview-keywords` are paged, with `total` in `meta`. `ai-overview-keywords` still accepts `limit` as an alias for `per_page`.
  * The AI search history (`GET …/ai-search`) no longer includes each run's results; fetch one run by its id for those.
  * Research jobs no longer include their results, in the list or one at a time. New: `GET …/keywords/research/{jobId}/results`, paged with `page`, `per_page` and `search`, with `meta.summary` (count, and average volume, difficulty and CPC over every result).
  * Gap analyses (`GET …/backlinks/gap` and `…/backlinks/gap/{gapId}`) no longer include their rows; they carry `result_count` instead. New: `GET …/backlinks/gap/{gapId}/results`, paged the same way.

  **MCP.** `get_referring_domains`, `get_backlinks_list`, `get_anchor_texts`, `get_new_lost_backlinks`, `get_duplicate_content`, `get_broken_resources` and `get_competitor_comparison` take `page`, `per_page` and `search`, and so does `get_backlink_gap_result`. `get_backlink_gap` answers with the first 25 referring domains and the total. `get_geo_topic_detail` returns sources and answers for the newest snapshot only; older snapshots keep their numbers. See [MCP tools](/mcp/tools).
</Update>

<Update label="29 September 2026" description="MCP tools">
  ### MCP: 97 tools, and tighter checks on the ones that spend

  * **New: `get_backlink_gap_result`** reads a gap analysis already started, free. When `get_backlink_gap` times out, collect the result with it — calling `get_backlink_gap` again buys another analysis. `get_backlink_gap` now always compares your project's own site; it no longer takes a `target_domain`.
  * **Domain tools are the organization's.** `get_domain_overview`, `get_domain_top_keywords`, `get_domain_top_pages` and `get_domain_competitors` take an optional `organization` instead of a `project_id`, so they work while your only project is the sample.
  * **`start_site_audit` and `trigger_web_vitals_check`** take a full URL, and default to the project's home page when none is given.
  * **`get_local_rankings`** returns the latest check's pack by default; `latest_only: false` gives the history, `own_only: true` only your listing.
  * **Counts are what happened.** `remove_tracked_keywords`, `delete_saved_keywords` and `remove_geo_topics` report how many were actually removed, not how many ids were sent.
  * **Inputs match the API.** Ids must be valid ids, and keywords, tags, content text and Trends date ranges are checked and trimmed the same way the API checks them — so the same question isn't bought twice for a stray space.
  * **Local SEO, managed from MCP.** New `update_local_location` changes a location's name, grid or listing; `update_local_keyword` pauses or resumes a keyword; `remove_local_keywords` removes keywords and their history. A grid's spacing is now 0.5, 1, 2 or 5 km — the dashboard's choices — over the API and MCP too.
  * **Audits and web vitals checks are of the project's own site** — its domain or a subdomain — in the dashboard, the API and MCP. Other sites are refused.
  * **Finding a Google Business listing needs an active plan**, and isn't available on the sample project. It still doesn't use an allowance.
  * **Rate limited** per person, like the API.
</Update>

<Update label="29 September 2026" description="Inbox and channels">
  ### Your own inbox, and your own email switch

  Notifications are now **Inbox**, and every member has their own. Reading, selecting or deleting a notification changes it for you and nobody else. See [Inbox](/notifications/view).

  * **Search, filter and settings in the header.** Filter by **Unread only** and by category: rankings, backlinks, site audits, AI visibility, Local SEO, web vitals or reports.
  * **Select several at once.** Hover a notification and its icon becomes a checkbox; a bar above the list marks them read or deletes them.
  * **Clearer notifications.** Ranking changes show each keyword's old and new position; backlink changes show the metric before and after, with a referring-domains spike flagged as possible spam; AI visibility leads with how many topics cite you; web vitals name the page; reports link straight to the report.
  * **The Inbox has moved** to `/<organization>/inbox`. The old address still works.

  **Channels** now splits what's yours from what's the team's. See [Channels](/notifications/preferences).

  * **Your notifications — Inbox and Email.** Each member switches these for themselves. Turning Email off stops it reaching you; your teammates keep theirs.
  * **Team channels — Slack and Discord.** One post per notification for the organization, connected by an owner or admin.

  **API.** Every inbox endpoint now acts for the member calling it. New: `GET` and `PATCH /v1/organizations/{orgId}/notifications/me` for your own switches, `PATCH …/notifications/read` and `POST …/notifications/bulk-delete` for several notifications at once. `PUT …/notifications` now configures Slack and Discord only.
</Update>

<Update label="29 September 2026" description="Billing">
  ### Invoices in Billing, and a banner that says where your plan stands

  * **Invoices are listed in Surnex** — date, number, what it was for, amount and status, with **View** and **PDF**. See [Invoices](/billing/invoices).
  * **The plan banner changes with your plan's state** — amber for a trial or a failed payment, red when a trial has ended or a plan is cancelled — with the one action that fixes it: **Choose a plan**, **Update payment** or **Keep my plan**. See [Manage your subscription](/billing/subscription#the-plan-banner).
  * **Billing portal** has moved to the top of the page.
</Update>

<Update label="29 September 2026" description="Dashboard">
  ### A new project dashboard

  The [dashboard](/dashboard/overview) now shows each area in the chart that suits it: keyword rankings as a distribution bar, Google AI Overviews as stacked bars per check, AI citations per engine, your Local SEO grid, backlink growth with referring domains on their own axis, a link-profile donut, audit scores per audit and a site-health gauge.

  * **Sections that are still collecting say so.** While a job is filling a page — a rank check, an audit, a snapshot — its empty sections show the job in progress and how long it usually takes, instead of looking as if there's no data.
  * **Pages refresh when a job finishes**, without reloading.
</Update>

<Update label="29 September 2026" description="Local SEO grids">
  ### Your listing, searched from every point around it

  [Local SEO](/local/overview) now tracks your **Google Business listing** on a grid. A Maps search gives a different answer three streets away, so each keyword is searched from every point of a grid around the listing — 3×3, 5×5 or 7×7 points, 0.5 to 5 km apart — and each point records your position and the top 3 there.

  * **Locations.** A [location](/local/locations) is your listing plus its grid — what plans count as local locations. Find the listing by business name and town; Surnex recognises it by its Google listing, so a business without a website tracks the same way. Searching for a listing is free.
  * **Keywords at a location.** Up to 10 per location, and they don't use a location of their own. Adding keywords runs the first check straight away. Keywords can be paused, resumed or removed; they can't be edited.
  * **The grid view.** Open a keyword to see its [grid](/local/keywords), the top 3 at each point, and every check's summary — the share of points in the top 3, and your average position where you're found.
  * **New stat cards.** **In the Pack** and **Map Top 3** join the page, and reports gain **Map Top 3 Coverage** and **Avg. Map Position** widgets.
  * **Weekly by default.** A check is one Maps search per keyword per point, so new projects check Local SEO weekly, like GEO.
  * **Paid results are excluded** from positions, and a position past 20 reads as not found.

  New projects no longer copy their keywords into Local SEO — the page starts by asking for your listing. Locations created before listings existed keep their keywords and history, and are checked once for the whole area until you pick their listing.

  **API and MCP.** New endpoints under `/v1/projects/{projectId}/local/places` list, find, add, update and remove locations; `POST /local/keywords` takes a `place_id` and up to 10 keywords; `GET /local/keywords/{keywordId}/grid` returns a keyword's grid. The MCP server gains `list_local_locations`, `search_local_listings`, `add_local_location`, `remove_local_location` and `get_local_grid`, and now registers **93 tools**.
</Update>

<Update label="29 September 2026" description="Notifications">
  ### Email is on by default

  Email notifications were effectively off for every organization: nothing ever switched them on. **Email is now on for every organization until an owner or admin turns it off.** Slack and Discord stay opt-in. See [Notification preferences](/notifications/preferences).

  * **Scheduled reports are always emailed** to the recipients their automation names, whatever the Email switch says.
  * **One notification per ranking alert type**, so turning off **Rank Improved** silences only improvements.
  * **One notification per backlink change** — backlinks dropped 20%+, referring domains down 10%+ or up 50%+, and domain rank down 50+ points. The **New Backlinks** and **Usage Limit Warning** toggles are gone; nothing sent them.
  * **Ranking alerts stay unread** after being notified, until you open them.
  * **Local SEO notifications report the grid**: keywords checked, points where you were found, and the top-3 share.
  * **Webhook URLs are checked.** Slack and Discord accept only the channel's own HTTPS incoming webhook, and members see the URL masked.
</Update>

<Update label="29 September 2026" description="Fixes across the platform">
  ### Rank tracking

  * The same keyword can be tracked in several markets — location, language or search engine — as separate keywords with their own history.
  * Editing a tracked keyword is gone; it never saved most of its fields. Pause, resume and remove remain, and to change market you [add it again](/tracking/add-keywords#change-a-keywords-market).
  * The AI Overview summary describes the **newest check** rather than counting every overview ever seen.

  ### Site audits

  * With **Render JavaScript** on, each page crawled costs **4 pages** of the site audit allowance. See [Run an audit](/audits/run#render-javascript).
  * A crawl that reads no pages now **fails with an explanation** instead of scoring 100.
  * Duplicate title and description issues are counted once per page.
  * **Noindex page** is now **Nofollow page** — it detects the robots `nofollow` directive. The crawl data has no `noindex` signal, so the old name described something it couldn't see.

  ### Domain analysis

  * **Top Keywords** are the domain's highest-traffic keywords, with position, URL and traffic.
  * **Top Pages** drop the backlink column, which the data source never filled, and add **Traffic value**.
  * **Competitors** show whole-site keywords and traffic, plus common keywords and average position. The **Rank** column is gone.
  * The [backlink gap](/backlinks/gap) takes at most four competitors.
  * Domain inputs — domain analysis, gap competitors, project competitors — accept a URL and reduce it to the domain, in the API and MCP as well.
  * [Tech stack](/domains/tech-stack) categories are the data source's own, grouped by type. Versions and confidence aren't provided, so they're no longer shown.

  ### Backlinks

  * A refresh keeps showing the **last completed profile** while it runs, and if it fails.
  * A profile where every section failed is marked failed; one missing some sections says which.
  * Competitor backlink totals cover your five oldest competitors, refreshed weekly. Your own domain follows its schedule.

  ### Everything else

  * A new project's first run also fetches the full **backlink profile** — about five research lookups in all, not four.
  * GEO topics get their **AI volume** filled on every snapshot.
  * [Web vitals](/web-vitals/overview) has a **Mobile**/**Desktop** toggle, and accepts a page without `https://`.
  * The MCP tool `get_ai_visibility_overview` returns the GEO summary — averages and the daily trend over `days`, default 30 — instead of raw snapshots.
  * The [sample project](/onboarding/overview#the-sample-project) now includes a **Weekly Overview** report and a Local SEO location with its grids.
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.