Skip to main content

CDN & ES6

When you use the CDN or ES6 for web environments, the Palenca API will automatically handle credential validation, multi-factor authentication, and error handling for every connection your users make.

Deployment with CDN

<script src="https://link.palenca.com/v2/index.min.js"></script>

Implementation with ES6

npm install @palenca/palenca-link
import { loadLink } from "@palenca/palenca-link";

Configuration parameters (mandatory)

ParameterExampleDescriptionOrder
publicApiKeypublic_6187344f-d2e9-4ff1-a0ca-7a1ad512682dpublic API key1
widgetIdc379afec-8d47-4fcf-ae07-353093baed2bWidget ID2

Example

const linkPromise = loadLink('public_6187344f-d2e9-4ff1-a0ca-7a1ad512682d', 'c379afec-8d47-4fcf-ae07-353093baed2b');

Optional parameters

ParameterExampleDescription
externalId6187344f-d2e9-4ff1-a0ca-7a1ad512682dExternal user identifier
isSandboxtrueIf set to true, sandbox mode is enabled. false by default
platforms['uber', 'rappi', 'runa']Matrix of platforms that the user can select
countries['mx', 'br', 'ar']User-selectable comma-separated alpha-2 country codes
redirectUrlhttps://domain.com/step-2URL to which the user should be redirected
customPrivacyUrlhttps://domain.com/privacyAllows you to add a custom privacy terms checkbox, useful if you need custom consent
whatsAppPhoneNumber+525511223344Phone number with country code to receive WhatsApp messages from users
hideLogofalseIf set to true, your company logo is hidden. false by default
hideWhatsAppfalseIf set to true, the floating WhatsApp button is hidden. false by default
hideConsentfalseIf set to true, the consent page is hidden. false by default
langesReplaces the language automatically detected by the browser. Available languages: es, en and pt. null by default

Visual styles parameters

ParameterExampleDescription
primaryColor#1F5BC0Hexadecimal Color, Hexadecimal color values are supported in all browsers
borderRadius10pxThe border-radius property defines the radius of the corners of the element
fontFamilyRobotThe font-family property specifies the font for PalencaLink, it only supports Google Fonts

Templates

TemplateFontColorBorder radius
BlackLato#0000000px
DefaultPoppins#1F5BC010px
NatureLato#0000000px

Events

The only way to communicate with the Palenca Link is by listening to an event. All events have a payload with the API envelope.

The following table shows all the Palenca Link events:

EventDescription
readyIndicates that your public API key and Widget are correct and that the widget has sgone initialized
user_createdThe user was created successfully
connection_successThe user successfully connected to the platform
connection_errorAn error occurred while trying to connect a user to the platform

Envelope for events

The envelope is always the same with the following structure:

{
"success": bool,
"data": Data Object,
"error": Error Object
}

Examples of events

ready

{
"success": true,
"data": null,
"error": null
}

user_created

{
"success": true,
"data": {
"user_id": "054d0a9d-38ec-40cb-a31c-09b483242e4a",
"external_id": "4a0e32bd-c3df-4172-a89d-f173d6816926",
"widget_id": "feecb679-a3cc-47ef-8fd4-600799f12a39"
},
"error": null
}

connection_success

{
"success": true,
"data": {
"user_id": "054d0a9d-38ec-40cb-a31c-09b483242e4a",
"country": "mx",
"platform": "imss",
"account_id": "472f02e8-6b24-43a7-b529-3f71d6ecc81c"
},
"error": null
}

connection_error

{
"success": false,
"mistake": {
"code": "invalid_credentials",
"message": "The username/password combination is wrong",
"errors": null
},
"data": null
}

Standalone

Available methods

MethodDescriptionParams
onTo add subscriptions to the event listenerevent: string, callback: Function
renderTo render the widgetcontainerId: string, config: object
destroyTo remove the iframe and event listenersN/A
<div id="container"></div>
   let widgetId = "YOUR_WIDGET_ID";
let publicApiKey = "YOUR_PUBLIC_API_KEY";
let renderConfig = {
"configuration": {
"hideConsent": true,
"countries": "mx"
},
appearance: {
primaryColor: "#ea4c89",
borderRadius: "9999px"
}
}

let link = palenca.loadLink(publicApiKey, widgetId).then(link => {

link.on("ready", () => {
console.log("Widget is ready")
})

link.on("user_created", (event) => {
console.log("User created", event)
})

link.on("connection_success", (event) => {
console.log(`Connection success for userId ${event.data.user_id} and accountId ${event.data.account_id}`)
})

link.on("connection_error", (event) => {
console.log(`Connection error ${event.data.error.code}`)
})

link.render("container", renderConfig);

// You can destroy the iframe and event listeners with the destroy method
window.addEventListener('unload', () => {
link.destroy()
})

}, error => {
console.log(error);
})

React

import { loadLink, PalencaLinkReact } from '@palenca/palenca-link';
import { useCallback } from 'react';

// Make sure to call `loadLink` outside of a component’s render to avoid recreating the object
const linkPromise = loadLink('YOUR_PUBLIC_API_KEY', 'YOUR_WIDGET_ID');

const Home = () => {
const handleEvent = useCallback((event: string, data: object) => {
console.log(event);
console.log(data)
}, []);

const options = {
configuration: {
hideConsent: true,
countries: ['mx'],
},
appearance: {
primaryColor: '#ea4c89',
borderRadius: '999px',
},
};

return (
<div>
<PalencaLinkReact
link={linkPromise}
options={options}
onEvent={handleEvent}
/>
</div>
);
};

export defaultHome;