Package Information
Documentation
n8n-nodes-easy-orders
This is an n8n community node. It lets you use EasyOrders (إيزي أوردر) — the Egyptian e-commerce/order-management platform — in your n8n workflows.
It provides both a regular action node (Products, Categories, Orders, Shipping, Webhook management) and a Trigger node that starts workflows when EasyOrders sends order events.
Installation
Credentials
Operations
Trigger Node
Compatibility
Known API Limitations
Usage Examples
Development
Build & Publish
Troubleshooting
Resources
License
Installation
Follow the n8n community nodes installation guide.
From n8n (recommended)
In n8n: Settings → Community Nodes → Install, then enter:
n8n-nodes-easy-orders
Manually
cd ~/.n8n/nodes
npm install n8n-nodes-easy-orders
Restart n8n afterwards.
From this repository (self-hosted / development)
pnpm install
pnpm build
npm link
# inside your n8n custom-nodes folder:
npm link n8n-nodes-easy-orders
Credentials
The node authenticates with a single EasyOrders API credential:
| Field | Description |
|---|---|
| API Key | Generated from your EasyOrders dashboard → Account Settings → Public API → Create New API Key. It is shown only once — copy and store it immediately. |
| Base URL | Defaults to https://api.easy-orders.net/api/v1/external-apps. Only change if EasyOrders instructs you to. |
| Request Timeout (ms) | Defaults to 30000. |
| Ignore SSL Issues | Off by default; only enable if you understand the risk. |
Every request is authenticated with the header Api-Key: <your key>, exactly as documented at https://public-api-docs.easy-orders.net/docs/authentication.
Scoped permissions: when you create the API key in the dashboard, EasyOrders lets you grant specific scopes (products:*, orders:*, categories:*, shipping_areas). Make sure the key you use has the scopes needed for the operations you plan to run — an under-scoped key will fail with a 401/403 from the API.
Operations
Product
- Create
- Get
- Get Many (with filtering, sorting, field selection,
join, and a Return All option that pages through results automatically) - Update
- Update Stock (by SKU)
- Update Variant Stock
Category
- Create
- Get
- Get Many (filter by parent / top-level / hidden, sort)
- Update
Order
- Get (by order ID)
- Get by Short ID (the human-readable order number)
- Update Status (pending, confirmed, pending_payment, paid, paid_failed, processing, waiting_for_pickup, in_delivery, delivered, canceled, returning_from_delivery, request_refund, refund_in_progress, refunded)
- Add Note (public — visible to the customer — or private)
Shipping
- Update Areas — replace your store's shipping cities and their costs
Webhook
- Delete by URL — remove a previously registered webhook by its callback URL
Trigger Node
EasyOrders Trigger exposes an n8n webhook URL. Paste that URL into your EasyOrders dashboard under Public API → Webhooks → Create Webhook, and optionally set the Webhook Secret field on the node to the secret EasyOrders shows you — the node will reject any request whose secret header doesn't match.
The trigger emits one item per received event:
- Order Created — the full order object, including
cart_items[]with nested product/variant data. - Order Status Update —
{ event_type: "order-status-update", order_id, old_status, new_status, payment_ref_id }.
Use the Event dropdown to only pass through one of the two event types, or Both.
EasyOrders webhooks are configured entirely from the dashboard — there is no API to register or unregister them, so the trigger node's activation is a no-op on the EasyOrders side; you still need to paste the URL in manually.
Compatibility
- Requires n8n's Community Nodes API version 1.
- Built and tested against n8n-workflow
^1.60.0. - Node.js
>=18.10.
Known API Limitations
These come directly from the EasyOrders public API and are not limitations of this node:
- No endpoint to list, create, or delete orders. Orders can only be fetched individually (by ID or short ID) or received via webhook. If EasyOrders adds these endpoints later, this node can be extended.
- No sandbox/staging environment — all testing happens against your live store.
- No binary/multipart image upload. Product
thumb/imagesmust be URLs to already-hosted images; upload images elsewhere first (e.g. your own storage, or a Google Drive/S3 node earlier in the workflow) and pass the resulting URL. - No Customers, Inventory, or Payments resources. EasyOrders does not expose these as separate API resources — customer data is embedded in each order, stock is managed per-product/variant (see Product → Update Stock), and there is no standalone payments API. This node reflects exactly what the API supports rather than fabricating unsupported endpoints.
- Rate limit: 40 requests/minute per API key. The node automatically retries once on HTTP 429 with a 15-second backoff before failing the node.
- Webhook verification is a plain secret comparison (EasyOrders does not sign payloads with HMAC), matching how the platform actually works.
Usage Examples
Sync new orders into a spreadsheet: EasyOrders Trigger (Event: Order Created) → Google Sheets (Append Row).
Auto-confirm paid COD orders: EasyOrders Trigger (Event: Order Status Update) → IF (new_status = paid) → EasyOrders (Order → Update Status → processing) → EasyOrders (Order → Add Note, public, "Your order is being prepared!").
Bulk stock sync from a supplier feed: Read supplier CSV/API → Loop → EasyOrders (Product → Update Stock by SKU).
Development
git clone <this-repo>
cd easy-order-node
pnpm install
pnpm dev # tsc --watch
pnpm lint
pnpm format
Link into a local n8n instance for live testing:
pnpm build
npm link
cd ~/.n8n/custom # or wherever your n8n custom nodes live
npm link n8n-nodes-easy-orders
Build & Publish
pnpm install
pnpm build # compiles TypeScript + copies icons via gulp
pnpm lint
npm publish --access public
prepublishOnly runs the build and lint automatically before npm publish.
Troubleshooting
| Problem | Likely cause |
|---|---|
| Credential test fails | Wrong API key, key regenerated/revoked, or key missing the products:read scope |
| 429 errors even after retry | You're exceeding 40 req/min sustained — add a Wait/Split-in-Batches node to throttle bulk operations |
| Webhook never fires | URL not saved correctly in the EasyOrders dashboard, or your n8n instance isn't reachable from the internet (use a tunnel/reverse proxy in development) |
secret mismatch (401 from trigger) |
The Webhook Secret field doesn't match what EasyOrders shows in the dashboard for that webhook |
| Get Many returns everything even with a Limit set | You left Return All on — turn it off to respect the Limit field |
Resources
- n8n community nodes documentation
- EasyOrders Public API documentation
- EasyOrders Authentication docs