{
  "slug": "sales-i-pronto-xi",
  "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/",
  "name": "sales-i and Pronto Xi",
  "vendor": "SugarCRM and Pronto Software",
  "aliases": [
    "sales-i",
    "Pronto Xi",
    "Pronto XI ERP",
    "Sugar Predict",
    "Pronto Connect"
  ],
  "website": "https://www.sales-i.com/",
  "category": {
    "slug": "distribution-and-sales-intelligence",
    "name": "Distribution and sales intelligence",
    "url": "https://apps.sectorgrowth.com/categories/distribution-and-sales-intelligence/"
  },
  "summary": "sales-i holds a decade of account history and call logs read off a distributor's Pronto Xi order book, and distributors usually want it moved out.",
  "answer": "No. sales-i is missing from the HubSpot App Marketplace entirely, with no app published under that name, as of September 2026. For most distributors the first piece of work is a one time migration of customers, contacts, opportunities and call history, run as a keyed batch upsert from an export rather than through the import screen.",
  "nativeApp": {
    "status": "none",
    "verifiedAt": "2026-09-22"
  },
  "api": {
    "style": "file",
    "auth": "none",
    "webhooks": "no",
    "changedSince": "no",
    "sandbox": "unknown"
  },
  "objects": [
    {
      "source": "Customer",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Account number, held in a unique custom HubSpot property",
      "notes": "The account number is the backbone key every other file points at."
    },
    {
      "source": "Contact",
      "hubspot": "contact",
      "direction": "to_hubspot",
      "key": "Source contact identifier, never email",
      "notes": "Thousands of contacts carry no email, and hundreds share one."
    },
    {
      "source": "Opportunity",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Source opportunity identifier",
      "notes": "Stage and pipeline must be internal identifiers, not the labels on screen."
    },
    {
      "source": "Note",
      "hubspot": "engagement",
      "direction": "to_hubspot",
      "key": "Source note identifier, created and deduplicated rather than upserted",
      "notes": "These are call logs with a type, an outcome and a duration, not free text."
    },
    {
      "source": "Order and line history",
      "hubspot": "line_item",
      "direction": "to_hubspot",
      "key": "Order number plus line number",
      "notes": "Not in the sales intelligence export. It comes from the ERP on a second track."
    }
  ],
  "approaches": [
    {
      "kind": "custom",
      "fit": "recommended",
      "why": "A scripted batch upsert keyed on a unique source identifier per object, followed by a separate associations pass, is repeatable, idempotent and runs identically against a sandbox and production."
    },
    {
      "kind": "skyvia",
      "fit": "possible",
      "why": "Once the history is loaded, the ongoing feed of order and product data from the ERP is a stable scheduled mapping, which is what a managed sync is for."
    },
    {
      "kind": "native",
      "fit": "avoid",
      "why": "There is no sales-i app in the HubSpot App Marketplace, and the import screen caps a job at roughly two objects, which does not cover four objects and six association types."
    }
  ],
  "effort": {
    "discoveryHours": [
      10,
      20
    ],
    "buildHours": [
      70,
      150
    ],
    "buildBand": "70 to 150 hours",
    "typicalElapsed": "4 to 8 weeks"
  },
  "pattern": "batch-migration",
  "faqs": [
    {
      "q": "Is there a HubSpot app for sales-i?",
      "a": "Nothing comes up published under the name sales-i when you search the HubSpot App Marketplace, only listings that mention the words. That check covered sales-i alone. We have not separately verified whether Pronto Xi is listed under its own name, so treat that one as unconfirmed."
    },
    {
      "q": "Should a sales-i migration use the HubSpot import screen?",
      "a": "No, for a load of this shape. The import job caps at roughly two objects at a time, so four objects with six association types becomes a chain of manual, click driven steps that cannot be repeated identically against a sandbox and then production. A scripted batch upsert can be re-run as often as you need."
    },
    {
      "q": "What should a sales-i to HubSpot migration key on?",
      "a": "A unique custom property per object, holding the source identifier. Companies key on the account number, contacts on the contact identifier, deals on the opportunity identifier. Every HubSpot object including the company supports a property marked unique, which is what makes an idempotent upsert possible without a search and create workaround."
    },
    {
      "q": "What happens to sales-i contacts with no email or a shared one?",
      "a": "They survive, because email is not the key. A large share of contacts in a distributor's export carry no email at all, and a smaller set share one branch address between many people. The first owner keeps the email field, the rest keep theirs in a separate property, and nobody is merged or dropped."
    },
    {
      "q": "Can sales-i call notes be upserted into HubSpot?",
      "a": "No. HubSpot activities have no unique property, so a call cannot be upserted on an external identifier the way a company can. The loader creates calls and deduplicates against a map of what is already in the portal, which means the fields have to be right on the first production run because a call cannot be corrected afterwards."
    },
    {
      "q": "What does sales-i hold that Pronto Xi does not?",
      "a": "Almost nothing, and that is the point. sales-i is a sales intelligence layer that reads the ERP data a distributor already has, so an export from it is effectively a snapshot of the ERP with a sales view on top. Order and line history, the product catalogue, live inventory and account pricing stay in the ERP and need their own feed."
    },
    {
      "q": "How do you re-run a sales-i migration without creating duplicates?",
      "a": "By keying every object on its source identifier and stamping each record with a batch marker. An upsert re-run updates in place, so a second run reports almost nothing created and everything updated. The batch marker is also the rollback: query the cohort, archive it, fix the transform and run again."
    },
    {
      "q": "How long does a sales-i to HubSpot migration take?",
      "a": "A four object load with associations, cleanup rules and a full sandbox rehearsal takes ten to twenty hours of discovery and seventy to a hundred and fifty hours of build. Most of that time goes on the data, not the API. Profiling the export and agreeing the cleanup rules is the long pole."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect sales-i and Pronto Xi to HubSpot",
      "anchor": "#why-teams-connect-sales-i-and-pronto-xi-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#why-teams-connect-sales-i-and-pronto-xi-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Sentinel last-order dates",
      "anchor": "#sentinel-last-order-dates",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#sentinel-last-order-dates"
    },
    {
      "depth": 3,
      "text": "Invalid emails that fail a batch",
      "anchor": "#invalid-emails-that-fail-a-batch",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#invalid-emails-that-fail-a-batch"
    },
    {
      "depth": 3,
      "text": "Stage labels instead of identifiers",
      "anchor": "#stage-labels-instead-of-identifiers",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#stage-labels-instead-of-identifiers"
    },
    {
      "depth": 3,
      "text": "Calls with no timestamp or association",
      "anchor": "#calls-with-no-timestamp-or-association",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#calls-with-no-timestamp-or-association"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/sales-i-pronto-xi/#our-approach"
    }
  ],
  "caseStudies": [
    "https://apps.sectorgrowth.com/case-studies/sales-i-pronto-hubspot-migration/"
  ],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "builtBySectorGrowth": true,
  "status": "published",
  "verifiedAt": "2026-09-22",
  "updatedAt": "2026-09-25",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "sales-i | Simple, Effective Sales Intelligence Platform",
      "url": "https://www.sales-i.com/"
    },
    {
      "title": "SugarAI (formerly SugarCRM) | Precision selling platform",
      "url": "https://sugarai.com/product/sales-i/"
    },
    {
      "title": "API Integration Platform",
      "url": "https://www.pronto.net/erp-technology/api-integration-platform/"
    },
    {
      "title": "Developer Tools",
      "url": "https://www.pronto.net/erp-technology/developer-tools/"
    }
  ]
}