Skip to main content
Software Integration · 9 min read

Software integrations are one of those things that look smooth in a demo and immediately become complicated in production. The data isn’t flowing the way you expected. Records are duplicating. The sync that worked last Tuesday is failing today. Your sales team is seeing outdated information in the CRM. A webhook that was reliable for months suddenly stopped firing.

Integration problems are frustrating because they are often invisible — the system looks like it’s working, but the data is wrong or missing in ways you only discover when something downstream breaks. This guide covers the most common integration problems, explains why each one happens, and gives you a concrete approach to diagnosing and fixing it.

Problem 1: Duplicate Records Across Systems

What This Looks Like

You have the same contact, company, or deal appearing multiple times in one or both of your connected systems. Sales reps are seeing the same prospect twice. Your email marketing tool is sending emails twice to the same address. Your reporting is inflated.

Why It Happens

Duplicates usually arise from one of three causes:

Missing deduplication logic: When the integration creates a new record in the destination system, it doesn’t check whether a matching record already exists. Every sync creates a new record instead of updating the existing one.

Different unique identifiers: System A identifies contacts by email address, but System B identifies them by a generated internal ID. When a record is synced, the destination system doesn’t recognize it as an existing contact because the identifier doesn’t match.

Multiple trigger paths: The same record is being created through more than one route — for example, directly through the destination system’s UI, through a form integration, and through a manual import — without any deduplication happening at the point of creation.

How to Fix It

Step 1: Define your matching criteria. Decide which field or combination of fields constitutes a unique match. Email address is the most common choice for contacts. For companies, it might be domain name or company name plus country.

Step 2: Check your integration’s deduplication settings. Most integration platforms let you specify how to handle duplicates: skip the record, update the existing record, or create a new one. Verify these settings are configured correctly.

Step 3: If duplicates already exist, deduplicate your existing data. Most CRMs have a built-in deduplication tool. Use it to merge duplicate records before relying on the integration going forward.

Step 4: Audit your trigger paths. Map out every way a new record can be created in each system and make sure deduplication logic applies to all of them.

Problem 2: Data Format Mismatches

What This Looks Like

Data is being transferred between systems but arriving in the wrong format. Phone numbers arrive as all digits with no formatting when the destination system expects a specific format. Date fields transfer as text strings when they should be date objects. A dropdown field in one system uses different values than the corresponding field in another.

Why It Happens

Different software systems store and format the same data differently. A date might be stored as “2026-11-14” in one system and expected as “November 14, 2026” in another. A phone number might include a country code in one system but not the other. Category or status fields often use different labels for the same underlying concept.

How to Fix It

For date format issues: Configure date transformation in your integration platform. Both Zapier and Make allow you to format date values as part of a workflow step. Identify the exact format each system expects and add a transformation step between the source and destination.

For phone number format issues: Strip formatting from the source value (removing spaces, dashes, and parentheses) before sending, then reformat in the destination system’s expected style. Use a transformation step in your iPaaS tool or check if the destination system can normalize incoming values.

For dropdown/status field mismatches: This requires explicit value mapping. For each possible value in the source system’s field, define the corresponding value in the destination system. Most integration platforms support this with a “lookup table” or “field mapper” feature.

For field type mismatches (text vs. number vs. date): Identify which system needs the field to be a specific type and ensure the transformation to that type happens before the data arrives.

Mismatch TypeCauseFix Approach
Date format mismatchDifferent date string formatsAdd a date formatter transformation step
Phone number formatInconsistent inclusion of country code or punctuationStrip and reformat in iPaaS transformation
Status/category field labelsDifferent terminology for same conceptCreate a value lookup map in your integration
Text vs. number typeField type conflict between systemsCast to correct type in transformation step
Timezone offset in timestampsSystems storing timestamps in different timezonesNormalize all timestamps to UTC before syncing

Problem 3: One-Way vs. Two-Way Syncs Breaking

What This Looks Like

You set up a sync between two systems, and data flows correctly in one direction — but when someone updates a record in the destination system, the change doesn’t flow back to the source. Or worse, a change in the destination gets overwritten by the next sync from the source.

Why It Happens

One-way sync configured as two-way: If your integration is a one-way sync but someone updates the destination system, those changes will be overwritten the next time the source pushes an update.

Conflict resolution set to always overwrite: If your two-way sync is configured so the source always wins, updates made in the destination will always be lost.

No conflict detection: The integration doesn’t check whether the destination record has been changed more recently than the source record, so it blindly overwrites.

How to Fix It

Clarify which system is the authority for each field. For a CRM-to-marketing-automation sync, the CRM might be the authority for contact status and deal stage, while the marketing tool is the authority for email preferences and campaign enrollment. Make this explicit in your integration configuration.

Configure your conflict resolution rules. Most integration platforms let you define rules: always prefer source, always prefer destination, prefer whichever was updated more recently, or prompt a human when conflicts occur.

For one-way syncs, protect the destination from manual edits. If you have a one-way sync and people keep editing records in the destination (which then get overwritten), either switch to a two-way sync or lock the synced fields in the destination so they can only be updated through the integration.

Add a “last synced” timestamp. Many integration failures become easier to debug if you add a field to your records that logs the last time they were synced. This helps you diagnose whether records are being updated or silently ignored.

Problem 4: Webhook Failures

What This Looks Like

Webhooks are real-time notifications from one system to another — when something happens in System A, it immediately sends data to System B. When webhooks fail, the receiving system stops getting updates, and the integration appears to work but data stops flowing. This often goes unnoticed until something downstream breaks.

Why It Happens

Endpoint unavailability: The receiving system’s webhook URL is temporarily unavailable (downtime, maintenance, rate limiting) when the webhook fires. Depending on configuration, the sending system may not retry.

Authentication failure: The webhook’s authentication token or secret has expired or been rotated, so the receiving system rejects incoming requests.

Payload changes: The sending system changed the format or field names in the webhook payload (often during a platform update), and the receiving system’s handler is now parsing data that doesn’t match what it expects.

Retry exhaustion: The sending system attempted to deliver the webhook multiple times after an initial failure and eventually gave up without alerting anyone.

How to Fix It

Step 1: Check the webhook delivery logs. Most platforms that send webhooks have a delivery log showing which events fired, whether they succeeded, and what response the receiving system returned. This is your first diagnostic tool.

Step 2: Verify the endpoint URL is correct and accessible. Use a tool like Webhook.site or Requestbin to temporarily capture incoming webhooks and confirm they are being sent.

Step 3: Check authentication. Verify that any API keys, secrets, or tokens used to authenticate the webhook are still valid and match what the receiving system expects.

Step 4: Compare the current payload to what you’re parsing. If the sending system updated its API, the webhook payload may have changed. Check the vendor’s changelog for any API updates around the time the failures started.

Step 5: Implement delivery verification. Configure the receiving system to return a clear success response (HTTP 200) only when it has successfully processed the webhook. This tells the sending system whether retry is needed.

Step 6: Set up monitoring. Use a simple heartbeat check — if the receiving system hasn’t received a webhook of a given type in the expected timeframe, trigger an alert.

Problem 5: Diagnosing Silent Integration Failures

What This Looks Like

Your integration dashboard shows no errors, but the data in your systems is wrong or missing. Records aren’t updating when they should. Fields have incorrect values. Syncs that should happen in near-real-time are delayed by hours or days.

Why It Happens

Silent failures are the hardest integration problems to catch because there’s no obvious error to investigate. Common causes include:

  • Integration filters that exclude records you expected to sync (e.g., a filter that only syncs contacts with a company name, silently skipping anyone who filled out the form without that field)
  • Rate limiting causing records to queue and eventually be dropped
  • Partial success — the integration ran but only transferred some of the fields, leaving others with default or empty values
  • Stale authentication that allows read access but silently fails on write operations

How to Diagnose Silent Failures

Run test records through the integration. Create a test contact with known values in the source system and verify exactly what arrives in the destination system. Check every field.

Review integration filter settings. If your integration has any filter conditions (only sync records where X equals Y), verify that these conditions actually match the records you expect to sync.

Check your transformation steps. If your integration transforms data between systems, log the intermediate values so you can see what is going in and what is coming out at each step.

Verify write permissions. Confirm that the API token or OAuth connection used by the integration has the correct permissions for write operations, not just read.

Increase logging temporarily. Most integration platforms have a way to increase the verbosity of logging. Turn this on temporarily while diagnosing, then reduce it after you’ve resolved the issue.


Frequently Asked Questions

How do I know which system to trust when two systems have different data for the same record? This comes back to your data authority rules — which system is the authoritative source of truth for each type of data. If you haven’t explicitly defined these rules, that’s your first step. Once defined, the authority system’s data takes precedence, and you work backward to understand how the other system ended up with different values.

What’s the right way to handle a webhook failure that caused me to miss a batch of updates? Most systems that send webhooks also support a polling mechanism — an API call you can make to retrieve records that were updated in a given time range. Use this to reconstruct the missed updates. Once you know which records were affected, you can manually trigger a re-sync for those records. Going forward, configure your integration to poll periodically as a fallback to catch anything webhooks might have missed.

How do I prevent integration problems from causing bad data to accumulate over time? The most effective preventive measure is a regular data quality check. Once a week or once a month, run a simple query or export from each connected system and spot-check a sample of records for obvious issues: missing required fields, records that should have been updated but weren’t, and anomalous field values. Catching problems early prevents them from compounding.

Should we rebuild a broken integration or try to fix the existing one? If the integration is relatively simple and the fix is clear, repairing the existing integration is faster. If the integration has accumulated a lot of workarounds, has unclear ownership, or is built on a platform you’re moving away from, a clean rebuild — informed by what you learned from the failure — is often the better choice. The rebuild lets you apply better deduplication logic, cleaner field mapping, and more robust error handling from the start.


By BizStackWise Editorial · Updated November 14, 2026

  • integration problems
  • duplicate records
  • webhook failures
  • data sync
  • troubleshooting