Shopify
This page contains the setup guide and reference information for the Shopify source connector.
Setup guide
This connector supports the OAuth2.0 and API Password (for private applications) athentication methods.
Connect using OAuth2.0 (for Cloud users only)
- Click Authenticate your Shopify accountto start the autentication.
- Click Installto install the Airbyte application.
- Log in to your account, if you are not already logged in.
- Select the store you want to sync and review the consent.
- Click on Installto finish the Installation.
- Reveiew the Shop Namefield for the chosen store for a sync.
- Set the Start Dateas the starting point for your data replication. Any data created before this date will not be synced.
- Click Test and Saveto finish the source set up.
Connect using API PASSWORD option (for OSS users)
- Name your source.
- Enter your Store name. You can find this in your URL when logged in to Shopify or within the Store details section of your Settings.
- Enter your Admin API access token. To set up the access token, you will need to set up a custom application. See instructions below on creating a custom app.
- Click Set up source
Creating a Custom App
Authentication to the Shopify API requies a custom application. Follow these instructions to create a custom app and find your Admin API Access Token.
- Navigate to Settings > App and sales channels > Develop apps > Create an app
- Name your new app
- Select Configure Admin API scopes
- Tick all the scopes prefixed with read_(e.g.read_locations,read_price_rules, etc ) and save. See below for the full list of scopes to allow.
- Click Install app to give this app access to your data.
- Once installed, go to API Credentials to copy the Admin API Access Token.
You're ready to set up Shopify in Airbyte!
Scopes Required for Custom App
Add the following scopes to your custom app to ensure Airbyte can sync all available data. To see a list of streams this source supports, see our full Shopify documentation.
- read_analytics
- read_assigned_fulfillment_orders
- read_gdpr_data_request
- read_locations
- read_price_rules
- read_product_listings
- read_products
- read_reports
- read_resource_feedbacks
- read_script_tags
- read_shipping
- read_locales
- read_shopify_payments_accounts
- read_shopify_payments_bank_accounts
- read_shopify_payments_disputes
- read_shopify_payments_payouts
- read_content
- read_themes
- read_third_party_fulfillment_orders
- read_translations
- read_customers
- read_discounts
- read_draft_orders
- read_fulfillments
- read_gift_cards
- read_inventory
- read_legal_policies
- read_marketing_events
- read_merchant_managed_fulfillment_orders
- read_online_store_pages
- read_order_edits
- read_orders
Supported sync modes
The Shopify source supports both Full Refresh and Incremental syncs. You can choose if this connector will copy only the new or updated data, or all rows in the tables and columns you set up for replication, every time a sync is run.
This source can sync data for the Shopify REST API and the Shopify GraphQl API.
Troubleshooting tips
- If you faced with accesserrors while using theOAuth2.0, please make sure you've followed this Shopify Article to request the access to the Client's store first, once the access is granted, you should be able to proceed withOAuth2.0authentication method.
- Check out common troubleshooting issues for the Shopify source connector on our Airbyte Forum here.
Supported Streams
This Source is capable of syncing the following core Streams:
- Articles
- Blogs
- Abandoned Checkouts
- Collects
- Collections
- Countries
- Custom Collections
- CustomerAddress
- CustomerSavedSearch
- Smart Collections
- Customers
- Draft Orders
- Discount Codes
- Disputes
- Metafields
- Orders
- Orders Refunds
- Orders Risks
- Products
- Products (GraphQL)
- Product Images
- Product Variants
- Transactions
- Tender Transactions
- Pages
- Price Rules
- Locations
- InventoryItems
- InventoryLevels
- Fulfillment Orders
- Fulfillments
- Shop
Stream sync recommendations
For better experience with Incremental Refresh the following is recommended:
- Order Refunds,- Order Risks,- Transactionsshould be synced along with- Ordersstream.
- Discount Codesshould be synced along with- Price Rulesstream.
If child streams are synced alone from the parent stream - the full sync will take place, and the records are filtered out afterwards.
Capturing Deleted Records
The connector captures deletions for records in the Articles, Blogs, CustomCollections, Orders, Pages, PriceRules and Products streams. 
When a record is deleted, the connector outputs a record with the ID of that record and the deleted_at, deleted_message, and deleted_description fields filled out. No other fields are filled out for the deleted records. 
Check the following Shopify documentation for more information about the Retrieving Deleted Records
Data type mapping
| Integration Type | Airbyte Type | 
|---|---|
| string | string | 
| number | number | 
| array | array | 
| object | object | 
| boolean | boolean | 
Features
| Feature | Supported?(Yes/No) | 
|---|---|
| Full Refresh Sync | Yes | 
| Incremental - Append Sync | Yes | 
| Namespaces | No | 
Performance considerations
Shopify has some rate limit restrictions. Typically, there should not be issues with throttling or exceeding the rate limits but in some edge cases, user can receive the warning message as follows:
"Caught retryable error '<some_error> or null' after <some_number> tries. Waiting <some_number> seconds then retrying..."
This is expected when the connector hits the 429 - Rate Limit Exceeded HTTP Error. With given error message the sync operation is still goes on, but will require more time to finish.
Changelog
| Version | Date | Pull Request | Subject | 
|---|---|---|---|
| 1.1.3 | 2023-10-17 | 31500 | Fixed the issue caused by the missing access tokenwhile setup the new source and not yet authenticated | 
| 1.1.2 | 2023-10-13 | 31381 | Fixed the issue caused by the statepresence while fetching thedeleted eventswith pagination | 
| 1.1.1 | 2023-09-18 | 30560 | Performance testing - include socat binary in docker image | 
| 1.1.0 | 2023-09-07 | 30246 | Added ability to fetch destroyedrecords forArticles, Blogs, CustomCollections, Orders, Pages, PriceRules, Products | 
| 1.0.0 | 2023-08-11 | 29361 | Migrate to the 2023-07Shopify API Version | 
| 0.6.2 | 2023-08-09 | 29302 | Handle the Internal Server Errorwhen entity could be fetched | 
| 0.6.1 | 2023-08-08 | 28291 | Allow shopfield to accept*.myshopify.comshop names, updatedOAuth Spec | 
| 0.6.0 | 2023-08-02 | 28770 | Added Disputesstream | 
| 0.5.1 | 2023-07-13 | 28700 | Improved error messageswith more user-friendly description, refactored code | 
| 0.5.0 | 2023-06-13 | 27732 | License Update: Elv2 | 
| 0.4.0 | 2023-06-13 | 27083 | Added CustomerSavedSearch,CustomerAddressandCountriesstreams | 
| 0.3.4 | 2023-05-10 | 25961 | Added validation for shopin input configuration (accepts non-url-like inputs) | 
| 0.3.3 | 2023-04-12 | 25110 | Fixed issue when cursor_fieldis"None", added missing properties to stream schemas, fixedaccess_scopesvalidation error | 
| 0.3.2 | 2023-02-27 | 23473 | Fixed OOM / Memory leak issue for Airbyte Cloud | 
| 0.3.1 | 2023-01-16 | 21461 | Added discount_applicationstoordersstream | 
| 0.3.0 | 2022-11-16 | 19492 | Added support for graphql and add a graphql products stream | 
| 0.2.0 | 2022-10-21 | 18298 | Updated API version to the 2022-10, make stream schemas backward cpmpatible | 
| 0.1.39 | 2022-10-13 | 17962 | Added metafield streams; support for nested list streams | 
| 0.1.38 | 2022-10-10 | 17777 | Fixed 404for configured streams, fix missingcursorerror for old records | 
| 0.1.37 | 2022-04-30 | 12500 | Improve input configuration copy | 
| 0.1.36 | 2022-03-22 | 9850 | Added BalanceTransactionsstream | 
| 0.1.35 | 2022-03-07 | 10915 | Fixed a bug which caused full-refreshsyncs of child REST entities configured forincremental | 
| 0.1.34 | 2022-03-02 | 10794 | Minor specification re-order, fixed links in documentation | 
| 0.1.33 | 2022-02-17 | 10419 | Fixed wrong field type for tax_exemptions for Abandoned_checkoutsstream | 
| 0.1.32 | 2022-02-18 | 10449 | Added tender_transactionsstream | 
| 0.1.31 | 2022-02-08 | 10175 | Fixed compatibility issues for legacy user config | 
| 0.1.30 | 2022-01-24 | 9648 | Added permission validation before sync | 
| 0.1.29 | 2022-01-20 | 9049 | Added shop_urlto the record for all streams | 
| 0.1.28 | 2022-01-19 | 9591 | Implemented OAuth2.0authentication method for Airbyte Cloud | 
| 0.1.27 | 2021-12-22 | 9049 | Updated connector fields title/description | 
| 0.1.26 | 2021-12-14 | 8597 | Fixed mismatched number of tablesfor base-normalization, increased performance oforder_refundsstream | 
| 0.1.25 | 2021-12-02 | 8297 | Added Shop stream | 
| 0.1.24 | 2021-11-30 | 7783 | Reviewed and corrected schemas for all streams | 
| 0.1.23 | 2021-11-15 | 7973 | Added InventoryItems | 
| 0.1.22 | 2021-10-18 | 7101 | Added FulfillmentOrders, Fulfillments streams | 
| 0.1.21 | 2021-10-14 | 7382 | Fixed InventoryLevelsprimary key | 
| 0.1.20 | 2021-10-14 | 7063 | Added LocationandInventoryLevelsas streams | 
| 0.1.19 | 2021-10-11 | 6951 | Added support of OAuth 2.0authorisation option | 
| 0.1.18 | 2021-09-21 | 6056 | Added pre_tax_priceto theorders/line_itemsschema | 
| 0.1.17 | 2021-09-17 | 5244 | Created data type enforcer for converting prices into numbers | 
| 0.1.16 | 2021-09-09 | 5965 | Fixed the connector's performance for Incremental refresh | 
| 0.1.15 | 2021-09-02 | 5853 | Fixed amounttype inorder_refundschema | 
| 0.1.14 | 2021-09-02 | 5801 | Fixed line_items/discount allocations&dutiesparts ofordersschema | 
| 0.1.13 | 2021-08-17 | 5470 | Fixed rate limits throttling | 
| 0.1.12 | 2021-08-09 | 5276 | Added status property to product schema | 
| 0.1.11 | 2021-07-23 | 4943 | Fixed products schema up to API 2021-07 | 
| 0.1.10 | 2021-07-19 | 4830 | Fixed for streams json schemas, upgrade to API version 2021-07 | 
| 0.1.9 | 2021-07-04 | 4472 | Incremental sync is now using updated_at instead of since_id by default | 
| 0.1.8 | 2021-06-29 | 4121 | Added draft orders stream | 
| 0.1.7 | 2021-06-26 | 4290 | Fixed the bug when limiting output records to 1 caused infinity loop | 
| 0.1.6 | 2021-06-24 | 4009 | Added pages, price rules and discount codes streams | 
| 0.1.5 | 2021-06-10 | 3973 | Added AIRBYTE_ENTRYPOINTfor Kubernetes support | 
| 0.1.4 | 2021-06-09 | 3926 | New attributes to Orders schema | 
| 0.1.3 | 2021-06-08 | 3787 | Added Native Shopify Source Connector |