Description
n8n-nodes-gapli



This is an n8n community node for GAPLI โ an automated dropshipping platform. It lets you manage products, orders, wholesalers, marketplace accounts, and multi-market regions directly from your n8n workflows.
GAPLI is a B2B SaaS platform that enables operators to run automated dropshipping businesses across marketplaces (Allegro, Erli) and e-commerce stores (WooCommerce, PrestaShop). It handles product catalogs, order fulfillment, price management, inventory synchronization, and multi-marketplace integrations โ all from a single dashboard.
๐ Market-Aware: All product, wholesaler, and analytics queries can be scoped to a specific market/region (e.g. Poland, Czech Republic) using a dynamic dropdown with country flags.
n8n is a fair-code licensed workflow automation platform.
—
Installation ยท Nodes ยท Credentials ยท Operations ยท AI Agent Tool ยท Usage Examples ยท Compatibility ยท Resources
—
Installation
Follow the installation guide in the n8n community nodes documentation.
npm package name: n8n-nodes-gapli
Quick Install via n8n UI
1. Go to Settings โ Community Nodes
2. Click Install a community node
3. Enter n8n-nodes-gapli and click Install
Manual Install (self-hosted n8n)
cd ~/.n8n
npm install n8n-nodes-gapli
Then restart n8n.
—
Nodes
This package includes two nodes and one credential type:
๐ฃ GAPLI Node (Regular + AI Tool)
The main node for interacting with the GAPLI API. Supports all CRUD operations across multiple resources. Also available as an AI Agent Tool โ connect it to an AI Agent node and let AI manage your dropshipping operations.
โก GAPLI Trigger Node (Polling)
A trigger node that polls the GAPLI API at regular intervals and fires your workflow when events occur:
- New Order โ triggers when a new order is placed
- Order Status Changed โ triggers when an order transitions between statuses
- New Product โ triggers when new products appear in the catalog
—
Credentials
GAPLI API Key
To use this node, you need a GAPLI API key:
1. Log in to your GAPLI Dashboard
2. Navigate to Integrations (sidebar menu)
3. Go to the API Keys tab
4. Click Generate New Key
5. Copy the key (starts with gapli_)
6. In n8n, create new GAPLI API credentials and paste the key
| Field | Description |
|—|—|
| API Key | Your GAPLI API key (starts with gapli_) |
| Base URL | Default: https://gapli.com. Change only for staging/development. |
The credential includes an automatic connection test that calls the /health endpoint to verify your API key.
—
Operations
๐ฆ Product
| Operation | Description |
|—|—|
| Get Many | Retrieve a list of products from your catalog. Supports market scoping and filters: parser ID, SKU, search text, EAN/GTIN, availability, price range, stock, oversized, adult products, exclude already listed. Full Database Scan mode available. |
| Get by SKU | Retrieve a single product by its SKU (Stock Keeping Unit). |
| Batch EAN Lookup | Look up multiple products by EAN/GTIN barcodes in a single request (up to 100). |
| Batch SKU Lookup | Look up multiple products by SKU identifiers in a single request (up to 100). |
๐ Order
| Operation | Description |
|—|—|
| Get Many | Retrieve a list of orders. Filter by status, date range (from/to). Include Financials attaches the money result to every order on the page in the same request. |
| Get by ID | Retrieve a single order by its numeric ID. Returns shipments[] โ the tracking number and link. Optional Include: Conversation (buyer messages, disputes, claims), Diagnostics (wholesaler per item, status timings, issue reason codes, warning flags) and Financials (revenue, costs, commission, refunds, operator payout). All ride along on the same request โ no extra HTTP calls. |
| Get Conversation Analysis | AI conclusion for the order: outcome, root cause, what went well, what went wrong, with evidence message IDs. Paid plans only (Commerce Plan and above) โ returns HTTP 402 otherwise. Cached per conversation state. |
> ๐ shipments[] comes out of Get by ID and nowhere else. Get Many does not contain it, so
> a workflow polling the list finds nothing and concludes there is no tracking. Every “tracking
> number back to my own shop” flow runs through Get by ID.
>
> โ ๏ธ Skip entries whose direction is inboundfromwholesaler. That leg is the transport
> wholesaler โ GAPLI warehouse, not the parcel to the buyer, and must never be shown to the
> customer. The buyer’s parcel carries direction: "outgoing".
#### ๐ฐ Financials
Requires the financials scope on your API key (Dashboard โ Integrations โ API Keys โ wallet
icon). Read-only, and only your own orders.
Two numbers, on purpose. result.totalprofit is the order’s result; operatorresult.total
is what you end up with โ operator pay has two parts, the marketplace commission Allegro
withholds from the payout (stays with you) and the profit share from the e-Wallet. A “total profit”
column belongs on operator_result.total.
Always check warnings before averaging anything. commissionzerocrossborder means CZ/SK/HU
orders carry no commission in our database, so their margin is overstated and **not comparable
with PL**. commissionnotrecovered is a written-off order whose commission Allegro never
reversed โ the Pool nets to zero and the loss appears nowhere else.
๐ฌ Message
Read-only access to buyer conversations. Requires the messages scope on your API key
(Dashboard โ Integrations โ API Keys โ message icon). No API key can send a message to a buyer.
| Operation | Description |
|—|—|
| Get Many Threads | Conversation threads, disputes and claims. Filter by Order ID, Source Order ID, thread type, platform, account and date range. |
| Get Thread | A single thread with its messages. |
> โ ๏ธ Disputes and claims have no internal Order ID. They link to an order ONLY through
> Source Order ID (the marketplace order number). Filtering by Order ID alone runs without
> error and returns just the ordinary correspondence โ silently missing exactly the threads
> that describe what went wrong.
> ๐ก Automated messages are hidden by default. GAPLI’s own sends (invoice notifications,
> review requests, shipping updates) are roughly half of all thread traffic. Leaving them out
> keeps an AI analysis about the buyer conversation rather than about our notifications.
> They are still counted in automatedmessageshidden.
๐ญ Wholesaler
| Operation | Description |
|—|—|
| Get Many | Retrieve the list of available wholesalers/suppliers, each with its industries. Supports market scoping and active status filter. |
๐ช Marketplace
| Operation | Description |
|—|—|
| Get Accounts | Retrieve connected marketplace accounts (Allegro, Erli). |
| Get Products | Retrieve products listed on marketplace accounts. Filter by account ID and platform. |
| Get Wholesaler Coverage | Ready-made per-wholesaler counts for your Allegro accounts โ how many products from each wholesaler sit on each account, and how many accounts each wholesaler is spread across. Leave the account empty to cover every account in one request. Allegro only. |
๐ฌ Store
> This node never talks to Shopify or WooCommerce. It talks to GAPLI, and GAPLI does the work
> on the store side โ over the Shopify Admin API or the WooCommerce plugin. You say “stock my store
> with these SKUs” and no access to your own store’s API is involved at any point. One call looks
> the same whichever engine the store runs.
| Operation | Description |
|—|—|
| Get Many | Retrieve all stores (Shopify, WooCommerce, PrestaShop, etc.) for the authenticated operator. |
| Send Products | Stock the store from the GAPLI catalogue. Optional pricing (percentage markup, flat markup, profit reduction) and store category IDs. Scope store:products:write. Max 100 SKUs per request. |
| Get Assortment | What actually stands in the store, SKU by SKU, with externalid, firstseenat, lastsyncedat, neversynced and last_error. Scope store:products:read. |
| Get Statistics | The store’s own sales for a period: orders by status, revenue from paid orders, average order value, assortment size. Scope store:statistics:read. |
> โณ Send Products waits, and it has a 100-SKU ceiling. Shopify accepts one product per
> points-metered mutation (~30 cards/min per store), so a 100-item request runs for **several
> minutes. The node allows 10 minutes for it and deliberately does not** retry a timeout.
> Never retry it yourself either โ a broken wait tells you nothing about how much already
> landed, and a second call stocks the store twice. Read Get Assortment instead.
> โ ๏ธ On WooCommerce sent_count means HOW MANY WERE SENT, not how many the store accepted.
> The plugin takes the batch asynchronously, so the response carries a warning saying exactly that.
> The node returns the whole response โ warnings[] included โ so read it; confirmation only
> ever comes from Get Assortment.
> โ ๏ธ The store product limit applies here, exactly as it does in the panel. Over the limit the
> batch is TRIMMED, and only trimmedbylimit tells you by how much โ sent_count on its own
> looks like a full success. limit reports the state (limit, currentCount, available). When
> the limit blocks the batch entirely the request fails with HTTP 422 and the reason is now in the
> error message rather than a bare “request failed”.
> ๐ก In Get Assortment, read _meta.source before concluding a product is missing.
> shopifyproductmap is GAPLI’s own dispatch register โ accurate to the minute.
> store_snapshot is a sweep filled in round-robin that reaches some stores only **once every few
> days: check meta.snapshotupdatedat first. neversynced: true means the card is** in the
> store but has never received a stock sync โ the first place to look at “the product shows the
> wrong stock”. _meta is attached to every returned item, and a store holding nothing still
> returns one item carrying store, total and _meta, so a stale sweep never arrives as silence.
> โ ๏ธ Get Statistics is the store’s own sales, not marketplace sales. Allegro and Erli orders
> also carry a store_id โ the store their marketplace account is pinned to โ so a counter built on
> store_id alone returns a figure several times too high and entirely believable. Average order
> value is computed from paid orders only, so a cart abandoned in status “new” does not drag it
> down.
๐ Market
| Operation | Description |
|—|—|
| Get Many | Retrieve the list of available markets/regions with country codes, currencies, and flag emojis. |
๐ท๏ธ Industry
| Operation | Description |
|—|—|
| Get Many | List available product industries with wholesaler counts per industry. |
๐ Analytics
| Operation | Description |
|—|—|
| Top Products | Get a ranking of best-selling products by period (7 days, 30 days, 90 days). |
| Sales Summary | Revenue in source transaction currency (totalrevenuesourcecurrency) and PLN (totalrevenue_pln). Supports Account ID and Store ID filters for per-account scoping. Old gross/net aliases preserved but deprecated. |
| Stock Alerts | Intelligent low-stock detection with estimated days until stockout. |
| Marketplace Health | Allegro account performance: sync rate, listing quality, error rates. |
| Global Top Products | ๐ Platform-wide best-selling products across ALL operators (anonymized, quantity-based). |
| Global Category Trends | ๐ Wholesaler/category popularity with trend direction (up/down/stable) and % change. |
| Platform Stats | ๐ Platform-wide counters: orders, active operators, catalog size, marketplace accounts. |
| Global Price Benchmarks | ๐ Average/min/max gross prices per wholesaler for competitive price analysis. |
๐ Health
| Operation | Description |
|—|—|
| Check | Verify the GAPLI API status and your authentication. Returns service info, rate limits, and available endpoints. |
—
AI Agent Tool
The GAPLI node is configured with usableAsTool: true, which means it can be used as a tool for AI Agent nodes in n8n.
How to use:
1. Add an AI Agent node to your workflow
2. Connect the GAPLI node as a tool
3. The AI agent can now autonomously:
– Search and retrieve products
– Check order statuses
– List marketplace accounts
– Monitor inventory
– Access global market intelligence
This is particularly useful for building conversational e-commerce assistants or autonomous dropshipping agents.
โ ๏ธ An agent sourcing by product name should set the Adult Products filter to exclude. A search
for “toys” walks the whole catalogue and the erotic wholesalers hold 124 products with “toy” in the
name โ an agent that does not set the filter will happily list vibrators alongside children’s toys,
and nobody finds out until the offers are live. Every product carries is_adult, so an agent can
also branch on the field instead of trusting the name.
—
Usage Examples
Example 1: New Order Notification to Slack
GAPLI Trigger (New Order) โ Slack (Send Message)
Set up the GAPLI Trigger with “New Order” event, then format and send order details to your Slack channel.
Example 2: Daily Inventory Check
Schedule Trigger (Daily) โ GAPLI (Get Many Products, available=true) โ Google Sheets (Append)
Automatically export your available inventory to a Google Sheet every day.
Example 3: Order Status Tracking
GAPLI Trigger (Order Status Changed) โ IF (status=shipped) โ Email (Send)
Send an email notification when orders are shipped.
Example 4: AI-Powered Product Assistant
Chat Trigger โ AI Agent โ GAPLI Tool (Products/Orders)
Build a conversational assistant that can answer questions about your products, orders, and inventory using natural language.
Example 5: Global Market Intelligence Report
Schedule Trigger (Weekly) โ GAPLI (Global Top Products + Platform Stats) โ Email (Send Report)
Generate a weekly market intelligence report with platform-wide bestsellers and performance trends.
—
Compatibility
| Requirement | Version |
|—|—|
| n8n | v1.0.0 or higher |
| Node.js | v22 or higher |
| GAPLI API | v1.0 |
Tested on n8n self-hosted and n8n Cloud.
—
Resources
—
Version History
0.8.0 (2026-05-02)
Get Many operation to list all available markets with country codes, currencies, and flags.0.7.0 (2026-04-27)
_meta) โ every product includes scan context datamanufacturer column crash โ dynamic column existence checking0.6.0 (2026-04-26)
name column dynamically checked; search falls back to SKU-only for partitions without nameexcludemeta in response for filter verification0.5.0 (2026-04-26)
category_ids field added to product output0.4.0 (2026-04-25)
0.3.0 (2026-04-24)
– Get Global Top Products, Get Global Category Trends, Get Platform Stats, Get Global Price Benchmarks
0.2.0 (2026-04-22)
marketplaceaccountname field showing Allegro/Erli account name0.1.0 (2026-04-22)
usableAsTool)—
License
MIT โ ยฉ 2026 GAPLI Global LTD