Skip to main content

Step #3 - Sticky Checkout - Creating a Shopify App, API Keys & Checkout Domain.

In this article, we'll tackle creating your first Shopify Developer app to generate Shopify API Keys and how to find your Cloudflare API Key for Sticky Checkout.

Zakk Sykes avatar
Written by Zakk Sykes
Updated over a week ago

Step #3 - Sticky Checkout - Creating a Shopify App, API Keys & Checkout Domain.

NOTE: As of January 1st, 2026, Shopify deprecated creating new traditional apps and has transitioned apps to the Developer dashboard. This article has been updated to reflect these new processes.

In this article, we'll cover how to connect your Shopify Store & Cloudflare account to Sticky Checkout. This includes how to connect your Cloudflare Domain, creating the Shopify app necessary for the API Keys/Tokens.

Without further ado, let's begin!


Navigating to Sticky Checkout & Connecting Your Domain

To begin, let's login to your Sticky.io Account. Once signed in, Services > Sticky Checkout.

You'll be redirected to a different part of Sticky.io. On the left-hand navigation menu, click Checkout > Domains > Add Domain.

A pop up window will appear, prompting you to choose Standalone or Shopify. This guide will cover Shopify > Next.

First things first, let's enter our Cloudflare API Token. After entering the token, click Connect.

Then click on Domain Name and choose your Cloudflare Domain.

Next is specifying your Subdomain. The subdomain is what customers will see when they're redirected from Shopify to Sticky Checkout.

Generally, you'd type 'Checkout' or 'Payments'. So the customer would see: e.g. payments.teststore.com or checkout.teststore.com.

Once you're satisifed with your subdomain, click Add Checkout Domain to proceed to the next step.


Connecting Sticky Checkout to Shopify

Next up, we'll tackle connecting Shopify to Sticky Checkout. This is a very involved process. Including fetching your Shopify Store URL, creating a Shopify Developer App & fetching its respective keys. To recap;

  • Shopify Store URL

  • Shopify API Key

  • Shopify Webhook Signing Key


Finding Your Shopify Store URL

To find your Shopify Store URL, first login to your Shopify Account. Once logged in, search for "Domains".

While on the Domains page, the second row is your Shopify Store URL.

Navigate back to Sticky Checkout and paste the URL, or paste it in a notepad since we'll be copying a few other fields momentarily.


Creating & Releasing Your Shopify Developer App

Next is creating your first Shopify Developer app. As a heads up, this is a very involved process. Take your time, and let's walk through each and every step to make sure it's done correctly.

From the Shopify search bar, type Develop apps and click App Development.

Once loaded, click Build apps in Dev Dashboard.

This will redirect you to the Shopify Developer Dashboard. And from here, we'll click Create app.

While on the Create an App screen, you'll be given two options. Choose, Start from Dev Dashboard, and name the app whatever you'd like. This is internal and not customer facing. e.g. Sticky Checkout Test 123.

Here is where things become very involved. Strap in and let's get started!

image (35)-20251219-105856.png

Let's start from the top at App URL. To get what's needed for this field, navigate to Settings on the left nav-menu. Right-click and open Settings in a new tab.

From Settings, we'll see our Client ID & Secret as illustrated below.

We will take both of these values and add them to the URL String provided below.

https://api.sticky.io/checkout-hub/shopify/integration/callback/${clientId}/${clientSecret}

Replace:

  • ${clientId} with your actual Client ID

  • ${clientSecret} with your actual Client Secret

Here is the output of what the URL should closely resemble. (No brackets or special symbols).

https://api.sticky.io/checkout-hub/shopify/integration/callback/9dc92c56f90fAfzjdqee81f4g5832haa/shpss_b49e6aa6f832839183v948f4f94r5r4

Please copy your Client ID & Secret Key as they will be needed again later on.

Once finished, you can close the Settings tab, and we'll paste the URL string in the App URL field.

After pasting the URL, make sure the checkbox for "Embed app in Shopify admin" is disabled.

Please copy the App URL as it will be needed again later on.

Next is Access. This is where we'll provide the necessary scopes or "API Permissions" that Sticky Checkout needs for your Shopify Store.

This gives us the ability to do things like sync your Product Catalog, back-sync orders to Shopify, and much more.

Although it may seem jarring, this is hugely improved over the legacy method used by Shopify for enabling API Scopes.

Simply copy all of the text in the box below and paste it into the Scopes section.

read_analytics,read_app_proxy,write_app_proxy,read_assigned_fulfillment_orders,write_assigned_fulfillment_orders,read_audit_events,read_customer_events,read_cart_transforms,write_cart_transforms,read_all_cart_transforms,read_validations,write_validations,read_cash_tracking,read_channels,write_channels,read_checkout_branding_settings,write_checkout_branding_settings,write_checkouts,read_checkouts,read_companies,write_companies,read_custom_fulfillment_services,write_custom_fulfillment_services,read_custom_pixels,write_custom_pixels,read_customers,write_customers,read_customer_data_erasure,write_customer_data_erasure,read_customer_merge,write_customer_merge,read_delivery_customizations,write_delivery_customizations,read_price_rules,write_price_rules,read_discounts,write_discounts,read_discounts_allocator_functions,write_discounts_allocator_functions,read_discovery,write_discovery,write_draft_orders,read_draft_orders,read_files,write_files,read_fulfillment_constraint_rules,write_fulfillment_constraint_rules,read_fulfillments,write_fulfillments,read_gift_card_transactions,write_gift_card_transactions,read_gift_cards,write_gift_cards,write_inventory,read_inventory,write_inventory_shipments,read_inventory_shipments,write_inventory_shipments_received_items,read_inventory_shipments_received_items,write_inventory_transfers,read_inventory_transfers,read_legal_policies,write_legal_policies,read_delivery_option_generators,write_delivery_option_generators,read_locales,write_locales,write_locations,read_locations,read_marketing_integrated_campaigns,write_marketing_integrated_campaigns,write_marketing_events,read_marketing_events,read_markets,write_markets,read_markets_home,write_markets_home,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_metaobject_definitions,write_metaobject_definitions,read_metaobjects,write_metaobjects,read_online_store_navigation,write_online_store_navigation,read_online_store_pages,write_online_store_pages,write_order_edits,read_order_edits,read_orders,write_orders,write_packing_slip_templates,read_packing_slip_templates,read_payment_terms,write_payment_terms,read_payment_customizations,write_payment_customizations,read_pixels,write_pixels,read_privacy_settings,write_privacy_settings,read_product_feeds,write_product_feeds,read_product_listings,write_product_listings,read_products,write_products,read_publications,write_publications,read_purchase_options,write_purchase_options,write_reports,read_reports,read_resource_feedbacks,write_resource_feedbacks,read_returns,write_returns,read_script_tags,write_script_tags,read_shopify_payments_provider_accounts_sensitive,read_shipping,write_shipping,read_shopify_payments_accounts,read_shopify_payments_payouts,read_shopify_payments_bank_accounts,read_shopify_payments_disputes,write_shopify_payments_disputes,read_content,write_content,read_store_credit_account_transactions,write_store_credit_account_transactions,read_store_credit_accounts,write_theme_code,read_themes,write_themes,read_third_party_fulfillment_orders,write_third_party_fulfillment_orders,read_translations,write_translations,customer_read_companies,customer_write_companies,customer_write_customers,customer_read_customers,customer_read_draft_orders,customer_read_markets,customer_read_orders,customer_write_orders,customer_read_quick_sale,customer_write_quick_sale,customer_read_store_credit_account_transactions,customer_read_store_credit_accounts,unauthenticated_write_bulk_operations,unauthenticated_read_bulk_operations,unauthenticated_read_bundles,unauthenticated_write_checkouts,unauthenticated_read_checkouts,unauthenticated_write_customers,unauthenticated_read_customers,unauthenticated_read_customer_tags,unauthenticated_read_metaobjects,unauthenticated_read_product_pickup_locations,unauthenticated_read_product_inventory,unauthenticated_read_product_listings,unauthenticated_read_product_tags,unauthenticated_read_selling_plans,unauthenticated_read_shop_pay_installments_pricing,unauthenticated_read_content

The final result should look like this for your Scopes section

Optional scopes will remain as is, but we will toggle the checkbox for Use legacy install flow.

And finally, our Redirect URL. Simply copy and paste the URL you created above under App URL and paste it here.

While we're a few steps away from being complete, this step is finished, and we can release our app. Click Release on the bottom of the screen.

A pop-up window will appear giving you the option to name the version, it isn't required, skip, and click Release.


Generating Access Token (OAuth Flow)

OAuth (Open Authorization) is a widely-used standard that lets users grant third-party applications limited access to their data on another service (like Google or Facebook) without sharing their password.

This is the last and most critical step to finishing the setup process with Sticky Checkout.

To start, we're going to manually build an Authorization URL. Below is the URL format to get us pointed in the right direction.

https://{shop}.myshopify.com/admin/oauth/authorize?client_id={your_api_key}&scope={scopes}&redirect_uri={redirect_url}&state={timestamp}&grant_options[]=offline 


Wherever there are brackets, we'll be adding values taken from your store and removing the brackets after.

From the start of the URL string, we'll see {shop}. This can be found on your Shopify Admin Dashboard from the URL String as illustrated below.

Output of URL with Shopify Store URL Included:

https://sticky-io-marketing-demo.myshopify.com/admin/oauth/authorize?client_id={your_api_key}&scope={scopes}&redirect_uri={redirect_url}&state={timestamp}&grant_options[]=offline 

Next is the {your_api_key} API Key in the URL String.

Here we'll paste your Shopify Client ID. Didn't copy it? No worries, simply navigate back to the Shopify Dev Dashboard > Your App > Settings.

Output of URL with Shopify Client ID Included:

https://sticky-io-marketing-demo.myshopify.com/admin/oauth/authorize?client_id=002222333445556677999aaabbcddfff&scope={scopes}&redirect_uri={redirect_url}&state={timestamp}&grant_options[]=offline 

Next are the {scopes} Scopes. This is the huge wall of text above that we copy and pasted when specifying what permissions can be used for the app to Sticky Checkout. Scroll back up to the API Scopes and copy and paste them in the URL string under {scopes}.

Output of URL with API Scopes Included:

https://sticky-io-marketing-demo.myshopify.com/admin/oauth/authorize?client_id=002222333445556677999aaabbcddfff&scope=read_analytics,read_app_proxy,write_app_proxy,read_assigned_fulfillment_orders,write_assigned_fulfillment_orders,read_audit_events,read_customer_events,read_cart_transforms,write_cart_transforms,read_all_cart_transforms,read_validations,write_validations,read_cash_tracking,read_channels,write_channels,read_checkout_branding_settings,write_checkout_branding_settings,write_checkouts,read_checkouts,read_companies,write_companies,read_custom_fulfillment_services,write_custom_fulfillment_services,read_custom_pixels,write_custom_pixels,read_customers,write_customers,read_customer_data_erasure,write_customer_data_erasure,read_customer_merge,write_customer_merge,read_delivery_customizations,write_delivery_customizations,read_price_rules,write_price_rules,read_discounts,write_discounts,read_discounts_allocator_functions,write_discounts_allocator_functions,read_discovery,write_discovery,write_draft_orders,read_draft_orders,read_files,write_files,read_fulfillment_constraint_rules,write_fulfillment_constraint_rules,read_fulfillments,write_fulfillments,read_gift_card_transactions,write_gift_card_transactions,read_gift_cards,write_gift_cards,write_inventory,read_inventory,write_inventory_shipments,read_inventory_shipments,write_inventory_shipments_received_items,read_inventory_shipments_received_items,write_inventory_transfers,read_inventory_transfers,read_legal_policies,write_legal_policies,read_delivery_option_generators,write_delivery_option_generators,read_locales,write_locales,write_locations,read_locations,read_marketing_integrated_campaigns,write_marketing_integrated_campaigns,write_marketing_events,read_marketing_events,read_markets,write_markets,read_markets_home,write_markets_home,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_metaobject_definitions,write_metaobject_definitions,read_metaobjects,write_metaobjects,read_online_store_navigation,write_online_store_navigation,read_online_store_pages,write_online_store_pages,write_order_edits,read_order_edits,read_orders,write_orders,write_packing_slip_templates,read_packing_slip_templates,read_payment_terms,write_payment_terms,read_payment_customizations,write_payment_customizations,read_pixels,write_pixels,read_privacy_settings,write_privacy_settings,read_product_feeds,write_product_feeds,read_product_listings,write_product_listings,read_products,write_products,read_publications,write_publications,read_purchase_options,write_purchase_options,write_reports,read_reports,read_resource_feedbacks,write_resource_feedbacks,read_returns,write_returns,read_script_tags,write_script_tags,read_shopify_payments_provider_accounts_sensitive,read_shipping,write_shipping,read_shopify_payments_accounts,read_shopify_payments_payouts,read_shopify_payments_bank_accounts,read_shopify_payments_disputes,write_shopify_payments_disputes,read_content,write_content,read_store_credit_account_transactions,write_store_credit_account_transactions,read_store_credit_accounts,write_theme_code,read_themes,write_themes,read_third_party_fulfillment_orders,write_third_party_fulfillment_orders,read_translations,write_translations,customer_read_companies,customer_write_companies,customer_write_customers,customer_read_customers,customer_read_draft_orders,customer_read_markets,customer_read_orders,customer_write_orders,customer_read_quick_sale,customer_write_quick_sale,customer_read_store_credit_account_transactions,customer_read_store_credit_accounts,unauthenticated_write_bulk_operations,unauthenticated_read_bulk_operations,unauthenticated_read_bundles,unauthenticated_write_checkouts,unauthenticated_read_checkouts,unauthenticated_write_customers,unauthenticated_read_customers,unauthenticated_read_customer_tags,unauthenticated_read_metaobjects,unauthenticated_read_product_pickup_locations,unauthenticated_read_product_inventory,unauthenticated_read_product_listings,unauthenticated_read_product_tags,unauthenticated_read_selling_plans,unauthenticated_read_shop_pay_installments_pricing,unauthenticated_read_content&redirect_uri={redirect_url}&state={timestamp}&grant_options[]=offline

And second to last, {redirect_url} your Redirect URL. This is the App URL we built when we were first creating the app, and you should have it copied somewhere.

Output of URL with Redirect URL Included:

https://sticky-io-marketing-demo.myshopify.com/admin/oauth/authorize?client_id=002222333445556677999aaabbcddfff&scope=read_analytics,read_app_proxy,write_app_proxy,read_assigned_fulfillment_orders,write_assigned_fulfillment_orders,read_audit_events,read_customer_events,read_cart_transforms,write_cart_transforms,read_all_cart_transforms,read_validations,write_validations,read_cash_tracking,read_channels,write_channels,read_checkout_branding_settings,write_checkout_branding_settings,write_checkouts,read_checkouts,read_companies,write_companies,read_custom_fulfillment_services,write_custom_fulfillment_services,read_custom_pixels,write_custom_pixels,read_customers,write_customers,read_customer_data_erasure,write_customer_data_erasure,read_customer_merge,write_customer_merge,read_delivery_customizations,write_delivery_customizations,read_price_rules,write_price_rules,read_discounts,write_discounts,read_discounts_allocator_functions,write_discounts_allocator_functions,read_discovery,write_discovery,write_draft_orders,read_draft_orders,read_files,write_files,read_fulfillment_constraint_rules,write_fulfillment_constraint_rules,read_fulfillments,write_fulfillments,read_gift_card_transactions,write_gift_card_transactions,read_gift_cards,write_gift_cards,write_inventory,read_inventory,write_inventory_shipments,read_inventory_shipments,write_inventory_shipments_received_items,read_inventory_shipments_received_items,write_inventory_transfers,read_inventory_transfers,read_legal_policies,write_legal_policies,read_delivery_option_generators,write_delivery_option_generators,read_locales,write_locales,write_locations,read_locations,read_marketing_integrated_campaigns,write_marketing_integrated_campaigns,write_marketing_events,read_marketing_events,read_markets,write_markets,read_markets_home,write_markets_home,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_metaobject_definitions,write_metaobject_definitions,read_metaobjects,write_metaobjects,read_online_store_navigation,write_online_store_navigation,read_online_store_pages,write_online_store_pages,write_order_edits,read_order_edits,read_orders,write_orders,write_packing_slip_templates,read_packing_slip_templates,read_payment_terms,write_payment_terms,read_payment_customizations,write_payment_customizations,read_pixels,write_pixels,read_privacy_settings,write_privacy_settings,read_product_feeds,write_product_feeds,read_product_listings,write_product_listings,read_products,write_products,read_publications,write_publications,read_purchase_options,write_purchase_options,write_reports,read_reports,read_resource_feedbacks,write_resource_feedbacks,read_returns,write_returns,read_script_tags,write_script_tags,read_shopify_payments_provider_accounts_sensitive,read_shipping,write_shipping,read_shopify_payments_accounts,read_shopify_payments_payouts,read_shopify_payments_bank_accounts,read_shopify_payments_disputes,write_shopify_payments_disputes,read_content,write_content,read_store_credit_account_transactions,write_store_credit_account_transactions,read_store_credit_accounts,write_theme_code,read_themes,write_themes,read_third_party_fulfillment_orders,write_third_party_fulfillment_orders,read_translations,write_translations,customer_read_companies,customer_write_companies,customer_write_customers,customer_read_customers,customer_read_draft_orders,customer_read_markets,customer_read_orders,customer_write_orders,customer_read_quick_sale,customer_write_quick_sale,customer_read_store_credit_account_transactions,customer_read_store_credit_accounts,unauthenticated_write_bulk_operations,unauthenticated_read_bulk_operations,unauthenticated_read_bundles,unauthenticated_write_checkouts,unauthenticated_read_checkouts,unauthenticated_write_customers,unauthenticated_read_customers,unauthenticated_read_customer_tags,unauthenticated_read_metaobjects,unauthenticated_read_product_pickup_locations,unauthenticated_read_product_inventory,unauthenticated_read_product_listings,unauthenticated_read_product_tags,unauthenticated_read_selling_plans,unauthenticated_read_shop_pay_installments_pricing,unauthenticated_read_content&redirect_uri=https://api.sticky.io/checkout-hub/shopify/integration/callback/0fbaf6dd44a123639572c9b36a925f25/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&state={timestamp}&grant_options[]=offline

And lastly, {timestamp} the timestamp in the URL String. To get a timestamp, let's head on over to Epoch Converter.

Every second, a new timestamp is generated. Simply copy the value presented and paste it into {time stamp}.

Output of URL with timestamp Included:

https://sticky-io-marketing-demo.myshopify.com/admin/oauth/authorize?client_id=002222333445556677999aaabbcddfff&scope=read_analytics,read_app_proxy,write_app_proxy,read_assigned_fulfillment_orders,write_assigned_fulfillment_orders,read_audit_events,read_customer_events,read_cart_transforms,write_cart_transforms,read_all_cart_transforms,read_validations,write_validations,read_cash_tracking,read_channels,write_channels,read_checkout_branding_settings,write_checkout_branding_settings,write_checkouts,read_checkouts,read_companies,write_companies,read_custom_fulfillment_services,write_custom_fulfillment_services,read_custom_pixels,write_custom_pixels,read_customers,write_customers,read_customer_data_erasure,write_customer_data_erasure,read_customer_merge,write_customer_merge,read_delivery_customizations,write_delivery_customizations,read_price_rules,write_price_rules,read_discounts,write_discounts,read_discounts_allocator_functions,write_discounts_allocator_functions,read_discovery,write_discovery,write_draft_orders,read_draft_orders,read_files,write_files,read_fulfillment_constraint_rules,write_fulfillment_constraint_rules,read_fulfillments,write_fulfillments,read_gift_card_transactions,write_gift_card_transactions,read_gift_cards,write_gift_cards,write_inventory,read_inventory,write_inventory_shipments,read_inventory_shipments,write_inventory_shipments_received_items,read_inventory_shipments_received_items,write_inventory_transfers,read_inventory_transfers,read_legal_policies,write_legal_policies,read_delivery_option_generators,write_delivery_option_generators,read_locales,write_locales,write_locations,read_locations,read_marketing_integrated_campaigns,write_marketing_integrated_campaigns,write_marketing_events,read_marketing_events,read_markets,write_markets,read_markets_home,write_markets_home,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_metaobject_definitions,write_metaobject_definitions,read_metaobjects,write_metaobjects,read_online_store_navigation,write_online_store_navigation,read_online_store_pages,write_online_store_pages,write_order_edits,read_order_edits,read_orders,write_orders,write_packing_slip_templates,read_packing_slip_templates,read_payment_terms,write_payment_terms,read_payment_customizations,write_payment_customizations,read_pixels,write_pixels,read_privacy_settings,write_privacy_settings,read_product_feeds,write_product_feeds,read_product_listings,write_product_listings,read_products,write_products,read_publications,write_publications,read_purchase_options,write_purchase_options,write_reports,read_reports,read_resource_feedbacks,write_resource_feedbacks,read_returns,write_returns,read_script_tags,write_script_tags,read_shopify_payments_provider_accounts_sensitive,read_shipping,write_shipping,read_shopify_payments_accounts,read_shopify_payments_payouts,read_shopify_payments_bank_accounts,read_shopify_payments_disputes,write_shopify_payments_disputes,read_content,write_content,read_store_credit_account_transactions,write_store_credit_account_transactions,read_store_credit_accounts,write_theme_code,read_themes,write_themes,read_third_party_fulfillment_orders,write_third_party_fulfillment_orders,read_translations,write_translations,customer_read_companies,customer_write_companies,customer_write_customers,customer_read_customers,customer_read_draft_orders,customer_read_markets,customer_read_orders,customer_write_orders,customer_read_quick_sale,customer_write_quick_sale,customer_read_store_credit_account_transactions,customer_read_store_credit_accounts,unauthenticated_write_bulk_operations,unauthenticated_read_bulk_operations,unauthenticated_read_bundles,unauthenticated_write_checkouts,unauthenticated_read_checkouts,unauthenticated_write_customers,unauthenticated_read_customers,unauthenticated_read_customer_tags,unauthenticated_read_metaobjects,unauthenticated_read_product_pickup_locations,unauthenticated_read_product_inventory,unauthenticated_read_product_listings,unauthenticated_read_product_tags,unauthenticated_read_selling_plans,unauthenticated_read_shop_pay_installments_pricing,unauthenticated_read_content&redirect_uri=https://api.sticky.io/checkout-hub/shopify/integration/callback/0fbaf6dd44a123639572c9b36a925f25/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&state=1767710624&grant_options[]=offline

NOTE: It is critical that the URL string have no spaces or brackets included. If the URL string includes either of these, the app will fail to install in our next step.


Installing the Shopify Developer App

We're finished! I promise, no more tedious and lengthy steps. From this point, we'll copy the huge URL we've just built and paste it into your browser.

This will take us back to Shopify, prompting you to install the newly created app as illustrated below.

Once loaded, click Install. After installation, you'll be taken to a blank page (callback URL).

The only thing visible on this page will be your Access Token. This will only be shown once. Do not close this tab.

Copy the Access Token to a safe and secure location, as it will be used shortly.


Adding Your Domain & Finishing Shopify Integration

We're almost at the finish line! Now that the app is installed, and anything of value is copied to a secure location we'll segue back to Sticky Checkout.

You should have this tab already open, but if not, you can access Sticky Checkout from your Sticky Account > Services > Sticky Checkout.

Back on Sticky Checkout > Domains. Input the following:

  • Shopify Store URL: Accessible in Shopify under your domains. Includes ".myshopify"

  • Shopify Access Token: Copied after installing the Shopify Developer App. (Only shown once)

  • Shopify Secret Key: Taken from the Settings menu when creating your Developer App.

Once you're done, click Connect.

You'll get a response indicating whether or not it was successful. And similarly, under Shopify Store Name, you'll see the name of your store.

If successful, you can proceed by clicking Next.

That covers the integration to Sticky Checkout! In the next article, we'll discuss creating a funnel that initiates the Shopify Product sync and the next steps to creating your landing pages.

Did this answer your question?