{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "${shop}.myshopify.com",
      "shopify.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/python-connector-base:4.0.2@sha256:9fdb1888c4264cf6fee473649ecb593f56f58e5d0096a87ee0b231777e2e3e73"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "1de7c985-bcce-425a-a762-57389cea3900",
          "name": "shopify_config_dev_null"
        },
        {
          "id": "1f3550b3-740a-4841-8337-0e28a7b23458",
          "name": "shopify_config_old_dev_null"
        },
        {
          "id": "5f1d6da1-87bc-46b4-8de7-1b3fe1a2be90",
          "name": "shopify_config_transactions_with_user_id_dev_null"
        },
        {
          "id": "a08529a9-618c-4bfc-884f-f5dccba1c1ab",
          "name": "shopify_config_oauth_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests"
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config_transactions_with_user_id.json",
          "name": "SECRET_SOURCE-SHOPIFY-TRANSACTIONS-WITH-USER-ID__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-SHOPIFY_OAUTH__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_old.json",
          "name": "SECRET_SOURCE-SHOPIFY_OLD_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-SHOPIFY__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "3.3.1-preview.8c51c50",
  "dockerRepository": "airbyte/source-shopify",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/shopify",
  "erdUrl": "https://dbdocs.io/airbyteio/source-shopify?view=relationships",
  "externalDocumentationUrls": [
    {
      "title": "Shopify Admin API",
      "type": "api_reference",
      "url": "https://shopify.dev/docs/api/admin-rest"
    },
    {
      "title": "Developer changelog",
      "type": "api_release_history",
      "url": "https://shopify.dev/changelog"
    },
    {
      "title": "Shopify API changelog",
      "type": "api_release_history",
      "url": "https://shopify.dev/docs/api/release-notes"
    },
    {
      "title": "Shopify authentication",
      "type": "authentication_guide",
      "url": "https://shopify.dev/docs/apps/auth"
    },
    {
      "title": "Shopify Admin API OpenAPI specification",
      "type": "openapi_spec",
      "url": "https://shopify.dev/docs/api/admin-rest"
    },
    {
      "title": "Shopify rate limits",
      "type": "rate_limits",
      "url": "https://shopify.dev/docs/api/usage/rate-limits"
    },
    {
      "title": "Shopify Status",
      "type": "status_page",
      "url": "https://www.shopifystatus.com/"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "8c51c50e22fa597d2bb66d2e3dda3adc7a6c2558",
      "commit_timestamp": "2026-04-22T17:44:23+00:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-shopify/3.3.1-preview.8c51c50.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-shopify/3.3.1-preview.8c51c50/metadata.yaml",
      "metadata_last_modified": "2026-04-22T17:55:36.607818+00:00",
      "registry_entry_generated_at": "2026-04-22T17:55:36.607818+00:00"
    }
  },
  "githubIssueLabel": "source-shopify",
  "icon": "shopify.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-shopify/latest/icon.svg",
  "language": "python",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 21600,
  "name": "Shopify",
  "packageInfo": {
    "cdk_version": "python:7.17.3.post4.dev24792917452"
  },
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "1.0.0": {
        "message": "This upgrade brings changes to certain streams after migration to Shopify API version `2023-07`, more details in this PR: https://github.com/airbytehq/airbyte/pull/29361.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#1.0.0",
        "upgradeDeadline": "2023-09-17"
      },
      "2.0.0": {
        "message": "This upgrade brings perfomance impovements and stream schema changes. Details are available here: https://github.com/airbytehq/airbyte/pull/32345#issue-1985556333.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#2.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "collections",
              "customer_address",
              "discount_codes",
              "fulfillment_orders",
              "fulfillments",
              "inventory_items",
              "inventory_levels",
              "metafield_collections",
              "metafield_customers",
              "metafield_draft_orders",
              "metafield_locations",
              "metafield_orders",
              "metafield_product_images",
              "metafield_product_variants",
              "order_refunds",
              "product_images",
              "product_variants",
              "transactions"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-03-18"
      },
      "2.1.0": {
        "message": "This upgrade changes the `Products`, `Product Images` and `Product Variants` streams to use `Shopify GraphQL BULK`. More details here: https://github.com/airbytehq/airbyte/pull/37767.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#2.1.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "product_variants"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-06-10"
      },
      "2.2.0": {
        "message": "The countries object from the admin REST API now always return a number",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#2.2.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "countries"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-06-11"
      },
      "2.6.1": {
        "message": "The `ProductsGraphQL` and the `CustomerSavedSearch` streams have been deprecated by Shopify and removed from Airbyte. Please use the `Products` stream instead. As of 2025-01-16, Shopify no longer provides data for the affected streams. More details here: https://github.com/airbytehq/airbyte/pull/51037.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#2.6.1",
        "scopedImpact": [
          {
            "impactedScopes": [
              "products_graph_ql",
              "customer_saved_search"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2025-01-16"
      },
      "3.0.0": {
        "message": "After upgrading to Source Shopify v3.0.0 latest v2025-01 API version will be used by the source. Due to API upgrade streams `Countries` and `Product Variants` contain schema changes that require Refreshing Source Schema and Clearing affected streams. Streams `Articles`, `Blogs` and `Pages` change value for field `admin_graphql_api_id`, if you rely on this value please Clear and Resync affected streams. See more details on https://docs.airbyte.com/integrations/sources/shopify-migrations.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations#3.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "countries",
              "product_variants",
              "articles",
              "blogs",
              "pages"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2025-04-01"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/shopify-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": true,
      "packageName": "airbyte-source-shopify"
    }
  },
  "sourceDefinitionId": "9da77001-af33-4bcd-be46-6252bf9342b9",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "additionalProperties": false,
          "properties": {
            "access_token": {
              "path_in_connector_config": [
                "credentials",
                "access_token"
              ],
              "type": "string"
            },
            "shop": {
              "path_in_connector_config": [
                "shop"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_secret": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "path_in_connector_config": [
                "credentials",
                "client_id"
              ],
              "type": "string"
            },
            "client_secret": {
              "path_in_connector_config": [
                "credentials",
                "client_secret"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "predicate_key": [
        "credentials",
        "auth_method"
      ],
      "predicate_value": "oauth2.0"
    },
    "connectionSpecification": {
      "$schema": "https://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "bulk_window_in_days": {
          "default": 30,
          "description": "Defines what would be a date range per single BULK Job",
          "title": "GraphQL BULK Date Range in Days",
          "type": "integer"
        },
        "credentials": {
          "description": "The authorization method to use to retrieve data from Shopify",
          "oneOf": [
            {
              "description": "OAuth2.0",
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "The Access Token for making authenticated requests.",
                  "order": 3,
                  "title": "Access Token",
                  "type": "string"
                },
                "auth_method": {
                  "const": "oauth2.0",
                  "order": 0,
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "The Client ID of the Shopify developer application.",
                  "order": 1,
                  "title": "Client ID",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "The Client Secret of the Shopify developer application.",
                  "order": 2,
                  "title": "Client Secret",
                  "type": "string"
                }
              },
              "required": [
                "auth_method"
              ],
              "title": "OAuth2.0",
              "type": "object"
            },
            {
              "description": "API Password Auth",
              "properties": {
                "api_password": {
                  "airbyte_secret": true,
                  "description": "The API Password for your private application in the `Shopify` store.",
                  "order": 1,
                  "title": "API Password",
                  "type": "string"
                },
                "auth_method": {
                  "const": "api_password",
                  "order": 0,
                  "type": "string"
                }
              },
              "required": [
                "auth_method",
                "api_password"
              ],
              "title": "API Password",
              "type": "object"
            }
          ],
          "order": 2,
          "title": "Shopify Authorization Method",
          "type": "object"
        },
        "fetch_transactions_user_id": {
          "default": false,
          "description": "Defines which API type (REST/BULK) to use to fetch `Transactions` data. If you are a `Shopify Plus` user, leave the default value to speed up the fetch.",
          "title": "Add `user_id` to Transactions (slower)",
          "type": "boolean"
        },
        "fulfillment_orders_include_closed": {
          "default": false,
          "description": "If enabled, the `Fulfillment Orders` stream includes closed fulfillment orders. Shopify excludes closed orders by default.",
          "title": "Include Closed Fulfillment Orders",
          "type": "boolean"
        },
        "job_checkpoint_interval": {
          "default": 100000,
          "description": "The threshold, after which the single BULK Job should be checkpointed (min: 15k, max: 1M)",
          "maximum": 1000000,
          "minimum": 15000,
          "title": "BULK Job checkpoint (rows collected)",
          "type": "integer"
        },
        "job_product_variants_include_pres_prices": {
          "default": true,
          "description": "If enabled, the `Product Variants` stream attempts to include `Presentment prices` field (may affect the performance).",
          "title": "Add `Presentment prices` to Product Variants",
          "type": "boolean"
        },
        "job_termination_threshold": {
          "default": 7200,
          "description": "The max time in seconds, after which the single BULK Job should be `CANCELED` and retried. The bigger the value the longer the BULK Job is allowed to run.",
          "maximum": 21600,
          "minimum": 3600,
          "title": "BULK Job termination threshold",
          "type": "integer"
        },
        "shop": {
          "description": "The name of your Shopify store found in the URL. For example, if your URL was https://NAME.myshopify.com, then the name would be 'NAME' or 'NAME.myshopify.com'.",
          "examples": [
            "my-store",
            "my-store.myshopify.com"
          ],
          "order": 1,
          "pattern": "^(?!https://)(?!https://).*",
          "title": "Shopify Store",
          "type": "string"
        },
        "start_date": {
          "default": "2020-01-01",
          "description": "The date you would like to replicate data from. Format: YYYY-MM-DD. Any data before this date will not be replicated.",
          "format": "date",
          "order": 3,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "title": "Replication Start Date",
          "type": "string"
        }
      },
      "required": [
        "shop"
      ],
      "title": "Shopify Source CDK Specifications",
      "type": "object"
    },
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/shopify",
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "customers",
      "customer_journey_summary",
      "order_agreements",
      "order_refunds",
      "transactions_graphql",
      "product_variants",
      "abandoned_checkouts",
      "discount_codes",
      "inventory_items",
      "locations",
      "shop",
      "price_rules",
      "inventory_levels",
      "custom_collections",
      "fulfillments",
      "product_images",
      "collects",
      "tender_transactions",
      "smart_collections",
      "draft_orders",
      "metafield_customers",
      "metafield_products",
      "metafield_orders",
      "customer_address",
      "fulfillment_orders",
      "metafield_shops",
      "countries",
      "metafield_product_variants",
      "metafield_smart_collections",
      "metafield_product_images",
      "metafield_draft_orders",
      "metafield_locations"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "language:python",
    "cdk:python"
  ],
  "tombstone": false
}
