Support for custom websites.
Add a chat to client sites that runs a fixed flow of messages, choices and questions, hands the conversation to the team, and lands in the same Admin inbox as support email the store forwards to Arky.
Best for
- site support
- product questions
- booking questions
- post-purchase help
Use it when a client wants visitors to reach the team about products, bookings, policies, and services, by chat or by email.
What this module gives your project.
Website chat
Use this capability from your custom frontend while the operational side stays manageable in Arky admin.
Support flows
Use this capability from your custom frontend while the operational side stays manageable in Arky admin.
Receiving addresses
Use this capability from your custom frontend while the operational side stays manageable in Arky admin.
Team replies
Use this capability from your custom frontend while the operational side stays manageable in Arky admin.
One inbox
Use this capability from your custom frontend while the operational side stays manageable in Arky admin.
Custom UX with backend state managed in Arky.
- A chat that starts with a flow
- Buttons and questions from the flow
- Team replies in the chat
- A chat the visitor can resume with its history
A client-facing back office for the same module.
- One inbox for chat and email
- Flow editor
- Replies from the store's own address
- Resolution state
- Customer context
Code the frontend. Connect Arky as the backend.
Start with the frontend stack the project deserves, then connect only the Arky modules it needs. The Admin, API, SDK, and store email stay behind the custom experience.
- Create a support flow
- Embed the chat on the site
- Forward the support address to its Arky receiving address
import { createOrderToken, initialize } from "arky-sdk/storefront";
const arky = initialize("arky_pk_...", {
locale: "en",
createVisitorIdentity: () => ({
customer_id: crypto.randomUUID(),
session_id: crypto.randomUUID(),
}),
createSessionId: () => crypto.randomUUID(),
createId: () => crypto.randomUUID(),
createOrderToken,
});
const website = await arky.content.load({ collection: { key: "website" } });
const {
items: [catalog],
} = await arky.eshop.catalog.find();
const cart = arky.eshop.cart({ buyer: { type: "customer" }, catalog_id: catalog.id });
const current = await cart.ensure();
const services = await arky.eshop.bookingService.find({
catalog_id: catalog.id,
limit: 6,
});
await arky.actions.track({
key: "website_action",
data: {
page: website.record.id,
cart: current.id,
services: services.items.length,
},
}); Useful API touchpoints.
-
POST /v1/storefront/conversations -
POST /v1/storefront/conversations/{id}/messages