Blog
Engineering notes
Practical write-ups on widget weight, webhooks, Slack setup, and when to buy instead of building chat infrastructure. RSS
2026-09-20 · 10 min · tutorial
Installing the CanWeChat widget in a Next.js app
Load the script once in the root layout, lock your domain, and call identify after auth. No React wrapper required.
2026-09-18 · 11 min · troubleshooting
Webhook retries that actually land
Signed delivery, bounded response snippets, and a queue beat fire-and-forget. Your CRM should see the same event twice safely.
2026-09-15 · 12 min · comparison
Build vs buy for live chat on a marketing site
A custom WebSocket widget looks cheap until you own auth, spam, retries, and presence. Buy the narrow product; keep your brand site light.
2026-09-12 · 9 min · tutorial
Slack setup without the maze
Connect a bot, pick one channel, and reply in-thread. You do not need a helpdesk workspace to answer site visitors from Slack.
2026-09-08 · 11 min · architecture
Webhooks without trusting the checkout redirect
Billing state comes from Dodo Payments events, not a success URL. The same rule applies to Slack, Discord, and outbound webhook relays.
2026-09-02 · 10 min · architecture
Why the CanWeChat widget is ~10 KB and not a React app
Host pages should not download your dashboard. CanWeChat’s public widget is vanilla TypeScript in a Shadow DOM, not a React island.