Skip to content

Changelog

import { Aside } from ‘@astrojs/starlight/components’;

2026-05-28 — Commerce + analytics + portal redesign

Section titled “2026-05-28 — Commerce + analytics + portal redesign”

A consolidation cycle that landed three user-visible feature areas (Amazon via Marketplace Connect, first-party traffic analytics, the redesigned client portal with billing), then a repo-wide cleanup that tightened API/SDK contracts and shipped a Claude plugin.

Portal

  • New Analytics page under each website (/admin/websites/:id/analytics and the client-side /app/websites/:id/analytics). Two tabs:
    • Traffic — pageviews, sessions, average dwell, bounce rate, daily timeline, top pages / referrers / countries / device classes, plus a separated bot section.
    • SEO / GEO — health-scan score, GEO citation rate, Search Console metrics, citation checklist progress, competitor diff activity, AI quota usage.
  • New Billing tab on the website detail page (Stripe-backed) with invoices, billing portal link, restart-billing flow, and one-off invoicing. Feature toggles that cost money now route through the billing surface instead of the generic features panel.
  • Redesigned client portal — the /app/* surface a client sees when they log in. New website detail page (magazine layout), marketing tools page (/app/websites/:id/marketing), bookings + SEO + analytics tabs scoped to the owning client.
  • Blueprint canvas — added the Marketplace Connect node with an Amazon configuration panel (link state, deep-link into Marketplace Connect, sales-analytics card). Blueprint also got a route error boundary + crash guard so a malformed node no longer takes down the whole canvas.
  • Toast notifications for the OAuth flows (Shopify connect/disconnect, Google Search Console) instead of silent URL parameters.

API

  • New /v1/websites/:id/analytics and /v1/websites/:id/analytics/seo endpoints, plus the public-facing /public/v1/c tracker ingest path (with /public/analytics/ingest as a legacy alias). Range/interval query params; 90-day TTL on raw events.
  • New commerce surface — Amazon-via-Marketplace-Connect analytics computed from the Shopify Admin token we already hold. No Amazon SP-API access required. Endpoints: amazonAnalytics, refreshAmazonAnalytics, amazonSetupLink.
  • Stripe billing routes — invoices, billing portal, restart-billing, one-off invoice, set-price.
  • Repo-wide route split — the five “mega routes” (seo, websites, domains, analytics, oauth) were split into per-resource files (seo-tier.ts, seo-ai.ts, seo-data.ts, analytics-seo.ts, analytics-traffic.ts, analytics-ingest.ts, etc.). No behavior change; existing call sites are unaffected.
  • OpenAPI coverage — ~34 routes backfilled with Zod request/responses annotations and migrated to Zod 4’s native toJSONSchema. The drift assertion in gen-openapi.mts now catches forgotten route registrations at docs build time.
  • Webhook robustness — Shopify webhook handler deduplicates by X-Shopify-Webhook-Id, distinguishes transient (retry) vs terminal (drop) failures, and uses an atomic counter for AI-quota writes.

SDK (@vantageconnections/sdk)

  • Per-resource split. The monolithic client.ts (787 LOC) was split into one file per resource under src/resources/. Call sites are unchanged — vc.websites, vc.seo, vc.bookings, etc. all keep working.
  • New vc.analytics resource — getSeo(websiteId, range) for the SEO/GEO dashboard, getTraffic(websiteId, range, interval) for the traffic dashboard.
  • New vc.jobs resource — provisioning job inspection, lifted out of WebsitesApi so the websites surface stays focused.
  • WebsitesApi sub-namespacesvc.websites.billing.*, vc.websites.commerce.*, vc.websites.transfer.*, vc.websites.deployment.*, vc.websites.invitations.*. Old flat methods stay as @deprecated shims so existing consumers keep working.
  • Fail-loud PORTAL_URL — the SDK now throws at construction if the portal URL is mis-shaped instead of silently emitting broken links.
  • Six wrong-shape WebsitesApi methods corrected + new Shopify/Jobs wrappers added so the SDK contract matches the API’s actual response shape.
  • Custom VantageApiError continues to carry status + parsed body for branching; nothing changed at the error layer.

Docs

  • New Analytics page under Concepts and a matching Inspect site analytics how-to under Guides — the analytics surface (tracker, SEO/GEO composer, traffic dashboard) is now documented end-to-end.
  • New Sell on Amazon guide covering the Marketplace Connect flow + Shopify-sourced analytics + the cancelled SP-API fee.
  • New Connect a Shopify store, Set up MCP, and Set up Claude Code guides.
  • CLI / MCP / SDK / REST API reference all auto-generate from source. The OpenAPI spec is rebuilt at docs build time via prebuildgenastro build.
  • Editorial pass on every concepts page (websites, services, blueprint, provisioning, domains, commerce) for accuracy after the route split.

Claude plugins (@vantageconnections/claude-plugin)

  • New distributable plugin with ten skills: vantage-setup, vantage-new-website, vantage-port-repo, vantage-connect-shopify, vantage-connect-amazon, vantage-bookings, vantage-seo, vantage-domains, vantage-mcp-setup, vantage-troubleshoot.
  • Each skill is scoped to one workflow and carries the user phrases that should trigger it. Install via /plugin install vantage@vantage-connections in Claude Code, or /plugin install @vantageconnections/claude-plugin from npm.

Infra / hygiene

  • Consolidated cross-package types under @vantageconnections/shared (single source of truth for the SDK + API + portal).
  • Phantom workspace dropped, Vitest added, root CLAUDE.md + README refreshed for the multi-package layout.
  • .npmrc keeps install-strategy un-set on purpose — the repo mixes vite@5 (esbuild 0.21) and astro@6 (esbuild 0.27/0.28), and hoisting would flatten the nested esbuild binaries and break the build.

Platform

  • Multi-tenant website provisioning via the orchestrator pipeline
  • Blueprint canvas in the portal at /admin/websites/:id
  • Cognito auth (admin + client roles), PAT auth for /v1/* (SDK/CLI/MCP)
  • DynamoDB-backed entities: Websites, Services, Domains, Provisioning Jobs, Content, Blueprint Layout
  • Integrations: GitHub (repo from template), Vercel (project + deploy), OpenRouter (key), Resend (domain), Cal.com (bookings handle), Shopify (commerce + channels)
  • Shopify webhook intake with HMAC verify, cross-tenant guard, SQS-fronted worker
  • Channel apps: TikTok, Meta, Pinterest, Google, Marketplace Connect (status auto-detected via Publications API)
  • SEO scanner + GEO probes (tier-gated)
  • AI-assisted content endpoints: alt text, meta description, blog draft, local SEO page

SDK (@vantageconnections/sdk 0.1.0)

  • Full TypeScript client covering all /v1/* endpoints
  • VantageClient with sub-resources: websites, content, blueprint, domains, bookings, seo, me
  • Custom VantageApiError carrying status + body for branching

CLI (@vantageconnections/cli 0.1.0)

  • vantage login / logout / whoami / selftest
  • vantage websites (list, get, create, delete, features)
  • vantage content (get, edit — opens $EDITOR)
  • vantage blueprint (get, positions)
  • vantage bookings, vantage seo, vantage domains, vantage keys
  • Credentials stored at ~/.vantage/credentials.json (mode 0600)
  • VANTAGE_TOKEN env override for CI

MCP (@vantageconnections/mcp 0.1.0)

  • MCP server exposing the CLI surface 1:1 as tools
  • Setup snippets for Claude Code, Cursor, Claude Desktop

Docs (this site)

  • Launched at https://docs.vantageconnections.dev
  • Hand-written getting-started + concepts + guides
  • Auto-generated reference for CLI, SDK, MCP, REST API (OpenAPI spec from Zod schemas)