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.
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.
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.
- GAPLI node — 48 operations
- GAPLI Trigger node — 3 events
- AI Agent with a node as a tool
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
You ask — it answers. You choose a resource, you choose an operation, you set filters in the interface. No manual URL construction or headers.
GAPLI Trigger
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.
GAPLI API
A key starting with "gapli_", generated in the panel. You enter it once, and both nodes use it.
Everything you can ask about
48 operations in 15 resources — full list, no abbreviations.
Product
Wholesale catalog — searching, fetching by EAN and SKU, assessment of readiness for listing.
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.
Single product by its SKU.
Product by EAN/GTIN barcode.
Up to 100 EAN codes in a single request instead of a hundred separate calls.
Up to 100 SKU identifiers in one request.
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.
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.
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.
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.
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.
Chat in your backend answering "what sold today", "which offers are in bad condition", "what is the competition doing in this category".
The agent goes through the catalog, checks readiness for listing, filters out duplicates, and reports a ready list of candidates for your approval.
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.
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.
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
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.
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.
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 panelConnect 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
- 1.0 lub nowsze
- Node.js
- 22 lub nowszy
- GAPLI API
- v1
- Checked on
- n8n Cloud i self-hosted
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.