A reader reached out with a question for me about building a Shopify App:
I tried to find out if there was a way to directly connect to a single store without going the app route but I couldn't figure out how to do so.
This question is pretty common, especially for stores or integrations that aren't expecting to do a lot with Shopify. Their concern is that building an entire application just to do one thing or to get one piece of data sounds like too much.
Apps are simpler than you think
The fear comes from how Shopify has used the "app" label, especially in the Public App Store. Some apps are full web applications with multiple large features built by a team of developers. Other apps are smaller, one or two featured web applications that were built in a week or so.
Once you look outside of the App Store though, another definition of apps emerges.
An "app" is just a piece of code that connects to Shopify. The term Shopify App just means Shopify API Integration.
I've worked on large Shopify apps for clients that have serviced thousands of stores. I've also created simple scripts that have only ever connected to a single store in Shopify just to automate a single task.
For example, this script uses the private app authentication, runs from the command-line, and will tag repeat customers in a store.
App to tag customers
#!/usr/bin/env ruby require 'pry' require 'shopify_api' require 'dotenv' Dotenv.load
class TagCustomers attr_accessor :shop_url
Configure the Shopify connection
def initialize @shop_url = "https://#{ENV["SHOPIFY_API_KEY"]}:#{ENV["SHOPIFY_PASSWORD"]}@#{ENV["SHOP"]}.myshopify.com/admin" ShopifyAPI::Base.site = @shop_url end
Tests the Shopify connection with a simple GET request
def test_connection return ShopifyAPI::Shop.current end
Downloads the customers from Shopify
def customers ShopifyAPI::Customer.all end
Tags repeat customers with the tag "repeat"
def tag_repeat_customers tagged_customers = [] customers.each do |customer| if customer.orders_count > 1 unless customer.tags.include?("repeat") customer.tags += "repeat" customer.save end tagged_customers << customer end end
tagged\_customers
end end
Called when the file is run on the command line, but not in a require
if __FILE__ == $PROGRAM_NAME tagged = TagCustomers.new.tag_repeat_customers puts "Tagged #{tagged.length} customers with 'repeat'" end
I have another app that is just a script to create a bunch of orders, customers, and products so there's data in the store for testing.
You don't need a fully built web application to connect to Shopify and use their APIs. You just need to follow the Shopify API documentation for authenticating your "app" and then you're good to go.