fmEcommerce Link (Shopify Edition) Webhooks
Shopify supports over 30 different types of Webhooks which are triggered when certain events happen on your Shopify store.
N.B. You can also use Claris Connect Webhooks and Otto webhooks instead of the supplied PHP webhook files. If you are a Claris Connect customer you can setup Webhooks in Claris Connect to receive incoming updates from Shopify. This is usually a much simpler process than using the supplied PHP files for the FileMaker Data API as you don't need to worry about hosting the files and dealing with web servers, PHP configuration changes, port forwarding etc.
Please visit the Shopify Webhooks Using Claris Connect guide for instructions on setting up Claris Connect Webhooks for your Shopify store, and the Shopify Webhooks using Otto guide for instructions on setting up Otto webhooks for your Shopify store.
fmEcommerce Link (Shopify Edition) includes PHP examples for both the FileMaker PHP API and the Data API for the following Shopify Webhooks events:
- Order Creation: have new orders automatically pushed/created in your copy of fmEcommerce Link
- Order Update: have existing orders automatically updated in your copy of fmEcommerce Link when they are updated in Shopify
- Order Cancellation: have existing orders automatically updated in your copy of fmEcommerce Link when they are cancelled in Shopify
To use Webhooks with fmEcommerce Link you will need to ensure the following are in place:
- your copy of fmEcommerce Link must be hosted by FileMaker Server v16 or later if you are using the PHP API Webhook files
- your copy of fmEcommerce Link must be hosted by FileMaker Server v17 or later if you are using the Data API Webhook files
- you will need to deploy and configure Custom Web Publishing with PHP if you are using the PHP API Webhook files
- If you’re using the Data API Webhook files you will need to enable the Data API and host the PHP files (either on your FileMaker Server or elsewhere, for example Amazon Lightsail or your own web server running PHP)
- you will need a static IP address/domain name for the web server that is part of the FileMaker Server deployment (we need to update the Shopify settings with a URL to a php page that will be hosted on your Server)
- you need to install the supplied PHP files for either the PHP API or the Data API on your Web Server and determine the URL to these pages from the outside. For example if your web server has a domain name of www.myserver.com and you create a folder called fmecommercelink and place the webhookNewOrder.php file inside the fmecommercelink folder the URL will be: https://www.myserver.com/fmecommercelink/webhookNewOrder.php
- the URL needs to begin with HTTPS: Shopify only support HTTPS Webhook URLs. Shopify verifies SSL certificates when delivering payloads to HTTPS webhook addresses, so please ensure your server is correctly configured to support HTTPS with a valid SSL certificate
If you’re not sure about what the external URL to the PHP file is talk to your IT person – they may need to setup port forwarding on your Internet router in some cases.
N.B. In January 2021 Claris announced that Custom Web Publishing with PHP is being deprecated and they are making changes to how PHP is bundled with FileMaker Server. Please see this support article for further details.
The web server “root” folders for the installation location of the PHP files for FileMaker Server v16 and later is:
Windows (HTTP or HTTPS):
[drive]:\Program Files\FileMaker\FileMaker Server\HTTPServer\Conf
where [drive] is the drive on which the Web Publishing Engine component of your FileMaker server deployment resides.
Mac OS X (HTTPS):
/Library/FileMaker Server/HTTPServer/htdocs/httpsRoot
N.B. the HTTPS options require a valid SSL certificate to be installed.
If you are using FileMaker Server v17 or later you cannot using the FileMaker Server Admin Console to enable Custom Web Publishing using the PHP API. You will need to use the Command Line Interface to enable these – see the FileMaker Server 17 Help for more information on these commands.
Once you have determined the URL to the PHP file you need to create a Webhook within your Shopify site. You can follow the Shopify instructions for configuring a Webhook through your Shopify store admin – make sure you select the appropriate Event (for example select Order creation for the Event and enter the URL to your webhookNewOrder.php file into the URL field for the Order Creation webhook). The Format should be JSON. Once you have created and saved the Webhook it should look something like this:
You can also create the webhook subscription records via the Shopify API using the fmEcommerce Link file - full details on creating webhook subscriptions from within fmEcommerce Link can be found here.
You can now test out the webhook by creating a new order, cancelling an existing order or updating an existing order in Shopify and confirming that the appropriate action is also performed in the fmEcommerce Link file. For example if you are setting up the Order Creation webhook you can now create a new dummy order on your Shopify site and confirm that the new Order is created in the fmEcommerce Link file successfully or wait until you receive a new Order. There is also an option to send a test notification after you have saved your Webhook – clicking this button will send an example order to the URL you provided. In our testing the new Order was created in the fmEcommerce Link file within a 10-30 seconds, so please wait a few minutes before troubleshooting this further.
When the Order Creation Webhook makes a successful request it performs the following actions:
- it creates a new record in the Orders table and populates the Shopify Order ID
- it then performs the Process Webhooks Order script and passes in the FileMaker Order ID as a parameter. This script then updates the Order record from Shopify – the same result if you were to manually click the Update Order from Shopify button
Shopify has implemented a 5-second timeout period and a retry period for subscriptions. Shopify waits 5 seconds for a response to each request, and if there isn’t one or they get an error, they retry the connection to a total of 19 times over the next 48 hours. A webhook will be deleted if there are 19 consecutive failures for the exact same webhook.
We have a video demonstrating the Order Creation Webhook in action on the fmEcommerce Link (Shopify Edition) Videos page. You can get more information about Shopify Webhooks at the following links:
https://help.shopify.com/en/api/getting-started/webhooks
https://help.shopify.com/en/api/getting-started/webhooks#through-store-admin
If you would like to see support for other Shopify Webhooks please let us know.