Connections

The Betterloop snippet sees what happens in a browser. That is enough to find rage clicks, dead controls, JS errors and slow pages - but not to tell you that the dependency behind your checkout has a published CVE, that a quarter of your CI runs fail, or that nobody has ever bought your middle pricing tier. Connect the tools that know those things and the recommendations widen accordingly.

How it works

Every source is normalized into the same shape - a signal with a domain, a stable key, a value and a target. Detectors and the AI strategist read signals, not APIs, which is what allows a single recommendation to draw on two sources at once. Two consequences worth knowing:

  • Signals are append-only, so a number that gets worse between syncs is detected as a regression automatically - no per-source trend code. Observations are kept for 90 days and older ones are pruned.
  • Cross-source findings become possible. The clearest example: server-side analytics counts visitors that our in-browser SDK never sees, and the gap between them is your ad-block and Do-Not-Track rate, which neither tool can tell you alone.

Credentials

Tokens are encrypted with AES-256-GCM before they touch the database and are never rendered back to the browser, not even to you - the connect form shows a blank field and leaves the stored value alone if you submit it empty. Use read-only or least-privilege credentials everywhere; nothing here ever writes to your accounts. If a connector needs a scope you did not grant, it skips those signals rather than failing.

Available sources

Site audit

no credential needed

No setup: fetches your public page and reads the headers, HTML and markup a browser or crawler actually receives.

securityseoa11yperformanceuireliability
Credential
None. It reads only what your site serves publicly.
Sync interval
every 12 hours, plus immediately when you connect it or press Sync now
Settings

url (optional) - Optional. Leave it blank and we audit the origin we already see in your telemetry.

PageSpeed Insights

Google's own Lighthouse scores plus the real-Chrome Core Web Vitals its ranking signal reads, on mobile and desktop.

performanceseoa11ycode
Credential
Google's keyless allowance for this API is now zero requests a day, so without a key every sync fails with a quota error. Create an API key in Google Cloud, enable the PageSpeed Insights API on the same project, and paste the key here - the key is free. Do not put an HTTP-referrer restriction on it: this call is made from our server and sends no referrer. Create one
Sync interval
every 24 hours, plus immediately when you connect it or press Sync now
Settings

url (optional) - Leave blank to test your home page. Otherwise point it at the page that matters most - a pricing or checkout page is usually where a slow score costs real money.

GitHub

Engineering health from the repo itself: security alerts, CI failure rate, review latency and release cadence.

codesecurityreliabilityproductbug
Credential
A fine-grained token with read access to Contents, Issues, Pull requests, Actions and Dependabot alerts on the one repository, or a classic token with repo and security_events. Read-only is enough - Betterloop never writes to your repo. Create one
Sync interval
every 6 hours, plus immediately when you connect it or press Sync now
Settings

repo (required) - The repository to read, for example "vercel/next.js". Pasting the GitHub URL works too.

Sentry

Production crashes with real reach - which errors fire, how many users each one hits, and whether your newest release made it worse.

bugreliability
Credential
Create an organization auth token in Sentry under Settings > Auth Tokens. Tick project:read and event:read, plus org:read and project:releases if you want crash-free session rates and release regressions. Create one
Sync interval
every 2 hours, plus immediately when you connect it or press Sync now
Settings

organization (required) - The part after /organizations/ in your Sentry URL.

project (required) - The project's short name, shown under Settings > Projects.

host (optional) - Leave blank for sentry.io. Use eu.sentry.io for EU-region accounts, or your own domain for a self-hosted install.

Stripe

What customers actually pay: MRR, which plans sell, trials, churn and failed payments.

pricinggrowthproduct
Credential
Create a RESTRICTED key with READ permissions only - never a full secret key. Betterloop never writes to Stripe, so it does not need one and will not accept one. In the Stripe Dashboard open Developers > API keys, click "Create restricted key", set Read on Subscriptions, Products, Invoices, Charges and Events, leave everything else at None, and paste the key that starts with rk_. Create one
Sync interval
every 12 hours, plus immediately when you connect it or press Sync now

Plausible Analytics

Visitor, referrer, channel and goal numbers from Plausible - a second independent count to check our own SDK against.

growthproductseo
Credential
In Plausible, open account settings and create a Stats API key. It is read-only and covers every site the account can see. Create one
Sync interval
every 6 hours, plus immediately when you connect it or press Sync now
Settings

siteId (required) - The domain exactly as registered in Plausible, without https:// and without a trailing slash.

host (optional) - Only for a self-hosted install. Leave blank to use plausible.io.

Turning one on

Open a project, go to Connections, and press Connect. The first sync runs immediately so a bad credential is reported while you are still on the form. Findings appear in the insight feed on the next engine run, tagged with the source they came from, and in your email report.

Next: how insights are produced · what is stored and where