{"id":8050,"date":"2026-08-01T01:34:37","date_gmt":"2026-08-01T01:34:37","guid":{"rendered":"https:\/\/dextora.agency\/insights\/integrations-connecting-website-crm-warehouse\/"},"modified":"2026-08-01T01:34:37","modified_gmt":"2026-08-01T01:34:37","slug":"integrations-connecting-website-crm-warehouse","status":"publish","type":"insight","link":"https:\/\/dextora.agency\/en\/insights\/integrations-connecting-website-crm-warehouse\/","title":{"rendered":"Integrations: How to Connect Your Website, CRM, Warehouse and Accounting"},"content":{"rendered":"<p>Integrations are the most common reason a project goes over budget. In the quote they are one line, but behind that line sits work whose scope cannot be estimated until somebody looks at what the other system actually gives you.<\/p>\n<p>Here is what connecting systems consists of, which options exist, and what breaks most often.<\/p>\n<h2>What an integration really is<\/h2>\n<p>It is an agreement between two systems about who passes what, when, and in what form. The technical part is usually simple. The hard parts are elsewhere:<\/p>\n<ul>\n<li><strong>Different reference data.<\/strong> On the website a product is &#8220;Oak dining table&#8221;, in the warehouse it is &#8220;TB-OAK-120&#8221;, in accounting it is &#8220;Table dining oak 120&#215;80&#8221;. These cannot be matched automatically until somebody maps them by hand.<\/li>\n<li><strong>Different notions of status.<\/strong> &#8220;Paid&#8221; on the site and &#8220;paid&#8221; in accounting often refer to different moments.<\/li>\n<li><strong>Different sources of truth.<\/strong> If a price can be changed both on the site and in the warehouse system, sooner or later they will diverge.<\/li>\n<\/ul>\n<p>So the first question in any integration is not technical: which system is authoritative for each kind of data.<\/p>\n<h2>Three ways to connect<\/h2>\n<table>\n<thead>\n<tr>\n<th>Method<\/th>\n<th>How it works<\/th>\n<th>When it fits<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Direct API exchange<\/td>\n<td>The systems call each other directly<\/td>\n<td>Both sides have a documented interface<\/td>\n<\/tr>\n<tr>\n<td>Webhooks<\/td>\n<td>An event in one system immediately pushes data to the other<\/td>\n<td>A real-time reaction is required<\/td>\n<\/tr>\n<tr>\n<td>File exchange<\/td>\n<td>Scheduled export, the other system collects it<\/td>\n<td>Legacy system with no API, large volumes<\/td>\n<\/tr>\n<tr>\n<td>Via a middleware layer<\/td>\n<td>A separate layer reconciles formats and rules<\/td>\n<td>More than two systems, different reference data<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The last option looks excessive while there are only two systems. With three or more it turns out cheaper: without it every pair connects separately, and the number of connections grows faster than the number of systems.<\/p>\n<h2>Direction and frequency<\/h2>\n<p>Two characteristics that determine complexity more than anything else.<\/p>\n<p><strong>Direction.<\/strong> One-way exchange is several times simpler. Two-way requires resolving conflicts: what to do when a record was changed in both systems at once. A practical rule: build two-way exchange only where you genuinely cannot avoid it.<\/p>\n<p><strong>Frequency.<\/strong> Real time is needed less often than people assume. Stock levels, yes. Reporting data, once a day is entirely sufficient. Every increase in frequency raises the load and the number of places something can break.<\/p>\n<h2>What breaks<\/h2>\n<table>\n<thead>\n<tr>\n<th>Problem<\/th>\n<th>How it shows up<\/th>\n<th>What helps<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>The other system is unavailable<\/td>\n<td>An order never reached the CRM and vanished<\/td>\n<td>A queue with retries<\/td>\n<\/tr>\n<tr>\n<td>Duplication<\/td>\n<td>One lead created three times<\/td>\n<td>A unique operation key<\/td>\n<\/tr>\n<tr>\n<td>Reference data mismatch<\/td>\n<td>Products fail to match<\/td>\n<td>A mapping table, maintained by a person<\/td>\n<\/tr>\n<tr>\n<td>Silent failure<\/td>\n<td>The exchange died a week ago and nobody noticed<\/td>\n<td>Alerts on failure, not just logs<\/td>\n<\/tr>\n<tr>\n<td>A change on the other side<\/td>\n<td>The supplier changed the format without notice<\/td>\n<td>Validating the data structure on arrival<\/td>\n<\/tr>\n<tr>\n<td>Partial transfer<\/td>\n<td>The order went through, stock was never deducted<\/td>\n<td>All-or-nothing operations<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The most expensive row here is silent failure. An integration that died unnoticed is worse than no integration: the data diverges, and it surfaces weeks later, when reconciliation has to be done by hand.<\/p>\n<h2>Implementation sequence<\/h2>\n<ol>\n<li><strong>Describe what is transferred.<\/strong> A field list from both sides, not &#8220;we will sync orders&#8221;.<\/li>\n<li><strong>Decide the authoritative system<\/strong> for each data type. That is a business decision, not a developer&#8217;s.<\/li>\n<li><strong>Map the reference data.<\/strong> Tedious manual work that cannot be skipped.<\/li>\n<li><strong>Launch one-way and at small volume.<\/strong> Ten orders a day, not the whole flow.<\/li>\n<li><strong>Add failure alerts.<\/strong> Before opening the full volume.<\/li>\n<li><strong>Expand gradually.<\/strong> Second direction, second system, higher frequency.<\/li>\n<\/ol>\n<h2>What to ask your supplier first<\/h2>\n<ul>\n<li>What happens to an enquiry if the CRM is down at the moment of submission?<\/li>\n<li>How will we learn the exchange has broken, and how quickly?<\/li>\n<li>Who maintains the mapping table when a new product appears?<\/li>\n<li>What happens if the supplier changes the data format?<\/li>\n<li>Can an operation that failed to arrive be resent?<\/li>\n<li>Where is the exchange history stored and for how long?<\/li>\n<\/ul>\n<p>The answers to these six questions separate an integration that runs for years from one that needs repairing every month.<\/p>\n<h2>What it actually costs<\/h2>\n<p>A benchmark: simple one-way transfer of enquiries from a site into a CRM is a few days. Two-way exchange of products and stock with an undocumented legacy warehouse system is weeks, and cannot be estimated precisely before starting.<\/p>\n<p>So an honest quote for integration almost always has two phases: first a discovery in which someone looks at what the other system really provides, then an estimate. A proposal that prices a complex integration immediately and precisely usually means nobody looked.<\/p>\n<p>Integrations are rarely elegant. But they are what turns a website from a shop window into part of the working process, and they are exactly what gets cut from budgets, after which people reconcile data by hand for another three years.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integrations are the most common cause of budget overruns. We cover four ways to connect systems, why direction and frequency drive complexity, six typical failures and the questions to ask your supplier first.<\/p>\n","protected":false},"author":5,"featured_media":8046,"template":"","insight_category":[154],"insight_tag":[180,166,162],"class_list":["post-8050","insight","type-insight","status-publish","has-post-thumbnail","hentry","insight_category-guides","insight_tag-automation","insight_tag-crm","insight_tag-web-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/insight\/8050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/insight"}],"about":[{"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/types\/insight"}],"author":[{"embeddable":true,"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/users\/5"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/media\/8046"}],"wp:attachment":[{"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/media?parent=8050"}],"wp:term":[{"taxonomy":"insight_category","embeddable":true,"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/insight_category?post=8050"},{"taxonomy":"insight_tag","embeddable":true,"href":"https:\/\/dextora.agency\/en\/wp-json\/wp\/v2\/insight_tag?post=8050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}