Integrations

Reviewed shipment data, delivered into the systems you already run.

13 of the 23 connectors below work today — 7 natively, 6 through the signed webhook or a structured export. The rest are listed with what they actually require, because a logo that quietly means “possible if you build it” wastes an evaluation you were doing in good faith.

7 live connectors

Built, tested, and configurable from your workspace without talking to us.

Nothing is dropped

Failed deliveries retry for about seven hours, then wait in a dead-letter log you can replay.

Writes are gated

No connector writes into your system while a critical discrepancy is open on the shipment.

What each label means

These five words are used the same way on every card, on the /v1/integrations endpoint and inside the product. If a connector is labelled here as doing something, it does it.

Live
Built, tested and available to configure yourself today.
Beta
Working and in use, with rough edges we will tell you about before you rely on it.
Available via API
Reachable today through our signed webhook or structured export, using your own code or an automation platform.
Partner-assisted
Deployed with your integration partner or middleware, because writing into this system unsupervised is not safe.
Planned
Not built. Listed so you can plan and tell us if you need it sooner.

How delivery actually works

An integration that silently drops an event is worse than no integration, because you believe your downstream system is in sync when it is not. So the queue is visible and the failures are yours to inspect.

  1. 1Queued before it is sentThe event row is written first, then attempted. A crash mid-send leaves work to pick up, not an event nobody recorded.
  2. 2Retried on a real scheduleAbout 1 minute, 5 minutes, 15 minutes, 1 hour, then 6 hours — a little over seven hours of cover for an endpoint that broke overnight.
  3. 3Safe to receive twiceOne stable Idempotency-Key per event across every attempt, and the retry body is identical to the first attempt's.
  4. 4Dead-lettered, not deletedAfter the final attempt the delivery is listed in your workspace with its status code and error, and can be replayed with the original payload.
  5. 5Signed so you can verify itEach webhook carries X-GainingDocx-Signature: sha256=… — an HMAC of the exact request body using your endpoint's secret.
  6. 6Told when it gives upA dead-lettered delivery raises integration.delivery_failed to your other destinations, so a broken endpoint surfaces somewhere you are looking.
// Verify before you act on a payload.
import { createHmac, timingSafeEqual } from "node:crypto";

const raw = await request.text();               // the exact bytes, not a re-serialised object
const expected = "sha256=" + createHmac("sha256", process.env.GDX_WEBHOOK_SECRET)
  .update(raw).digest("hex");
const received = request.headers.get("x-gainingdocx-signature") ?? "";

if (expected.length !== received.length ||
    !timingSafeEqual(Buffer.from(expected), Buffer.from(received))) {
  return new Response("bad signature", { status: 401 });
}

// Already processed this event? Acknowledge and stop.
const key = request.headers.get("idempotency-key");

17 event types are published, each with the fields it carries. See the full event reference.

Email

Email intake

Live

Forward or copy documents to your private intake address and they are parsed and grouped automatically.

Reads into GainingDocxSet up yourselfFree and up

What it does

  • Accept up to 20 attachments per message, within 25 MiB
  • Group attachments into one shipment
  • Return the result by email

What data is sent

  • Inbound only — nothing leaves GainingDocx
Retries
Five queue attempts with backoff before the sender is notified.
Duplicates
Messages are deduplicated by Message-ID.
Attachments
20 attachments, 25 MiB per message
Read the setup detail

Gmail

Planned

Watch a label or shared mailbox directly, with thread context and automatic archiving.

Reads into GainingDocxSet up yourselfPro and up

What it does

  • Watch a label
  • Deduplicate attachments
  • Mark processed

What data is sent

  • Inbound only

Permissions you grant

  • gmail.readonly
  • gmail.modify
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: dedupe by message id.

Microsoft 365 mailbox

Planned

The same watched-folder intake for Outlook and shared mailboxes, over OAuth rather than a forwarding rule.

Reads into GainingDocxSet up yourselfPro and up

What it does

  • Watch a folder
  • Deduplicate attachments
  • Mark processed

What data is sent

  • Inbound only

Permissions you grant

  • Mail.Read
  • Mail.ReadWrite
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: dedupe by message id.

Cloud storage

Google Drive

Planned

Watch an incoming folder, then file reviewed documents and their reports into Reviewed or Needs Attention.

Reads and writesSet up yourselfPro and up

What it does

  • Watch a folder
  • Move the file on approval
  • Write the JSON and PDF result alongside it

What data is sent

  • Original document
  • Discrepancy report
  • Canonical JSON

Permissions you grant

  • drive.file
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: keyed on file id and revision.

OneDrive / SharePoint

Planned

The same watched-folder workflow for Microsoft document libraries.

Reads and writesSet up yourselfPro and up

What it does

  • Watch a library
  • Move the file on approval
  • Write the result alongside it

What data is sent

  • Original document
  • Discrepancy report
  • Canonical JSON

Permissions you grant

  • Files.ReadWrite.All
  • Sites.ReadWrite.All
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: keyed on drive item id and eTag.

Dropbox

Planned

Watched-folder intake and filing for teams working out of Dropbox.

Reads and writesSet up yourselfPro and up

What it does

  • Watch a folder
  • Move the file on approval
  • Write the result alongside it

What data is sent

  • Original document
  • Discrepancy report
  • Canonical JSON

Permissions you grant

  • files.content.read
  • files.content.write
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: keyed on file id and content hash.

SFTP drop folder

Planned

Write canonical JSON, CSV or XML into a folder your existing middleware already collects from.

Writes onlySet up with usTeam

What it does

  • Write the export file
  • Write the original document
  • Write a manifest

What data is sent

  • Reviewed export in your chosen profile
  • Original document if enabled
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: filenames carry the event id.

TMS and forwarding systems

CargoWise

Partner-assisted

Generate UniversalShipment XML and send it through your existing eAdaptor route or CargoWise partner.

Sends out of GainingDocxSet up with your partnerTeam

What it does

  • Generate UniversalShipment XML
  • Bundle the original documents and the discrepancy report
  • Deliver through your approved integration route

What data is sent

  • Shipment and bill references
  • Parties, ports, vessel and voyage
  • Container and packing lines
  • Review summary

We do not reconfigure your eAdaptor routing. Your CargoWise partner or middleware (for example Chain.io) deploys the route; we supply the payload, the field mapping and a testing checklist.

Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
The DataTarget key is the bill number, so a repeat send updates rather than duplicates.

SAP / NetSuite / Dynamics

Partner-assisted

Delivered through your integration partner or iPaaS using the canonical export, not a direct connector.

Sends out of GainingDocxSet up with your partnerTeam

What it does

  • Canonical JSON or XML export
  • Field mapping support

What data is sent

  • Reviewed export in your chosen profile

Enterprise ERP writes are delivered with your implementation partner. We supply the payload, mapping and testing checklist.

Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

Magaya

Planned

First native TMS connector: find the shipment, attach documents and the report, and push approved values.

Reads and writesSet up with usTeam

What it does

  • Find a shipment by reference
  • Attach the original document
  • Attach the discrepancy report
  • Add an internal note
  • Update references

What data is sent

  • Shipment references
  • Approved field values
  • Original documents and report
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: external object ids stored against the shipment so a retry updates in place.

Accounting

Tally

Live

Download a Tally purchase-voucher XML for an approved freight invoice and import it into your company file.

Sends out of GainingDocxSet up with usPro and up

What it does

  • Generate a Purchase voucher XML
  • Map charge codes to expense ledgers
  • Refuse export while a critical discrepancy is open

What data is sent

  • Party ledger name
  • Voucher date and reference
  • Expense ledger lines and amounts
Retries
Not applicable — generated on request rather than delivered.
Duplicates
Tally rejects a voucher whose reference already exists, so a re-import is safe.

QuickBooks Online

Available via API

Export an approved freight invoice as a QuickBooks Bill payload today; a one-click connector that creates the draft bill is next.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Generate a Bill payload from a reviewed freight invoice
  • Refuse export while a critical discrepancy is open

What data is sent

  • Vendor name
  • Invoice number, date and currency
  • Charge lines and amounts
  • Shipment reference

Permissions you grant

  • com.intuit.quickbooks.accounting
Retries
Not applicable — generated on request rather than delivered.
Duplicates
The payload carries the invoice number so a duplicate import is detectable.

Xero

Available via API

Export an approved freight invoice as a Xero ACCPAY bill, always as DRAFT.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Generate a DRAFT ACCPAY invoice payload
  • Refuse export while a critical discrepancy is open

What data is sent

  • Contact name
  • Invoice number, date and currency
  • Line items and amounts
  • Container tracking category

Permissions you grant

  • accounting.transactions
  • accounting.contacts
Retries
Not applicable — generated on request rather than delivered.
Duplicates
The payload carries the invoice number so a duplicate import is detectable.

Zoho Books

Available via API

Export an approved freight invoice as a Zoho Books bill payload.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Generate a bill payload
  • Refuse export while a critical discrepancy is open

What data is sent

  • Vendor name
  • Bill number, date and currency
  • Line items and amounts

Permissions you grant

  • ZohoBooks.bills.CREATE
Retries
Not applicable — generated on request rather than delivered.
Duplicates
The payload carries the bill number so a duplicate import is detectable.

Shipment visibility

Container tracking (Vizion / SeaRates)

Planned

Compare what the documents say against what the container is actually doing — the ETA on the arrival notice against the live one.

Reads into GainingDocxSet up with usTeam

What it does

  • Subscribe a container or bill to tracking
  • Import milestones
  • Raise a discrepancy when live ETA diverges from the notice
  • Recalculate free-time deadlines

What data is sent

  • Container numbers
  • Bill of lading or booking number
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Planned: milestones keyed on carrier event id.

Collaboration

Slack

Live

Post critical discrepancies, failed parses and free-time deadlines into a channel, with a link back to the evidence.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Post a formatted message to a channel
  • Filter to critical events only
  • Deep-link to the shipment

What data is sent

  • Shipment reference
  • Field name and both conflicting values
  • A link — never document images or file contents

Permissions you grant

  • incoming-webhook
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

Microsoft Teams

Live

The same channel alerts for Teams, using an incoming webhook so no tenant admin approval is needed.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Post a card to a channel
  • Filter to critical events only
  • Deep-link to the shipment

What data is sent

  • Shipment reference
  • Field name and both conflicting values
  • A link — never document images or file contents

Permissions you grant

  • Incoming Webhook connector
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

Automation platforms

Make

Available via API

Trigger any Make scenario from a GainingDocx event using a Custom Webhook module.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Start a scenario
  • Route to any of Make's own app modules

What data is sent

  • The event body you subscribe to
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

Zapier

Available via API

Trigger a Zap with the Webhooks by Zapier trigger. A listed Zapier app is planned.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Start a Zap
  • Route to any Zapier action app

What data is sent

  • The event body you subscribe to
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

n8n

Available via API

Self-hosted automation with a Webhook node — useful where documents must not leave your own infrastructure.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Start a workflow
  • Verify the HMAC signature in a Function node

What data is sent

  • The event body you subscribe to
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.

Developer tools

Signed HTTPS webhook

Live

Push every document, matching and review event to your own endpoint, signed so you can prove it came from us.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • POST a signed JSON event to your endpoint
  • Retry automatically on failure
  • Replay any delivery by hand

What data is sent

  • Event type and id
  • Shipment and document identifiers
  • Discrepancy field names and both conflicting values
  • No document images or file contents
Retries
Six attempts over about seven hours (1m, 5m, 15m, 1h, 6h), then dead-lettered for manual replay.
Duplicates
Every delivery carries a stable Idempotency-Key; a retry repeats the original body byte for byte.
Limits
No cap on outbound events; one in-flight delivery per destination.
Read the setup detail

REST API

Live

Parse documents, read shipments and discrepancies, and manage destinations from your own code.

Reads and writesSet up yourselfPro and up

What it does

  • Parse a document
  • List and retrieve documents
  • List shipments and their discrepancies
  • Export a shipment in any mapping profile
  • Create, test and inspect destinations

What data is sent

  • Whatever your code requests
Retries
Client-controlled. 429 responses carry Retry-After.
Duplicates
Sending an Idempotency-Key header on a write is honoured for 24 hours.
Limits
30/min on Free, 120/min on Pro, 300/min on Team, per key.
Read the setup detail

Structured export

Live

Download or fetch a reviewed shipment as canonical JSON, CSV, or a mapping file shaped for a specific system.

Sends out of GainingDocxSet up yourselfPro and up

What it does

  • Canonical JSON
  • Flat CSV
  • CargoWise UniversalShipment XML
  • Tally voucher XML
  • QuickBooks / Xero / Zoho bill payloads

What data is sent

  • Reviewed field values
  • Discrepancy summary
  • Standards crosswalk metadata
Retries
Not applicable — generated on request rather than delivered.
Duplicates
Deterministic — the same shipment and profile produce the same file.
Read the setup detail

Integration questions

Do you have a native CargoWise integration?
Not an unsupervised one, and we say so rather than letting the logo imply it. We generate the UniversalShipment XML and the field mapping; your CargoWise partner or middleware deploys the eAdaptor route. Reconfiguring a customer's eAdaptor routing blind would break integrations they already depend on, so it is not something we will do on your behalf.
What happens if my endpoint is down when an event fires?
The event is queued before it is sent, attempted immediately, then retried at roughly 1 minute, 5 minutes, 15 minutes, 1 hour and 6 hours. After the last attempt it is dead-lettered and shown in your workspace, where you can replay it by hand with the original body. Nothing is silently dropped.
Will a retry create a duplicate record in my system?
Only if you ignore the Idempotency-Key header. Every attempt of one event carries the same key and the same body, byte for byte, so a receiver that already committed attempt two can safely discard attempt three.
Do document images ever leave GainingDocx?
Only where a connector's declaration says so — the cloud-storage connectors write the original file into your own drive. Webhook and chat deliveries carry identifiers, field names and values, never file contents. Every entry on this page lists exactly what it transmits.
Can you stop a bad value reaching my accounting system?
That is the point of the product. Every write-back path checks the review state first and refuses while a critical discrepancy is open on the shipment. A wrong shipment reference is an annoyance; a wrong invoice line is money.
What if the system I use is not listed?
Use the signed webhook or the structured export with an automation platform such as Make, Zapier or n8n — that covers most systems without waiting for us. Tell us what you need and we will tell you honestly whether it is on the roadmap.

Connect your first destination

Add a Slack channel or a signed endpoint in your workspace and send a test event to it before you write any code against it.