easy-orders

n8n community node for the EasyOrders (إيزي أوردر) Public API — manage Products, Categories, Orders, and Shipping, and receive Order webhooks.

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/images must 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

License

MIT

Discussion