Drop Docs
Integrations
The merchant portal supports two platform connectors today, Shopify and Wix. If you run your own custom software instead, use Native integration with the Orders API and optional outbound webhooks.
Shopify connector
Use this when Shopify is the source of truth for incoming orders. Save the Shopify store connection in the portal, choose the pickup store, then register Shopify webhooks with the exact Drop URL and secret.
Wix connector
Use this when Wix is the source of truth for incoming orders. Save the Wix site connection in the portal, choose the pickup store, then download the generated Wix backend files and add them to the merchant site.
Native integration
Use this only when you run your own website, app, checkout flow, POS, or backend. Native integration is separate from Shopify and Wix and gives your own system API credentials and optional Drop webhook delivery.
How the portal expects setup to happen
01
Add a pickup store first
Platform connectors need a pickup store because Drop must know which store should dispatch incoming orders.
02
Choose the right integration path
Use Shopify connector or Wix connector when those platforms are the order source. Use Native integration only when you run your own custom store, app, or backend.
03
Save the connector in the portal
Store identity, secret or public key, pickup store, and connector behavior are configured in the portal before you test live traffic. For Wix, Drop also generates the backend starter files immediately after save.
04
Verify and monitor
After setup, test the connector from Shopify or Wix and review integration events and issues in the portal.
Choose the right path
Use Shopify connector
When orders originate in Shopify and Shopify should push order changes into Drop through Shopify webhooks.
Use Wix connector
When orders originate in Wix and Wix should push paid order events into Drop through the generated backend kit.
Use Native integration
Only when you operate your own custom software and need direct Orders API access plus optional outbound Drop webhooks.
Shopify connector in the portal
01
Open the portal Integrations page and choose Shopify connector.
02
Save the connector name, Shopify store domain, Shopify webhook secret, and pickup store.
03
Link a Native integration app only if you separately want your own custom system credentials or Drop-to-your-system webhooks.
04
Register Shopify webhooks to Drop and then review integration events and issues in the portal.
Shopify connector fields
textRequired for a standard Shopify connector:
- connection name
- Shopify store domain
- Shopify webhook secret
- pickup store
Optional:
- linked Native integration app
- paid-order-only filter
- auto-create orders toggleShopify webhook target
textDelivery URL
POST /integrations/shopify/orders
Recommended Shopify topics
- orders/create
- orders/updated
- orders/cancelled
Required Shopify headers
- X-Shopify-Topic
- X-Shopify-Shop-Domain
- X-Shopify-Hmac-Sha256Wix connector in the portal
01
Open the portal Integrations page and choose Wix connector.
02
Save the connector name, Wix site ID, webhook mode details, and pickup store.
03
Link a Native integration app only if you separately want your own custom system credentials or Drop-to-your-system webhooks.
04
Download the generated Wix starter kit from the portal, add dropsa.jsw and events.js in Wix Backend, publish the site, then monitor portal events and errors.
Wix connector fields
textRequired for a standard Wix connector:
- connection name
- Wix site ID
- pickup store
Choose one verification mode:
- signed Wix webhook public key
- automation verification token (Drop can generate this)
Optional:
- linked Native integration app
- paid-order-only filter
- auto-create orders toggleWix webhook target and generated files
textDelivery URL
POST /integrations/wix/orders
Generated from the portal after save
- backend/dropsa.jsw
- backend/events.js
- README.md
Supported Wix flows
- signed Wix webhook payloads using the configured public key
- Wix backend event flow using webhookVerificationToken in the JSON bodyWix backend starter kit
What Drop generates
As soon as you save a Wix connector in the portal, Drop prepares three downloadable files for the merchant: dropsa.jsw, events.js, and a short setup guide. These files are ready to add directly in Wix Editor.
Where to add them in Wix
In Wix Editor, enable Dev Mode and go to Backend & Public -> Backend. Create a web module named dropsa.jsw and a backend file named events.js, then paste the generated files exactly as provided by Drop.
Important Wix webhook behavior
Paid orders are preferred
The generated Wix backend kit listens for wixStores_onOrderPaid so Drop receives the order after payment rather than on raw order creation.
Duplicate delivery can happen
Wix can resend the same webhook event. Drop uses the Wix webhook event id to ignore duplicate deliveries safely.
Events may arrive out of order
Connector logic should not assume that every later delivery arrives after every earlier one. Monitor portal events and issues instead of depending on arrival order alone.
Address geocoding fallback
Wix often omits latitude and longitude. Drop now geocodes the Wix delivery address automatically when coordinates are missing, so merchants do not need to provide them manually in Wix.
When to use Native integration instead
Native integration is the right path when your own software is the order source of truth. This includes custom websites, apps, internal order desks, POS systems, marketplace bridges, and other non-Shopify/non-Wix flows.
What Native integration gives you
A merchant app identity, client credentials for the Orders API, and optional outbound Drop webhooks to your own backend.
What it is not for
It is not required just to connect Shopify or Wix. Those should use the dedicated platform connector flow in the portal.
Native integration setup flow
01
Create a Native integration app in the portal Developers page. This gives your own backend a client ID and secret.
02
Exchange those credentials for a bearer token through the OAuth token endpoint.
03
POST your orders to the Orders API using JSON with pickup, dropoff, customer, package, amount, and currency.
04
Add an outbound webhook endpoint only if your own backend should receive signed Drop lifecycle events later.
Native integration essentials
textBase URL
https://api.dropsa.co.za
Authentication
POST /oauth/token
Create order
POST /v1/orders
Use Native integration when your own website, mobile app, POS, or backend is the source of truth for the order.Get an access token
bashcurl -X POST https://api.dropsa.co.za/oauth/token \
-H "Content-Type: application/json" \
-d '{
"clientId": "drop_live_app_asteria",
"clientSecret": "drop_live_secret_replace_me"
}'Create an order
bashcurl -X POST https://api.dropsa.co.za/v1/orders \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"reference": "AST-100245",
"channel": "api",
"sellerType": "merchant_managed",
"fulfilmentType": "same_time_delivery",
"serviceType": "EXPRESS",
"pickup": {
"addressLine1": "18 Fricker Road",
"city": "Johannesburg",
"country": "ZA",
"latitude": -26.1076,
"longitude": 28.0567,
"contactName": "Asteria Dispatch Desk",
"contactPhone": "+27115550190"
},
"dropoff": {
"addressLine1": "77 Grant Avenue",
"addressLine2": "Unit 4",
"city": "Johannesburg",
"country": "ZA",
"latitude": -26.1453,
"longitude": 28.0316,
"contactName": "Lebo Khumalo",
"contactPhone": "+27710001122"
},
"customer": {
"name": "Lebo Khumalo",
"phone": "+27710001122",
"email": "lebo.khumalo@example.test"
},
"package": {
"size": "SMALL",
"weightKg": 1.2,
"category": "STANDARD"
},
"amount": 189.5,
"currency": "ZAR",
"notes": "Call on arrival and hand to reception."
}'Example native order payload
json{
"reference": "AST-100245",
"channel": "api",
"sellerType": "merchant_managed",
"fulfilmentType": "same_time_delivery",
"serviceType": "EXPRESS",
"pickup": {
"addressLine1": "18 Fricker Road",
"city": "Johannesburg",
"country": "ZA",
"latitude": -26.1076,
"longitude": 28.0567,
"contactName": "Asteria Dispatch Desk",
"contactPhone": "+27115550190"
},
"dropoff": {
"addressLine1": "77 Grant Avenue",
"addressLine2": "Unit 4",
"city": "Johannesburg",
"country": "ZA",
"latitude": -26.1453,
"longitude": 28.0316,
"contactName": "Lebo Khumalo",
"contactPhone": "+27710001122"
},
"customer": {
"name": "Lebo Khumalo",
"phone": "+27710001122",
"email": "lebo.khumalo@example.test"
},
"package": {
"size": "SMALL",
"weightKg": 1.2,
"category": "STANDARD"
},
"amount": 189.5,
"currency": "ZAR",
"notes": "Call on arrival and hand to reception."
}Native payload checklist
textRequired in practice
- reference
- pickup address and contact
- dropoff address and contact
- customer details
- package details
- amount
- currency
Recommended
- latitude and longitude for both pickup and dropoff when your system already knows them
- notes for access, handoff, or delivery instructions
Good uses for Native integration
- custom ecommerce storefronts
- marketplace bridges
- POS or order desk software
- internal order management systemsOrders API example for Native integration
json{
"reference": "FC-100245",
"channel": "website",
"originSystem": "custom-storefront",
"pickupAddressLine1": "Sandton City, Rivonia Road",
"dropoffAddressLine1": "Centurion Mall, Heuwel Avenue",
"dropoffContactName": "Lerato Nkosi",
"dropoffPhone": "+27821234567"
}