Wix Delivery Integration & Automated Tasking
Wix stores can automatically send delivery tasks to us using Wix Automations and webhooks. Unlike some platforms, Wix has powerful built-in automation capabilities that can be configured without plugins – though working with a Wix specialist helps optimize the integration.
This guide shows you how to connect your Wix e-commerce store to our frozen food delivery automation system.
Why Wix Integration Works Differently
Wix takes a different approach to webhooks compared to other platforms:
Wix’s Unique Approach:
- Built-in Wix Automations – No plugins needed, native functionality
- Event-driven webhooks – Trigger on specific store events
- Rich payload data – Comprehensive order information sent automatically
- Velo code integration – Advanced customization with JavaScript
- App marketplace – Additional automation apps available
The Trade-off:
✅ Powerful native capabilities
✅ No plugin dependencies
✅ Flexible automation rules
⚠️ Requires filtering (sends lots of data)
⚠️ More technical than simple forms
⚠️ Partner assistance recommended for optimization
Wix Automations: Your Integration Tool
What are Wix Automations?
Wix Automations is a built-in feature that lets you automate tasks in your store. Think of it as “if this happens, then do that” logic:
- IF a customer places an order → THEN send data to delivery service
- IF payment is received → THEN create delivery task
- IF order is fulfilled → THEN trigger webhook
Access Wix Automations:
- Wix Dashboard → Settings → Automations
- Or visit: https://www.wix.com/automations
- Click “Create an Automation”
Key Features for Delivery:
- Trigger on order events (created, paid, fulfilled)
- Send webhooks to external services (us!)
- Filter by product type (frozen goods only)
- Include custom data in webhook
- Test before going live
Documentation:
Two Paths: DIY or Partner-Assisted
Path 1: DIY with Wix Automations (Basic)
Best for:
- Simple webhook setup
- Comfortable with Wix Automations interface
- Okay with sending full payload
- Basic automation needs
What you can do yourself:
- Set up basic automation trigger
- Configure webhook URL
- Send order data automatically
- Test and go live
Limitations:
- Full payload sent (lots of unnecessary data)
- Less control over data filtering
- Harder to customize
- Manual troubleshooting
Path 2: Partner-Assisted (Recommended)
Best for:
- Optimized integration
- Filtered, minimal payload
- Custom requirements
- Professional support
What a partner provides:
- Filtered webhook payload (only essential data)
- Custom Velo code if needed
- Optimized automation rules
- Testing and troubleshooting
- Ongoing support
Recommended Partner: FLOR-IT
FLOR-IT is a certified Wix Partner specializing in e-commerce automation:
- Website: flor-it.com
- Email: info@flor-it.com
- Expertise: E-commerce integrations, webhook optimization
- Experience: Successful delivery integrations
Note: We’re not affiliated with FLOR-IT – they’re recommended based on successful customer implementations and Wix expertise.
What to tell your partner:
- “I need to integrate Wix with The Frozen Food Courier”
- Provide our webhook URL (from registration)
- Share this integration guide
- Mention you need filtered JSON payload
Understanding Wix’s Webhook Payload
The Challenge: Wix Sends Everything
When a Wix order event triggers, the default webhook includes the entire order object – payment details, line items, pricing, cart data, and much more.
Example of what Wix sends by default:
{
"data": {
"id": "eb923ff8-8412-48f4-92b5-32ff2802b072",
"orderNumber": "10002",
"paymentStatus": "PAID",
"payments": [ /* payment details */ ],
"lineItems": [ /* all products */ ],
"priceSummary": { /* prices and totals */ },
"billingInfo": { /* billing address */ },
"shippingInfo": { /* shipping details */ },
"contact": { /* customer info */ },
/* ...and much more */
}
}
The problem with full payload:
- ❌ Privacy concerns (sending payment data unnecessarily)
- ❌ Large data size (slower processing)
- ❌ Complexity (hard to manage and troubleshoot)
- ❌ Includes data we don’t need (product SKUs, pricing, etc.)
The Solution: Filter to Essentials Only
What we actually need for delivery:
- Order number (to track it)
- Customer name
- Customer phone (mobile for SMS/WhatsApp)
- Customer email
- Delivery address
- Your merchant code
That’s it! Everything else is unnecessary for delivery.
Optimized Wix Payload (Recommended):
{
"senderID": "YOUR_MERCHANT_CODE",
"orderNumber": "10002",
"contact": {
"firstName": "John",
"lastName": "Smith",
"phone": "0821234567",
"email": "john@example.com"
},
"shippingAddress": {
"addressLine": "123 Main Street",
"city": "Johannesburg",
"province": "Gauteng",
"postalCode": "2000",
"country": "South Africa"
},
"taskAction": "UPDATE"
}
Benefits of filtered payload:
- ✅ Privacy-focused (only essential data)
- ✅ Fast processing
- ✅ Easy to debug
- ✅ Secure (minimal data exposure)
- ✅ Clean and maintainable
How to achieve this:
- Use Wix Automations with custom mapping (basic)
- Use Velo code to filter payload (advanced)
- Have Wix partner implement filtering (recommended)
Our Required JSON Schema for Wix
Here’s the exact format we need to receive from your Wix store:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "TheFrozenFoodCourierWixReceiver",
"description": "The Frozen Food Courier Wix Webhook Schema",
"type": "object",
"properties": {
"senderID": {
"description": "Your Merchant Code",
"type": "string",
"$comment": "Get this from thefrozenfoodcourier.co.za/register"
},
"orderNumber": {
"description": "Wix Order Number",
"type": "string",
"$comment": "From order.orderNumber"
},
"contact": {
"type": "object",
"properties": {
"firstName": {"type": "string"},
"lastName": {"type": "string"},
"phone": {"type": "string", "$comment": "Mobile number for SMS/WhatsApp"},
"email": {"type": "string"}
},
"required": ["firstName", "lastName", "phone", "email"]
},
"shippingAddress": {
"type": "object",
"properties": {
"addressLine": {"type": "string"},
"city": {"type": "string"},
"province": {"type": "string"},
"postalCode": {"type": "string"},
"country": {"type": "string"}
},
"required": ["addressLine", "city", "province", "postalCode"]
},
"taskAction": {
"description": "Action to perform",
"type": "string",
"$comment": "UPDATE or CANCELLED"
}
},
"required": ["senderID", "orderNumber", "contact", "shippingAddress", "taskAction"]
}
Mapping Wix Fields to Our Schema
From Wix default payload to our required fields:
Our Field | Wix Source Field | Example |
---|---|---|
senderID | Your merchant code | “TFFC-MERCHANT-001” |
orderNumber | data.orderNumber | “10002” |
contact.firstName | data.contact.name.first | “John” |
contact.lastName | data.contact.name.last | “Smith” |
contact.phone | data.contact.phone | “0821234567” |
contact.email | data.contact.email | “john@example.com” |
shippingAddress.addressLine | data.shippingInfo.logistics.shippingDestination.address.addressLine | “123 Main St” |
shippingAddress.city | data.shippingInfo.logistics.shippingDestination.address.city | “Johannesburg” |
shippingAddress.province | data.shippingInfo.logistics.shippingDestination.address.subdivisionFullname | “Gauteng” |
shippingAddress.postalCode | data.shippingInfo.logistics.shippingDestination.address.postalCode | “2000” |
taskAction | Always | “UPDATE” |
Note: Your Wix partner will handle this mapping for you.
Step-by-Step Setup Guide
Prerequisites
Before you start:
- Active Wix Store with e-commerce enabled
- Merchant Registration at thefrozenfoodcourier.co.za/register
- Webhook URL (provided during registration)
- Merchant Code (received after registration)
Option A: Basic Setup (DIY with Wix Automations)
Step 1: Register as Merchant
- Visit thefrozenfoodcourier.co.za/register
- Complete registration form
- Save your merchant code
- Note the webhook URL provided
Step 2: Access Wix Automations
- Log into Wix Dashboard
- Go to Settings → Automations
- Click “Create an Automation”
Step 3: Set Up Trigger
- Choose trigger: “Order is paid” or “Order is created”
- Recommended: “Order is paid” (ensures payment received)
- Optional: Add condition to filter by product category (frozen goods only)
Step 4: Add Webhook Action
- Click “Add an Action”
- Select “Send a webhook”
- Enter webhook URL (from your registration)
- Method: POST
- Content-Type: application/json
Step 5: Configure Payload (Basic)
In the webhook body field, Wix allows you to map order data. Configure it like this:
{
"senderID": "YOUR_MERCHANT_CODE_HERE",
"orderNumber": "{{order.orderNumber}}",
"contact": {
"firstName": "{{order.buyer.firstName}}",
"lastName": "{{order.buyer.lastName}}",
"phone": "{{order.buyer.phone}}",
"email": "{{order.buyer.email}}"
},
"shippingAddress": {
"addressLine": "{{order.shippingAddress.addressLine}}",
"city": "{{order.shippingAddress.city}}",
"province": "{{order.shippingAddress.subdivision}}",
"postalCode": "{{order.shippingAddress.postalCode}}",
"country": "{{order.shippingAddress.country}}"
},
"taskAction": "UPDATE"
}
Step 6: Test Automation
- Click “Test automation”
- Use sample order data
- Verify webhook sends successfully
- Check email for our confirmation
Step 7: Activate
- Name your automation: “Frozen Food Delivery”
- Click “Activate”
- Monitor first few real orders
Option B: Advanced Setup (with Wix Partner)
Step 1: Contact FLOR-IT or Your Wix Developer
Provide them with:
- Your merchant code
- Our webhook URL
- This integration guide
- Any specific requirements (filtering, scheduling, etc.)
Step 2: Partner Implements Solution
They will:
- Create optimized Wix automation
- Write Velo code to filter payload (if needed)
- Implement error handling
- Set up testing environment
Step 3: Review and Test
- Partner demonstrates the integration
- Test with sample orders
- Verify data is correct
- Confirm notifications working
Step 4: Go Live
- Activate in production
- Monitor first orders
- Partner provides support documentation
Option C: Advanced DIY (Velo Code)
For developers comfortable with JavaScript:
Step 1: Enable Wix Velo
- Wix Editor → Dev Mode (top right)
- Enable Velo
Step 2: Create Backend File
Create a new file: backend/deliveryWebhook.js
import { fetch } from 'wix-fetch';
export async function sendDeliveryTask(order) {
// Filter to only essential data
const payload = {
senderID: "YOUR_MERCHANT_CODE",
orderNumber: order.number,
contact: {
firstName: order.buyer.firstName,
lastName: order.buyer.lastName,
phone: order.buyer.phone,
email: order.buyer.email
},
shippingAddress: {
addressLine: order.shippingAddress.addressLine,
city: order.shippingAddress.city,
province: order.shippingAddress.subdivision,
postalCode: order.shippingAddress.postalCode,
country: order.shippingAddress.country
},
taskAction: "UPDATE"
};
try {
const response = await fetch("YOUR_WEBHOOK_URL", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
const result = await response.json();
console.log("Delivery task created:", result);
return result;
} catch (error) {
console.error("Error sending delivery task:", error);
throw error;
}
}
Step 3: Trigger on Order Event
Create/edit: backend/events.js
import { sendDeliveryTask } from './deliveryWebhook';
// Trigger when order is paid
export function wixStores_onOrderPaid(event) {
const order = event.order;
// Send to delivery service
sendDeliveryTask(order)
.then(result => {
console.log("Success:", result);
})
.catch(error => {
console.error("Failed:", error);
});
}
Step 4: Test in Preview Mode
- Preview your site
- Place test order
- Check browser console for logs
- Verify webhook received
Step 5: Publish
- Test thoroughly
- Publish your site
- Monitor live orders
Receiving Delivery Status Updates
Unlike WooCommerce, Wix doesn’t have extensive external API access for order updates. You have two options:
Method 1: Email Notifications (Recommended for Most)
Setup: Configure during merchant registration
What you receive:
- Task accepted confirmation
- Address validation status
- Planned confirmation
- Scheduled notification (with time window)
- Dispatched notification
- En route notification
- Completed/Failed confirmation
How to use:
- Forward to customers if desired
- Track deliveries via email
- Update Wix orders manually based on notifications
Advantages:
- No technical setup
- Works immediately
- Complete delivery history
- Reliable and permanent record
Method 2: Webhook Receiver (Advanced)
Setup: Create custom webhook endpoint in Wix Velo
How it works:
- We send status updates to your Wix webhook URL
- Your Velo code receives the update
- You process as needed (email customer, update order, etc.)
Response Schema We Send:
{
"senderID": "THEFROZENFOODCOURIER",
"orderNumber": "10002",
"deliveryStatus": "COMPLETED",
"timestamp": "2024-10-15T14:35:00Z"
}
Statuses you’ll receive:
- PLANNED
- SCHEDULED
- DISPATCHED
- ENROUTE
- COMPLETED
- FAILED
Example Velo Code to Receive Updates:
// backend/http-functions.js
import wixData from 'wix-data';
export function post_deliveryStatusUpdate(request) {
const payload = request.body;
// Validate it's from us
if (payload.senderID !== "THEFROZENFOODCOURIER") {
return {
status: 403,
body: { error: "Unauthorized" }
};
}
// Update your order or send notification
console.log(`Order ${payload.orderNumber} is now ${payload.deliveryStatus}`);
// Example: Update custom field in Wix
// wixData.update("Stores/Orders", {
// "_id": payload.orderNumber,
// "deliveryStatus": payload.deliveryStatus
// });
return {
status: 200,
body: { success: true }
};
}
To enable this:
- Provide your Wix webhook URL during registration
- Configure this endpoint in Velo
- We’ll send updates to it automatically
Troubleshooting Common Issues
Problem: Automation Not Triggering
Possible causes:
- ✓ Automation is paused/disabled
- ✓ Trigger condition not met (e.g., order not paid)
- ✓ Filter condition blocking trigger
- ✓ Order doesn’t contain frozen goods (if filtered)
Solution:
- Check automation status in Wix Dashboard
- Review trigger conditions
- Test with sample order
- Check automation logs
Problem: Webhook Fails
Possible causes:
- ✓ Incorrect webhook URL
- ✓ Wrong merchant code
- ✓ Missing required fields
- ✓ Invalid JSON format
- ✓ Network/connectivity issue
Solution:
- Verify webhook URL is exact
- Confirm merchant code matches registration
- Test JSON in validator (jsonlint.com)
- Check Wix automation logs for error details
Problem: Wrong Data Sent
Common issues:
- Address fields empty (check Wix requires shipping address)
- Phone number missing (ensure collected at checkout)
- Province showing code instead of full name
- Postal code missing
Solution:
- Verify Wix checkout collects all required fields
- Check field mapping in automation
- Use subdivision.fullname (not subdivision code)
- Ensure customer completes all address fields
Problem: Task Not Created
Check with us:
- Email hello@thefrozenfoodcourier.co.za
- Provide order number
- We’ll check our logs for error details
Common validation failures:
- Missing mobile phone number
- Invalid email format
- Incomplete address
- Incorrect merchant code
Working with a Wix Partner
What to Provide Your Partner
Essential Information:
- Our webhook URL (from registration)
- Your merchant code
- This integration guide
- JSON schema requirements
- Your specific needs (filtering, custom fields, etc.)
What to Discuss
Key Questions:
- Which order event should trigger delivery? (Order created/paid/fulfilled?)
- Do you need filtering? (Only frozen goods? Specific products?)
- How to handle delivery scheduling?
- What happens with order cancellations?
- Testing timeline and process?
What Your Partner Delivers
Technical Implementation:
- Configured Wix automation or Velo code
- Filtered webhook payload
- Error handling and logging
- Test environment and documentation
Documentation:
- How the integration works
- How to monitor success
- Troubleshooting guide
- How to make changes
Support:
- Setup assistance
- Testing support
- Ongoing maintenance (as per agreement)
Advanced Features
Scheduled Deliveries
If you want customers to choose delivery dates:
Option 1: Custom Field at Checkout
- Add date picker to Wix checkout
- Include in webhook payload:
{
...
"dispatchReadyDate": "2024-10-20",
"dispatchReadyDateMask": "YYYY-MM-DD"
}
Option 2: Delivery Time in Notes
- Customer includes preferred date in order notes
- Partner extracts and formats for webhook
Filtering by Product Type
If you sell both frozen and non-frozen items:
In Wix Automation:
- Add condition: “Product category is Frozen Foods”
- Only trigger webhook for frozen orders
In Velo Code:
// Check if order contains frozen items
const hasFrozenItems = order.lineItems.some(item =>
item.productName.includes("Frozen") ||
item.category === "Frozen Foods"
);
if (hasFrozenItems) {
sendDeliveryTask(order);
}
Multi-Location Support
If you have multiple warehouse locations:
Include location in payload:
{
...
"collectionLocation": "Johannesburg Warehouse",
"collectionAddress": "..."
}
We’ll coordinate collection from the right location.
Related Resources
Integration Guides:
- Delivery Automation Overview
- Work Order Processing
- Real-Time Tracking
- WooCommerce Integration (for comparison)
Wix Documentation:
Recommended Partner:
- FLOR-IT – info@flor-it.com
Get Help
Technical Support: 📧 hello@thefrozenfoodcourier.co.za
We can help with:
- Integration planning
- Webhook URL and merchant code
- Partner coordination
- Payload requirements
- Testing assistance
- Troubleshooting
Working with a Wix partner or developer?
We’re happy to liaise directly with them to ensure smooth integration. Just introduce us via email!
The Frozen Food Courier – Wix automation for seamless frozen food delivery