BillSnap

5-minute walkthrough

The complete signup-to-first-alert flow, illustrated. Same content as the 60-second video if you prefer reading.

What we'll do
  1. Sign in with Google
  2. Start your 14-day free trial — no card required
  3. Connect your GCP project — two gcloud commands
  4. Verify access and save
  5. Wait for tomorrow's first run

Total time: ~5 minutes. You'll need a GCP project with billing export to BigQuery enabled.

1 Sign in with Google

Open app.billsnap.dev/signup. Click Continue with Google, pick the Google account you want associated with this BillSnap subscription.

app.billsnap.dev/signup

Sign up

Sign in with Google. We'll start your 14-day trial — no card required.

Continue with Google
Why Google sign-in only? Most BillSnap users are already signed into Google to manage their GCP project — same identity provider, zero new passwords. We use Firebase Auth in the background.

2 Start your 14-day free trial

Stripe Checkout opens automatically. Click Start trial. You'll not be asked for a card during the trial — we only collect one when day 14 ends and you're still active.

checkout.stripe.com

Try BillSnap Pro

14 days free

Then $15.00 per month starting June 5, 2026
GCP cost anomaly detection — $15 per project per month

Start trial
If you bail at this step — say you close the tab — BillSnap remembers. Next time you sign in, the dashboard will show a "Finish setting up your account" card with the same Stripe Checkout button.

3 Connect your GCP project

After Checkout, you're returned to /connect. Fill in three fields:

app.billsnap.dev/connect

Connect your GCP project

Grant read-only access to your billing-export dataset. ~30 seconds.

GCP project ID
my-company-prod
BigQuery dataset
billing_export
Billing-export table name
gcp_billing_export_v1_0123456_AB_CDEF
Optional: Slack webhook URL ☑ email me alerts

Don't know your table name? Open BigQuery in the Cloud Console → your billing project → expand the billing_export dataset → copy the single table name (it'll start with gcp_billing_export_v1_). If you don't yet have a billing export at all, follow the billing-export setup guide first.

Once the three fields are filled, the page renders two gcloud snippets with your values pre-filled. Click the Copy button on each, then paste into your terminal.

terminal
$ gcloud projects add-iam-policy-binding my-company-prod \
    --member="serviceAccount:billsnap-reader@billsnap-prod-495823.iam.gserviceaccount.com" \
    --role="roles/bigquery.jobUser"

Updated IAM policy for project [my-company-prod].

$ bq add-iam-policy-binding \
    --member="serviceAccount:billsnap-reader@..." \
    --role="roles/bigquery.dataViewer" \
    my-company-prod:billing_export.gcp_billing_export_v1_...

Dataset 'my-company-prod:billing_export' updated.
What these two commands do. The first lets our service account (billsnap-reader) run BigQuery jobs in your project (so BQ scans are billed to you, capped at ~1-2 GB / day per the 15-day partition window). The second grants read-only access to the billing-export dataset only — not the rest of your project.

4 Verify access and save

Click Verify access on the /connect page. BillSnap runs a zero-cost SELECT 1 FROM ... LIMIT 0 against your billing-export table to confirm the IAM grants worked. If they did, the project is saved and you're redirected to the dashboard.

app.billsnap.dev/connect → click Verify access

Access verified ✓ — saving project…
Project connected ✓ (your-uid_my-company-prod). Redirecting to dashboard…

If the grant didn't propagate yet (usually instant, but can take 60s on a busy day), the dashboard shows a precise diagnostic — e.g.

  • permission_denied_project — re-run the first gcloud snippet
  • permission_denied_dataset — re-run the second bq snippet
  • table_not_found — confirm the suffix matches your real table; see the billing-export guide

5 Wait for tomorrow's first run

BillSnap's detector runs every day at 09:00 UTC. It scans the previous day's billing-export rows, builds a 14-day rolling baseline per SKU, and fires a digest alert via Slack and/or email if anything is more than 2 standard deviations above its baseline.

app.billsnap.dev/dashboard
Trial: 14 days left

my-company-prod · billing_export.gcp_billing_export_v1_…

last run: tomorrow 09:00 UTC · pending

Recent alerts (last 30 days):

No alerts yet. Daily detection runs at 09:00 UTC.

The first 14 days are quiet on purpose. The detector needs at least 14 daily observations per SKU to compute a meaningful mean and standard deviation. Until then, you'll see "no anomalies" even if your costs are noisy — we don't want to false-fire on tiny sample sizes. Day 15 onward, alerts kick in.

That's it.

Set up once, then forget about it. The detector keeps running daily without any further action from you. Tune the z-score threshold or minimum-cost floor from the dashboard if alerts feel noisy or sparse.

Start free trial → Back to home