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
- In your Shopify admin, open Settings → Apps → Develop apps → Build apps in Dev Dashboard, and create an app.
- 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.
- In the app's Installs section, click Install app and choose your store.
- 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_ordersscope. - 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 Hide 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
- 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.
- Open the application, choose Credentials in the left menu, and switch to Production at the top.
- Copy the Production access token and paste it below. It covers every location of the account.
- 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
*_amountcolumns with acurrencybeside 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_idon payments and refunds, which joins toteam_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; theircatalog_object_idjoins tocatalog_item_variations, as doesinventory_counts. - Syncs as often as every 15 minutes.
Show Hide 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
- Click Connect to QuickBooks below.
- Sign in to Intuit as an admin of the company. Only an admin can grant access.
- 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
_deletedon 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
activeflag. - Line items stay as JSON inside each invoice, bill and journal entry row.
- Syncs as often as once an hour.
Show Hide 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
- In Google Analytics, open Admin → Property access management and add DuckHouse's service account with the Viewer role.
- Copy the numeric property ID from Admin → Property details and paste it below.
- 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_usersis the “Users” figure you see in Google Analytics;total_usersreads 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 Hide 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
- 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.
- Allow connections from the internet. SFTP is best; plain FTP sends the password unencrypted, so use it only if nothing else is possible.
- 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.
- 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.
_filerecords 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.gzworks 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
- In Umami, open Settings → API keys and create a key. On Umami Cloud that is the only way in.
- 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.
- For a self-hosted install, enter its address. It must be reachable over HTTPS from the public internet.
- 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.
eventsholds every pageview (event_type1) and custom event (event_type2), with the visitor's browser, device and location. Joinsessionsonsession_idfor region, language and screen.stats_dailyis 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 fromevents.- Custom event properties (Umami's event data) are not synced yet;
has_datamarks the events that carry them. - Syncs as often as every 15 minutes.
Show Hide 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
- In Meta Business settings, open Users → System users and add a system user. The Employee role is enough.
- Select it, choose Assign assets, pick your ad account and turn on View performance.
- 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.
- 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.
actionsandaction_valuesare 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 Hide 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
- Open the spreadsheet, click Share, and add the DuckHouse service account as a Viewer.
- Copy the link from your browser's address bar and paste it below.
- 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
IDbecomesid_2, becauseidis 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
- 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.
- 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.
- 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.
- 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 Hide 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
- In GitHub, open Settings → Developer settings → Personal access tokens → Fine-grained tokens.
- Choose the organization as the resource owner, and the repositories to include.
- 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 Hide 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.