Integrations
39 built-in connectors — Stripe, Shopify, GA4, HubSpot, Snowflake and friends — with OAuth, incremental sync, and schema evolution handled for you.
For the ~40 services most small teams actually use, Tablize ships a built-in connector. You click Connect, go through the service’s OAuth flow, and the Agent starts syncing. No API key wrangling, no schema mapping, no cron jobs to babysit.
This page covers what’s supported, how a connector works, and the behaviors that are uniform across all of them.
Catalog
| Category | Connectors |
|---|---|
| Payments | Stripe, PayPal, Adyen, Airwallex |
| Commerce | Shopify, BigCommerce, WooCommerce, Adobe Commerce, Amazon SP, eBay, Etsy, Walmart, Lazada, Bol, TikTok Shop, Google Merchant |
| Ads | Google Ads, Meta Ads, TikTok Ads, Amazon Ads, Meta CAPI, TikTok Events API |
| Analytics | GA4, GA4 Measurement Protocol, Google Search Console, PostHog |
| CRM & Support | HubSpot, Zendesk, Gorgias, Customer.io |
| Shipping & Tax | ShipStation, DHL, Easyship, Avalara |
| Data warehouses | Snowflake, Supabase, Vertex AI |
| Generic | Web API (any REST endpoint) |
Missing a connector? Two options:
- Build it as a Web API. Paste the endpoint docs into chat and tell the Agent to sync it. It’ll write a Script that hits the API on a schedule.
- Request it. We ship a new connector roughly every two weeks. The roadmap page has the current queue.
How a connector works
Under the hood, every connector does the same three things:
- OAuth or API key — the service authenticates you. Tablize stores the token in an encrypted credential vault (per-workspace, per-service).
- Full sync + incremental cursor — on first connect, Tablize pulls all historical data (up to a per-connector limit). Then an incremental cursor — usually
updated_ator an event ID — keeps the sync up to date. - Tables with stable names — you query them like any other table.
integrations.stripe_charges,integrations.shopify_orders, etc.
The Agent sees these tables. You can ask “how much revenue did Stripe process last week” and the Agent writes the SQL against the synced table — no API call, no rate limit concerns.
Connecting a service
Workspace → Integrations → pick the service → click Connect.
For OAuth services, you’re bounced to the service’s own login page, you approve Tablize’s permissions, you’re bounced back. Tablize confirms the connection and immediately kicks off a historical sync. Depending on how much data you have, the first sync runs from minutes (small Stripe account) to hours (three years of Shopify orders).
You’ll get a chat message when the first sync finishes. The Agent automatically analyzes what it found and offers a starter Report — “here’s what your Stripe data looks like” — so you don’t open the integration and stare at an empty chat.
Sync schedule
Every connector has a default cadence. You can override any of them on the connector’s settings page.
| Data type | Default cadence | Why |
|---|---|---|
| Orders, payments, tickets | 5 minutes | Fresh enough for live dashboards |
| Campaign performance (ads) | 1 hour | Ad platforms usually don’t update faster than this |
| Catalog / product metadata | 24 hours | Changes are rare |
| Historical backfill | One-shot on connect | Never re-run automatically |
Manual sync is always an option — Sync now on the connector page runs a full incremental fetch immediately.
Sync health and errors
Each connector has a dashboard showing:
- Last successful sync, per entity.
- Rows synced since the last run.
- Any failing endpoints (usually: token expired, permission revoked, rate limit).
- Retry schedule for each failure.
Token errors surface both on the dashboard and as a chat notification — “HubSpot needs reauthentication” — with a one-click reconnect.
Schema evolution
Connectors handle the following automatically:
- New fields — added to the table as new columns. No breakage.
- Deleted fields — kept as columns with NULL going forward. Your historical data still has values.
- Renamed fields — mapped via a connector-level rule (Shopify renaming
emailtocontact_email, for example). - Type changes — a new
_v2table. The Agent flags this in chat.
Permissions and scope
Tablize requests read-only permissions wherever the service supports it. The connectors page shows the exact scopes for each service.
For services that only offer read-write OAuth (like HubSpot’s default app scope), Tablize never writes — we just don’t use the write APIs. You can verify this by revoking the write scope after connecting; read-only sync keeps working.
Known quirks, by service
Some services have behaviors that matter for your analysis:
- GA4: historical backfill is capped at 14 months (Google’s limit). Older data isn’t accessible through any API.
- Google Ads, Meta Ads: cost numbers change retroactively for up to 3 days after impression. Tablize re-syncs the last 3 days on each run to keep numbers accurate.
- Shopify: refunds arrive as a separate entity from orders. Revenue charts join them. Margin charts subtract them.
- Stripe: disputes (chargebacks) are a separate webhook stream. Connected in the same OAuth flow but synced to
integrations.stripe_disputes. - Amazon SP: rate limits are aggressive. Large accounts will take a full day for initial backfill. This is Amazon, not us.
The integration playbook (internal doc) tracks more known quirks per connector. If you hit something unexpected, the connector’s Health tab usually has the answer.
Disconnecting
Workspace → Integrations → the service → Disconnect. Three things to know:
- Your synced tables stay. Disconnecting stops the sync; it doesn’t delete data.
- Credentials are wiped from the vault. Reconnecting re-requires OAuth.
- Running Reports and Watches keep working off the synced data until it goes stale enough that you reconnect or delete.
To fully remove the data, disconnect first, then drop the tables from the Data page.
Next steps
- Webhooks & APIs — for services without a built-in connector.
- Watches — put an alert on an integration’s data (refund rate, ad spend, ticket volume).
- Dashboards — the most common home for integration data.