DocsIntegrations

Integrations

No-code and automation-platform adapters

5 min readReviewed July 2026

Automation platforms can turn application and SaaS actions into GraphJSON events without a dedicated integration service. The platform still becomes part of your data pipeline: it must protect the workspace key, preserve event time, map fields deliberately, retry safely, and expose failures.

GraphJSON does not provide managed Zapier, Make, n8n, or Pipedream connectors. Use each platform's generic HTTP request or code step.

Decide when this pattern fits#

Use an automation platform for:

  • low- or moderate-volume business events
  • a fast integration pilot
  • scheduled imports of compact records
  • provider actions already available as platform triggers
  • workflows with an owner who monitors failures

Use a durable queue or stream adapter instead when:

  • events are high volume
  • ordering matters
  • recovery objectives are strict
  • the platform cannot keep the API key secret
  • batch and retry behavior cannot be controlled
  • the event is a financial or entitlement authority

Start with the GraphJSON request#

Single-event endpoint:

POST https://api.graphjson.com/api/log
Content-Type: application/json

Body:

{
  "api_key": "secret platform variable",
  "collection": "business_events",
  "timestamp": 1785110400,
  "json": "{\"event\":\"deal_closed\",\"deal_id\":\"deal_42\",\"account_id\":\"acct_91\",\"amount_minor\":490000,\"currency\":\"usd\",\"source\":\"crm\",\"schema_version\":1}"
}

json is a serialized JSON string, not a nested object. timestamp is a whole Unix second. The serialized event must remain within the documented 10,000-character limit.

Store the key safely#

Use the platform's encrypted credential, secret, environment-variable, or private connection feature. Never place the key in:

  • a public workflow template
  • a shared screenshot
  • a trigger URL
  • a browser form
  • step notes
  • an event property
  • a failure notification

If a platform cannot prevent editors or viewers from seeing the key, route the workflow through a small server endpoint you control instead of calling GraphJSON directly.

Normalize before sending#

Do not forward the complete trigger object. Build a small allowlisted event:

const event = {
  event: "deal_closed",
  event_id: input.deal_id + ":" + input.closed_at,
  deal_id: input.deal_id,
  account_id: input.account_id,
  amount_minor: Math.round(Number(input.amount) * 100),
  currency: String(input.currency).toLowerCase(),
  source: "crm",
  schema_version: 1
};

Remove:

  • credentials and authorization fields
  • contact names, emails, and phone numbers unless explicitly required
  • free-form notes
  • complete provider records
  • unstable display labels
  • raw HTML
  • arbitrary URL query strings

Prefer provider record IDs and bounded codes.

Preserve occurrence time#

Use the source's event or record timestamp:

const timestamp = Math.floor(
  new Date(input.closed_at).getTime() / 1000
);

Validate that it is finite, whole, and within an expected range. Use the automation execution time only when the event genuinely occurred when the workflow ran.

Keep the provider timestamp string inside the event only when reconciliation needs it.

Create deterministic identity#

Automation platforms can retry a trigger or replay history. Prefer a stable source ID:

event_id = provider + ":" + source_record_id + ":" + source_revision

If the source event is immutable, the provider event ID may be enough. If a record can update, include the revision or effective timestamp.

GraphJSON stores accepted retries as additional events. Use stable identity to deduplicate in SQL, or place a stateful idempotency layer in front when duplicate storage is unacceptable.

Configure the HTTP step#

The labels vary by platform, but the contract is the same:

Setting Value
Method POST
URL https://api.graphjson.com/api/log
Header Content-Type: application/json
Body type Raw JSON or equivalent structured builder
Key Secret variable inserted into api_key
Success Any documented 2xx response
Timeout Bounded and visible

Relevant platform references:

Review the platform's current retry and error behavior. A convenient HTTP action may stop the workflow on failure without providing the dead-letter or retry guarantees your event requires.

Handle response classes#

Response Action
2xx Mark the delivery accepted
400 Quarantine; fix key, timestamp, JSON, size, or collection
429 Retry with backoff and jitter
5xx Retry with backoff and jitter
timeout/network Treat as unknown; retry safely with stable event ID

Cap retries. When exhausted, route a redacted failure record to a platform error workflow or an operational queue.

Do not include the API key or complete event in email and chat failure alerts.

Use bulk only when the platform forms real batches#

POST /api/bulk-log accepts up to 50 events:

{
  "api_key": "secret platform variable",
  "collection": "business_events",
  "timestamps": [1785110400, 1785110460],
  "jsons": [
    "{\"event\":\"deal_closed\",\"event_id\":\"crm:42:7\"}",
    "{\"event\":\"deal_closed\",\"event_id\":\"crm:43:2\"}"
  ]
}

The arrays must be non-empty and the same length. Do not add a complex stateful batch step for a tiny workflow unless it improves reliability or cost. A failed batch needs enough metadata to retry or quarantine its members.

Design a platform-neutral workflow#

provider trigger
  → filter relevant action
  → normalize fields
  → validate required values
  → construct deterministic event ID
  → call GraphJSON
  → branch on response
      ├─ accepted
      ├─ retryable
      └─ quarantine + notify owner

Keep normalization logic in one reusable subworkflow or code module when the platform supports it. Copying field mapping into dozens of automations creates schema drift.

Test before activation#

Create a short-retention test collection and verify:

  1. normal event
  2. missing required source ID
  3. malformed timestamp
  4. optional field absent
  5. duplicate trigger
  6. transient GraphJSON failure through a mock
  7. permanent 400
  8. platform replay
  9. secret redaction in execution history
  10. production collection routing

Inspect the exact GraphJSON Sample. Confirm names, types, occurrence time, and identity before building a chart.

Operate the adapter#

Record outside the business-event collection:

  • workflow executions
  • GraphJSON accepted deliveries
  • retries
  • quarantined records
  • oldest failed record age
  • last successful delivery
  • mapping version

Reconcile source records with accepted and quarantined outcomes over a settled window. The platform's green workflow status does not prove that the correct event arrived in the correct collection.

Adapter checklist#

  • The event volume and recovery need fit an automation platform.
  • The workspace key is stored as a protected platform secret.
  • The workflow sends an allowlisted event, not the complete trigger.
  • json is serialized correctly and remains within the size limit.
  • Occurrence time is converted to whole Unix seconds.
  • Stable source identity supports retries and deduplication.
  • Response classes have explicit retry or quarantine behavior.
  • Retries are bounded and use backoff.
  • Failure notifications are redacted.
  • Test and production collections are separated.
  • Execution history cannot expose secrets or sensitive payloads.
  • Source, accepted, retried, and quarantined counts reconcile.
Need a hand?

Tell us what you’re building and we’ll point you in the right direction.

Contact support