Skip to content
Docs / Source setup guides

Documentation

Source setup guides

Shopify, Square, Google Analytics, Meta Ads, Google Sheets, Notion and GitHub: setup, caveats and tables.

How to connect each source, what it needs on your side, and the tables it creates. For how syncing works in general (schedules, where data lands, how to query it) see Connections.

Shopify

Orders with their line items, refunds, customers and products, for revenue and retention reporting.

Set it up

  1. In your Shopify admin, open Settings → Apps → Develop apps → Build apps in Dev Dashboard, and create an app.
  2. In the app's Access section enter the scopes read_orders, read_customers and read_products, then click Release. Add read_all_orders as well if you want orders older than 60 days.
  3. In the app's Installs section, click Install app and choose your store.
  4. Open the app's Settings, then copy the Client ID and Client secret into the form below.

Good to know

  • Shopify stopped letting merchants create apps inside the store admin in January 2026. New stores create the app in Shopify's Dev Dashboard and give DuckHouse its Client ID and Client secret. If you have an older app with a token starting shpat_, paste that instead.
  • Shopify only returns the last 60 days of orders unless the app also has the read_all_orders scope.
  • The first load of a large store is slow by design: Shopify limits how fast any app may read, to roughly a thousand orders every few minutes. It continues in the background until it has caught up.
  • Line items and product variants are kept as JSON inside each order and product row.
  • Customers and products deleted in Shopify stay in the table: Shopify does not report deletions.
  • Syncs as often as every 15 minutes.
Show 4 tables and their columns

orders

id varchar, name varchar, order_number bigint, email varchar, phone varchar, financial_status varchar, fulfillment_status varchar, currency varchar, presentment_currency varchar, subtotal_price double, total_price double, total_tax double, total_discounts double, total_shipping double, total_refunded double, customer_id varchar, tags json, source_name varchar, test boolean, note varchar, cancel_reason varchar, created_at timestamptz, updated_at timestamptz, processed_at timestamptz, cancelled_at timestamptz, closed_at timestamptz, line_items json

refunds

id varchar, order_id varchar, amount double, currency varchar, note varchar, created_at timestamptz, updated_at timestamptz

customers

id varchar, email varchar, phone varchar, first_name varchar, last_name varchar, display_name varchar, state varchar, email_marketing_state varchar, verified_email boolean, tax_exempt boolean, orders_count bigint, total_spent double, currency varchar, city varchar, province_code varchar, country_code varchar, zip varchar, tags json, note varchar, locale varchar, created_at timestamptz, updated_at timestamptz

products

id varchar, title varchar, handle varchar, vendor varchar, product_type varchar, status varchar, tags json, total_inventory bigint, online_store_url varchar, created_at timestamptz, updated_at timestamptz, published_at timestamptz, variants json

Square

Payments, refunds, orders, customers, payouts, locations, team members, timecards, the item catalog and inventory from your Square account.

Set it up

  1. Sign in to the Square Developer Console at developer.squareup.com/apps with the account that owns the business. If it lists no application, create one; any name will do.
  2. Open the application, choose Credentials in the left menu, and switch to Production at the top.
  3. Copy the Production access token and paste it below. It covers every location of the account.
  4. That token can do anything in the account, so treat it like a password. DuckHouse stores it encrypted and only ever reads.

Good to know

  • Money is stored in the currency's smallest unit (cents), in *_amount columns with a currency beside them.
  • All of your locations are included, and a location added later is picked up automatically.
  • A personal access token can do anything in your Square account, not just read. Treat it like a password; DuckHouse stores it encrypted and only ever reads.
  • Payouts change status for days after they are created, so the last 30 days are re-read on every sync.
  • Sales are credited to staff through team_member_id on payments and refunds, which joins to team_members. Square only fills it in when staff sign in on the point of sale.
  • Timecards can be edited after the shift, so the last five weeks are re-read on every sync, and a timecard deleted in Square in that time is removed.
  • Order line items stay as JSON in orders.line_items; their catalog_object_id joins to catalog_item_variations, as does inventory_counts.
  • Syncs as often as every 15 minutes.
Show 17 tables and their columns

locations

id varchar, name varchar, business_name varchar, status varchar, type varchar, merchant_id varchar, country varchar, currency varchar, language_code varchar, timezone varchar, phone_number varchar, business_email varchar, website_url varchar, description varchar, mcc varchar, address json, coordinates json, capabilities json, created_at timestamptz

payments

id varchar, created_at timestamptz, updated_at timestamptz, status varchar, source_type varchar, location_id varchar, order_id varchar, customer_id varchar, reference_id varchar, amount bigint, currency varchar, tip_amount bigint, total_amount bigint, approved_amount bigint, refunded_amount bigint, app_fee_amount bigint, processing_fee json, card_brand varchar, card_last_4 varchar, entry_method varchar, refund_ids json, team_member_id varchar, note varchar, receipt_number varchar, receipt_url varchar

refunds

id varchar, created_at timestamptz, updated_at timestamptz, status varchar, location_id varchar, payment_id varchar, order_id varchar, reason varchar, amount bigint, currency varchar, app_fee_amount bigint, processing_fee json, destination_type varchar, unlinked boolean, team_member_id varchar

orders

id varchar, location_id varchar, state varchar, created_at timestamptz, updated_at timestamptz, closed_at timestamptz, customer_id varchar, reference_id varchar, source_name varchar, ticket_name varchar, total_amount bigint, currency varchar, total_tax_amount bigint, total_discount_amount bigint, total_tip_amount bigint, total_service_charge_amount bigint, net_amount_due bigint, line_items json, discounts json, taxes json, service_charges json, fulfillments json, tenders json, refunds json, returns json, version bigint

customers

id varchar, created_at timestamptz, updated_at timestamptz, given_name varchar, family_name varchar, company_name varchar, nickname varchar, email_address varchar, phone_number varchar, address json, birthday varchar, reference_id varchar, note varchar, creation_source varchar, email_unsubscribed boolean, group_ids json, segment_ids json, version bigint

payouts

id varchar, status varchar, type varchar, location_id varchar, created_at timestamptz, updated_at timestamptz, arrival_date date, amount bigint, currency varchar, payout_fee json, destination_type varchar, destination_id varchar, end_to_end_id varchar, version bigint

team_members

id varchar, given_name varchar, family_name varchar, email_address varchar, phone_number varchar, status varchar, is_owner boolean, reference_id varchar, location_assignment varchar, location_ids json, job_assignments json, is_overtime_exempt boolean, created_at timestamptz, updated_at timestamptz

jobs

id varchar, title varchar, is_tip_eligible boolean, created_at timestamptz, updated_at timestamptz, version bigint

timecards

id varchar, team_member_id varchar, location_id varchar, status varchar, start_at timestamptz, end_at timestamptz, timezone varchar, job_id varchar, job_title varchar, hourly_rate_amount bigint, currency varchar, tip_eligible boolean, declared_cash_tip_amount bigint, breaks json, created_at timestamptz, updated_at timestamptz, version bigint

catalog_items

id varchar, name varchar, description varchar, product_type varchar, reporting_category_id varchar, categories json, is_taxable boolean, tax_ids json, modifier_list_info json, is_archived boolean, is_alcoholic boolean, abbreviation varchar, channels json, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_item_variations

id varchar, item_id varchar, name varchar, sku varchar, upc varchar, ordinal bigint, pricing_type varchar, price_amount bigint, currency varchar, location_overrides json, track_inventory boolean, inventory_alert_type varchar, inventory_alert_threshold bigint, sellable boolean, stockable boolean, measurement_unit_id varchar, item_option_values json, team_member_ids json, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_categories

id varchar, name varchar, category_type varchar, parent_category_id varchar, is_top_level boolean, root_category varchar, online_visibility boolean, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_modifier_lists

id varchar, name varchar, selection_type varchar, modifier_type varchar, ordinal bigint, min_selected_modifiers bigint, max_selected_modifiers bigint, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_modifiers

id varchar, modifier_list_id varchar, name varchar, price_amount bigint, currency varchar, on_by_default boolean, ordinal bigint, location_overrides json, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_taxes

id varchar, name varchar, calculation_phase varchar, inclusion_type varchar, percentage double, applies_to_custom_amounts boolean, enabled boolean, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

catalog_discounts

id varchar, name varchar, discount_type varchar, percentage double, amount bigint, maximum_amount bigint, currency varchar, pin_required boolean, modify_tax_basis varchar, updated_at timestamptz, version bigint, present_at_all_locations boolean, present_at_location_ids json, absent_at_location_ids json

inventory_counts

id varchar, catalog_object_id varchar, catalog_object_type varchar, location_id varchar, state varchar, quantity double, calculated_at timestamptz, is_estimated boolean

QuickBooks Online

Invoices, bills, payments, journal entries and the chart of accounts, for finance reporting next to the rest of your data.

Set it up

  1. Click Connect to QuickBooks below.
  2. Sign in to Intuit as an admin of the company. Only an admin can grant access.
  3. Choose the company to sync and approve. DuckHouse only reads; it never writes to your books.

Good to know

  • There is nothing to paste: you sign in to Intuit as an admin of the company and approve. One Connection reads one company; add another Connection for each additional company.
  • DuckHouse only reads. It cannot create, change or delete anything in your books.
  • Transactions deleted in QuickBooks are marked _deleted on the next hourly check. QuickBooks keeps that history for 30 days, so a Connection paused for longer keeps deleted rows until the table is reloaded.
  • Customers, vendors, items and accounts are made inactive in QuickBooks rather than deleted, and are kept with their active flag.
  • Line items stay as JSON inside each invoice, bill and journal entry row.
  • Syncs as often as once an hour.
Show 14 tables and their columns

company_info

id varchar, company_name varchar, legal_name varchar, country varchar, email varchar, fiscal_year_start_month varchar, company_start_date date, default_time_zone varchar, company_addr json, name_value json, created_at timestamptz, updated_at timestamptz

accounts

id varchar, name varchar, fully_qualified_name varchar, acct_num varchar, classification varchar, account_type varchar, account_sub_type varchar, description varchar, active boolean, sub_account boolean, parent_id varchar, current_balance double, current_balance_with_sub_accounts double, currency varchar, created_at timestamptz, updated_at timestamptz

customers

id varchar, display_name varchar, company_name varchar, given_name varchar, family_name varchar, email varchar, phone varchar, active boolean, balance double, currency varchar, bill_addr json, fully_qualified_name varchar, job boolean, parent_id varchar, balance_with_jobs double, taxable boolean, sales_term_id varchar, sales_term_name varchar, ship_addr json, created_at timestamptz, updated_at timestamptz

vendors

id varchar, display_name varchar, company_name varchar, given_name varchar, family_name varchar, email varchar, phone varchar, active boolean, balance double, currency varchar, bill_addr json, acct_num varchar, vendor_1099 boolean, term_id varchar, term_name varchar, created_at timestamptz, updated_at timestamptz

items

id varchar, name varchar, fully_qualified_name varchar, sku varchar, type varchar, description varchar, active boolean, taxable boolean, unit_price double, purchase_cost double, track_qty_on_hand boolean, qty_on_hand double, income_account_id varchar, income_account_name varchar, expense_account_id varchar, expense_account_name varchar, asset_account_id varchar, asset_account_name varchar, created_at timestamptz, updated_at timestamptz

invoices

id varchar, doc_number varchar, txn_date date, customer_id varchar, customer_name varchar, due_date date, balance double, sales_term_id varchar, sales_term_name varchar, total_tax double, email_status varchar, bill_email varchar, linked_txn json, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

bills

id varchar, doc_number varchar, txn_date date, vendor_id varchar, vendor_name varchar, due_date date, balance double, ap_account_id varchar, ap_account_name varchar, linked_txn json, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

payments

id varchar, doc_number varchar, txn_date date, customer_id varchar, customer_name varchar, payment_ref_num varchar, unapplied_amt double, payment_method_id varchar, payment_method_name varchar, deposit_to_account_id varchar, deposit_to_account_name varchar, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

bill_payments

id varchar, doc_number varchar, txn_date date, vendor_id varchar, vendor_name varchar, pay_type varchar, check_payment json, credit_card_payment json, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

purchases

id varchar, doc_number varchar, txn_date date, payment_type varchar, credit boolean, account_id varchar, account_name varchar, entity_id varchar, entity_name varchar, entity_type varchar, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

deposits

id varchar, doc_number varchar, txn_date date, deposit_to_account_id varchar, deposit_to_account_name varchar, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

journal_entries

id varchar, doc_number varchar, txn_date date, adjustment boolean, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

credit_memos

id varchar, doc_number varchar, txn_date date, customer_id varchar, customer_name varchar, balance double, remaining_credit double, total_tax double, email_status varchar, bill_email varchar, linked_txn json, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

estimates

id varchar, doc_number varchar, txn_date date, customer_id varchar, customer_name varchar, txn_status varchar, expiration_date date, accepted_date date, total_tax double, email_status varchar, bill_email varchar, linked_txn json, total_amt double, currency varchar, exchange_rate double, private_note varchar, line json, created_at timestamptz, updated_at timestamptz

Google Analytics

Daily GA4 reports: traffic by channel and source, pages, events, devices and geography.

Set it up

  1. In Google Analytics, open Admin → Property access management and add DuckHouse's service account with the Viewer role.
  2. Copy the numeric property ID from Admin → Property details and paste it below.
  3. There is no password or key to share. Removing that user in Google Analytics ends our access.

Good to know

  • There is no sign-in: you add DuckHouse's Google account to your property as a Viewer, and enter the numeric property ID (not the G- measurement ID).
  • Each table is a daily report. The last three days are re-read on every sync, because Google keeps revising recent days.
  • active_users is the “Users” figure you see in Google Analytics; total_users reads slightly higher.
  • Google may withhold rows to protect visitor privacy, and may fold rare values into (other). DuckHouse loads exactly what Google returns.
  • Syncs as often as once an hour.
Show 5 tables and their columns

traffic_daily

id varchar, date date, session_default_channel_group varchar, session_source_medium varchar, sessions bigint, engaged_sessions bigint, active_users bigint, total_users bigint, new_users bigint, key_events double, total_revenue double

pages_daily

id varchar, date date, page_path varchar, screen_page_views bigint, sessions bigint, active_users bigint, user_engagement_duration double

events_daily

id varchar, date date, event_name varchar, event_count bigint, active_users bigint, total_users bigint

devices_daily

id varchar, date date, device_category varchar, operating_system varchar, browser varchar, sessions bigint, active_users bigint, total_users bigint

geo_daily

id varchar, date date, country varchar, region varchar, sessions bigint, active_users bigint, total_users bigint

SFTP / FTP

CSV files dropped in a folder on your server, syncd into one table periodically.

Set it up

  1. Create a user on the server that can read the folder the files land in. Read access is enough; DuckHouse never changes or deletes files.
  2. Allow connections from the internet. SFTP is best; plain FTP sends the password unencrypted, so use it only if nothing else is possible.
  3. Choose the column that identifies a row, such as id or order_number. Each sync imports new or changed files, oldest first: a row with an identifier already in the table replaces it, and new ones are added.
  4. Files need a header row. Column types are detected from the first file and kept after that.

Good to know

  • Works with SFTP, FTPS and plain FTP. Plain FTP sends the password unencrypted; use it only when the server offers nothing else.
  • Each sync imports files in the folder that match the pattern and are new or have changed (by size and modification time), oldest first. Files on the server are never changed or deleted.
  • Rows are matched on the identifier column: a row whose identifier is already in the table replaces it, new ones are added, and nothing is deleted. _file records which file a row last came from.
  • Files need a header row. Column types are detected from the whole of the first file and kept after that; a later value that does not fit (text in a number column) stops the sync with an error naming the column. New columns in later files are added.
  • A file with a blank or repeated identifier is refused rather than guessed at. If rows are only unique together with another column, list both as the identifier.
  • For SFTP, the server's host key seen on the first sync is remembered, and a different key later is refused. You can pin it up front instead.
  • Files up to 1 GB each; .csv.gz works too.
  • Syncs as often as every 5 minutes.

Umami

Every pageview and custom event from Umami, plus sessions and its daily visitor numbers, on Umami Cloud or self-hosted.

Set it up

  1. In Umami, open Settings → API keys and create a key. On Umami Cloud that is the only way in.
  2. Self-hosted without API keys (older than Umami 3)? Leave the key empty and enter a username and password instead; a read-only view-only user is enough.
  3. For a self-hosted install, enter its address. It must be reachable over HTTPS from the public internet.
  4. Every website the key can see is synced, including team websites. To sync only some, list their IDs.

Good to know

  • Works with Umami Cloud and self-hosted Umami. A self-hosted install must be reachable over HTTPS from the public internet.
  • events holds every pageview (event_type 1) and custom event (event_type 2), with the visitor's browser, device and location. Join sessions on session_id for region, language and screen.
  • stats_daily is Umami's own visitors, visits, bounces and time on site per day, in the time zone you choose. These need Umami's visit ids, so they cannot be rebuilt from events.
  • Custom event properties (Umami's event data) are not synced yet; has_data marks the events that carry them.
  • Syncs as often as every 15 minutes.
Show 4 tables and their columns

websites

id varchar, name varchar, domain varchar, team_id varchar, user_id varchar, share_id varchar, created_at timestamptz, updated_at timestamptz, reset_at timestamptz

events

id varchar, website_id varchar, session_id varchar, created_at timestamptz, event_type bigint, event_name varchar, hostname varchar, url_path varchar, url_query varchar, page_title varchar, referrer_domain varchar, referrer_path varchar, referrer_query varchar, distinct_id varchar, country varchar, city varchar, device varchar, os varchar, browser varchar, has_data boolean

sessions

id varchar, website_id varchar, distinct_id varchar, hostname varchar, browser varchar, os varchar, device varchar, screen varchar, language varchar, country varchar, region varchar, city varchar

stats_daily

id varchar, website_id varchar, date date, pageviews bigint, visitors bigint, visits bigint, bounces bigint, totaltime bigint

Meta Ads

Facebook and Instagram campaigns, ad sets and ads, with daily results for every ad: spend, impressions, clicks and conversions.

Set it up

  1. In Meta Business settings, open Users → System users and add a system user. The Employee role is enough.
  2. Select it, choose Assign assets, pick your ad account and turn on View performance.
  3. Choose Generate token, pick one of your business's apps, tick the ads_read permission, and paste the token below. A token set to never expire saves replacing it every 60 days.
  4. The ad account id is the number after act= in the Ads Manager address bar. It is also listed under Accounts → Ad accounts in Business settings.

Good to know

  • Covers Facebook and Instagram ads. You create a system user in Meta Business settings and paste its token; the token needs only ads_read.
  • Archived and deleted ads are included in the daily figures. Meta leaves them out by default, which is the usual reason exported spend does not match Ads Manager.
  • actions and action_values are JSON, because Meta reports a list of action types that differs per account.
  • Results are attributed for up to 7 days after a click, so the last 7 days are re-read on every sync. Meta provides at most 37 months of history.
  • Syncs as often as once an hour.
Show 4 tables and their columns

campaigns

id varchar, account_id varchar, name varchar, status varchar, effective_status varchar, objective varchar, buying_type varchar, bid_strategy varchar, daily_budget bigint, lifetime_budget bigint, budget_remaining bigint, spend_cap bigint, special_ad_categories json, start_time timestamptz, stop_time timestamptz, created_time timestamptz, updated_time timestamptz

ad_sets

id varchar, account_id varchar, campaign_id varchar, name varchar, status varchar, effective_status varchar, optimization_goal varchar, billing_event varchar, bid_strategy varchar, bid_amount bigint, daily_budget bigint, lifetime_budget bigint, budget_remaining bigint, destination_type varchar, attribution_spec json, start_time timestamptz, end_time timestamptz, created_time timestamptz, updated_time timestamptz

ads

id varchar, account_id varchar, campaign_id varchar, adset_id varchar, name varchar, status varchar, effective_status varchar, creative_id varchar, conversion_domain varchar, created_time timestamptz, updated_time timestamptz

ad_insights_daily

id varchar, date date, account_id varchar, account_name varchar, account_currency varchar, campaign_id varchar, campaign_name varchar, adset_id varchar, adset_name varchar, ad_id varchar, ad_name varchar, impressions bigint, clicks bigint, spend double, reach bigint, frequency double, cpm double, cpc double, ctr double, inline_link_clicks bigint, actions json, action_values json

Google Sheets

Every tab of a spreadsheet as a table, for the budgets, targets and lookups that only live in a sheet.

Set it up

  1. Open the spreadsheet, click Share, and add the DuckHouse service account as a Viewer.
  2. Copy the link from your browser's address bar and paste it below.
  3. Each tab becomes a table, with column names taken from its header row. Every value arrives as text; cast it in SQL.

Good to know

  • There is no sign-in: you share the spreadsheet with DuckHouse's Google account as a Viewer, then paste its link.
  • Every tab becomes a table named after the tab, and the header row gives the column names. A column headed ID becomes id_2, because id is reserved for the row number.
  • Every column is text. A spreadsheet column has no type, and one stray note in a number column would otherwise fail the whole load. Cast in SQL: amount::DOUBLE.
  • The whole sheet is re-read each time, so edits and deleted rows are reflected.
  • One Connection reads one spreadsheet. Add another Connection for each additional spreadsheet.
  • If your Google Workspace blocks sharing outside the organization, an admin has to allow it first.
  • Syncs as often as every 15 minutes.

Notion

Pages and database rows with their properties, plus data sources and users. Page bodies (the text inside a page) are not synced yet.

Set it up

  1. In Notion's Developer portal (app.notion.com/developers/connections), open Internal connections and create a new connection for your workspace. Notion used to call these integrations.
  2. On its Configuration tab, keep Read content on, turn on Read user information if you want the users table, then copy the installation access token and paste it below.
  3. Share what you want synced: on the connection's Content access tab choose Edit access, or on any page open the ••• menu → Connections and add it. Sub-pages and database rows come along with their parent.
  4. The connection sees nothing until something is shared with it, and newly shared pages can take a few minutes to appear.

Good to know

  • Notion now calls integrations “internal connections”. A connection sees nothing until you share pages or databases with it, from the page's ••• menu → Connections.
  • Database rows arrive in pages, with their properties as JSON and the title pulled out into its own column.
  • Page bodies (the text inside a page) are not synced; only pages, databases and their properties.
  • Pages moved to the trash are flagged. Pages deleted permanently, or un-shared from the connection, stay in the table.
  • Syncs as often as every 15 minutes.
Show 3 tables and their columns

users

id varchar, type varchar, name varchar, email varchar, avatar_url varchar, bot json

data_sources

id varchar, title varchar, description varchar, database_id varchar, database_parent_type varchar, database_parent_id varchar, properties json, created_time timestamptz, last_edited_time timestamptz, created_by_id varchar, last_edited_by_id varchar, in_trash boolean

pages

id varchar, title varchar, parent_type varchar, parent_id varchar, data_source_id varchar, database_id varchar, properties json, created_time timestamptz, last_edited_time timestamptz, created_by_id varchar, last_edited_by_id varchar, in_trash boolean, url varchar, public_url varchar

GitHub

Repositories, issues, pull requests, commits and releases, for engineering metrics next to your business data.

Set it up

  1. In GitHub, open Settings → Developer settings → Personal access tokens → Fine-grained tokens.
  2. Choose the organization as the resource owner, and the repositories to include.
  3. Grant read-only access to Contents, Issues, Pull requests and Metadata, then paste the token below.

Good to know

  • Use a fine-grained token with read-only access to Contents, Issues, Pull requests and Metadata.
  • Archived repositories are skipped unless you name them.
  • Issues and pull requests are separate tables; GitHub's own API mixes them together.
  • Syncs as often as every 15 minutes.
Show 5 tables and their columns

repositories

id varchar, name varchar, full_name varchar, owner varchar, private boolean, archived boolean, fork boolean, description varchar, language varchar, default_branch varchar, stargazers_count bigint, forks_count bigint, open_issues_count bigint, size bigint, topics json, created_at timestamptz, updated_at timestamptz, pushed_at timestamptz, html_url varchar

issues

id varchar, repository varchar, number bigint, title varchar, state varchar, state_reason varchar, author varchar, assignee varchar, labels json, milestone varchar, comments bigint, created_at timestamptz, updated_at timestamptz, closed_at timestamptz, html_url varchar

pull_requests

id varchar, repository varchar, number bigint, title varchar, state varchar, draft boolean, author varchar, base_ref varchar, head_ref varchar, labels json, requested_reviewers json, created_at timestamptz, updated_at timestamptz, closed_at timestamptz, merged_at timestamptz, merge_commit_sha varchar, html_url varchar

commits

id varchar, repository varchar, sha varchar, message varchar, author_name varchar, author_email varchar, author_login varchar, authored_at timestamptz, committed_at timestamptz, verified boolean, html_url varchar

releases

id varchar, repository varchar, tag_name varchar, name varchar, draft boolean, prerelease boolean, author varchar, created_at timestamptz, published_at timestamptz, html_url varchar

Stripe, PostgreSQL, MySQL and DuckDB

These are covered on the Connections page, along with how database tables are kept current. DuckDB has its own section there.