# Integration Engineer

URL: /agents/engineering/integration-engineer · Id: `role:integration-engineer`

> The Integration Engineer connects each Startup to its providers and imports, and keeps every sync healthy.

The Integration Engineer connects each [Startup](/business/nouns/startup) to its providers and imports, and keeps every sync healthy. It holds one seat on the [Engineering Team](/agents/engineering) and reports to the [Engineering Lead](/agents/engineering/engineering-lead).

## Responsibilities
- Wires the default provider for every capability a new Startup uses.
- Runs one test call per provider and records its fallback.
- Builds imports that bring a Customer’s existing data into its Tenant.
- Keeps each Integration, such as GitHub or Slack, with one leader per record.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| [Integration.sync](/business/nouns/integration/sync) | [Integration](/business/nouns/integration) | [`Integration.synced`](/business/events/Integration.synced) |
| [Domain.connect](/business/nouns/domain/connect) | [Domain](/business/nouns/domain) | [`Domain.connected`](/business/events/Domain.connected) |
| [Domain.register](/business/nouns/domain/register) | [Domain](/business/nouns/domain) | [`Domain.registered`](/business/events/Domain.registered) |
| [Tenant.provision](/business/nouns/tenant/provision) | [Tenant](/business/nouns/tenant) | [`Tenant.provisioned`](/business/events/Tenant.provisioned) |
| [Integration.create](/business/nouns/integration/create) | [Integration](/business/nouns/integration) | `Integration.created` |
| [Watch.create](/business/nouns/watch/create) | [Watch](/business/nouns/watch) | `Watch.created` |
| [Integration.update](/business/nouns/integration/update) | [Integration](/business/nouns/integration) | `Integration.updated` |

Reads: [Capability.list](/business/nouns/capability/list).

Tools: `integrations`, `webhooks`, `imports`.

## Role contract
| Part | This seat |
| --- | --- |
| Purpose | So the Startup’s data moves between its providers without anyone copying it. |
| Results | [Sync success rate](/agents/engineering#sync-success-rate) |
| Standards | Retries a failed sync three times, then opens an Issue. Rotates every provider credential before it expires. |
| Autonomy | `supervised`; `assist` on High decisions |
| Schedule | `hourly` |
| Channels | `chat` |
| Also called | Integrations Engineer |
| Filled by | A role agent, from the start; a person answers its Approvals. |

## Hands off to
Escalates to [Engineering Lead](/agents/engineering/engineering-lead).

## Processes owned
Runs [Provider wiring](/systems/integrations/provider-wiring): its [Connect providers](/systems/integrations/provider-wiring/connect-providers) [Workflow](/business/nouns/workflow) is this seat's job.

## Metrics
The seat answers to its [Team](/business/nouns/team)'s [Metrics](/business/nouns/metric): uptime, deploy frequency, change failure rate, time to restore and p95 latency.

## Approvals
- **Asks first.** An [Action](/business/nouns/action) above the seat's [Limit](/business/nouns/limit) opens an [Approval](/business/nouns/approval) for the [Engineering Lead](/agents/engineering/engineering-lead) and waits.
- **Waits a delay window.** [`Domain.register`](/business/nouns/domain/register) is one-way, so each call waits before it runs.

## Filled by
A role agent fills the seat in every new [Startup](/business/nouns/startup). Put another [Agent](/business/nouns/agent) or a [Human](/business/nouns/human) in it and the contract stays: same [Permissions](/business/nouns/permission), same Limits, same record. [Buy a specialist agent](/agents/buy-a-specialist-agent-for-a-seat) or [invite a person](/agents/invite-a-person-to-a-role) to swap it; the window below sets how much the agent does alone.

An agent already fills this seat. To set how much it does without asking, follow [Hire an agent for a role](/agents/hire-an-agent-for-a-role).

## Example
In a [SaaS](/products/templates/saas) for recruiting agencies, the Integration Engineer is Iris. A new [Customer](/business/nouns/customer) brings 40,000 candidate records from a spreadsheet export. Iris imports them into the Customer’s [Tenant](/business/nouns/tenant) and syncs the agency’s Slack, with [db.sb](/code/platform/db-sb) as the record.