PlanetScale Postgres logo

Managed Postgres speaks PostgreSQL

Connect PlanetScale Postgres to Excel, Sheets and AI

PlanetScale Postgres, direct on 5432 or through PSBouncer on 6432. This is the Postgres product, not the Vitess one.

1connection
0inbound ports
read-onlyenforced

One connection, every surface

Where your PlanetScale data can go

Connect PlanetScale once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 9 of 11 have a step-by-step guide.

Guide

PlanetScale to Excel

Microsoft Excel · Excel add-in

Pull live PlanetScale results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.

Read the PostgreSQL guide
Guide

PlanetScale to Google Sheets

Sheets add-on

Run a saved PlanetScale query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.

Read the PostgreSQL guide
Guide

PlanetScale MCP server

Claude, Cursor and MCP clients

Give an AI assistant read-only access to PlanetScale with the schema it needs to write correct SQL — no credentials in the chat.

Read the PostgreSQL guide
Guide

PlanetScale REST API

HTTP endpoint

Publish a PlanetScale query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.

Read the PostgreSQL guide
Guide

PlanetScale to Airtable

Automation platform

Sync PlanetScale rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.

Read the PostgreSQL guide
Guide

PlanetScale to Baserow

Automation platform

Feed a Baserow table from PlanetScale over the REST endpoint — self-hosted or Baserow cloud.

Read the PostgreSQL guide
Guide

PlanetScale to SeaTable

Automation platform

Keep a SeaTable base current with PlanetScale data without exporting a file or exposing the database.

Read the PostgreSQL guide
Guide

PlanetScale to Smartsheet

Automation platform

Push PlanetScale results into a Smartsheet grid so plans and reports read from the source system, not last week's export.

Read the PostgreSQL guide
Guide

PlanetScale to Anvil

Anvil Works · App platform

Back an Anvil Python app with PlanetScale through the REST endpoint instead of embedding database credentials in the app.

Read the PostgreSQL guide
Supported

PlanetScale to Power BI

Power Query M

Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live PlanetScale results over HTTPS — no ODBC driver, no database port opened.

How Power BI works no PlanetScale walkthrough written yet
Supported

PlanetScale alerts and reports

Slack · Discord · Email · Webhook

Put a PlanetScale query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.

How alerts and reports work no PlanetScale walkthrough written yet

How it works

5 steps, no inbound firewall change

01

Install the Network Agent wherever suits you. It opens one outbound connection and never listens, so PlanetScale sees an ordinary client and your network needs no inbound rule.

02

Copy the string from Database then Connect in the PlanetScale console and paste it in. Both the postgresql:// form and the host= keyword form are read.

03

Leave the mode on PSBouncer Pool unless you have a reason not to — port 6432 on the same host, which is where PlanetScale points you by default.

04

Check the username kept its dot. PlanetScale usernames look like postgres.<database-id>, and the part after the dot is what routes you to the right database.

05

Save. Microsoft Excel, Google Sheets, Power BI, MCP and REST all read through that one connection, or join it to your other sources in a single read-only statement.

Feature deep-dive

What PlanetScale gives you

This is PlanetScale Postgres, not PlanetScale MySQL

PlanetScale spent years as the Vitess company, so it is worth being blunt about which product this card connects to.

  • This connector is for PlanetScale Postgres — the managed Postgres service on .horizon.psdb.cloud. It speaks the Postgres wire protocol and the agent connects to it with Npgsql.
  • It is not for the Vitess-backed MySQL service. There is no preset for that, and a MySQL connection string from PlanetScale will not fit this card.
  • The connection is saved as PostgreSQL with PlanetScale kept as the badge. There is no connection type called PlanetScale — which also means a plain Postgres connection you made earlier to a .horizon.psdb.cloud host will pick up the branding on sight.
  • Everything downstream is ordinary Postgres: schemas, types, and public as the default schema in a cross-source reference.

PSBouncer is the default, and the port is what decides

PlanetScale runs its pooler on the same hostname as the direct endpoint, one port along. The card defaults you to the pooled one because that is where PlanetScale points you.

  • Direct is port 5432. PSBouncer — PlanetScale's transaction pooler — is port 6432 on the same host. Nothing else changes between them.
  • On 6432 the agent turns prepared statements off and stops resetting the session on close. A transaction pooler can hand you a different backend between statements, and a driver that assumes otherwise fails in ways that look random.
  • The port is what triggers that, not the dropdown. The dropdown exists so the card can refuse to let the two disagree: pick pooled with the wrong port, or direct on 6432, and it tells you before you save rather than after the first odd failure.
  • There is no separate pooled hostname to remember and no second set of credentials. Change the port, and that is the whole switch.

The username has a dot in it, and it matters

Two of the four fields are easy to get subtly wrong, so the card checks both.

  • PlanetScale usernames take the form postgres.<database-id>. Paste one without the dot and the card stops you, because the part after the dot is what selects the database.
  • A password with leading or trailing whitespace is flagged. It is a clipboard artifact and it fails as an ordinary authentication error, which sends people looking for the wrong problem.
  • Anything that is not a Postgres connection string is rejected with a message naming where the right one lives, rather than being half-parsed into the wrong fields.
  • The pasted string is never stored. It is read once to fill the form and then dropped, so the password lives in one place rather than two.
-- Ordinary Postgres, read-only, through PSBouncer or direct
SELECT   c.name,
         COUNT(o.id)   AS orders,
         SUM(o.amount) AS revenue
FROM     public.customers AS c
JOIN     public.orders    AS o ON o.customer_id = c.id
WHERE    o.placed_at >= now() - interval '30 days'
GROUP BY c.name
ORDER BY revenue DESC;

Shared by every database connector

True of every database connector

  • Outbound only — the agent opens one encrypted connection out to Query Streams. No inbound port to forward, no VPN, no IP allowlist, nothing about your database exposed to the internet.
  • Credentials stay put — the database username and password live on the machine you installed the agent on. Query Streams never receives them and cannot reach your database on its own.
  • Read-only, enforced — one statement at a time, SELECT and friends only. A write is rejected on your own machine before it is ever sent to the server, rather than relying on a permission somebody remembered to set.
  • Deploy as many agents as you like — one per site, region or cloud. Every data source they can see arrives in a single dropdown, so nobody has to know which agent hosts what.

What you get once a query is saved

  • Share the capability, not the SQL — a colleague or an outside partner can run your query and change its filters without ever seeing the statement behind it.
  • Filters from either direction — declare them yourself as @variables, or let the connector spot the literal values already sitting in your WHERE clause and offer those as dropdowns.
  • Read it from anywhere — Microsoft Excel, Google Sheets, Power BI, the REST API, AI assistants over MCP, the Query Builder and Nova all read the same saved query.
  • Run several at once — five saved queries into five worksheet tabs, streamed concurrently, however large the results.
  • Join it to anything else you have connected — another database, a business API, or a folder of files, in one read-only statement.

Cross-source SQL

Join PlanetScale to the rest of your data

One statement can span PlanetScale and your other connections at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.

3 connections · 3 agents

PlanetScale Postgres Managed Postgres
Microsoft SQL Server Relational engine
Stripe Payments & billing

One statement

-- nothing copied, nothing merged, nothing scheduled
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM     ps_app.public.orders1    f
JOIN     erp_sql.dbo.customers2   c ON c.id = f.customer_id
JOIN     billing.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY invoiced DESC;

The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work

Connection details

What PlanetScale needs

Host
<name>.<region>.horizon.psdb.cloud
Port
6432 for PSBouncer, 5432 direct. Same host either way — the card defaults to 6432
Driver
Npgsql, carried by the agent — nothing to install at the PlanetScale end
Username
Dotted, as postgres.<database-id>. The card checks the dot is there
TLS
Required, and forced by the agent for every .horizon.psdb.cloud host. Encrypted; the certificate chain is not verified
Pooling
On 6432 the agent disables prepared statements and skips the session reset, which is what a transaction pooler needs
Saved as
PostgreSQL, with PlanetScale kept as a badge — there is no connection type called PlanetScale
Not this card
PlanetScale's Vitess-backed MySQL service. This preset is the Postgres product only
Default schema
public, which is what a federated reference carries

The pooler detail is the one that earns its place. PlanetScale puts PSBouncer in transaction mode, which means the connection you hold is not pinned to one backend — between two statements you can be moved. A Postgres driver left at its defaults assumes the opposite: it prepares statements once and expects them to still be there next time, and it resets the session on close. Against a transaction pooler both assumptions break, and they break intermittently, which is the worst way for anything to break. The agent turns both off when it sees port 6432, so you do not have to know any of this.

Naming the product boundary is not pedantry either. PlanetScale is famous for Vitess, so someone arriving here with a PlanetScale connection string in hand may well have a MySQL one. Saying plainly that this card is the Postgres service — and that the Vitess product has no preset — costs a sentence and saves a support conversation.

For a cross-source query PlanetScale is ordinary Postgres. A connection you called ps_app is written ps_app.public.orders, and it joins to a folder of CSVs, an on-premises system of record or a billing API in one read-only statement — with nothing copied and nothing scheduled.

Vendor documentation: planetscale.com

FAQ

Questions about PlanetScale Postgres

Which tools can read PlanetScale Postgres data through Query Streams?

All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the database once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.

Do I have to open a firewall port to my PlanetScale Postgres database?

No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the database keeps its existing firewall rules.

Can Query Streams change data in PlanetScale Postgres?

No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.

What does Query Streams need to connect to PlanetScale Postgres?

A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Host: <name>.<region>.horizon.psdb.cloud. Port: 6432 for PSBouncer, 5432 direct. Same host either way — the card defaults to 6432. Driver: Npgsql, carried by the agent — nothing to install at the PlanetScale end. Username: Dotted, as postgres.<database-id>. The card checks the dot is there.

Can I join PlanetScale Postgres to another database in the same query?

Yes — that is a federated query. One statement can reference PlanetScale Postgres and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.

Is connecting PlanetScale Postgres different from connecting PostgreSQL?

Only the connection string. PlanetScale Postgres speaks the PostgreSQL wire protocol, so filters, scheduling, sharing, the Excel and Google Sheets add-ons and the MCP server all behave identically. The PlanetScale card pre-fills the host, port and SSL settings that provider expects.

Is there a PlanetScale to Excel guide?

Yes — it is the PostgreSQL guide, and it is correct for PlanetScale Postgres as written. PlanetScale speaks the PostgreSQL wire protocol, so PlanetScale to Excel, PlanetScale to Google Sheets and every other destination follow the same steps. The only PlanetScale-specific part is the connection string, and the PlanetScale card fills that in for you.

Put PlanetScale where the work happens

Install the agent, point it at your database, and pick a destination.

Read-only Outbound only Credentials stay on the agent