Our Zapier expertise

Keep the work moving between your tools.

A payment arrives. Someone needs to find the right record, apply the business rules, prepare the accounting hand-off and handle exceptions. We build the process around those steps.

This approach draws on Ownward founder Julien Cyr’s four years in an employment and education group. The architectures below explain the method; their client Zaps remain to be documented.

The right balance of no-code and code

Connect. Check. Keep moving. Trigger → Business rules → Useful action

Operations should be able to follow a record and adapt the rules they own. Delicate work — deduplication, calculations, authentication and API contracts — may need a versioned, tested custom service or connector.

We make each step’s responsibility visible: what triggers it, which data is authoritative, when it can retry and who takes over if an exception needs a decision.

Automate the whole process

When connecting two apps is only the beginning.

Payments, shared records and accounting: explore three complex architectures. These design examples illustrate our approach; they are not yet documented as delivered client Zaps.

Complex integration design

Proposed architecture · client workflow to be documented

The workflow finished. Did the business get the right result?

It started with…

A workflow can succeed partially, receive a late response or miss an event. A green dashboard alone does not explain discrepancies between systems.

The proposed workflow

Periodic reconciliation across Stripe, Airtable and Sage references, with pagination, consistency checks, assigned exceptions and recovery from an identified step.

Technologies & official documentation

Payment, orchestration and business outcome
  1. Stripe

    Verified event

    Protected receiver and transactional ledger

  2. Zapier

    Coordination

    Airtable for tracking, code for complex rules

  3. Sage

    Action through an adapter

    Result reference or an exception to handle

Design diagram to adapt to the actual Zap and Sage edition.

What we set out to change

Give operations an actionable discrepancy list and a controlled way to resolve it.

How it is builtData model, code, controls and team ownership

The user journey

  1. 01

    Collect references over an overlapping time window.

  2. 02

    Compare states and classify discrepancies.

  3. 03

    Reconcile or approve recovery, then retain its result.

Data and hand-off structure

Entity / tableKey fieldsRelationships
Reconciliation runsPeriod · cursor · counts · statusA saved checkpoint for each run
DiscrepanciesSource reference · expected state · observed stateOne business issue, potentially several events
Recovery decisionsOwner · reason · approval · outcomeTrace who authorised the next step

Technical implementation

  • Paginate APIs, respect their limits and save a checkpoint.
  • Use an overlapping window and stable keys to include late events.
  • Separate transport failures, business rejections and unknown remote outcomes; each needs a different next step.

Engineering decision

Choose recovery from what the destination may have done

Proposed recovery policy. A timeout after sending requires reconciliation; a rejected business operation goes to review. Only a failure known to occur before sending receives bounded exponential backoff with jitter, respecting Retry-After. Long waits are deferred. Persisted scheduling, checkpoint advancement and destination-specific error classification remain outside the pure function.

TypeScriptrecovery-policy.ts30 lines
type Failure =  | { kind: "business-rejection"; code: string }  | { kind: "outcome-unknown" }  | { kind: "not-sent"; retryAfterMs?: number };export function recoveryPolicy(  failure: Failure, attempt: number, random = Math.random,) {  if (failure.kind === "business-rejection") {    return { next: "human-review", code: failure.code } as const;  }  if (failure.kind === "outcome-unknown") {    return { next: "reconcile-before-write" } as const;  }  if (!Number.isSafeInteger(attempt) || attempt < 0 || attempt >= 6) {    return { next: "escalate" } as const;  }  const ceiling = Math.min(60_000, 1_000 * 2 ** attempt);  const jitter = Math.floor(Math.max(0, Math.min(1, random())) * ceiling);  const retryAfter = failure.retryAfterMs ?? 0;  if (!Number.isFinite(retryAfter) || retryAfter < 0) {    return { next: "escalate" } as const;  }  const delayMs = Math.max(retryAfter, jitter);  return {    next: delayMs > 60_000 ? "defer" : "schedule-retry", delayMs,  } as const;}// A response timeout is NOT evidence that no remote write occurred.// Persist the decision; do not hold a Zap step open with a long sleep.

Adapted implementation excerpt

Choose recovery from what the destination may have done

Controls and boundaries

  • Keep card data out of Airtable; retain only required references and business information.
  • Sensitive decisions and writes require explicit permissions and approval rules.
  • The Sage connector and recovery capabilities depend on the chosen edition and plan.

Who can contribute

  • Operations: reference data, approved rules and exception handling.
  • Builders: documented Zapier steps and mappings within their agreed scope.
  • Developers: API contracts, custom connectors, tests and versioning.

What supports this case

Architecture example developed to explain the approach. No client Zap export or run history has yet been reviewed; no production outcome is claimed.

Working with Ownward

Built together. Then yours to grow.

Your team should be able to handle everyday changes. And know who to call when a problem needs deeper technical expertise.

  1. 01

    Start with the work

    We define the need, each tool’s responsibility and a first version that can be verified, then build the workflow with the team.

  2. 02

    Learn on your own tools

    Your team learns on the delivered product: configuration, monitoring, diagnosis and everyday changes, with the documentation and repository at hand.

  3. 03

    Go further, with support

    Citizen developers, developers and colleagues coding with Claude can contribute to the same documented model. We support complex integrations, code reviews and technical escalation as your needs evolve.

The details that make a delivery useful

The tool, and what your team needs to own it.

Our Ownward delivery standard: guidance stays inside the product, knowledge stays with the code, and coding agents have the context to contribute.

  • An onboarding wizard you can always reopen

    A guided path through roles, essential setup and the first useful action. It remains available from Help, including when a new colleague joins.

  • Documentation in the delivery repository

    Getting started, data model, configuration, integrations, tests, release and rollback: the explanations evolve with the product version. Secrets stay outside the repository.

  • Instructions for coding agents

    AGENTS.md and, where useful, CLAUDE.md describe the architecture, conventions, checks and change rules. An agent extends the shared model; the team retains review and release decisions.

See guided onboarding in a real interface
Connectors, webhooks and error handling

We combine existing integrations, webhooks and custom services around the need. Adding a Zapier error handler disables autoreplay for that Zap, so its recovery strategy must be chosen explicitly.

The Sage edition determines the available APIs and operations. The connector, permissions, Zapier plan and accounting rules must be defined for the actual use case.

Which part of your work could be easier?

Bring the process, the friction or the idea. We can start there.

Talk about your project