{"_id":"@capawesome/capacitor-crisp","_rev":"5-7d609a7d92ee71adc88eb197dcebb872","name":"@capawesome/capacitor-crisp","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"@capawesome/capacitor-crisp","version":"0.0.1","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-crisp@0.0.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"1f9b7428d45318f0765d5b1a53202ca1d95af88e","tarball":"https://registry.npmjs.org/@capawesome/capacitor-crisp/-/capacitor-crisp-0.0.1.tgz","fileCount":68,"integrity":"sha512-cgDgUWbL6Pmn11k9ok/h2eEqF7TyA4tCOFxwgSenWnpRvPDrImcKl+w4u7HlIRHMRQ4/69jm4uIofK67txkSqA==","signatures":[{"sig":"MEUCIFvleGdB2d0EuMjAA3QAqAOyHknPi2zgewk8HJrEYX6iAiEA45HYEUMVUCdRw1/mdj+WNcUd/+bg+jAfXUpExtWzVGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230958},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"691c6a81b477efcb3ce937d7f80bb3d4fd1fe4a1","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api CrispPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.13.0","description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","crisp-sdk-web":"1.2.0","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"crisp-sdk-web":"^1.2.0","@capacitor/core":">=8.0.0"},"peerDependenciesMeta":{"crisp-sdk-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/capacitor-crisp_0.0.1_1783839186172_0.03221217015731859","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@capawesome/capacitor-crisp","version":"0.1.0","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-crisp@0.1.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"8d8bf689d372a61e5db301cb38690a443162ace3","tarball":"https://registry.npmjs.org/@capawesome/capacitor-crisp/-/capacitor-crisp-0.1.0.tgz","fileCount":68,"integrity":"sha512-dZTDxA0Sz/SEEdN9FEOaxaP3vM6tYN8JXVK+hMFoV6llrWmhmgYTuPcOb0w4hdCGvq63iQcjNtwj3lbXggDXmQ==","signatures":[{"sig":"MEUCIQDfrJGw6mBF1HVziPLJ0QXzEYMq05LE6cpuznLjZtLd7gIgGvPfEAeHGEV4zU5T7Ps/scrXFdIAFz2JdRKaySYJY44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-crisp@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230958},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"1ce17b1fd14c43b2f1d5d3c2da82221e1d1dca37","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api CrispPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76672089-14d7-486b-943d-0b3788744b07"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","crisp-sdk-web":"1.2.0","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"crisp-sdk-web":"^1.2.0","@capacitor/core":">=8.0.0"},"peerDependenciesMeta":{"crisp-sdk-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/capacitor-crisp_0.1.0_1784015518471_0.34965142622021683","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capawesome/capacitor-crisp","version":"0.1.1","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-crisp@0.1.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"0cc6a661c54e4c15387d354933bad3e3de0c97a7","tarball":"https://registry.npmjs.org/@capawesome/capacitor-crisp/-/capacitor-crisp-0.1.1.tgz","fileCount":68,"integrity":"sha512-j1ToTOTlYrCKe1uPhOud2xPBA1P0PsL6GjmTvBkLmhNeH03+zDlb6Xu4pyATUCSQa0Sw/g90I7xTuGIo+WoeFQ==","signatures":[{"sig":"MEYCIQD6pz/QSLRUnLuMMj50vEP/cq8sXNgvaQMQThbDxpiZsQIhAIT1Lv3niDKHDLADON8wSsiju8vDLsxqJ1JY8su0wqxa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-crisp@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231412},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"7c1937ed10b7de86ca2c1cdc3539a2735fd69a00","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api CrispPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76672089-14d7-486b-943d-0b3788744b07"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.17.0","description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","directories":{},"_nodeVersion":"24.19.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3","crisp-sdk-web":"1.2.0","@capacitor/cli":"8.4.2","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.9.7"},"peerDependencies":{"crisp-sdk-web":"^1.2.0","@capacitor/core":">=8.0.0"},"peerDependenciesMeta":{"crisp-sdk-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/capacitor-crisp_0.1.1_1788337330325_0.0865197846137491","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@capawesome/capacitor-crisp","version":"0.1.2","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-crisp@0.1.2","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"bf4f3a0f06198e016c0575331f360ce4fa31fa1c","tarball":"https://registry.npmjs.org/@capawesome/capacitor-crisp/-/capacitor-crisp-0.1.2.tgz","fileCount":68,"integrity":"sha512-WyiWM0lWI1pmqdWAKwzflEkgb0No1IKZGswwiSCJ7TO7elbiHM5qeFqj217I1E6f8RNZFYlnzFtRRVnVJql6ww==","signatures":[{"sig":"MEUCIB9ftXUvu/usuSDmMH4MvmYSL7l3n6bfKLZb1GVZO4m+AiEAxXOtvNNJyzN2x9Iwk3+5FsUhMeTClX+odChG+SzIxSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-crisp@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236654},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"67a29d24e4ee9cf112a2bcb234a59b2e28e8d3f1","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api CrispPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76672089-14d7-486b-943d-0b3788744b07"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.17.0","description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","directories":{},"_nodeVersion":"24.19.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3","crisp-sdk-web":"1.2.0","@capacitor/cli":"8.4.2","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.9.7"},"peerDependencies":{"crisp-sdk-web":"^1.2.0","@capacitor/core":">=8.0.0"},"peerDependenciesMeta":{"crisp-sdk-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/capacitor-crisp_0.1.2_1788525801635_0.4724770434322596","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"_id":"@capawesome/capacitor-crisp@0.1.3","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"2919f8f420b10c450c6011c6a45e721696f19789","tarball":"https://registry.npmjs.org/@capawesome/capacitor-crisp/-/capacitor-crisp-0.1.3.tgz","fileCount":68,"integrity":"sha512-40p+UD62lL6rcjwJAeXhvNFg1XcqFCTCWCQh0JfrH56OhrKblYkJQEZZg5grtNVElS5gDg+d+UHzzXW3+Be+Dg==","signatures":[{"sig":"MEUCIQDOEomvRIOi/1yoXY4aM9nU5Yv8hipIM2qfJLFGDkL2owIgGwIahSPMCwWjLGQ/Zrbvx/fJDLfUizOjq8lm/5W+Nc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDm7M6pgWNz5H4u03Cr5fcFnak6NdQVqz8QoLJEwkgbFAIgY/L7J1bzKSH0N/WA8ZZZNTCF2vQAdKeoKfnB3mu3Ix8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-crisp@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236669},"main":"dist/plugin.cjs.js","name":"@capawesome/capacitor-crisp","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"561d36edf0573902ad46867a37062df3744cf090","license":"MIT","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api CrispPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"version":"0.1.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76672089-14d7-486b-943d-0b3788744b07"}},"homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.19.0","description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","directories":{},"maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"_nodeVersion":"24.20.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3","crisp-sdk-web":"1.2.0","@capacitor/cli":"8.4.2","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.9.7"},"peerDependencies":{"crisp-sdk-web":"^1.2.0","@capacitor/core":">=8.0.0"},"peerDependenciesMeta":{"crisp-sdk-web":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-crisp_0.1.3_1789067331111_0.7645143296402124"}}},"time":{"created":"2026-07-12T06:53:06.021Z","modified":"2026-09-10T19:08:51.558Z","0.0.1":"2026-07-12T06:53:06.321Z","0.1.0":"2026-07-14T07:51:58.652Z","0.1.1":"2026-09-02T08:22:10.453Z","0.1.2":"2026-09-04T12:43:21.786Z","0.1.3":"2026-09-10T19:08:51.190Z"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","homepage":"https://capawesome.io/docs/sdks/capacitor/crisp/","keywords":["capacitor","plugin","native","capacitor-plugin","crisp","chat","live chat","customer support","helpdesk","messaging"],"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"description":"Unofficial Capacitor plugin for Crisp on Android, iOS, and Web.","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"readme":"# Capacitor Crisp Plugin\n\nUnofficial Capacitor plugin for [Crisp](https://crisp.chat/).[^1]\n\n<div class=\"capawesome-z29o10a\">\n  <a href=\"https://cloud.capawesome.io/\" target=\"_blank\">\n    <img alt=\"Deliver Live Updates to your Capacitor app with Capawesome Cloud\" src=\"https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1\" />\n  </a>\n</div>\n\n## Features\n\nThe Capacitor Crisp plugin is a comprehensive integration of the Crisp chat SDKs for Capacitor apps. Here are some of the key features:\n\n- 🖥️ **Cross-platform**: Supports Android, iOS, and Web.\n- 💬 **Chatbox**: Open the Crisp chatbox with a single method call.\n- 👤 **User Identity**: Set the user's email, nickname, phone number, avatar, and company.\n- 🔐 **Identity Verification**: Verify the user's identity with an HMAC-SHA256 email signature.\n- 🧩 **Session Data**: Attach custom data, segments, and events to the session.\n- 📚 **Helpdesk**: Open the helpdesk search or a specific helpdesk article.\n- 🔔 **Push Notifications**: Interoperate with Firebase Cloud Messaging (Android) and APNs (iOS).\n- 📡 **Typed Events**: Listen for chat, message, and session events with typed listeners.\n- 🌐 **Typed Web SDK**: Uses the official `crisp-sdk-web` package on the web.\n- 🤝 **Compatibility**: Looking for a different chat SDK? Check out the [Intercom](https://capawesome.io/docs/sdks/capacitor/intercom/) plugin.\n- 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.\n- 🔁 **Up-to-date**: Always supports the latest Capacitor version.\n\nMissing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!\n\n## Use Cases\n\nThe Crisp plugin is typically used wherever you want to offer live chat and customer support inside your app, for example:\n\n- **Customer support**: Let users chat with your support team directly from within the app.\n- **User identification**: Attach the signed-in user's email, name, and company to every conversation.\n- **Self-service**: Point users to helpdesk articles without leaving the app.\n- **Contextual data**: Enrich conversations with session data, segments, and events based on user behavior.\n- **Re-engagement**: Notify users about new operator replies via push notifications.\n\n## Compatibility\n\n| Plugin Version | Capacitor Version | Status         |\n| -------------- | ----------------- | -------------- |\n| 0.x.x          | >=8.x.x           | Active support |\n\n## Installation\n\nYou can use our **AI-Assisted Setup** to install the plugin.\nAdd the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:\n\n```bash\nnpx skills add capawesome-team/skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```\nUse the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-crisp` plugin in my project.\n```\n\nIf you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\nnpm install @capawesome/capacitor-crisp crisp-sdk-web\nnpx cap sync\n```\n\nThis plugin requires a [Crisp](https://crisp.chat/) account. You can find your **Website ID** in the Crisp dashboard under **Settings → Website Settings → Setup & Integrations**.\n\n### Android\n\n#### Variables\n\nThis plugin will use the following project variables (defined in your app's `variables.gradle` file):\n\n- `$crispSdkVersion` version of `im.crisp:crisp-sdk` (default: `2.0.22`)\n- `$firebaseMessagingVersion` version of `com.google.firebase:firebase-messaging` (default: `24.1.1`)\n\n#### Minimum SDK Version\n\nThe Crisp Android SDK requires a minimum SDK version of `24`. Make sure the `minSdkVersion` in your app's `variables.gradle` file is set to `24` or higher.\n\n#### Multidex\n\nThe Crisp Android SDK requires [multidex](https://developer.android.com/build/multidex) to be enabled. Enable it in your app's `android/app/build.gradle` file:\n\n```groovy\nandroid {\n  defaultConfig {\n    multiDexEnabled true\n  }\n}\n```\n\n#### FileProvider\n\nThe Crisp Android SDK ships its own `FileProvider` (used for chat attachments) with the authority `${applicationId}.im.crisp.client.uploadfileprovider`. This authority is merged automatically and does not conflict with your app's own `FileProvider`, so no additional configuration is required.\n\n#### Push Notifications\n\nPush notifications on Android are delivered through [Firebase Cloud Messaging (FCM)](https://firebase.google.com/docs/cloud-messaging). There are two ways to integrate them:\n\n**Option A — Crisp's own notification service (zero-config)**\n\nIf your app does not use its own `FirebaseMessagingService`, add the following service to the `application` tag of your `android/app/src/main/AndroidManifest.xml` file:\n\n```xml\n<service\n  android:name=\"im.crisp.client.external.notification.CrispNotificationService\"\n  android:exported=\"false\">\n  <intent-filter>\n    <action android:name=\"com.google.firebase.MESSAGING_EVENT\" />\n  </intent-filter>\n</service>\n```\n\n**Option B — Share an existing `FirebaseMessagingService`**\n\nIf your app already receives push notifications (e.g. via [`@capacitor-firebase/messaging`](https://github.com/capawesome-team/capacitor-firebase)), forward incoming messages to Crisp from your JavaScript code:\n\n```typescript\nimport { FirebaseMessaging } from '@capacitor-firebase/messaging';\nimport { Crisp } from '@capawesome/capacitor-crisp';\n\nFirebaseMessaging.addListener('notificationReceived', async ({ notification }) => {\n  const data = notification.data ?? {};\n  const { crisp } = await Crisp.isCrispPushNotification({ data });\n  if (crisp) {\n    await Crisp.handlePushNotification({ data });\n  }\n});\n```\n\nYou can enable or disable Crisp push notifications at runtime with `setNotificationsEnabled(...)`.\n\n### iOS\n\nThe Crisp iOS SDK can be integrated via Swift Package Manager (recommended) or CocoaPods.\n\n> [!NOTE]\n> Crisp will stop publishing new CocoaPods releases in September 2026. We recommend using Swift Package Manager. If your app still uses CocoaPods, plan to migrate to Swift Package Manager before then.\n\n#### Info.plist\n\nThe Crisp chatbox lets users send image and file attachments. Add the following keys to your `ios/App/App/Info.plist` file so users can attach photos:\n\n```xml\n<key>NSCameraUsageDescription</key>\n<string>The app needs access to your camera to send photos in the chat.</string>\n<key>NSPhotoLibraryAddUsageDescription</key>\n<string>The app needs access to your photo library to send photos in the chat.</string>\n```\n\n#### Push Notifications\n\nPush notifications on iOS are delivered through [Apple Push Notification service (APNs)](https://developer.apple.com/documentation/usernotifications):\n\n1. Enable the **Push Notifications** capability for your app target in Xcode.\n2. Register for remote notifications (e.g. via [`@capacitor-firebase/messaging`](https://github.com/capawesome-team/capacitor-firebase) or `@capacitor/push-notifications`).\n\nThe plugin automatically forwards the APNs device token to Crisp once your app has registered for remote notifications, so no additional token handling is required.\n\nUse `setShouldPromptForNotificationPermission(...)` to control whether the Crisp SDK prompts the user for the notification permission.\n\n### Web\n\nThe web implementation loads the Crisp chatbox from Crisp's CDN at runtime. This requires an active network connection. If your app enforces a [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), make sure to allow the Crisp domains (e.g. `client.crisp.chat`, `*.crisp.chat`, and `wss://*.relay.crisp.chat`).\n\n## Configuration\n\nNo configuration required for this plugin.\n\n## Usage\n\nThe following examples show how to use the plugin.\n\n### Configure the plugin\n\nCall `configure(...)` once before all other methods:\n\n```typescript\nimport { Crisp } from '@capawesome/capacitor-crisp';\n\nconst configure = async () => {\n  await Crisp.configure({\n    websiteId: 'YOUR_WEBSITE_ID',\n  });\n};\n```\n\n### Open the chat\n\nOpen the Crisp chatbox:\n\n```typescript\nimport { Crisp } from '@capawesome/capacitor-crisp';\n\nconst openChat = async () => {\n  await Crisp.openChat();\n};\n```\n\n### Set the user\n\nSet the information of the current user, optionally with identity verification:\n\n```typescript\nimport { Crisp } from '@capawesome/capacitor-crisp';\n\nconst setUser = async () => {\n  await Crisp.setUser({\n    email: 'jane.doe@example.com',\n    emailSignature: 'YOUR_HMAC_SIGNATURE',\n    nickname: 'Jane Doe',\n  });\n};\n```\n\n### Attach session data\n\nAttach custom data, segments, and events to the current session:\n\n```typescript\nimport { Crisp, SessionEventColor } from '@capawesome/capacitor-crisp';\n\nconst attachSessionData = async () => {\n  await Crisp.setSessionString({ key: 'plan', value: 'pro' });\n  await Crisp.setSessionSegment({ segment: 'checkout' });\n  await Crisp.pushSessionEvent({ name: 'purchase', color: SessionEventColor.Green });\n};\n```\n\n### Listen for events\n\nListen for chat, message, and session events:\n\n```typescript\nimport { Crisp } from '@capawesome/capacitor-crisp';\n\nconst addListeners = async () => {\n  await Crisp.addListener('sessionLoaded', ({ sessionId }) => {\n    console.log('Session loaded:', sessionId);\n  });\n  await Crisp.addListener('messageReceived', ({ content }) => {\n    console.log('Message received:', content);\n  });\n};\n```\n\n## API\n\n<docgen-index>\n\n* [`configure(...)`](#configure)\n* [`handlePushNotification(...)`](#handlepushnotification)\n* [`isCrispPushNotification(...)`](#iscrisppushnotification)\n* [`openChat()`](#openchat)\n* [`openHelpdeskArticle(...)`](#openhelpdeskarticle)\n* [`pushSessionEvent(...)`](#pushsessionevent)\n* [`resetSession()`](#resetsession)\n* [`searchHelpdesk()`](#searchhelpdesk)\n* [`setCompany(...)`](#setcompany)\n* [`setLocale(...)`](#setlocale)\n* [`setNotificationsEnabled(...)`](#setnotificationsenabled)\n* [`setSessionBool(...)`](#setsessionbool)\n* [`setSessionInt(...)`](#setsessionint)\n* [`setSessionSegment(...)`](#setsessionsegment)\n* [`setSessionString(...)`](#setsessionstring)\n* [`setShouldPromptForNotificationPermission(...)`](#setshouldpromptfornotificationpermission)\n* [`setTokenId(...)`](#settokenid)\n* [`setUser(...)`](#setuser)\n* [`addListener('chatClosed', ...)`](#addlistenerchatclosed-)\n* [`addListener('chatOpened', ...)`](#addlistenerchatopened-)\n* [`addListener('messageReceived', ...)`](#addlistenermessagereceived-)\n* [`addListener('messageSent', ...)`](#addlistenermessagesent-)\n* [`addListener('sessionLoaded', ...)`](#addlistenersessionloaded-)\n* [`removeAllListeners()`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### configure(...)\n\n```typescript\nconfigure(options: ConfigureOptions) => Promise<void>\n```\n\nConfigure the plugin with your Crisp website ID.\n\nThis method must be called before any other method.\n\n| Param         | Type                                                          |\n| ------------- | ------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#configureoptions\">ConfigureOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### handlePushNotification(...)\n\n```typescript\nhandlePushNotification(options: HandlePushNotificationOptions) => Promise<void>\n```\n\nHandle an incoming push notification that belongs to Crisp.\n\nUse `isCrispPushNotification(...)` to check whether the notification\nbelongs to Crisp before calling this method.\n\nOnly available on Android.\n\n| Param         | Type                                                                                    |\n| ------------- | --------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#handlepushnotificationoptions\">HandlePushNotificationOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### isCrispPushNotification(...)\n\n```typescript\nisCrispPushNotification(options: IsCrispPushNotificationOptions) => Promise<IsCrispPushNotificationResult>\n```\n\nCheck whether an incoming push notification belongs to Crisp.\n\nOnly available on Android.\n\n| Param         | Type                                                                                      |\n| ------------- | ----------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#iscrisppushnotificationoptions\">IsCrispPushNotificationOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#iscrisppushnotificationresult\">IsCrispPushNotificationResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### openChat()\n\n```typescript\nopenChat() => Promise<void>\n```\n\nOpen the chat.\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### openHelpdeskArticle(...)\n\n```typescript\nopenHelpdeskArticle(options: OpenHelpdeskArticleOptions) => Promise<void>\n```\n\nOpen a specific helpdesk article.\n\n| Param         | Type                                                                              |\n| ------------- | --------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#openhelpdeskarticleoptions\">OpenHelpdeskArticleOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### pushSessionEvent(...)\n\n```typescript\npushSessionEvent(options: PushSessionEventOptions) => Promise<void>\n```\n\nPush a session event to the current session.\n\n| Param         | Type                                                                        |\n| ------------- | --------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#pushsessioneventoptions\">PushSessionEventOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### resetSession()\n\n```typescript\nresetSession() => Promise<void>\n```\n\nReset the current session.\n\nThis clears the current session and starts a new one on the next\ninteraction.\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### searchHelpdesk()\n\n```typescript\nsearchHelpdesk() => Promise<void>\n```\n\nOpen the helpdesk with the search view.\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setCompany(...)\n\n```typescript\nsetCompany(options: SetCompanyOptions) => Promise<void>\n```\n\nSet the company of the current user.\n\n| Param         | Type                                                            |\n| ------------- | --------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setcompanyoptions\">SetCompanyOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setLocale(...)\n\n```typescript\nsetLocale(options: SetLocaleOptions) => Promise<void>\n```\n\nSet the locale of the chatbox.\n\nOn Android and iOS, the chatbox follows the language of the app.\n\nOnly available on Web.\n\n| Param         | Type                                                          |\n| ------------- | ------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setlocaleoptions\">SetLocaleOptions</a></code> |\n\n**Since:** 0.1.2\n\n--------------------\n\n\n### setNotificationsEnabled(...)\n\n```typescript\nsetNotificationsEnabled(options: SetNotificationsEnabledOptions) => Promise<void>\n```\n\nEnable or disable push notifications.\n\nOnly available on Android.\n\n| Param         | Type                                                                                      |\n| ------------- | ----------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setnotificationsenabledoptions\">SetNotificationsEnabledOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setSessionBool(...)\n\n```typescript\nsetSessionBool(options: SetSessionBoolOptions) => Promise<void>\n```\n\nSet a boolean value for the given key in the current session.\n\n| Param         | Type                                                                    |\n| ------------- | ----------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setsessionbooloptions\">SetSessionBoolOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setSessionInt(...)\n\n```typescript\nsetSessionInt(options: SetSessionIntOptions) => Promise<void>\n```\n\nSet an integer value for the given key in the current session.\n\n| Param         | Type                                                                  |\n| ------------- | --------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setsessionintoptions\">SetSessionIntOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setSessionSegment(...)\n\n```typescript\nsetSessionSegment(options: SetSessionSegmentOptions) => Promise<void>\n```\n\nSet the segment of the current session.\n\n| Param         | Type                                                                          |\n| ------------- | ----------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setsessionsegmentoptions\">SetSessionSegmentOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setSessionString(...)\n\n```typescript\nsetSessionString(options: SetSessionStringOptions) => Promise<void>\n```\n\nSet a string value for the given key in the current session.\n\n| Param         | Type                                                                        |\n| ------------- | --------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setsessionstringoptions\">SetSessionStringOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setShouldPromptForNotificationPermission(...)\n\n```typescript\nsetShouldPromptForNotificationPermission(options: SetShouldPromptForNotificationPermissionOptions) => Promise<void>\n```\n\nSet whether the user should be prompted for the notification permission.\n\nOnly available on iOS.\n\n| Param         | Type                                                                                                                        |\n| ------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setshouldpromptfornotificationpermissionoptions\">SetShouldPromptForNotificationPermissionOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setTokenId(...)\n\n```typescript\nsetTokenId(options: SetTokenIdOptions) => Promise<void>\n```\n\nSet the token ID of the current user.\n\nThe token ID is used to restore a session across devices and logins.\nYou may also set it directly via `configure(...)`.\n\n| Param         | Type                                                            |\n| ------------- | --------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#settokenidoptions\">SetTokenIdOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### setUser(...)\n\n```typescript\nsetUser(options: SetUserOptions) => Promise<void>\n```\n\nSet the information of the current user.\n\n| Param         | Type                                                      |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setuseroptions\">SetUserOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### addListener('chatClosed', ...)\n\n```typescript\naddListener(eventName: 'chatClosed', listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\nCalled when the chat is closed.\n\n| Param              | Type                       |\n| ------------------ | -------------------------- |\n| **`eventName`**    | <code>'chatClosed'</code>  |\n| **`listenerFunc`** | <code>() =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### addListener('chatOpened', ...)\n\n```typescript\naddListener(eventName: 'chatOpened', listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\nCalled when the chat is opened.\n\n| Param              | Type                       |\n| ------------------ | -------------------------- |\n| **`eventName`**    | <code>'chatOpened'</code>  |\n| **`listenerFunc`** | <code>() =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### addListener('messageReceived', ...)\n\n```typescript\naddListener(eventName: 'messageReceived', listenerFunc: (event: MessageReceivedEvent) => void) => Promise<PluginListenerHandle>\n```\n\nCalled when a message is received from the operator.\n\n| Param              | Type                                                                                      |\n| ------------------ | ----------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code>'messageReceived'</code>                                                            |\n| **`listenerFunc`** | <code>(event: <a href=\"#messagereceivedevent\">MessageReceivedEvent</a>) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### addListener('messageSent', ...)\n\n```typescript\naddListener(eventName: 'messageSent', listenerFunc: (event: MessageSentEvent) => void) => Promise<PluginListenerHandle>\n```\n\nCalled when a message is sent by the user.\n\n| Param              | Type                                                                              |\n| ------------------ | --------------------------------------------------------------------------------- |\n| **`eventName`**    | <code>'messageSent'</code>                                                        |\n| **`listenerFunc`** | <code>(event: <a href=\"#messagesentevent\">MessageSentEvent</a>) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### addListener('sessionLoaded', ...)\n\n```typescript\naddListener(eventName: 'sessionLoaded', listenerFunc: (event: SessionLoadedEvent) => void) => Promise<PluginListenerHandle>\n```\n\nCalled when the session is loaded.\n\nThis is also the recommended way to get the session ID.\n\n| Param              | Type                                                                                  |\n| ------------------ | ------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code>'sessionLoaded'</code>                                                          |\n| **`listenerFunc`** | <code>(event: <a href=\"#sessionloadedevent\">SessionLoadedEvent</a>) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() => Promise<void>\n```\n\nRemove all listeners for this plugin.\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### ConfigureOptions\n\n| Prop            | Type                | Description                           | Since |\n| --------------- | ------------------- | ------------------------------------- | ----- |\n| **`tokenId`**   | <code>string</code> | The token ID of the current user.     | 0.1.0 |\n| **`websiteId`** | <code>string</code> | The website ID of your Crisp website. | 0.1.0 |\n\n\n#### HandlePushNotificationOptions\n\n| Prop       | Type                                       | Description                        | Since |\n| ---------- | ------------------------------------------ | ---------------------------------- | ----- |\n| **`data`** | <code>Record&lt;string, unknown&gt;</code> | The data of the push notification. | 0.1.0 |\n\n\n#### IsCrispPushNotificationResult\n\n| Prop        | Type                 | Description                                     | Since |\n| ----------- | -------------------- | ----------------------------------------------- | ----- |\n| **`crisp`** | <code>boolean</code> | Whether the push notification belongs to Crisp. | 0.1.0 |\n\n\n#### IsCrispPushNotificationOptions\n\n| Prop       | Type                                       | Description                        | Since |\n| ---------- | ------------------------------------------ | ---------------------------------- | ----- |\n| **`data`** | <code>Record&lt;string, unknown&gt;</code> | The data of the push notification. | 0.1.0 |\n\n\n#### OpenHelpdeskArticleOptions\n\n| Prop           | Type                | Description                   | Since |\n| -------------- | ------------------- | ----------------------------- | ----- |\n| **`category`** | <code>string</code> | The category of the article.  | 0.1.0 |\n| **`id`**       | <code>string</code> | The ID (slug) of the article. | 0.1.0 |\n| **`locale`**   | <code>string</code> | The locale of the article.    | 0.1.0 |\n| **`title`**    | <code>string</code> | The title of the article.     | 0.1.0 |\n\n\n#### PushSessionEventOptions\n\n| Prop        | Type                                                            | Description             | Default                             | Since |\n| ----------- | --------------------------------------------------------------- | ----------------------- | ----------------------------------- | ----- |\n| **`color`** | <code><a href=\"#sessioneventcolor\">SessionEventColor</a></code> | The color of the event. | <code>SessionEventColor.Blue</code> | 0.1.0 |\n| **`name`**  | <code>string</code>                                             | The name of the event.  |                                     | 0.1.0 |\n\n\n#### SetCompanyOptions\n\n| Prop              | Type                                                                    | Description                                            | Since |\n| ----------------- | ----------------------------------------------------------------------- | ------------------------------------------------------ | ----- |\n| **`description`** | <code>string</code>                                                     | The description of the company.                        | 0.1.0 |\n| **`employment`**  | <code><a href=\"#setcompanyemployment\">SetCompanyEmployment</a></code>   | The employment information of the user at the company. | 0.1.0 |\n| **`geolocation`** | <code><a href=\"#setcompanygeolocation\">SetCompanyGeolocation</a></code> | The geolocation of the company.                        | 0.1.0 |\n| **`name`**        | <code>string</code>                                                     | The name of the company.                               | 0.1.0 |\n| **`url`**         | <code>string</code>                                                     | The URL of the company.                                | 0.1.0 |\n\n\n#### SetCompanyEmployment\n\n| Prop        | Type                | Description                               | Since |\n| ----------- | ------------------- | ----------------------------------------- | ----- |\n| **`role`**  | <code>string</code> | The role of the user at the company.      | 0.1.0 |\n| **`title`** | <code>string</code> | The job title of the user at the company. | 0.1.0 |\n\n\n#### SetCompanyGeolocation\n\n| Prop          | Type                | Description                 | Since |\n| ------------- | ------------------- | --------------------------- | ----- |\n| **`city`**    | <code>string</code> | The city of the company.    | 0.1.0 |\n| **`country`** | <code>string</code> | The country of the company. | 0.1.0 |\n\n\n#### SetLocaleOptions\n\n| Prop         | Type                | Description                                     | Since |\n| ------------ | ------------------- | ----------------------------------------------- | ----- |\n| **`locale`** | <code>string</code> | The locale of the chatbox as an ISO 639-1 code. | 0.1.2 |\n\n\n#### SetNotificationsEnabledOptions\n\n| Prop          | Type                 | Description                                   | Since |\n| ------------- | -------------------- | --------------------------------------------- | ----- |\n| **`enabled`** | <code>boolean</code> | Whether push notifications should be enabled. | 0.1.0 |\n\n\n#### SetSessionBoolOptions\n\n| Prop        | Type                 | Description                    | Since |\n| ----------- | -------------------- | ------------------------------ | ----- |\n| **`key`**   | <code>string</code>  | The key of the session data.   | 0.1.0 |\n| **`value`** | <code>boolean</code> | The value of the session data. | 0.1.0 |\n\n\n#### SetSessionIntOptions\n\n| Prop        | Type                | Description                    | Since |\n| ----------- | ------------------- | ------------------------------ | ----- |\n| **`key`**   | <code>string</code> | The key of the session data.   | 0.1.0 |\n| **`value`** | <code>number</code> | The value of the session data. | 0.1.0 |\n\n\n#### SetSessionSegmentOptions\n\n| Prop          | Type                | Description                 | Since |\n| ------------- | ------------------- | --------------------------- | ----- |\n| **`segment`** | <code>string</code> | The segment of the session. | 0.1.0 |\n\n\n#### SetSessionStringOptions\n\n| Prop        | Type                | Description                    | Since |\n| ----------- | ------------------- | ------------------------------ | ----- |\n| **`key`**   | <code>string</code> | The key of the session data.   | 0.1.0 |\n| **`value`** | <code>string</code> | The value of the session data. | 0.1.0 |\n\n\n#### SetShouldPromptForNotificationPermissionOptions\n\n| Prop          | Type                 | Description                                                          | Since |\n| ------------- | -------------------- | -------------------------------------------------------------------- | ----- |\n| **`enabled`** | <code>boolean</code> | Whether the user should be prompted for the notification permission. | 0.1.0 |\n\n\n#### SetTokenIdOptions\n\n| Prop          | Type                | Description                       | Since |\n| ------------- | ------------------- | --------------------------------- | ----- |\n| **`tokenId`** | <code>string</code> | The token ID of the current user. | 0.1.0 |\n\n\n#### SetUserOptions\n\n| Prop                 | Type                | Description                                                                                                                                                                                            | Since |\n| -------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`avatarUrl`**      | <code>string</code> | The URL of the user's avatar.                                                                                                                                                                          | 0.1.0 |\n| **`email`**          | <code>string</code> | The email address of the user.                                                                                                                                                                         | 0.1.0 |\n| **`emailSignature`** | <code>string</code> | The HMAC-SHA256 signature of the user's email address for identity verification. The signature must be generated on your backend using your Crisp secret key. Never expose the secret key in your app. | 0.1.0 |\n| **`nickname`**       | <code>string</code> | The nickname of the user.                                                                                                                                                                              | 0.1.0 |\n| **`phone`**          | <code>string</code> | The phone number of the user.                                                                                                                                                                          | 0.1.0 |\n\n\n#### PluginListenerHandle\n\n| Prop         | Type                                      |\n| ------------ | ----------------------------------------- |\n| **`remove`** | <code>() =&gt; Promise&lt;void&gt;</code> |\n\n\n#### MessageReceivedEvent\n\n| Prop          | Type                        | Description                                                                                                        | Since |\n| ------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`content`** | <code>string \\| null</code> | The text content of the message. This is `null` if the message has no text content (e.g. a file or audio message). | 0.1.0 |\n\n\n#### MessageSentEvent\n\n| Prop          | Type                        | Description                                                                                                        | Since |\n| ------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`content`** | <code>string \\| null</code> | The text content of the message. This is `null` if the message has no text content (e.g. a file or audio message). | 0.1.0 |\n\n\n#### SessionLoadedEvent\n\n| Prop            | Type                | Description                   | Since |\n| --------------- | ------------------- | ----------------------------- | ----- |\n| **`sessionId`** | <code>string</code> | The ID of the loaded session. | 0.1.0 |\n\n\n### Enums\n\n\n#### SessionEventColor\n\n| Members      | Value                 | Since |\n| ------------ | --------------------- | ----- |\n| **`Black`**  | <code>'BLACK'</code>  | 0.1.0 |\n| **`Blue`**   | <code>'BLUE'</code>   | 0.1.0 |\n| **`Brown`**  | <code>'BROWN'</code>  | 0.1.0 |\n| **`Green`**  | <code>'GREEN'</code>  | 0.1.0 |\n| **`Grey`**   | <code>'GREY'</code>   | 0.1.0 |\n| **`Orange`** | <code>'ORANGE'</code> | 0.1.0 |\n| **`Pink`**   | <code>'PINK'</code>   | 0.1.0 |\n| **`Purple`** | <code>'PURPLE'</code> | 0.1.0 |\n| **`Red`**    | <code>'RED'</code>    | 0.1.0 |\n| **`Yellow`** | <code>'YELLOW'</code> | 0.1.0 |\n\n</docgen-api>\n\n## Platform Support\n\nNot every Crisp SDK feature is available on all platforms. The following table lists the per-platform differences of the plugin's API:\n\n| Method                                       | Android | iOS | Web |\n| -------------------------------------------- | :-----: | :-: | :-: |\n| `setSessionBool(...)`                        |   ✅    | ✅  | ✅  |\n| `isCrispPushNotification(...)`               |   ✅    | ❌  | ❌  |\n| `handlePushNotification(...)`                |   ✅    | ❌  | ❌  |\n| `setNotificationsEnabled(...)`               |   ✅    | ❌  | ❌  |\n| `setShouldPromptForNotificationPermission(...)` |   ❌    | ✅  | ❌  |\n| `setLocale(...)`                             |   ❌    | ❌  | ✅  |\n\nOn iOS, the Crisp SDK detects and handles its own push notifications internally once the APNs device token has been forwarded, so the JavaScript `isCrispPushNotification(...)` and `handlePushNotification(...)` methods are not available there.\n\nThe Crisp Android and iOS SDKs do not provide a locale override, so the `setLocale(...)` method is only available on the web. The native chatbox follows the language of the app. To change it at runtime, change the language of the app, e.g. with the [App Language](https://capawesome.io/docs/sdks/capacitor/app-language/) plugin.\n\nThe following features of the Crisp SDKs are intentionally not part of this plugin's initial release: unread message count, bot scenarios, and audio/video calls. [Open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) if you need any of them.\n\n## FAQ\n\n### Do I need a Crisp account to use this plugin?\n\nYes. This plugin wraps the official Crisp SDKs, which require an active [Crisp](https://crisp.chat/) account and a website ID.\n\n### How is this plugin different from other similar plugins?\n\nThis plugin exposes the Crisp SDKs through a fully typed API, including a strongly typed listener for each event and dedicated helpdesk methods. Identity verification is built in through email-signature HMAC, and push notifications are handled entirely through Crisp's public API. It ships a typed web implementation alongside Android and iOS, supports Swift Package Manager ahead of the CocoaPods sunset, and stays unopinionated by never forcing an automatic show or hide of the chatbox. It is actively maintained and backed by dedicated support.\n\n### How do I get the session ID?\n\nListen for the `sessionLoaded` event. The event payload contains the `sessionId`. There is no synchronous getter, because the session is loaded asynchronously.\n\n### How does identity verification work?\n\nGenerate an HMAC-SHA256 signature of the user's email address on your backend using your Crisp secret key, then pass it as the `emailSignature` option of `setUser(...)`. Never expose your secret key in your app.\n\n### Can I use this plugin with Ionic, React, Vue or Angular?\n\nYes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.\n\n## Related Plugins\n\n- [Formbricks](https://capawesome.io/docs/sdks/capacitor/formbricks/): Unofficial Capacitor plugin for Formbricks to run in-app surveys.\n- [Intercom](https://capawesome.io/docs/sdks/capacitor/intercom/): Unofficial Capacitor plugin for the Intercom live chat and customer support platform.\n- [PostHog](https://capawesome.io/docs/sdks/capacitor/posthog/): Unofficial Capacitor plugin for the PostHog product analytics platform.\n\n## Newsletter\n\nStay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/crisp/CHANGELOG.md).\n\n## License\n\nSee [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/crisp/LICENSE).\n\n## Third-Party Notices\n\nThe Crisp Android and iOS SDKs are proprietary, closed-source binaries provided by Crisp IM SAS. This plugin only declares them as dependencies (via Maven, CocoaPods, and Swift Package Manager) and does not bundle or modify them. Using the plugin requires an active Crisp account and website ID. The MIT license of this plugin covers the wrapper code only, not the Crisp SDKs.\n\n[^1]: This project is not affiliated with, endorsed by, sponsored by, or approved by Crisp IM SAS or any of its affiliates or subsidiaries. \"Crisp\" is a trademark of Crisp IM SAS.\n","readmeFilename":"README.md"}