Integration Requirements to Write Before Connecting Apps.

A plain guide for business owners connecting apps, with a one-page integration contract, a duplicate checklist, a failure plan and five tests to run before go-live.

Written by
Scayver
Published
26 October 2026
Reading time
16 min

Integration requirements are the short written rules you agree on before two apps are connected. Write four things on one page: the trigger that starts the connection, the action it must take, the receipt that proves it happened and the result that counts as done. Add a matching key and a named owner, and most duplicate records and silent failures never happen.

Most small businesses skip this step. Someone opens an automation tool, picks two apps, maps a few fields and turns it on. It works in the test. Then, weeks later, a customer gets two invoices, a lead never reaches the sales inbox or a booking shows in the calendar but not in the CRM. Nobody knows when it started, because nobody wrote down what working meant.

This guide gives you a one-page integration contract you can fill in before anyone builds. It works whether you connect apps yourself with a no-code tool or hand the job to a developer. You also get a duplicate checklist, a failure plan and five tests to run before go-live.

What integration requirements mean for a small business.

An integration is any link that moves data from one app to another without someone retyping it. A form that sends leads to your CRM is an integration. So is an online store that creates invoices in your accounting tool, or a booking page that adds events to a shared calendar.

Integration requirements are the decisions behind that link, written down. In large companies, they fill long specification documents. You don’t need that. You need answers to a handful of plain questions, agreed before anyone touches a setting.

  • What starts it? The event in the first app.
  • What should happen? The exact change in the second app.
  • How will you know? The proof that the change happened.
  • When is it finished? The result a person can check.
  • Who fixes it? The person who hears about a failure and acts.

Think of it like a delivery note between two departments. The sender lists what is in the box, the receiver signs for it and someone checks that the order is complete. Your apps need the same handshake, written in words a manager can read.

For a simple connection, this is usually a short meeting, not a project. Skipping it rarely saves time, because the same questions still come up later. They arrive as customer complaints instead of planning notes.

Why connected apps fail quietly.

Connected apps rarely crash in a way you notice. They fail quietly. The automation tool shows a green tick, yet the data on the other side is wrong, missing or doubled. Most of these problems come from a few predictable causes.

Pipe between two apps showing five points where data leaks or doubles

The same event arrives twice. Many apps send updates using webhooks, which are automatic messages one app sends another when something happens. If the receiving side answers slowly, the sender often tries again.

Stripe’s webhook documentation, which we read on 13 October 2026, says it retries live-mode events for up to three days. It also warns that an endpoint “might occasionally receive the same event more than once.” Other services behave differently, so check the documentation for your own tools.

Each connection only knows itself. Zapier’s help page on duplicate data, updated 29 May 2026, explains that its duplicate check runs inside a single Zap. If two Zaps use the same form as a trigger, both run. The same page says instant triggers skip that check. What happens at the action step depends on the receiving app, and some apps create a second record.

Events arrive out of order. An update can land before the record it updates. Stripe states that it does not guarantee delivery order. If your connection assumes a new record always arrives before its payment, one late message can leave that record half finished.

A field changes shape. Someone renames a form field, adds a dropdown option or switches a date format. The connection keeps running, but it now writes blanks or the wrong value.

Nobody is told. The tool records an error in a log that nobody reads. The failure is real, but nobody hears about it.

Only the first three causes are technical. The last two are about people and process. That is why better software alone rarely fixes a messy integration. Clear requirements do.

The four parts of an integration contract.

An integration contract is a one-page agreement that describes a single connection. It has four core parts: trigger, action, receipt and done. Two supporting fields sit beside them, a matching key and a failure owner.

One page integration contract with trigger, action, receipt and done boxes plus key and owner

Trigger: the event that starts the connection.

Name the app and the exact event. “New lead” is too vague. “A submission on the Quote Request form, with an email address present” is clear. Say what should not trigger it as well, such as test entries, spam or entries from your own staff.

Write down whether the trigger is instant or checked on a schedule. An instant trigger fires the moment the event happens. A scheduled one, often called polling, checks for new data every few minutes. That choice affects how fast data moves and how duplicates are handled.

Action: the change the receiving app must make.

Describe the change in the second app in one sentence. Then list the fields. For each field, note where it comes from, what format it needs and what happens if it is empty.

Decide early whether the action creates a new record, updates an existing one or does both. “Find the contact by email, update it if it exists, create it if not” prevents more duplicates than any cleanup later.

Receipt: the proof that the action happened.

A receipt is evidence that the receiving app accepted the change. It might be a record ID written back to the first app, a line in a log or a note on the contact’s timeline. Without a receipt, you only know that a message was sent. You don’t know that it arrived or what it created.

Ask where the receipt will live and who can see it. A receipt only helps if a person can find it quickly when a customer calls.

Done: the result a person can check.

Done is the business outcome, not the technical step. For a lead form, done might mean the contact exists in the CRM, is assigned to a salesperson and has a follow-up task due the next working day. A connection can succeed technically and still miss done.

Writing done first often changes the whole design. Teams discover they need an extra step, such as assigning an owner, that nobody had planned.

The two supporting fields: matching key and owner.

The matching key is the value that identifies the same customer or order in both apps. Email address, phone number and order number are common choices. The owner is the named person who hears about failures and decides what happens next.

The integration contract template you can copy.

Copy this template into a document for each connection you plan. Keep it to one page. If a field takes more than a few sentences, the connection is probably two connections and deserves two contracts.

FieldWhat to writeExample answer
Connection nameA short plain nameQuote form to CRM
Business reasonWhy the link existsEvery quote request gets a reply the next working day
TriggerApp, event and conditionsQuote Request form, email present, not a test entry
Excluded eventsWhat must not trigger itSpam, staff tests, repeat submissions within 10 minutes
ActionThe change in the receiving appFind contact by email, update or create, add a follow-up task
Field mapSource field, destination field, formatPhone to Mobile, digits only
Matching keyThe value that identifies the same recordEmail address, lowercase
ReceiptProof the change happenedCRM contact ID saved on the form entry
DoneThe outcome a person can checkContact assigned, task due next working day
Retry ruleWhat happens after a failureRetry automatically, then alert the owner
Failure ownerName and backupOffice manager, backup sales lead
Alert channelWhere failures are announcedShared inbox checked daily
Review dateWhen the contract is checked againEvery quarter, or after either app changes

Two rows deserve extra care. The excluded events row stops test entries and spam from polluting your records. The review date row matters because apps change. A connection that was correct in spring can drift after a plugin update or a new form field.

Keep every contract in one shared folder. When something goes wrong, the first question is always what this connection was supposed to do. The contract answers it in seconds.

How to prevent duplicate records before you build.

Duplicate records are the most common complaint after a new connection goes live. They waste time, confuse reports and can send a customer two copies of the same message. You prevent most of them with three decisions made on paper.

Before and after view of one event creating two records versus one matched record

1. Pick one matching key and clean it the same way. Choose a value both apps can share, then decide how it is tidied. Email addresses should be trimmed and stored in lowercase, so Ana@Example.com and ana@example.com count as the same person. Phone numbers should keep digits only.

2. Search before you create. Ask for an action that looks up the matching key first. Many no-code tools offer a find or create step. In a custom build, a developer can add a unique rule in the database, so a second record with the same key is refused.

3. Record every event you have processed. Developers call this idempotency. It means that handling the same message twice has the same effect as handling it once. Stripe recommends logging the event IDs you have processed and skipping any you have already seen.

Hookdeck’s guide to webhook idempotency, an undated vendor article, explains the same idea in general terms. It notes that most providers promise at least once delivery, not exactly once.

The key phrase is on paper. These decisions are cheap before the build and expensive after it. Once hundreds of duplicate contacts exist, someone has to merge them by hand or pay for a cleanup.

A quick duplicate checklist.

Run through these questions before you approve a build.

  • Is there one matching key, and is it present on every record?
  • Is the key cleaned the same way in both apps?
  • Does the action search before it creates?
  • Is anything else, such as a second automation, triggered by the same event?
  • Will a resent or retried event be skipped instead of processed again?
  • Who merges duplicates if one slips through, and how often do they check?

The fourth question catches a common trap. Two automations built months apart can both fire on the same form. Each one works alone. Together they create twice the records.

Plan for failure with retries, alerts and an owner.

Every connection fails sometimes. A receiving app goes down for maintenance, a password expires or a usage limit is reached. The goal is not zero failures. The goal is that every failure is either fixed automatically or seen by a person quickly.

Five step ladder from automatic retry to alert, owner, replay and a written note

Write the failure plan as a short ladder with five rungs.

  1. Retry automatically. Most platforms retry failed steps for a while. Find out how long and how often, and write it in the contract. Stripe’s documentation, for example, describes live-mode webhook retries for up to three days. Your tools may retry for minutes or not at all.
  2. Alert a channel a person reads. When retries run out, the failure should land somewhere visible, such as a shared inbox or team chat. A log file nobody opens is not an alert.
  3. Give it to a named owner. One person, plus a backup, decides whether to fix, replay or ignore the failure. When everyone shares the job, nobody tends to pick it up.
  4. Replay safely. After the fix, the owner resends the failed events. This only works safely if the duplicate rules above are in place, because a replay is a planned duplicate.
  5. Note what happened. A one-line note with the date, cause and fix builds a history. Patterns show up quickly, such as the same password expiring every few months.

Also decide what the business does while the connection is down. If the CRM link fails on a Friday, does someone check the form entries by hand? A short manual fallback protects customers while the fix waits.

Test the contract with five cases before go-live.

A single happy test proves little. Before the connection goes live, run five planned cases and record each result against the contract. Use test data that is clearly labelled, so it is easy to find and delete afterwards.

Test caseWhat you doWhat should happen
1. Normal entrySubmit one complete, valid entryOne record created, receipt saved, done reached
2. Same entry twiceSubmit the same entry againThe existing record updates, no second record
3. Missing fieldLeave out an optional fieldThe record is created and the blank is handled as agreed
4. Receiving app unavailablePause the receiving app, then submitThe step retries, then alerts the owner
5. Edit after createChange the entry in the first appThe change reaches the second app, or the contract says it should not

Check each result against the done field, not only the automation’s success message. A green tick that leaves a contact unassigned is a failed test.

Test 4 is the one teams most often skip, because breaking something on purpose feels awkward. It is also the only way to know your alerts reach a real person. If you cannot pause the receiving app safely, ask your developer or platform for a test mode.

Keep the results with the contract. They become your baseline for the next change.

Field mapping mistakes to catch on paper.

The field map is where small errors hide. Each one looks harmless in a test with clean data. Real customers type in ways your test entries never do, so check these before the build.

  • Names in one box or two. A form with one Name field cannot fill First name and Last name reliably. Decide the rule, or change the form.
  • Dates and time zones. A booking at 9 am in Florida can land as a different hour in an app set to another time zone. Write the time zone into the contract.
  • Dropdown values. If the form says “Residential” and the CRM expects “Home”, the field stays blank. List every allowed value on both sides.
  • Required fields. If the receiving app requires a field your form treats as optional, the action fails. Mark which fields are required in each app.
  • Long text. Notes and messages can exceed the length the receiving field allows. Ask what happens to the extra text.

None of these needs a developer to spot. They need someone who knows the business to read the field map line by line and ask what happens with a messy entry.

A hypothetical example: a booking page, a CRM and an invoice tool.

This example is hypothetical and simplified. Picture a small cleaning company that takes bookings online. Each booking should create or update a customer in the CRM and draft an invoice in the accounting tool.

Without a contract, the owner connects the booking page to both apps in one afternoon. It works. Weeks later, repeat customers appear twice in the CRM, because one booking used a work email and the next used a personal one. Then two invoices go out for one cleaning after the booking page resends a slow message.

With a contract, the same owner fills in the template first.

  • Trigger: a confirmed booking, not a pending or cancelled one.
  • Action: find the customer by phone number, update or create, then draft one invoice per booking ID.
  • Matching key: phone number, digits only, because customers change emails more often than numbers. The booking ID guards the invoice.
  • Receipt: the CRM customer ID and the invoice number written back to the booking.
  • Done: the customer exists once, the invoice is drafted and the booking shows both numbers.
  • Owner: the office manager gets failure alerts, with the business owner as backup.

The contract also exposes a real business question. Should a cancelled booking void the draft invoice automatically, or should a person decide? Writing it down forces that choice before a customer is billed by mistake.

The build itself takes about the same time either way. The difference is that the second version comes with rules for the cases that cause trouble.

When to bring in a developer.

You can write the contract yourself, and you should. You know what done means for your business. Whether you also build the connection depends on what the contract reveals.

A no-code tool usually fits when the connection has one trigger, a simple field map and apps with ready-made connectors. Our page on Zapier integrations covers that kind of setup. If you are still choosing a tool, compare options by who will fix the connection when it breaks.

A developer is worth the cost when the contract includes any of these.

  • Matching rules that a no-code step cannot express.
  • Money, such as invoices, refunds or payment status.
  • High volume, where retries and usage limits matter.
  • Apps without a ready-made connector, which need direct API integration work.
  • Data that must stay in step both ways, where each app can change the same record.

Before anyone connects anything, approve what each connection is allowed to see and change.

Handing a developer a filled-in contract saves time on both sides. They can quote accurately, and you can check the finished work against the same page.

Final thoughts.

Integration requirements are not paperwork for its own sake. They are the few decisions that separate a connection you trust from one you quietly double check every morning. Trigger, action, receipt and done tell everyone what the link is for. A matching key and a named owner keep it honest when something goes wrong.

Start with the connection that worries you most. Fill in the template, run the five tests and keep the page where your team can find it. Then move on to the next one.

Want a second pair of eyes on a contract, or help with a connection that needs custom work? Talk to a specialist about your apps and what done should look like.

Was this article helpful?

Part of the free path Mastering AI Automation.

The rest of Technology.

More articles.

The rest of the blog, newest first.

Questions about integration requirements

The things people ask on the first call. If yours is not here, ask us directly.

Is an integration contract the same as a statement of work?

No. A statement of work covers the project: price, timeline and who delivers what. An integration contract describes how one connection should behave once it runs. You can attach the contract to a statement of work so a developer quotes against clear rules, and you can keep using it long after the project ends.

What changes when data has to sync both ways?

Two-way sync needs a rule for conflicts. If someone edits the same customer in both apps at once, the contract must say which app wins, or whether a person reviews the clash. You also need to stop loops, where an update in one app triggers an update back. Write both rules before the build starts.

What should I do with the contract when I replace one of the apps?

Treat the swap as a new connection. Copy the old contract, keep the business reason and the done field, then rewrite the trigger, action and field map for the new app. Run all five tests again. Changing apps is the moment old matching keys and field formats most often break without anyone noticing.

How long should a list of processed event IDs be kept?

Keep it at least as long as the sending app keeps retrying, plus a safety margin. If a provider retries for days, a list that clears after a few hours lets late retries slip through as duplicates. Ask your developer or platform what their retry window is and write the keep period into the contract.

Who should sign off an integration contract?

Two people at minimum. The person who owns the business process, such as the office or sales manager, confirms the done field and the excluded events. The person who builds the connection confirms that each rule can actually be built. If neither can explain a field in plain words, it is not ready to approve.

Back to top
Share to...