Why Connect Shopify to Inbound Email
E-commerce operations generate a constant stream of email notifications — orders, refunds, supplier messages, and customer inquiries. Shopify needs to respond to these events quickly. JsonHook captures those emails the moment they arrive, parses them into clean JSON, and forwards them to Shopify so your fulfillment and support workflows can fire automatically.
Connecting your inbound email to Shopify through JsonHook unlocks a range of high-value automation scenarios:
- Automatically fulfill orders when supplier confirmation emails arrive
- Trigger refund workflows when a customer sends a cancellation email
- Update inventory records when stock notification emails are received
- Notify your warehouse team the moment a rush order email arrives
- Log all customer support emails as tickets linked to their order history
Shopify supports Shopify Admin REST API or Flow automation, which makes it a natural target for JsonHook's outbound POST requests. Every email that hits your JsonHook address is parsed within milliseconds and delivered to Shopify as a clean JSON object — no polling, no manual export, no middleware server to maintain.
Setting Up Shopify with JsonHook
The following steps walk you through connecting JsonHook to Shopify. The entire setup typically takes under ten minutes.
- Step 1: Generate a Shopify private app API key or use an existing app with write access to Orders and Customers.
- Step 2: In Make or n8n, create a workflow triggered by the JsonHook webhook URL. Add a Shopify action — for example, creating an order note, tagging a customer, or adding a draft order.
- Step 3: In JsonHook, configure the inbound address (e.g.,
[email protected]) and point it at the automation webhook URL. - Step 4: Map the relevant JsonHook fields to Shopify API parameters. For example, use
from.addressto look up the customer andtextto populate a note on their record.
Once the connection is active, every email sent to your JsonHook address will be automatically parsed and forwarded to Shopify. You can test the integration by sending a plain-text email to your JsonHook address and verifying that the payload appears in Shopify within a few seconds.
JsonHook supports Shopify Admin REST API or Flow automation on the Shopify side, so no additional configuration is needed in Shopify beyond the steps above. If Shopify requires header-based authentication for incoming webhooks, add the required headers in the JsonHook endpoint configuration under Advanced Settings.
Example Workflow: When a supplier sends a stock update email, parse the quantities and update Shopify product inventory
This walkthrough demonstrates one concrete way to use JsonHook with Shopify. The scenario: When a supplier sends a stock update email, parse the quantities and update Shopify product inventory.
When an email matching this scenario arrives, JsonHook parses the raw SMTP message and constructs the following JSON payload before POSTing it to your Shopify endpoint:
{
"messageId": "",
"from": {
"name": "Jane Smith",
"address": "[email protected]"
},
"to": [
{ "address": "[email protected]" }
],
"subject": "When a supplier sends a stock update email, parse the quantities and update Shopify product inventory",
"text": "Hi, I need help with my account. Please contact me at your earliest convenience.",
"html": "Hi, I need help with my account...
",
"date": "2026-03-15T10:32:00.000Z",
"attachments": [],
"headers": {
"x-priority": "1"
}
}
Shopify Customer: from.address → email (for lookup). Order Note: text → note. Customer Tag: parse keywords from subject and append to tags. For inventory updates, extract SKU and quantity from text using a regex step in the automation tool and call the Inventory Levels API.
Once Shopify receives this payload, it can execute any downstream action — whether that is posting a notification, creating a record, updating a field, or triggering an entire multi-step workflow. The key advantage is that the data arrives as structured JSON, so Shopify never needs to parse raw email text or deal with MIME encoding.
Payload Mapping for Shopify
JsonHook delivers a consistent JSON schema for every parsed email. The table below shows which JsonHook fields map to the equivalent fields in Shopify. Use this as a reference when configuring your Shopify Shopify Admin REST API or Flow automation.
| JsonHook Field | Description | Shopify Field |
|---|---|---|
from.address | Sender email address | Sender / Contact email |
from.name | Sender display name | Sender / Contact name |
subject | Email subject line | Title / Subject / Name |
text | Plain-text email body | Description / Body / Message |
html | HTML email body | Rich text field / Notes |
date | Timestamp of receipt (ISO 8601) | Created date / Received at |
attachments[n].filename | Attachment filename | File name / Attachment label |
attachments[n].content | Attachment content (base64) | File content / Binary field |
headers.* | Raw email headers | Metadata / Custom properties |
messageId | Unique message identifier | External ID / Deduplication key |
Not every field will be present in every email. Always check for null or missing values before mapping to required fields in Shopify. For text-only emails, html will be empty; for HTML-only emails, text may be empty or auto-generated from the HTML. The attachments array will be an empty array when no files are attached.
Best Practices for Shopify Email Integration
Following these best practices will make your Shopify email integration more reliable, easier to debug, and simpler to scale as your email volume grows.
- Use dedicated addresses per workflow. Create a separate JsonHook inbound address for each distinct Shopify workflow you want to trigger. This makes routing explicit and avoids a single endpoint becoming a bottleneck for all email types.
- Validate the payload before acting. In Shopify, add a conditional check at the start of your workflow to confirm that required fields like
from.addressandsubjectare present and non-empty before executing downstream actions. - Test with real emails first. Use JsonHook's delivery log to inspect the raw JSON payload before wiring up Shopify. Confirm that all the fields you plan to map are actually populated by your email source.
- Handle errors gracefully. Configure Shopify to catch webhook delivery failures and send an alert. JsonHook will retry failed deliveries, but your Shopify endpoint should return a 2xx status promptly to acknowledge receipt.
- Keep secrets out of email content. Avoid routing emails that contain passwords, API keys, or PII through workflows unless you have appropriate data-handling controls configured in Shopify. Use JsonHook's HTTPS delivery to protect data in transit.