Integration · Webhooks and data

Stream in-app purchase events into BigQuery

RevenueDot streams every purchase, renewal, cancellation, refund and billing event into a BigQuery table as one row per event, as it happens. It creates the table for you, partitioned by day on event_timestamp, with columns such as revenue_usd, store, product_id and a payload JSON column holding the whole event. Retried rows are deduplicated by insertId.

What teams do with it

  • Run SQL on subscription revenue, trials and churn next to your product data.
  • Join purchase events to app analytics tables in the same BigQuery dataset.
  • Feed Looker Studio or another BI tool from a live table.
  • Keep your own copy of every purchase event, sandbox included.

What RevenueDot sends

  • Every event type is sent, sandbox included. Filter on the environment column.
  • One row per event through the streaming insert API, with insertId set to the event id.
  • The columns are id, type, event_timestamp, app_user_id, original_app_user_id, aliases, app_id, environment, store, product_id, new_product_id, period_type, purchased_at, expiration_at, entitlement_ids, presented_offering_id, transaction_id, original_transaction_id, country_code, currency, price_in_purchased_currency, price_usd, revenue_usd, is_trial_conversion, cancel_reason, expiration_reason and payload.
  • revenue_usd follows your Sales reporting choice: gross, or after store commission and taxes.
  • If the table does not exist, RevenueDot creates it, partitioned by day on event_timestamp. The default table name is revenuedot_events.

Setup

How to connect BigQuery to RevenueDot

  1. 01

    Create a service account

    In Google Cloud, create a service account with the BigQuery Data Editor role on a dataset and download its JSON key.

  2. 02

    Open the integration

    In RevenueDot, open Integrations in the project sidebar and choose BigQuery.

  3. 03

    Paste the key

    Paste the JSON into Service account key (JSON). Leave Project ID empty to use the service account's project.

  4. 04

    Name the dataset and table

    Enter Dataset and, optionally, Table. The default is revenuedot_events.

  5. 05

    Connect and test

    Pick Sales reporting, click Connect BigQuery, then Send test event and query the table.

The BigQuery integration page in the RevenueDot dashboard, with its settings form
Captured from the RevenueDot dashboard with demo data.

Query daily revenue from the events table

This query sums production revenue per day. Replace the project and dataset with yours.

Daily revenueBigQuery SQL
SELECT DATE(event_timestamp) AS day, SUM(revenue_usd) AS revenue
FROM `my-project.revenue.revenuedot_events`
WHERE environment = 'PRODUCTION'
  AND type IN ('INITIAL_PURCHASE', 'RENEWAL', 'NON_RENEWING_PURCHASE', 'CANCELLATION')
GROUP BY day ORDER BY day DESC;

How RevenueDot delivers events to BigQuery

  • Timeouts, rate limits (HTTP 429) and server errors (5xx) from BigQuery retry on the webhook schedule: after 5, 10, 20, 40 and 80 minutes.
  • Any other 4xx answer fails at once, because sending the same request again cannot work. Fix the setting, then click Replay failed.
  • The delivery log keeps each request with every secret replaced by [redacted], the answer, the time taken and, for skipped events, the reason.
  • Credentials are sealed with AES-256-GCM on the server. After you save a key, the dashboard shows only its last four characters.
  • BigQuery can answer HTTP 200 with insertErrors. RevenueDot treats that as a failure and logs the first error.

FAQ

BigQuery and RevenueDot

Does the BigQuery integration work with the RevenueCat SDK?

Yes. RevenueDot speaks the RevenueCat SDK protocol, so your app keeps the RevenueCat SDK and only the server address changes. BigQuery needs no attributes. Every event RevenueDot records goes into the table.

Is it the same as RevenueCat's integrations?

No. BigQuery is an addition beyond RevenueCat's integration catalogue: a live streaming table instead of scheduled files. For files in S3, R2 or GCS, use RevenueDot's scheduled data exports.

Does RevenueDot create the table?

Yes. If the table is missing, RevenueDot creates it with its schema, partitioned by day on event_timestamp, the first time an event arrives.

Are sandbox purchases included?

Yes. BigQuery receives every event, so use WHERE environment = 'PRODUCTION' to leave sandbox rows out of your reports.

Sources: Google BigQuery · BigQuery tabledata.insertAll · RevenueCat third-party integrations. BigQuery is a trademark of its owner, used to describe compatibility. RevenueDot is not affiliated with or endorsed by it.

Get started

Send BigQuery every subscription event.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue. Integrations are included on every plan.

Already have an account? Sign in · Prefer your own servers? Self-host free