Connect Shopify to Installers.org
Automatically create an installation job every time a customer buys assembly service in your Shopify store. No middleware, no code — just a webhook.
How it works
- A customer places an order in your Shopify store that includes an assembly or installation line item.
- Shopify sends the order to Installers.org via a webhook.
- Installers.org creates a job and notifies qualified installers near the customer.
- You select an installer from your partner dashboard, and they coordinate directly with the customer.
What you need
- An Installers.org partner account on the Advanced plan
- Your API key (find it in your partner dashboard)
- Admin access to your Shopify store
Step 1: Create the webhook in Shopify
- In your Shopify admin, go to Settings → Notifications.
- Scroll to the bottom and click Create webhook.
- Set the fields:
- Event: Order payment
- Format: JSON
- URL:
https://installers.org/api/v1/webhooks/shopify
- Click Save.
Step 2: Add your API key
Shopify needs to send your Installers.org API key with every webhook so we know which partner the order belongs to. Add a custom header to the webhook:
X-Installers-Key: your_api_key_hereIf your Shopify plan doesn't support custom webhook headers, you can append the key as a query parameter instead:
https://installers.org/api/v1/webhooks/shopify?key=your_api_key_hereStep 3: Map your assembly SKUs
In your Installers.org partner dashboard, map each of your Shopify assembly SKUs to a service category and an installer payout.
For example, if you sell a treadmill with an optional "Professional Assembly" add-on at $199, but you want to pay the installer $150:
| SKU | Service category | Installer payout |
|---|---|---|
| ASSM-TREADMILL | Fitness Equipment Assembly | $150 flat |
| ASSM-FURNITURE | Furniture Assembly | 80% of line item price |
| ASSM-* | Furniture Assembly | 75% of line item price |
When an order arrives, we match the SKU on each line item against your rules and calculate the installer payout automatically. You can set:
- Fixed payout: the installer gets a flat dollar amount regardless of what the customer paid
- Percentage: the installer gets a percentage of the line item price (e.g., customer pays $199, installer gets 80% = $159.20)
Exact SKU matches take priority over wildcards. Use * as a catch-all default for any assembly SKU you haven't mapped individually.
Step 4: Control which orders create jobs
You probably don't want every order to create an installation job. Use one of these approaches to control which orders get sent:
Shopify Flow (recommended)
If you're on Shopify Basic or higher, you have access to Shopify Flow, a visual automation tool. Create a flow that:
- Trigger: Order paid
- Condition: Order contains a line item where SKU equals your assembly SKU (e.g.,
ASSEMBLY-SERVICE), or where a product tag equalsassembly-required - Action: Send HTTP request to
https://installers.org/api/v1/webhooks/shopifywith your API key header
This is the cleanest approach. You filter on the Shopify side, and only matching orders reach us.
Assembly as a separate product or variant
Another common pattern: sell assembly as a separate line item (e.g., "Professional Assembly — $99"). If the customer adds it to their cart, the SKU appears on the order. Use Shopify Flow to check for that SKU before sending the webhook.
Testing
Use your sandbox API key (found in your partner dashboard) instead of your live key. Sandbox jobs are never sent to real installers, so you can place test orders safely.
To test, place a real order in your Shopify store (you can refund it afterward). The webhook will fire, and the job will appear in your partner dashboard marked as a test.
What the job looks like
When a Shopify order hits our webhook, we create a job with:
- Customer: name, email, and phone from the order
- Location: the shipping address and ZIP code
- Description: all line item names, quantities, and SKUs
- Reference: the Shopify order number (e.g., "Shopify #1042")
- Payout: calculated from your SKU payout rules — fixed dollar amount or percentage of the line item price. If no rule matches, the job defaults to quote mode (installers bid)
From there, everything works exactly like a job posted from the dashboard or API. Installers request the job, you pick one, and they coordinate with your customer.
Troubleshooting
Job not created
Check that your API key is being sent in the X-Installers-Key header or Authorization: Bearer header. In Shopify, go to Settings → Notifications and check the webhook response code. A 201 means success.
"unknown_service" error
We couldn't determine the service category. Make sure you've mapped your assembly SKUs in your partner dashboard. The SKU on the Shopify line item needs to match one of your rules.
"no_valid_zip" error
The order's shipping address doesn't have a valid 5-digit US ZIP code. This can happen with international orders or orders with no shipping address (digital products).
"customer_contact_required" error
The order is missing both a customer phone number and email. Make sure your Shopify checkout collects at least one of these.
Need help setting this up? Contact us and we'll walk you through it.