Connector-specific configuration patterns for ELT pipelines — QuickBooks OAuth + rate-limit handling, Stripe webhook + batch hybrid, Salesforce Bulk API 2.0, HubSpot API v3, GA4 BigQuery export, Shopify GraphQL Admin API. Used by `etl-pipeline-engineer` when configuring an Airbyte / Fivetran / n8n connector against a real source.
Scanned 9/23/2026
npx -y skills add mcorbett51090/RavenClaude --skill connector-configuration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Connector Configuration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mcorbett51090-connector-configuration)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: connector-configuration
description: Connector-specific configuration patterns for ELT pipelines — QuickBooks OAuth + rate-limit handling, Stripe webhook + batch hybrid, Salesforce Bulk API 2.0, HubSpot API v3, GA4 BigQuery export, Shopify GraphQL Admin API. Used by `etl-pipeline-engineer` when configuring an Airbyte / Fivetran / n8n connector against a real source.
---
# Skill: connector-configuration
> **Invoked by:** `etl-pipeline-engineer` (primary), `connector-developer` (custom-connector path).
>
> **When to invoke:** configuring any pre-built ELT connector (QBO, Stripe, Salesforce, HubSpot, GA4, Shopify, HRIS); diagnosing a rate-limit-related failure; deciding on sync frequency / state-management posture.
>
> **Output:** a working connector config + rate-limit-aware retry plan + state-management strategy + handoff documentation for engagement end.
## The 6-source toolkit (per the consulting practice's most common ingestion targets)
### QuickBooks Online
- **Auth:** OAuth 2.0 Authorization Code; 1-hour access tokens; refresh tokens 100-day rolling with notifications at 30 and 7 days
- **Register the app:** [developer.intuit.com](https://developer.intuit.com) → My Apps → create an app, enable the **Accounting** scope, copy the client ID/secret, set the redirect URI to your ELT vendor's callback. **Who can do it:** any Intuit developer account creates the app; connecting *production* to a company needs that company's admin to authorize. Walkthrough: [`../../knowledge/quickbooks-online-integration.md`](../../knowledge/quickbooks-online-integration.md). `[verify-at-build]`
- **Rate limits:** 10 req/s per realm-ID + app; batch endpoint 120/min; concurrent ~10. HTTP 429 / 403 → honor `Retry-After`
- **Connector availability:** Fivetran ✅, Airbyte ✅, Hevo ✅, Stitch ✅ (in maintenance)
- **QBO vs QB Desktop:** Desktop is materially different — usually requires QB Web Connector + CData / Transaction Pro. **QB Desktop is v0.2.0+ scope for this plugin.**
- **2026 watch:** "Reconnect URL" mandatory field in Intuit developer portal (single-source claim; verify before implementing)
### Stripe
- **Auth:** API key (restricted keys for production) — **not an OAuth app.** No developer-portal app registration: create a **restricted key** in the Stripe Dashboard → Developers → API keys (scoped read-only for ELT). **Who can do it:** a Stripe account member with Developer/Administrator access. `[verify-at-build]`
- **Connector availability:** Fivetran ✅, Airbyte ✅, Hevo ✅, Estuary ✅
- **Pattern:** **batch for history + webhooks for real-time** — don't try to ELT a webhook-driven event source as if it's a CRUD database
- **Common error:** ELT vendors are batch-only; client expects real-time fraud signals — webhook handlers run separately
### Salesforce
- **Auth:** Connected App + OAuth 2.0 JWT-bearer flow (server-side) or Web Server flow (interactive)
- **Register the app:** Setup → **App Manager → New Connected App** → enable OAuth, add the ELT vendor's callback URL, select scopes (`api`, `refresh_token`), then copy the **Consumer Key/Secret**. **Who can do it:** a **System Administrator** (or "Customize Application" + "Manage Connected Apps" perms). Walkthrough: [`../../knowledge/salesforce-integration.md`](../../knowledge/salesforce-integration.md). `[verify-at-build]`
- **Bulk API 2.0 ceilings:** 150M records/day; 15k batch submissions/24hr; 10k records/batch; 10MB payload (per [developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_limits.htm](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_limits.htm))
- **Connector availability:** Universal — all major ELT vendors. Bulk API 2.0 is the standard backbone.
- **Common error:** custom SObject field selection — limit query result columns to avoid 10MB payload pings
### HubSpot
- **Register the app:** single-org ELT → **Settings → Integrations → Private Apps → Create** (copy the access token, select CRM read scopes); distributed/marketplace → an app in [developers.hubspot.com](https://developers.hubspot.com) (OAuth client ID/secret + redirect URI). **Who can do it:** a HubSpot **super admin** for a private app; a developer account for a marketplace app (install still needs the target portal's super admin). Walkthrough: [`../../knowledge/hubspot-integration.md`](../../knowledge/hubspot-integration.md). `[verify-at-build]`
- **Rate limits:** OAuth marketplace apps 110/10s per installed account; private apps 100/10s (Free/Starter) → 190/10s (Pro/Enterprise); **CRM Search API capped at 4/sec**; OAuth via developer accounts up to 1M/day (per [developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines))
- **Connector availability:** Fivetran ✅, Airbyte ✅, Hevo ✅
- **Common error:** sync designed against private-app rate limits then deployed via OAuth marketplace (or vice versa) — different ceilings
### Google Analytics 4
- **Native BigQuery export:** FREE, daily + streaming/intraday — **this is the recommended path** when destination is BigQuery. No app registration — configure in **GA4 → Admin → Product Links → BigQuery Links** (needs GA4 property **Editor** + the BigQuery project owner).
- **Register the app (Data API path only):** when the destination isn't BigQuery, the ELT vendor authenticates via a **Google Cloud service-account JSON key** (Google Cloud Console → IAM & Admin → Service Accounts), or an OAuth client (same flow as Google SSO). **Who can do it:** Google Cloud project **Owner/Editor**; grant the service account GA4 property access. Walkthroughs: [`../../knowledge/ga4-integration.md`](../../knowledge/ga4-integration.md) + [`../../../auth-identity/skills/google-sso-setup/SKILL.md`](../../../auth-identity/skills/google-sso-setup/SKILL.md). `[verify-at-build]`
- **UA is gone.** GA4 only. Historical UA windows have closed for most properties.
- **ELT vendor connectors:** useful when destination is *not* BigQuery, or when blending with other sources
### Shopify
- **Auth:** OAuth 2.0
- **Register the app:** single-store ELT → **Shopify admin → Settings → Apps and sales channels → Develop apps → Create an app** (Admin API access token + scopes like `read_orders`, `read_products`); distribution → an app in the **Shopify Partner Dashboard** (OAuth client ID/secret + redirect URI). **Who can do it:** the **store owner** (or staff with the *Apps and channels → Develop apps* permission) for a custom app; **Partner-account** access for a Partner app. Walkthrough: [`../../knowledge/shopify-integration.md`](../../knowledge/shopify-integration.md). `[verify-at-build]`
- **API contract:** REST Admin API is legacy as of Oct 1, 2024. **GraphQL Admin API required for new apps since April 1, 2025.** All new connector work uses GraphQL.
- **Webhooks:** via GraphQL `webhookSubscriptionCreate`; HTTPS / Google Pub/Sub / AWS EventBridge destinations
- **Pattern:** ELT for orders / customers / products (historical) + webhooks for inventory + order events (real-time)
### HRIS (Workday, BambooHR, ADP)
- **Workday HCM / Adaptive / Financial / Strategic Sourcing / RaaS:** Fivetran ✅; setup requires Workday Integration System User with appropriate domain permissions
- **BambooHR:** Airbyte ✅ (both source and destination)
- **ADP:** thinner native ELT coverage; usually via **Flexspring** (API-to-API connector) or **Merge.dev** unified HRIS API
## Sync-frequency decision
| Frequency | When to pick | Cost implication |
|---|---|---|
| Real-time (webhooks) | Operational dashboards, fraud, inventory | Webhook handler runs separately from ELT |
| Hourly | Recent-activity reporting | Mid-tier per-MAR; high credit usage |
| Daily | Most analytics dashboards | Industry-standard; cheapest defensible cadence |
| Weekly | Trend / retention / cohort | Cheapest; rare for SMB dashboards |
**Heuristic:** the dashboard's refresh expectation is the cadence ceiling. Daily ELT for a quarterly QBR is wasted MAR.
## The Fivetran 2026 cost-predictability warning
**As of Jan 1, 2026, Fivetran counts deletes toward paid MAR** (previously only inserts/updates). For change-heavy sources (Salesforce, HubSpot deal updates, ticketing systems), this is a material cost increase per [fivetran.com/docs/usage-based-pricing/pricing-updates/2026-pricing-updates](https://fivetran.com/docs/usage-based-pricing/pricing-updates/2026-pricing-updates). **Flag this when proposing Fivetran for fixed-fee consulting engagements** — invoice surprises break the fixed-fee model.
## Workflow vs ELT decision (when n8n / Zapier vs Airbyte)
- **Workflow (n8n / Zapier / Make / Activepieces):** SaaS-to-SaaS, event-driven, low-volume (thousands of events/day), destination is another SaaS app
- **ELT (Fivetran / Airbyte):** destination is a warehouse, schema-managed, hundreds-of-thousands to millions of rows
## Anti-patterns this skill flags
- Rate-limit-naive code that doesn't honor `Retry-After`
- ELT pipeline scheduled more frequently than the dashboard needs
- Salesforce / HubSpot pipeline without naming the daily-API-cap math
- Fivetran proposed for change-heavy source without flagging the 2026 deletes-count change
- Stripe batch-only when client expects real-time signals (need webhooks)
- GA4 connector spend when native BigQuery export is free
- Workflow tool (n8n / Zapier) proposed for warehouse-bound ELT at million-row volume
- Custom integration when Airbyte ships a connector (re-inventing maintenance burden)
- ELT pipeline with no documented data-handoff plan
- Storing OAuth refresh tokens in plain text in a config repo (use a secret store)
## References
- Knowledge: [`../../knowledge/ipaas-connector-landscape-2026.md`](../../knowledge/ipaas-connector-landscape-2026.md)
- Knowledge: [`../../knowledge/quickbooks-online-integration.md`](../../knowledge/quickbooks-online-integration.md)
- Template: [`../../templates/airbyte-source-config.yaml`](../../templates/airbyte-source-config.yaml)
- LMS-specific: [`../../knowledge/edtech-lms-connector-gap.md`](../../knowledge/edtech-lms-connector-gap.md)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!