Skip to content

Platform engineering integrations and automations

The patterns underneath the business processes: API facades, change data capture, webhook delivery and the move off batch files.

12 guides  ·  Built with Tray Headless

What this work has in common

These guides describe shapes more than named business processes, and they sit underneath the rest of the library. A facade, a change capture pipeline, a webhook fan-out and a migration off a batch file are each something several teams were about to build separately, in slightly different ways.

They are also where the expensive mistakes are made. A decision about retries, idempotency or identity at this layer is inherited by every workflow built on top of it. A facade that loses the caller’s identity means every downstream audit log shows a service account. A fan-out without replay means a consumer that was down for an hour has a gap nobody can fill.

The systems vary more here than in the other categories: a Postgres or Snowflake database, an SFTP server, Datadog for monitoring, Stripe or Zendesk as webhook sources, and whichever CRM and ERP the consumers need. What stays the same is the set of guarantees: one contract per consumer, ordering and deletes preserved, delivery that can be retried and replayed, and a cutover you can prove is safe.

The four guides cover the API facade, change data capture, webhook fan-out and the migration from SFTP batch files to APIs. They pair with the data operations guides, which build on the same capture and delivery patterns.

Each one is written so the pattern can be built once and reused, with the first consumer as the worked example.

Where integration platforms break

Every consumer calling every system

Six teams each integrate with the CRM, the ERP and the billing system, each with its own credentials and its own retry logic. When an upstream API changes, six things break. A facade gives consumers one contract and absorbs the change in one place.

Polling a timestamp

Querying for records modified since the last run misses deletes, misses changes made in the same second, and falls over when the clock on the source drifts. Reading the change log keeps order and deletes intact.

Acknowledging after the work

A webhook receiver that does all the downstream work before it returns a 200 times out, and the sender retries, and the work happens twice. Verify the signature, acknowledge, then fan out with a retry per consumer.

Cutting over before month end

A batch file carries rules nobody wrote down: a sort order, a field that means two things, a record that only appears at quarter end. Run old and new in parallel and compare the output through a full month end before switching off the file.

The platform engineering guides

Each one is the design, the sequence it runs in, the prompts that build it, and what changes when it runs in production.

How to build an API facade

Give consumers one contract instead of six systems, absorb upstream changes rather than leaking them, and keep the caller identity intact.

Integration

SalesforceNetSuiteZendeskSnowflake

How to build a change data capture pipeline

Read the log instead of polling a timestamp, overlap the snapshot with the stream, and keep deletes and order intact.

Integration

PostgresSnowflakeSnowflakeDatadog

How to build webhook fan-out

Acknowledge before you fan out, verify the signature first, retry per consumer, and make replay possible.

Integration

StripeSalesforceSnowflakeZendesk

How to migrate an SFTP batch feed to an API

Recover the semantics nobody wrote down, run both in parallel and diff, and cut over only after a month end.

Integration

NetSuiteSnowflakeSlackJira

How to handle exceptions and retries in automated workflows

Sort failures into ones to retry and ones a person must fix, make retries safe to repeat, park what fails with its context, and alert an owner.

Automation

SalesforceNetSuiteJiraSlack

How to update several systems from one automated process

Write each update in a set order, check first so a rerun never doubles anything, hand other teams a tracked task, and tell everyone affected.

Automation

NetSuiteStripeSalesforceZendesk

How to build integration request tracking

Collect every customer request for an integration from sales, support and product feedback, count it once per account, and weigh it by revenue.

Automation

SalesforceZendeskProductboardGong.io

How to build one integration for every customer

Build a customer-facing integration once, with every per-customer choice pulled out as a setting, so a fix ships to every customer at the same time.

Integration

HubSpotSalesforceSlack

How to let customers connect their own accounts

Let customers authorise their own apps inside your product, under your brand, with expired connections caught and fixed before a sync stops.

Integration

SalesforceHubSpotSendGridSlack

How to build customer field mapping

Let each customer match your product's fields to their own, custom fields included, then turn the integration on with a first sync that doesn't flood their account.

Integration

HubSpotSalesforceSlack

How to build error alerts for customer integrations

Catch every failed run across every customer's integration, sort what the customer can fix from what your team must, and tell the right one first.

Automation

ZendeskSlackDatadogSendGrid

How to roll out integration changes to every customer

Ship a new version of a customer-facing integration to every customer: test it as a customer first, release in waves, and ask for setup again only when it must.

Automation

GitHubSlackSendGrid

The systems involved

The applications these guides read from and write to, most used first. Each links to its connector page.

Connections these guides build

Solutions for platform engineering

The solution pages for this work, with the customer stories behind them.