{"id":441,"date":"2026-09-30T12:11:16","date_gmt":"2026-09-30T12:11:16","guid":{"rendered":"https:\/\/www.tilesitsolutions.com\/blog\/?p=441"},"modified":"2026-09-30T12:11:16","modified_gmt":"2026-09-30T12:11:16","slug":"salesforce-integration-mistakes-tile-brands","status":"publish","type":"post","link":"https:\/\/www.tilesitsolutions.com\/blog\/salesforce-integration-mistakes-tile-brands\/","title":{"rendered":"7 Salesforce Integration Mistakes Tile Brands Make (and How to Avoid Them)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Most Salesforce integration mistakes don&#8217;t show up on launch day. They show up three weeks later, when a rep quotes 1,800 square feet of a porcelain that&#8217;s split across two shade lots, or a dealer&#8217;s negotiated price gets overwritten by a list price nobody meant to push. Tile data is stubborn. Boxes, pallets, lots, and caliber don&#8217;t fit neatly into a default Salesforce product record. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Below are the seven mistakes that come up most in tile projects, and what a properly scoped <\/span><a href=\"https:\/\/www.tilesitsolutions.com\/solutions\/erp\"><span style=\"font-weight: 400;\"><strong>ERP and CRM integration solution<\/strong><\/span><\/a><span style=\"font-weight: 400;\"> does differently.<\/span><\/p>\n<h2><b>Why Tile Is Harder to Integrate Than Most Industries<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Salesforce is built around accounts, opportunities, and products with a price. Simple enough.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A tile distributor, though, quotes by the square foot, ships by the box or pallet, reserves stock by shade lot, and invoices out of an ERP like SAP or NetSuite. Each of those handoffs is a translation. And every translation is a spot where numbers drift.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Generic integration advice covers the basics well: clean your data, map your fields, test before launch. Good advice. It just stops short of the product reality that makes tile different, which is exactly where most of these projects go wrong.<\/span><\/p>\n<h2><b>7 Salesforce Integration Mistakes Tile Brands Keep Making<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Some of these are technical. Most are planning gaps that only turn into technical problems once real orders start flowing.<\/span><\/p>\n<h3><b>1. Treating Tile SKUs Like Generic Products<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Picture this. A rep builds a quote in Salesforce for 2,400 square feet. The ERP sells that item in boxes of 15.5 square feet. Salesforce rounds one way, the ERP rounds another, and the order that reaches the warehouse no longer matches what the customer signed.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Small gap. Expensive argument.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The fix is to model dual UoM on purpose. Store the conversion factors (square feet per box, boxes per pallet) on the product record, and let exactly one system do the rounding. Then bring over the attributes reps actually quote on, like size, finish, PEI rating, and caliber. If those only live in the ERP, reps will quote from memory. They&#8217;ll get it wrong sometimes.<\/span><\/p>\n<h3><b>2. Letting Two Systems Fight Over the Same Data<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Syncing everything both ways sounds ideal. In practice, it&#8217;s where silent overwrites come from.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pick a system of record for each data type, and write it down before anyone builds a connector. A typical tile setup looks something like this:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Data<\/b><\/td>\n<td><b>System of Record<\/b><\/td>\n<td><b>Sync Direction<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Credit terms and payment status<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP to Salesforce<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Dealer pricing tiers<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP or pricing engine<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP to Salesforce, read only<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Opportunities and quotes<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Salesforce<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Salesforce to ERP when won<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Stock and lot availability<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP or warehouse system<\/span><\/td>\n<td><span style=\"font-weight: 400;\">ERP to Salesforce, read only<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Contacts and activity history<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Salesforce<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Stays in Salesforce<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">Your split might look different. That&#8217;s fine. What isn&#8217;t fine is nobody knowing which record wins when two of them disagree.<\/span><\/p>\n<h3><b>3. Syncing Stock Totals Instead of Lot Availability<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This one hurts tile brands more than almost anyone else.<\/span><\/p>\n<blockquote><p>Watch for this: Salesforce shows 3,000 square feet on hand. Sounds great. But it&#8217;s really 1,200 in one lot, 1,100 in another, and 700 in a third. A customer tiling a single open floor needs one shade lot, so that 3,000 is really 1,200.<\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Reps who only see totals will overpromise. Every time.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Push availability into Salesforce by lot, or at minimum show the largest single lot for each SKU. Better still, let reps place a soft hold on a specific lot when a quote goes out. An <\/span><strong><a href=\"https:\/\/www.tilesitsolutions.com\/solutions\/inventory-management\">inventory management solution with lot tracking<\/a><\/strong><span style=\"font-weight: 400;\"> does the heavy work here, tracking lot numbers for color and shade matching so Salesforce only has to display what&#8217;s currently sellable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Frankly, you don&#8217;t need every stock movement inside the CRM. Reps need to know what they can sell today, by lot. The full audit trail can stay in the warehouse system.<\/span><\/p>\n<h3><b>4. Flattening Dealers, Contractors, and Specifiers Into One Account Type<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tile sales rarely involve a single buyer. On a typical commercial project:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The architect or designer specifies the product<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A contractor buys it, often through a dealer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The dealer places the order, holds the credit terms, and may be selling the same line into a dozen other jobs at once<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If all three sit in Salesforce as flat, unrelated accounts, you lose project attribution. You&#8217;ll also collect duplicates, since the same contractor gets entered by three different reps.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Use account hierarchies and a project record that links each party by role. And if dealers order through a portal, make sure those orders land in Salesforce against the right account. A <\/span><strong><a href=\"https:\/\/www.tilesitsolutions.com\/solutions\/b2b-dealer-management\">B2B dealer portal solution<\/a><\/strong><span style=\"font-weight: 400;\"> with tiered pricing, credit limit visibility, and order tracking only helps your sales team if its data reaches the CRM. Otherwise reps are blind to half their accounts&#8217; activity.<\/span><\/p>\n<h3><b>5. Polling for Everything and Burning Through API Limits<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Salesforce doesn&#8217;t give you unlimited calls. According to<\/span> <span style=\"font-weight: 400;\">Salesforce&#8217;s developer documentation<\/span><span style=\"font-weight: 400;\">, Enterprise Edition orgs start at 100,000 API requests per rolling 24 hours, plus 1,000 for each Salesforce license. That allowance is shared across the whole org, not handed out per user.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So a connector that checks every SKU individually every few minutes can eat most of that budget. Then your ecommerce sync and marketing tools start failing too, and nobody&#8217;s sure why.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A better pattern:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sync on change, not on a timer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Use the Bulk API for large catalog and price updates<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Publish changes as<\/span> <span style=\"font-weight: 400;\">platform events<\/span><span style=\"font-weight: 400;\">, which don&#8217;t count against the daily API request allocation when sent through Pub\/Sub API, Apex, or flows<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">That last point surprises a lot of teams. Worth checking against your current setup.<\/span><\/p>\n<h3><b>6. Testing Only With Clean Sandbox Data<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Demo data passes every test. Your real data won&#8217;t.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Salesforce sandboxes can hold a full or partial copy of production data, so test against that instead of a handful of tidy sample records. Then run the messy scenarios on purpose:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A partial shipment with the rest on backorder<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A backorder that ships from a different shade lot and needs customer approval<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">One broken box returned from an order of 40<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A free sample order with zero value<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A dealer on credit hold who submits an order anyway<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A price change between quote and close<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If the integration handles those, it&#8217;ll handle a normal Tuesday.<\/span><\/p>\n<h3><b>7. Walking Away After Launch<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Integrations rarely fail loudly. Somebody renames a picklist value, an admin adds a validation rule, or the ERP gets patched, and orders quietly stop syncing. Days can pass before anyone notices.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Assign a named owner. Route failed records into an error queue that someone actually reads, set alerts for sync failures, and review integration health monthly. If you don&#8217;t have that capacity in house, a <\/span><strong><a href=\"https:\/\/www.tilesitsolutions.com\/solutions\/support\">platform support solution with proactive monitoring<\/a><\/strong><span style=\"font-weight: 400;\"> covers the watching, so your team isn&#8217;t discovering problems through angry dealer calls.<\/span><\/p>\n<p>Must Check: <a href=\"https:\/\/www.tilesitsolutions.com\/blog\/salesforce-crm-integration-tile-manufacturers-guide\/\"><strong>Salesforce CRM Integration for Tile Manufacturers<\/strong><\/a><\/p>\n<h2><b>A Quick Check Before You Approve the Build<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Run these five questions past your team. If any answer is &#8220;not sure,&#8221; stop there first.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which system owns pricing, credit, stock, and quotes?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Where does the square foot to box conversion happen?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Can reps see availability by shade lot, or only totals?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">How do dealer portal orders reach Salesforce?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Who gets alerted when a sync fails?<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Five clear answers usually mean a clean launch. Two or three vague ones? That&#8217;s where the rework will come from.<\/span><\/p>\n<h2><b>Get Your Salesforce Integration Right the First Time<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Planning a Salesforce rollout, or fixing one that isn&#8217;t behaving? Our team has integrated 45+ enterprise systems for tile companies, including SAP, NetSuite, and Salesforce. We&#8217;ll review your data model, settle which system owns what, and flag the lot, UoM, and dealer gaps before they reach your customers.<\/span><\/p>\n<p><strong><a href=\"https:\/\/www.tilesitsolutions.com\/contact\">Book a Salesforce integration solution review<\/a><\/strong><\/p>\n<h2><b>FAQs<\/b><\/h2>\n<h3><b>1. What&#8217;s the biggest Salesforce integration mistake tile distributors make?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Syncing inventory totals instead of lot availability. Reps end up promising stock that can&#8217;t ship as one shade, which leads to split lots, returns, and unhappy installers.<\/span><\/p>\n<h3><b>2. Should Salesforce or the ERP own tile pricing?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Usually the ERP. Salesforce should display dealer pricing and quote from it, not keep a separate copy that drifts over time.<\/span><\/p>\n<h3><b>3. Can Salesforce show shade lot availability?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Yes, but not out of the box. The integration has to send availability by lot, so plan for it during field mapping.<\/span><\/p>\n<h3><b>4. Do we need middleware to connect Salesforce and our ERP?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Not always. It depends on order volume, how many systems are involved, and how much the data needs reshaping. Simpler setups often work fine with direct API connections.<\/span><\/p>\n<h3><b>5. How do we avoid hitting Salesforce API limits?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sync on change, batch large updates, and use platform events where they fit. Keep an eye on API usage in Setup so you spot trouble early.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most Salesforce integration mistakes don&#8217;t show up on launch day. They show up three weeks later, when a rep quotes 1,800 square feet of a porcelain that&#8217;s split across two shade lots, or a dealer&#8217;s negotiated price gets overwritten by a list price nobody meant to push. Tile data is stubborn. Boxes, pallets, lots, and &hellip; <a href=\"https:\/\/www.tilesitsolutions.com\/blog\/salesforce-integration-mistakes-tile-brands\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;7 Salesforce Integration Mistakes Tile Brands Make (and How to Avoid Them)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":442,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-441","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=441"}],"version-history":[{"count":2,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/441\/revisions"}],"predecessor-version":[{"id":444,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/441\/revisions\/444"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/media\/442"}],"wp:attachment":[{"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tilesitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}