diff --git a/blog/260603-shopify-public-apps-deprecation.md b/blog/260603-shopify-public-apps-deprecation.md new file mode 100644 index 000000000..38e019b87 --- /dev/null +++ b/blog/260603-shopify-public-apps-deprecation.md @@ -0,0 +1,39 @@ +--- +title: "2026-06-03: Deprecation of the Shopify public apps connection method" +date: "2026-06-03" +tags: ["Deprecation", "Shopify"] +authors: codatchris +--- + +Codat is deprecating the **public apps** connection method for the Shopify integration in favour of the simpler [custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps) approach. + + + +## What's changing + +The Shopify integration historically supported two ways for a merchant to connect their store: + +- **Custom apps** — the merchant creates a custom app in their Shopify admin and provides the store name, client ID, and client secret during the Codat Link flow. This is the standard method. +- **Public apps** — the client builds a public Shopify app, submits it to Shopify for approval, hosts an authorization endpoint, and configures the app's credentials in Codat. + +The **public apps** method is being deprecated and removed. It places a significant setup burden on clients, who must create and submit a public Shopify app for Shopify's review and approval, and develop and host an endpoint to authorize each merchant. Custom apps remove these requirements, so we are standardizing on the simpler custom apps approach for all Shopify connections. + +## Alternatives + +Use the [custom apps connection method](/integrations/commerce/shopify/commerce-shopify-custom-apps) for all Shopify connections. Compared with public apps, custom apps: + +- Don't require you to build and submit your own public Shopify app. +- Don't require you to build and host a merchant authorization endpoint. +- Guide the merchant through creating the app and entering their credentials with an in-flow, step-by-step **Find your Shopify credentials** section. + +## Action required + +For the vast majority of clients, **no action is required** — Shopify connections already use custom apps. + +If you currently rely on the public apps connection method, switch to [custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps) before connecting any new merchants. + +If you have questions or need assistance, reach out to your dedicated Codat representative or contact our [support team](mailto:support@codat.io). + +## Expected impact if no action is taken + +The public apps connection method will stop working, and merchants will no longer be able to start new connections through it. Existing, already-linked Shopify connections are unaffected and continue to sync. Any client still onboarding merchants through public apps must move to custom apps to continue connecting new stores. diff --git a/blog/authors.yml b/blog/authors.yml index 0c0efeef1..d74295768 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -4,6 +4,12 @@ codat-bot: url: https://github.com/codat-engineering image_url: https://github.com/codat-engineering.png +codatchris: + name: Chris Farrar + title: Senior Software Engineer + url: https://github.com/codatchris + image_url: https://github.com/codatchris.png + mcclowes: name: Max Clayton Clowes title: Product Director, Client Experience diff --git a/docs/integrations/commerce/overview.md b/docs/integrations/commerce/overview.md index 6ba3c7c94..d00d8a1d9 100644 --- a/docs/integrations/commerce/overview.md +++ b/docs/integrations/commerce/overview.md @@ -31,7 +31,7 @@ Our documentation details the specific setup steps and requirements for each sup | [BigCommerce](/integrations/commerce/bigcommerce/commerce-bigcommerce) | No | Not required | No | No | To use this integration, a merchant must have the correct scopes set. If they don't have these scopes set, they need to create a new store API account and enter their new store credentials in Link (see [SMB customer: Authenticate and connect your commerce data](/integrations/commerce/bigcommerce/commerce-bigcommerce-setup#smb-customer-authenticate-and-connect-your-commerce-data)). | | [Clover](/integrations/commerce/clover/commerce-clover) | Yes | Easy | Yes | Yes | Companies that offer lending services are not able to use the Clover API.
There are Sandbox and Production developer portals available. The Production portal differs for the US & Canada and UK & Europe. | | [Lightspeed Restaurant (K Series)](/integrations/commerce/lightspeed-k/commerce-lightspeed-k) | Yes | Easy | Yes | No | Partner application review typically takes up to 7 working days. | | -| [Shopify](/integrations/commerce/shopify/commerce-shopify) | Yes\* | Hard | Yes | Yes | \* Companies that provide capital loans are not able to register a public app with Shopify.
Public app approval may take up to 2 weeks. Codat offers [connections via custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps) as an alternative. | +| [Shopify](/integrations/commerce/shopify/commerce-shopify) | No | Not required | No | No | Merchants connect using a [custom app](/integrations/commerce/shopify/commerce-shopify-custom-apps) created in their own Shopify store. | | [Square](/integrations/commerce/square/commerce-square) | Yes | Easy | Yes | No | | | [Stripe](/integrations/commerce/stripe/commerce-stripe) | Yes | Easy | Yes | No | Production accounts must be verified by Stripe. | | [WooCommerce](/integrations/commerce/woocommerce/commerce-woocommerce) | No | Not required | No | No | | diff --git a/docs/integrations/commerce/shopify/commerce-shopify-custom-apps.md b/docs/integrations/commerce/shopify/commerce-shopify-custom-apps.md index ae773acb6..af253bb73 100644 --- a/docs/integrations/commerce/shopify/commerce-shopify-custom-apps.md +++ b/docs/integrations/commerce/shopify/commerce-shopify-custom-apps.md @@ -1,7 +1,7 @@ --- title: "Set up Shopify using custom apps" description: "Learn how to set up the Shopify integration using the custom apps approach to merchant data connection" -sidebar_label: Custom apps +sidebar_label: Setup --- This article explains how to set up the Shopify integration using the _custom apps_ approach for enabling your merchants to connect and share their commerce data. diff --git a/docs/integrations/commerce/shopify/commerce-shopify-public-apps.md b/docs/integrations/commerce/shopify/commerce-shopify-public-apps.md deleted file mode 100644 index 188b55525..000000000 --- a/docs/integrations/commerce/shopify/commerce-shopify-public-apps.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: "Set up Shopify using public apps" -description: "Learn how to set up the Shopify integration using the public apps approach to merchant data connection" -sidebar_label: Public apps ---- - -Set up the Shopify integration to retrieve commerce data from customers who sell their products on Shopify's eCommerce software. - -This article explains how to set up the Shopify integration using the _public apps_ approach. - -
- -You will learn how to... - -- [Create a Shopify app](/integrations/commerce/shopify/commerce-shopify-public-apps#create-a-public-shopify-app) -- [Submit your app to Shopify for approval](/integrations/commerce/shopify/commerce-shopify-public-apps#submit-your-app-to-shopify-for-approval) -- [Build an app for merchant authorization](/integrations/commerce/shopify/commerce-shopify-public-apps#build-an-app-for-merchant-authorization) -- [Add your app's credentials to the Shopify integration](/integrations/commerce/shopify/commerce-shopify-public-apps#add-your-apps-credentials-to-the-shopify-integration) -- [Enable the Shopify integration](/integrations/commerce/shopify/commerce-shopify-public-apps#enable-the-shopify-integration) -- [Check the commerce sync settings](/integrations/commerce/shopify/commerce-shopify-public-apps#check-the-commerce-sync-settings) - -
- -## Before you begin - -Before setting up the integration, make sure that you: - -- Understand [how public apps work](/integrations/commerce/shopify/commerce-shopify#about-public-apps). -- Have [built an endpoint](/integrations/commerce/shopify/commerce-shopify-public-apps#build-an-app-for-merchant-authorization) that can be used to identify a merchant on your system. - -## Create a public Shopify app - -When the app is created, you can view the app's secure credentials. - -1. Log in to the [Shopify Partners](https://developers.shopify.com/) site using your Shopify partner account credentials. - - :::note Shopify partner account - [Create a partner account](https://accounts.shopify.com/signup?rid=c272bffe-3e6f-4583-b6f2-f6bd71b340e5) if you don't already have one. - ::: - -2. In the side panel, click **Apps**. -3. On the **Apps** page, click **Create app**. -4. In the **Use Shopify Partners** box, click **Create app manually**. -5. On the **Create an app manually** page, enter the requested information: - - **App name:** enter a name for your app. Do not use _Shopify_ as part of the app name. - - **App URL:** enter `https://commerceintegration.codat.io/publicApp/{your-client-id}` - - **Allowed redirection URL(s):** enter `https://commerceintegration.codat.io/oauth/callback` -6. Click **Create app**. Your app is created and the app page is displayed. -7. In the side panel, click **App setup** to view the app's configuration settings. -8. Optional: if you plan to use Codat's `commerce-customers` data type, do the following on the **App setup** page: - 1. In the **Protected customer data access** box, click **Request access**. - 2. Enter the details requested in the dialog, then submit your request to Shopify. - - This is required because this data type requests customer data including name, address, phone, or email fields. - -9. Optional: if you need to access over 60 days' of orders, do the following on the **App setup** page: - 1. In the **Read all orders scope** box, click **Request access**. - 2. Enter the details requested in the dialog, then submit your request to Shopify. -10. In the **GDPR mandatory webhooks** section, enter the following Codat webhook URLs: - -- **Customer data request endpoint:** `https://commerceintegration.codat.io/webhooks/{your-client-id}/customer/request` -- **Customer data erasure endpoint:** `https://commerceintegration.codat.io/webhooks/{your-client-id}/customer/redact` -- **Shop data erasure endpoint:** `https://commerceintegration.codat.io/webhooks/{your-client-id}/shop/redact` - -11. Click the **Save** button that appears at the top of the page. - -Your app's **API key** and **API secret key** are shown in the **App credentials** section of the App setup page. You'll need these when you [add your app's credentials to the integration](/integrations/commerce/shopify/commerce-shopify-public-apps#add-your-apps-credentials-to-the-shopify-integration). - -If you plan to charge for your app, you will need to integrate to [Shopify's billing API](https://shopify.dev/docs/apps/billing). - -## Submit your app to Shopify for approval - -Your public app must be [approved by Shopify](https://shopify.dev/apps/store/requirements) before you can use the integration with a Production Store. The review and approval process might take up to two weeks. - -In the Shopify Partners site: - -1. Click the name of your app. -2. In the side panel, click **Distribution**. -3. On the **Distribution** page, click **Choose Shopify App Store**, then confirm your selection in the dialog that appears. - - - -4. Click **Create listing**. -5. Select your Shopify partner account at the authentication prompt. The **App listing** page for your app opens. -6. Click **App visibility**. -7. In the **Manage app visibility** dialog, select **Unlisted**, unless you want your app to be visible in the public Shopify App Store, then click **Save**. - - :::note Differences between listed and unlisted apps - - You can make your Shopify app _listed_ (fully visible in the Shopify App Store) or _unlisted_ (it will not appear in Shopify App Store search engines or results). Both types of apps have a public Shopify App Store URL. - - ::: - -8. Click **Start listing**. The **English listing** page is displayed. -9. Enter all the required listing information and save the form. -10. On the **App listing** page, click the **Submit app** button at the top right. The button is not available until you've completed all the required listing information. - -Your app is then sent to Shopify for review and approval. - -Additionally, if you need access to over 60 days of orders from Shopify stores, you must submit a _Read all orders_ request, as noted in [Create a Shopify public app](/integrations/commerce/shopify/commerce-shopify-public-apps#create-a-shopify-public-app). You'll receive an email from Shopify when your request has been processed. This might take up to seven business days. - -Codat can't guarantee that Shopify will approve your public app or grant access to over 60 days of order data. - -## Build an app for merchant authorization - -When a merchant adds your app to their store, we need to be able to identify them. To do that, we will redirect them to the **App Redirect URL** endpoint you entered in the [integration settings](/integrations/commerce/shopify/commerce-shopify-public-apps#add-your-apps-credentials-to-the-shopify-integration) at the end of the auth flow. - -We will generate and include a `code` query string parameter in the initial redirect to maintain context. Allow the user to authenticate themselves on the redirect page, and then create (or use an existing) Codat company and data connection. The data connection response will contain a `linkURL`. Append the `code` to the query string of the URL and redirect the user to complete their auth flow with us. - -```mermaid -sequenceDiagram - participant shopify as Shopify - participant codat as Codat - participant client as Client - - - shopify ->> codat: Redirect to App URL in Shopify App configuration - codat ->> codat: Validate HMAC value - codat ->> codat: Handle OAuth flow with Shopify - codat ->> client: Redirect to App redirect URL with `code` in query string - client ->> client: Merchant authenticates to client's platform - client ->> codat: POST /companies - codat ->> client: Response with companyId - client ->> codat: POST /companies/{companyId}/connections - codat ->> client: Response with linkUrl - client ->> codat: Redirect to linkUrl with `code` in query string - codat ->> codat: Save access token and complete connection -``` - -## Add your app's credentials to the Shopify integration - -In the Codat Portal, add the secure credentials for your Shopify app to the integration. - -1. On the navigation bar, select **Settings > Integrations > Commerce**. - -2. Click **Set up** next to the **Shopify** integration. - - The **Integration settings** page is displayed. - -3. Enter your app's credentials from Shopify (to find these, see [Create a Shopify public app](/integrations/commerce/shopify/commerce-shopify-public-apps#create-a-shopify-public-app)). - - For **Client ID**, enter the **API key** from Shopify. - - For **Client secret**, enter the **API secret key** from Shopify. - - For **App Redirect URL**, enter the location of your [authentication endpoint](/integrations/commerce/shopify/commerce-shopify-public-apps#build-an-app-for-merchant-authorization). - -4. If you requested access to over 60 days of orders and your access was approved, turn on **Has request to read all orders**. Otherwise leave this setting turned off. - - ![Shopify integration settings](/img/integrations/commerce/shopify/76d5c94-Shopify_integration_settings.png "The 'Has request to read all orders' checkbox on the Shopify integration settings page.") - -5. Under **Access to company data**, configure the permitted sync frequency for the integration. Select **Allow one-off data sync…** or **Allow continuous data sync**. - -6. Click **Save**. - -## Enable the Shopify integration - -1. In the Codat Portal, go to the **Commerce integrations** page. -2. Locate **Shopify** and click the toggle to enable the integration. - -You can also click **Manage** to view the integration's settings page and then enable the integration from there. - -## Check the commerce sync settings - -All commerce data types must be enabled before you can read commerce transactions from Shopify to Codat. Follow the steps in [Commerce sync settings](/integrations/commerce/commerce-sync-settings). You only need to do this once. - -## Next steps - -[Test your Shopify integration](test-shopify) before sending Link URLs to merchants. diff --git a/docs/integrations/commerce/shopify/commerce-shopify.md b/docs/integrations/commerce/shopify/commerce-shopify.md index 8edd16516..fa6a1398e 100644 --- a/docs/integrations/commerce/shopify/commerce-shopify.md +++ b/docs/integrations/commerce/shopify/commerce-shopify.md @@ -7,19 +7,7 @@ description: "Learn about our Shopify integration" With Codat's Shopify integration, you can securely retrieve your SMB customers' commerce transactions, standardized to our commerce data model. -## Approaches to merchant data sharing - -When setting up the integration, you can take one of the following two approaches for enabling your merchants to connect and share their commerce data: - -- [Custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps) - - Created by merchants exclusively for their Shopify stores. - -- [Public apps](/integrations/commerce/shopify/commerce-shopify-public-apps) - - Built by you and must be approved by Shopify before use. A single public app can be installed on multiple Shopify stores. - -In general, custom apps require less initial setup, with tasks completed by the merchant. Public apps require more initial setup, with tasks completed by you, the Codat client. Choose the option that best suits your circumstances. +Merchants connect and share their commerce data using a [custom app](/integrations/commerce/shopify/commerce-shopify-custom-apps). ## About custom apps @@ -37,33 +25,8 @@ To connect their commerce data using a custom app, the merchant does the followi To get started, see [Set up Shopify using custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps). -## About public apps - -[Public apps](https://help.shopify.com/en/manual/apps/app-types#public-apps) are built to connect to multiple Shopify stores owned by multiple merchants. This means you can use a single public app to access data from multiple different merchant stores. - -Public apps offer a low-friction way for merchants to link their commerce data to Codat. With this approach, you build a single public app and use its secure credentials to authorize your access to Shopify commerce data. - -_Listed apps_ are published on the Shopify app store and _unlisted apps_ are not. Only listed apps can be discovered directly from the app store by merchants. - -Public apps use an OAuth 2.0 authentication flow. - -If you choose this connection method, you need to do the following: - -1. Create a public app that's configured with a Codat redirect URL, webhooks, and the required permissions. - -2. Submit your app to Shopify for approval before production use. - -3. If your app is approved, enter its secure credentials in the Codat Portal. - -You should be aware of Shopify's requirements for public apps as well as the specific functionality that your app will need to provide. To get started, see [Set up Shopify using public apps](/integrations/commerce/shopify/commerce-shopify-public-apps). - -## OAuth requirements to apps - -We handle this requirement for you. All we need is a redirect that can be used to [identify the merchant](/integrations/commerce/shopify/commerce-shopify-public-apps#build-an-app-for-merchant-authorization). - --- ## Read next - [Set up Shopify using custom apps](/integrations/commerce/shopify/commerce-shopify-custom-apps) -- [Set up Shopify using public apps](/integrations/commerce/shopify/commerce-shopify-public-apps) diff --git a/docs/integrations/commerce/shopify/test-shopify.md b/docs/integrations/commerce/shopify/test-shopify.md index 93378349c..d9ec2535c 100644 --- a/docs/integrations/commerce/shopify/test-shopify.md +++ b/docs/integrations/commerce/shopify/test-shopify.md @@ -8,7 +8,7 @@ Test your Shopify integration by reading commerce data from a Development Store ## Prerequisites -- Set up your Shopify integration using either the custom apps or public apps connection method. +- Set up your Shopify integration using the custom apps connection method. - Update your [Commerce data type settings](/integrations/commerce/commerce-sync-settings) to enable commerce data types. ## Add a test company @@ -49,23 +49,15 @@ In the Codat Portal: 4. Paste the Link URL into a new browser tab to load Link. - The following steps apply if you're using public apps. If you're using custom apps, go to step six. - 5. Complete the steps in Link; the exact steps shown depend on your Link settings. You'll need to: 1. When asked to select your commerce software, select the **Shopify** tile. 2. Authorize access to the listed commerce data types. - 3. On the Shopify screen, enter the name of your Development Store then click **Continue**. - 4. Log in to your Development Store, if prompted. + 3. On the **Connect your Shopify store** screen, enter the name of your Development Store and your API Access Token, then click **Continue**. -When the Link flow is complete, your Development Store opens and your app is automatically installed into the Store. +When the Link flow is complete, your Development Store opens and your custom app is automatically installed into the Store. -6. (If using custom apps.) Complete the steps in Link; the exact steps shown depend on your Link settings. You'll need to: - 1. On the **Connect your Shopify store** screen, enter the name of your Development Store and your API Access Token, then click **Continue**. - -When the Link flow is complete, your Development Store opens and your custom app is automatically installed into the Store. - ## Retrieve commerce data In the Codat Portal, read sample commerce data from Shopify to your test company: diff --git a/redirects.config.js b/redirects.config.js index 4aeb7111a..2ae5b1585 100644 --- a/redirects.config.js +++ b/redirects.config.js @@ -549,13 +549,17 @@ module.exports = { to: "/using-the-api/webhooks/event-types", }, // Shopify + { + from: "/integrations/commerce/shopify/commerce-shopify-public-apps", + to: "/integrations/commerce/shopify/commerce-shopify-custom-apps", + }, { from: "/integrations/commerce/shopify/commerce-shopify-requirements-public-apps", - to: "/integrations/commerce/shopify/commerce-shopify-public-apps", + to: "/integrations/commerce/shopify/commerce-shopify-custom-apps", }, { from: "/integrations/commerce/shopify/commerce-shopify-setup", - to: "/integrations/commerce/shopify/commerce-shopify-public-apps", + to: "/integrations/commerce/shopify/commerce-shopify-custom-apps", }, { from: "/redirects/integrations/bankfeeds/qalf", diff --git a/sidebars/integrations-commerce.js b/sidebars/integrations-commerce.js index 1ef226648..7dbba3c8c 100644 --- a/sidebars/integrations-commerce.js +++ b/sidebars/integrations-commerce.js @@ -62,15 +62,7 @@ const integrations = [ id: "integrations/commerce/shopify/commerce-shopify", label: "Overview", }, - { - type: "category", - label: "Setup", - collapsed: true, - items: [ - "integrations/commerce/shopify/commerce-shopify-public-apps", - "integrations/commerce/shopify/commerce-shopify-custom-apps", - ], - }, + "integrations/commerce/shopify/commerce-shopify-custom-apps", "integrations/commerce/shopify/test-shopify", ], },