Practical guide

Before connecting two tools, map what each field actually means

Prevent silent data errors between tools. Use a field contract for IDs, dates, empty values and statuses, with examples you can test before launch.

Source code with highlighted fields on a monitor
Illustrative stock photograph: Chris Ried / Unsplash.

Two tools can both have a field called status and still mean different things. Connected software does not automatically create a shared definition. Write a field contract before copying records, especially when a wrong value looks perfectly valid.

Separate the meaning from the label

For each source field, record the business meaning, accepted values, destination and transformation. A field called customer might refer to a person in one system and a company in another. An owner may be a user ID rather than a display name.

Keep identifiers as identifiers. A contact’s name is useful to people but may change or be shared by several records. Decide which stable source ID will remain attached to the destination record, and document whether edited records update the same destination or enter review.

Line chart and data labels on a screen
Illustrative stock photograph, not evidence of our project: Markus Winkler / Unsplash.

Build a field contract

FieldContract to agree
Source IDPreserve as text; never infer from the name.
Received timeDefine timezone and required date format.
AmountRecord currency and decimal handling.
OwnerMap a supported ID; flag missing matches.
StatusList allowed mappings and unknown values.
Empty fieldDistinguish missing, blank and intentionally cleared.

Keep this document beside the workflow source. Assign someone to update it when either application changes. A screenshot of a configuration panel is helpful evidence, but it does not replace the meaning of each rule.

A field contract before a connection: Source meaning; Destination meaning; Missing-value rule; Read back the saved record
A field contract before a connection
Original illustrative guide: Set It Once. A successful request can still save the wrong meaning.
Read the text version
  1. Source meaning. Define what each field represents.
  2. Destination meaning. Confirm type, format and allowed values.
  3. Missing-value rule. Distinguish absent, empty and clear.
  4. Read back the saved record. Check IDs, dates, owners and currency.

Use examples that expose ambiguity

Hypothetical example: a source sends an empty phone field after a customer removes a number. If the destination treats empty as do not update, the old number remains. If it treats empty as clear, a genuinely missing field could erase valid information. Choose the intended behaviour explicitly.

Test an ID with leading zeros, a name with non-Latin characters, a timezone offset, a decimal amount and an unknown status. Also include a record whose owner no longer exists. Your expected result should specify whether the workflow accepts, transforms, rejects or queues each case.

Verify after the destination saves

Read the stored result back from the destination. Applications may convert types, trim values or apply defaults. A correct outgoing payload is not enough to establish a correct saved record.

  1. Label each test with a source ID and expected outcome.
  2. Send it through the proposed mapping in a controlled environment.
  3. Compare source, outgoing values and stored destination.
  4. Check what a team member actually sees in the destination interface.

Keep unexpected values visible in a review queue. Do not silently map every unknown status to completed. If the available API cannot represent the distinction you need, change the process design before activating it.

Write one mapping row completely

For a hypothetical order transfer, the source amount is the text “1,250.00”, the currency is EUR and the source ID is “000731”. The field contract must say whether the destination amount is a decimal value or an integer number of minor units. It must also preserve the source identifier as text if leading zeros are meaningful. Converting every numeric-looking field to a number would destroy that identity.

A complete row names the source, meaning, input type, destination type, transformation, validation and error behaviour. An illustrative amount rule might accept a defined format, convert it deliberately and reject ambiguous separators for review. Do not guess whether “1,250” means one thousand two hundred fifty or one and a quarter without a defined source convention.

Distinguish no update from clearing a value

When a customer removes a phone number, the source may send an explicit clear instruction, an empty string or a null value. A missing property may instead mean that the field was not part of this update. Agree the semantics for the actual API. Treating all four as interchangeable can either retain obsolete data or erase valid information.

Use separate test records for absent, empty, null and intentional clearing. Read the destination back after each operation. Record any defaults or normalisation it applies. If it cannot express the distinction you need, route the case for review or redesign the update rule; an attractive mapping diagram cannot add a capability the destination lacks.

Version the contract when the applications change

Suppose the source adds a status “awaiting documents”. A fallback that maps every unknown status to “complete” creates a plausible but incorrect record. A safer proposed rule identifies the unknown value and queues it until an authorised owner decides the mapping.

Keep a short contract version and a regression set containing identifiers, non-Latin text, currency, dates, missing owners and each supported status. Run the affected set when a field changes. Assign business meaning to the process owner and technical conversion to the maintainer. This division helps prevent a developer’s convenient default from becoming an unintended business decision.

Take one practical next step

If you need to connect a source and a destination, bring this field contract to workflow automation. Scope, timing and price are agreed before work starts. An enquiry does not place an order or guarantee a result.

Sources and further reading

Quick answers

Frequently asked questions

Should names be used to match records?

Prefer supported stable IDs. Names can change or be duplicated; if a name match is unavoidable, send ambiguous matches for review.

What happens when a field is added?

Review the contract and rerun affected examples. Decide whether the new field is optional, required or unsupported.

Can a spreadsheet hold the contract?

Yes. It needs clear definitions, a responsible owner, examples and a record of changes rather than a particular document format.

Martin Iliev, founder of Set It Once

About the author

Martin builds Set It Once to help people spend less time on repeated work. His guides explain what you can try, how to check the result and where the limits are.

More about Martin

All articles

Privacy & cookie notice

Privacy & cookies

Updated 5 October 2026. This notice covers the public Set It Once marketing website and its enquiry form.

Who is responsible?

Martin Iliev operates Set It Once and is responsible for the personal data collected through this website. For privacy questions or to exercise your rights, email miliev@setitonce.com or use the contact form. You do not need to provide a website address for a privacy request.

What we collect and why

When you send an enquiry, we receive your name, email address, optional website address and message. We use these to respond and take steps towards a possible service agreement at your request (GDPR Article 6(1)(b)). Security and abuse prevention rely on our legitimate interest in protecting the website (Article 6(1)(f)). The form temporarily uses a keyed hash of your IP address to limit repeated submissions for 60 seconds. Hosting infrastructure processes connection information such as IP addresses and requested URLs to deliver and protect the site.

There is no marketing subscription, sale of enquiry data or automated decision-making about you. Do not send passwords, API keys or sensitive client information.

Who can access the information?

Enquiries are stored in the private WordPress administration area and accessed by authorised administrators. Namecheap provides our website and email hosting and processes data to operate these services. Email addressed to miliev@setitonce.com is also forwarded to a Gmail account operated by Google so Martin can receive and handle correspondence. Their privacy notices explain their processing: Namecheap and Google. External links such as LinkedIn load only when you follow them; those websites have their own privacy notices.

International processing

Namecheap and Google may process information outside your country, including in the United States. Namecheap describes the contractual safeguards for covered services in its Data Processing Addendum. Google describes processing locations and safeguards in its Privacy Policy. Contact us if you need details about the processing of your enquiry.

How long we keep information

We retain enquiries while handling the request and necessary follow-up. We review enquiries after six months and remove closed enquiries that are no longer needed. Records required for an active service, a legal obligation or a legal claim may be retained for that purpose. This review covers WordPress records and related email copies; it is a manual review, not automatic deletion. Hosting logs and backups have separate retention arrangements with the provider. You can ask us for information about your particular record or request deletion.

Your rights

You may request access, correction, erasure, restriction, objection and portability where applicable. You may withdraw optional browser-storage consent through Privacy settings without affecting earlier lawful processing. We normally respond to rights requests within one month; legal exceptions may apply. You may complain to your local supervisory authority, including the Bulgarian Commission for Personal Data Protection.

Cookies and browser storage

Google Analytics 4 is optional and loads only after your explicit consent. It measures page visits and basic engagement, using browser/device information and an online identifier. Google processes the network address to provide the service; GA4 does not log or store individual IP addresses. We do not enable advertising features, Google Signals or automatic form tracking. Page URLs and referrers sent by this website exclude query strings and fragments; form contents are not sent. No third-party geolocation service is used. Fonts and images are hosted on this website. Necessary WordPress authentication and security cookies may be used when you sign in. These are separate from optional analytics and currency memory.

LocalStorage is browser storage rather than a cookie; the same preference controls cover it. Automatic currency suggestion uses your browser time zone locally. It is approximate and is not sent to a geolocation provider. If browser storage is unavailable, your choices apply only to the current page.

Online payment processing is not active on this page. Payment-provider information and purchase terms will be added before checkout is enabled.