API integrations
An integration is a small piece of software with a sharp job: a form becomes a CRM record, a payment updates an order, a sheet stays in step with a shop. We read the vendor's documentation before we name the work. If the API is incomplete, that is part of the first conversation.

When it is the job
- CRM, shop, payments, or a spreadsheet that should stop being retyped
- A webhook that must survive a bad day, not only the happy path
- One path, proven, before a second one is added
Included
- A read of the official API before we commit to the connection
- The connection, plus a log when the other side does not answer
- A retry that does not create a second copy of the same event
- A short note for the person who inherits it
Not included
- Scraping a site that has no API, or walking around a login
- Breaking a vendor's terms to get at the data
- A bundle of five systems treated as one small connection
Handover
- Where the secret keys live, and who can rotate them
- What a failed delivery looks like and where it is logged
- The one path that is live, named in plain language
export async function POST(request: Request) { const event = await readSignedEvent(request) await crm.upsertContact(event.customer) return Response.json({ ok: true })}