GGlamBug Partner APIglambug.in ↗

Staying in Sync

Webhooks are available on request. We can push order status changes, shipment updates and new invoices to an address you give us, so you don't have to ask. See Webhooks. Polling, described below, always works too, and is the right way to catch up after downtime or to read the catalogue. It stays within the rate limit of 60 requests per minute.

Catalogue: fetch only what changed

Don't re-read the whole catalogue on every run. partnerProducts can return just the products that changed since a point in time, including products that are no longer orderable so you know what to hide. See Products for each argument.

1. First run: read everything once

Query
query {
  partnerProducts(includeUnavailable: true, limit: 500, offset: 0) {
    total
    hasMore
    items { id sku name weight stock pprice available updatedAt }
  }
}

Page with offset until hasMore is false. Results are ordered oldest change first. Save the largest updatedAt you received. That is your cursor.

2. Every run after that: ask for changes since the cursor

Query
query {
  partnerProducts(includeUnavailable: true, updatedSince: "2026-10-12T09:30:00Z", limit: 500) {
    total
    hasMore
    items { id sku name weight stock pprice available updatedAt }
  }
}
  • updatedSince includes products changed at exactly that time, so a product can appear in two consecutive runs. Treat every item as an upsert keyed by sku.
  • Start each run from your saved cursor minus a minute or two, so a change that landed while you were reading is not missed.
  • Items with available: false can't be ordered right now (inactive, archived or out of stock). Hide or mark them in your store. They come back with available: true when they can be ordered again.
  • updatedAt moves when a product's price, stock or content changes.

If you page through a long result, keep the same updatedSince for every page of that run and only move your cursor forward once the run finishes.

Orders: find status changes

An order moves through the statuses listed under Orders. To notice a change, read your orders from time to time and compare with what you stored.

Query
query {
  myOrders(limit: 50, offset: 0) {
    id orderNumber status amountDue amountPaid createdAt
  }
}
  • myOrders returns your newest orders first, so one request for the latest page usually covers every order that can still change. Page further back only if you have more open orders than that.
  • myOrderStats is a quick overview, not a change detector: its counts group statuses (pending is PENDING plus ACCEPTED, completed is COMPLETED plus PROCESSED), so a move between two statuses in the same group does not change them. Compare the orders themselves.
  • Only keep checking orders that are still open. Once an order is COMPLETED, CANCELLED or REJECTED you can stop.
  • For tracking details on a dispatched order, see Shipments.
  • Use your partnerReference to match our orders to yours, and resend the same reference if you are unsure a submission arrived (see Idempotency).

Planning your request budget

The limit is 60 requests per minute per account, shared across live and test keys. A sensible starting point:

WhatHow oftenRequests
Catalogue changes (updatedSince)Every 15 minutes4 an hour, plus extra pages only when many products changed
Latest orders (myOrders)Every 5 minutes12 an hour for one page of 50
Tracking for open shipmentsA few times a dayOne per open order per check

That is a few dozen requests an hour, far under the limit, and each check is as fresh as your schedule. If a request returns RATE_LIMITED, wait for the next minute before retrying (see Rate Limits & Errors).