Official n8n community node

Your dropshipping
as a data flow.

Catalog, orders, offers, bundles, store, and money — everything GAPLI does in the panel, it also does in n8n. Without writing code, without your own proxy server, on a single API key.

$n8n-nodes-gapli
2
nodes in the package
15
resources
48
operations
1
API key
n8n · flow “Order → handling”Active

Schemat przepływu w n8n: węzeł wyzwalający GAPLI reaguje na nowe zamówienie, węzeł GAPLI pobiera zamówienie po identyfikatorze, a wynik trafia równolegle do trzech miejsc — numer paczki do sklepu, powiadomienie na Slacka i wynik finansowy do arkusza.

AI agent tool
usableAsTool: true
← Back to GAPLI home page
Architecture

One key instead of seven integrations

The node never talks to Allegro or Shopify. It talks to GAPLI — and GAPLI does the work on that side. You say "stock the store with these SKUs" and no access to your store's API is involved in the entire operation.

n8
Your n8n workflow
n8n cloud or own server
  • GAPLI node — 48 operations
  • GAPLI Trigger node — 3 events
  • AI Agent with a node as a tool
1 API key
GAPLI
GAPLI
integration layer — tokens, limits, retries
GAPLI does it for you
zero access data in the workflow
🅰Allegro
🅴Erli
🛍Shopify
🟣WooCommerce
🔷PrestaShop
🏭Hurtownie

Without OAuth for every account

n8n cannot swap credentials in a loop — a report from seven Allegro accounts meant seven parallel workflows. One GAPLI key covers all accounts at once, and the account that failed responds in the "error" field instead of crashing the entire response.

Access data stays with us

Allegro token, Shopify key, WooCommerce plugin password — none of this passes through your workflow or stays in the n8n execution history. There is one "gapli_..." key in the credential, which you can revoke at any time.

Refusal is seen as refusal

Every Allegro error except 404 and 429 used to come out as "502 Bad gateway" — meaning "try again". Today, 4xx remains 4xx, and the response carries a "retryable" field, so the workflow doesn't keep retrying a rejection that will never succeed.

Two nodes and one credential

This is what gets installed from the package. One polls, the other listens, and the credential connects them to your account.

GAPLI

regular node + AI agent tool

You ask — it answers. You choose a resource, you choose an operation, you set filters in the interface. No manual URL construction or headers.

15 resources48 operationsusable as tool

GAPLI Trigger

trigger node — polling

Polls the API at a selected interval and triggers the workflow when something happens. It remembers what it has already seen, so the same order does not trigger the workflow twice.

New Order
New order in GAPLA — from any channel: Allegro, Erli, your store.
Order Status Changed
The order status has changed. The event carries the old and new status side by side.
New Product
A product that was not there before appeared in the catalog.

GAPLI API

credential

A key starting with "gapli_", generated in the panel. You enter it once, and both nodes use it.

API Key
gapli_••••••••••••••••••••
Base URL
https://gapli.com
Connection verified

Everything you can ask about

48 operations in 15 resources — full list, no abbreviations.

7

Product

Wholesale catalog — searching, fetching by EAN and SKU, assessment of readiness for listing.

Get Many

List of products from the catalog, with filters by wholesaler, price, status, EAN, dimensions, and market.

Searching by name goes through the WHOLE catalog — including adult wholesalers. Set the "Adult Products" filter to Exclude before building a listing by keyword.

Get by SKU

Single product by its SKU.

Lookup By EAN

Product by EAN/GTIN barcode.

Batch EAN Lookup

Up to 100 EAN codes in a single request instead of a hundred separate calls.

Batch SKU Lookup

Up to 100 SKU identifiers in one request.

Assess Sellabilitycatalog:sellability:read

Score 0–100: whether the product is suitable for listing and what specifically is missing.

13 checks with weights. `has_dimensions` requires all three package dimensions — weight alone does not satisfy it.

Get Already Listed Evidence

Proof of listing: on which accounts the product is already listed and under which offer ID.

Yellow boxes are not fine print — they are behaviors that can return a plausible number with a different meaning than it seems. The node also describes each of them in its interface, next to the corresponding field.

Five workflows worth having

Not documentation examples, but things operators actually do — along with what's surprising in each of them.

Workflow · 4 steps
⚡
GAPLI Trigger
Order Status Changed → shipped
01
◆
GAPLI
Order → Get by ID (shipments[])
02
🔀
Filter
direction = outgoing
03
🛍
Twój sklep
Save number + send email
04

The tracking number returns to your store

A buyer ordered from your store, and the wholesaler sends the package via GAPLI. Without this flow, the tracking number exists in GAPLI and nowhere else — the customer writes "where is my order", and you check manually.

What's surprising here

shipments[] comes exclusively from Get by ID — a workflow querying the order list will find nothing there and assume there is no tracking. The "outgoing" filter cuts off the wholesaler → warehouse leg, which must not be shown to the customer.

Build this workflow on your end
Usable as tool: true

Connect GAPLI to the AI agent as a tool

The same node you use in a regular workflow connects to the AI Agent node as a tool. The model decides for itself what to ask for — the catalog, orders, market data — and responds with a sentence, not a table.

Assistant that knows your products

Chat in your backend answering "what sold today", "which offers are in bad condition", "what is the competition doing in this category".

Autonomous assortment selection

The agent goes through the catalog, checks readiness for listing, filters out duplicates, and reports a ready list of candidates for your approval.

Without writing tool definitions

The tool schema is created from the node itself. You don't describe endpoints to the model — you choose the resource and operation just like in a regular flow.

The agent sees a different description than you

n8n builds the tool schema by scanning parameter VALUES for expressions — not field definitions. A filter hidden in a collection is invisible to the model until you connect it yourself. That's why the adult product warning is in the tool description: it's the only text the model always receives. When searching for "toys" by name, it will also go through erotic wholesalers.

AI Agent · tool: GAPLI
working
How many orders have been stuck in "processing" for more than two days and what do they have in common?
Under the hood

Things you don't have to program

Retries, pagination, limits, clear errors, and permission boundaries are built into the node. They determine whether the workflow also works on a day when something goes wrong.

Call limit increases with the package

requests per minute, counted per key

Free
100
Start
250
Mini
500
Standard
750
Pro
1000
VIP
2500
MAX
5000

The limit is calculated separately for each key, so an account with three keys effectively has three times as much. The 429 response carries "retry_after_seconds" and information about where the limit came from — the node reads both instead of guessing.

Retry only where it makes sense

The 429 response is retried up to three times, with the wait time specified by the API. Timeout — never: with a broken connection, it is unknown how much has already been executed, and a second request would stock the store a second time.

Two paginations, because the API has two

Most lists return a "pagination" block. The store assortment returns only "total" — a common mechanism would stop at the first 500 items out of 1200, and it would look like a full list. This endpoint therefore has its own loop iterating over "total".

The error says what happened

Instead of "request failed", you get the content from the API, and next to it "Allegro HTTP 403 · permanent, do not retry". Warnings from the response also go into the message — after an exception, nobody reads the response body anymore.

35 scopes, not one "everything"

The key gets exactly as much as the workflow needs. Buyer conversation content, purchase prices, and financial results have separate scopes — an existing key does not get them automatically, and publishing offers requires administrator approval.

Market-aware queries

Catalog, wholesalers, and analytics accept market selection from a list with flags. Default is "all markets", so older flows work without changes.

Three steps and the first workflow is running

Installation takes less time than reading this page.

1

Install node

In n8n: Settings → Community nodes → Install a community node. Enter the package name and confirm. On your own server, you can do the same from the command line.

$npm install n8n-nodes-gapli
2

Generate API key

In the GAPLI panel: Integrations → API Keys tab → Generate new key. Select only the permissions your workflow needs — the key starts with "gapli_".

Open Integrations in the panel
3

Connect and check

In n8n, create a 'GAPLI API' credential, paste the key and save. The credential will query the endpoint itself and tell you if the key works — before you build your first workflow.

n8n — instalacja
$cd ~/.n8n▌
Requirements
n8n
1.0 lub nowsze
Node.js
22 lub nowszy
GAPLI API
v1
Checked on
n8n Cloud i self-hosted
Package in the npm registry

Frequently Asked Questions

No. The node works both in n8n Cloud and on a self-hosted installation. In the cloud, you install it from the settings as a community node; on your own server using the npm command in the n8n directory. The way it works is identical in both cases.

No, and it cannot be configured that way. The node communicates exclusively with GAPLI, and GAPLI performs the work on the marketplace or store side using its own already established connections. No Allegro token or Shopify key appears in the flow, so they are also not in the n8n execution history.

The package itself is free and open-source (MIT license). You use it as part of your GAPLI account — the plan determines the limit of calls per minute, from 100 on an account without a plan to 5000 on the MAX plan. Two things require a paid plan: call analysis for an order and attaching it to the order list.

The API responds with a 429 code and specifies how many seconds to wait. The node reads this value and retries the request — up to three times — instead of interrupting the flow. During bulk downloads, it also adds an interval between result pages to avoid hitting the limit at all.

It can do both, but write operations are clearly separated and require separate permissions on the key: stocking the store, sending products for publication on Allegro, and creating and editing sets. Sending messages to the buyer is not possible with any API key — intentionally.

Yes, and it is a limitation of the store, not ours. Shopify accepts one product per point-billed operation — about 30 cards per minute — so a batch of 100 items takes a few minutes of work. The node waits for this for up to ten minutes and intentionally does not retry a broken wait: a second call would stock the store a second time. After a broken connection, you check the status with an inventory read operation.

Changes are designed so that they don't do that. New filters have default values corresponding to previous behavior, and when a field has changed location — like the adult products filter — the node reads both locations. Each release has a changelog detailing what could affect an active workflow.

GAPLI Panel → Integrations → API Keys → Generate new key. Select only what the workflow needs: reading the catalog alone is one permission, buyer conversation content and financial data have their own, and publishing offers additionally requires administrator approval. You can revoke the key at any time without affecting the workflows.

Replace clicking in the panel
into a workflow that works on its own

The package is free and open. You only need a GAPLI account and an API key — you assemble the rest with a mouse in n8n.

n8n-nodes-gapli·MIT License·Source code