# Send leads to Epicor > A chat lead becomes a customer, in Kinetic or in Prophet 21. Source: https://welcomeai.dev/docs/epicor Category: ERP Updated: 2026-09-12 --- Epicor is one connection covering two products with two different APIs. Pick which one you run and the rest of the form changes with the answer. | | Kinetic | Prophet 21 | | --- | --- | --- | | Writes through | REST v2, OData | the P21 middleware | | Signs in with | an API key **and** a user | a user, traded for a token | | URL carries | your company id | nothing extra | **Both run on your own server**, so the address is a field and reachability is yours. ## Kinetic wants both halves This is the detail worth knowing before you start. Kinetic's REST v2 refuses a request that carries an API key without an authentication, and refuses one that carries an authentication without an API key -- and the two refusals read differently. A perfectly good user with no key looks like a bad password. So both fields are required on the connect form and checked before anything is saved. You need: - The **server address**, including the instance path, like `https://erp.example.com/KineticProd`. - The **company id**, because REST v2's URLs are scoped to one company. - An **API key**, from the Epicor API application registration. - A **user** that may create customers, and its password. ## Prophet 21 signs in first Prophet 21 has no API key. It trades the user and password for a token at `/api/security/token` and carries that token on the call that follows. The exchange happens per send, so there is nothing to refresh and nothing stored beyond the user itself. You need the **server address** and the **user**. ## Connect and route 1. In **Destinations**, connect Epicor and choose the product. 2. Paste the values. We verify with one call: for Kinetic a read that proves the key, the user and the company at once, for Prophet 21 the sign-in. 3. Create a **route** -- which leads it takes. 4. **Map the fields.** Name, email, phone and the address parts. ## What gets sent A curated set of customer fields rather than everything the service exposes. `Erp.BO.CustomerSvc` carries hundreds of columns, most of which mean nothing outside a warehouse, and a mapper that offers all of them is a mapper nobody finishes. **A customer needs a name.** One is filled in from the email when the mapping leaves it out. For Kinetic the company id is added to the record as well as to the URL, so a customer never lands in a company nobody meant. ## Common errors A 401 on Kinetic with a user you know is right almost always means the API key is missing, wrong, or registered to a different application. Check that first. On Prophet 21, a sign-in that answers 200 with no token in the body is treated as a failure rather than as a success -- calling on without a token would produce a confusing refusal one step later. Which endpoints your P21 exposes depends on the middleware version installed. ## What it does not do It creates a customer. It does not update one, does not deduplicate, and does not create orders, quotes or contacts. Those are on the list. **This has not been measured against a live system.** Both products run on customer hardware, so there was no host to test against. It is written against Epicor's own documentation of the two APIs, and the first connection is the first measurement.