Angular

Servicio inyectable que carga el loader y sincroniza la identidad.

Antes de empezar

  • Angular 16 o superior

Opción simple: index.html

Si no necesitás identificar usuarios, alcanza con el snippet en src/index.html.

src/index.html
<script>  window.TinkaySettings = { token: "pk_live_xxx" };</script><script src="https://cdn.tinkay.app/widget.js" async></script>

Servicio inyectable

tinkay.service.ts
import { Injectable } from "@angular/core";declare global {  interface Window {    Tinkay?: { open(): void; close(): void; identify(a: Record<string, unknown>): void };    TinkaySettings?: { token: string };  }}@Injectable({ providedIn: "root" })export class TinkayService {  private loaded = false;  load(token: string) {    if (this.loaded) return;    this.loaded = true;    window.TinkaySettings = { token };    const s = document.createElement("script");    s.src = "https://cdn.tinkay.app/widget.js";    s.async = true;    document.body.appendChild(s);  }  identify(attrs: Record<string, unknown>) {    window.Tinkay?.identify(attrs);  }  open() {    window.Tinkay?.open();  }}

Verificar la instalación

Entrá a Configuración, Instalación en tu workspace, pegá la URL pública del sitio y tocá Probar instalación. Tinkay busca el script y valida que el dominio esté permitido.

  1. Abrí tu sitio en una pestaña nueva y confirmá que aparece el botón flotante.
  2. En la consola del navegador, escribí window.Tinkay y verificá que devuelve un objeto.
  3. Escribí un mensaje de prueba y confirmá que llega al Inbox.

Errores frecuentes

  • El widget no aparece: el dominio no está en Configuración, Dominios. Agregalo y recargá.
  • Aparece en desarrollo pero no en producción: agregá también el dominio de producción, incluida la variante con www.
  • Content Security Policy: permití https://cdn.tinkay.app en script-src y https://app.tinkay.app en frame-src y connect-src.

Cómo saber que quedó bien

  • El botón aparece tras el arranque de la app
  • `identify` corre al iniciar sesión