[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog.post.gpt-4o-mini-live-on-chat-thing":3,"blog.related.gpt-4o-mini-live-on-chat-thing":129,"blog.adjacent.gpt-4o-mini-live-on-chat-thing":359},{"data":4,"meta":125},[5],{"id":6,"Title":7,"Content":8,"Description":9,"Category":10,"slug":11,"createdAt":12,"updatedAt":13,"publishedAt":14,"readTime":15,"documentId":16,"Image":17,"author":67,"Seo":112},21,"GPT-4o mini live on Chat Thing","We're excited to announce that Chat Thing has integrated OpenAI's latest model, GPT-4o mini, into our platform! This powerful new AI brings enhanced capabilities and cost-efficiency to your chatbots and AI-driven solutions.\n\nYou can now choose GPT-4o mini from your bot  model settings.\n\n![Xnapper-2024-07-20-14.12.04.png](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721482456\u002FXnapper_2024_07_20_14_12_04_05d5131d0f.png)\n\nKey benefits of GPT-4o mini on Chat Thing:\n* **Superior intelligence**: Outperforms GPT-3.5 Turbo on various benchmarks, including reasoning, math, and coding tasks.\n* **Multimodal capabilities**: Supports both text and vision inputs, with future expansions planned for video and audio.\n* **Affordable pricing**: Up to 60% cheaper than GPT-3.5 Turbo, making AI more accessible for businesses of all sizes. Its now the cheapest model on Chat Thing meaning your message tokens go further!\n* **Expanded context window**: 128K tokens allow for processing larger amounts of information in a single request.\n* **Improved non-English language handling**: More cost-effective for multilingual applications.\n* **Enhanced safety features**: Built-in protections against jailbreaks and prompt injections.\n\nWhether you're building customer support chatbots, automating workflows, generating content, or developing lead generation tools, GPT-4o mini on Chat Thing offers the perfect balance of performance and affordability.","Chat Thing now integrates GPT-4o mini: Enhance your AI bots with superior intelligence, multimodal capabilities, and cost-efficiency. Upgrade today!","changelog","gpt-4o-mini-live-on-chat-thing","2024-07-20T13:13:21.576Z","2024-07-20T13:36:03.947Z","2024-07-20T13:36:03.938Z",null,"fqbhre3duiekxw61yv5z8z8v",{"id":18,"name":19,"alternativeText":15,"caption":15,"width":20,"height":21,"formats":22,"hash":58,"ext":24,"mime":27,"size":59,"url":60,"previewUrl":15,"provider":61,"provider_metadata":62,"createdAt":63,"updatedAt":64,"documentId":65,"publishedAt":66,"focalPoint":15},475,"gtp_4o_mini_release.webp",1920,1080,{"large":23,"small":34,"medium":42,"thumbnail":50},{"ext":24,"url":25,"hash":26,"mime":27,"name":28,"path":15,"size":29,"width":30,"height":31,"provider_metadata":32},".webp","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721481977\u002Flarge_gtp_4o_mini_release_4d55d8a79d.webp","large_gtp_4o_mini_release_4d55d8a79d","image\u002Fwebp","large_gtp_4o_mini_release.webp",22.38,1000,562,{"public_id":26,"resource_type":33},"image",{"ext":24,"url":35,"hash":36,"mime":27,"name":37,"path":15,"size":38,"width":39,"height":40,"provider_metadata":41},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721481977\u002Fsmall_gtp_4o_mini_release_4d55d8a79d.webp","small_gtp_4o_mini_release_4d55d8a79d","small_gtp_4o_mini_release.webp",11.1,500,281,{"public_id":36,"resource_type":33},{"ext":24,"url":43,"hash":44,"mime":27,"name":45,"path":15,"size":46,"width":47,"height":48,"provider_metadata":49},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721481977\u002Fmedium_gtp_4o_mini_release_4d55d8a79d.webp","medium_gtp_4o_mini_release_4d55d8a79d","medium_gtp_4o_mini_release.webp",16.71,750,422,{"public_id":44,"resource_type":33},{"ext":24,"url":51,"hash":52,"mime":27,"name":53,"path":15,"size":54,"width":55,"height":56,"provider_metadata":57},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721481977\u002Fthumbnail_gtp_4o_mini_release_4d55d8a79d.webp","thumbnail_gtp_4o_mini_release_4d55d8a79d","thumbnail_gtp_4o_mini_release.webp",4.79,245,138,{"public_id":52,"resource_type":33},"gtp_4o_mini_release_4d55d8a79d",46.88,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721481977\u002Fgtp_4o_mini_release_4d55d8a79d.webp","cloudinary",{"public_id":58,"resource_type":33},"2024-07-20T13:26:17.679Z","2024-07-24T11:46:15.023Z","mj9g66kd32z1gnfgdzoqgepn","2026-05-15T15:25:35.762Z",{"id":68,"Name":69,"createdAt":70,"updatedAt":71,"publishedAt":72,"documentId":73,"Image":74},2,"Zef","2024-03-20T13:35:42.255Z","2024-03-20T13:35:43.988Z","2024-03-20T13:35:43.980Z","qpnfq2shgxc6b1too3b96idh",{"id":75,"name":76,"alternativeText":15,"caption":15,"width":77,"height":77,"formats":78,"hash":106,"ext":80,"mime":83,"size":107,"url":108,"previewUrl":15,"provider":61,"provider_metadata":109,"createdAt":110,"updatedAt":110,"documentId":111,"publishedAt":66,"focalPoint":15},255,"IMG_2278.jpg",1972,{"large":79,"small":87,"medium":93,"thumbnail":99},{"ext":80,"url":81,"hash":82,"mime":83,"name":84,"path":15,"size":85,"width":30,"height":30,"provider_metadata":86},".jpg","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1710941716\u002Flarge_IMG_2278_d3b5e4fa69.jpg","large_IMG_2278_d3b5e4fa69","image\u002Fjpeg","large_IMG_2278.jpg",194.09,{"public_id":82,"resource_type":33},{"ext":80,"url":88,"hash":89,"mime":83,"name":90,"path":15,"size":91,"width":39,"height":39,"provider_metadata":92},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1710941717\u002Fsmall_IMG_2278_d3b5e4fa69.jpg","small_IMG_2278_d3b5e4fa69","small_IMG_2278.jpg",54.08,{"public_id":89,"resource_type":33},{"ext":80,"url":94,"hash":95,"mime":83,"name":96,"path":15,"size":97,"width":47,"height":47,"provider_metadata":98},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1710941716\u002Fmedium_IMG_2278_d3b5e4fa69.jpg","medium_IMG_2278_d3b5e4fa69","medium_IMG_2278.jpg",114.8,{"public_id":95,"resource_type":33},{"ext":80,"url":100,"hash":101,"mime":83,"name":102,"path":15,"size":103,"width":104,"height":104,"provider_metadata":105},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1710941716\u002Fthumbnail_IMG_2278_d3b5e4fa69.jpg","thumbnail_IMG_2278_d3b5e4fa69","thumbnail_IMG_2278.jpg",6.59,156,{"public_id":101,"resource_type":33},"IMG_2278_d3b5e4fa69",641.66,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1710941716\u002FIMG_2278_d3b5e4fa69.jpg",{"public_id":106,"resource_type":33},"2024-03-20T13:35:18.234Z","b2ylr2lzfx0rstj4qs9sh8b7",{"id":113,"metaTitle":7,"metaDescription":9,"keywords":15,"metaRobots":15,"structuredData":15,"metaViewport":15,"canonicalURL":15,"metaImage":114},71,{"id":18,"name":19,"alternativeText":15,"caption":15,"width":20,"height":21,"formats":115,"hash":58,"ext":24,"mime":27,"size":59,"url":60,"previewUrl":15,"provider":61,"provider_metadata":124,"createdAt":63,"updatedAt":64,"documentId":65,"publishedAt":66,"focalPoint":15},{"large":116,"small":118,"medium":120,"thumbnail":122},{"ext":24,"url":25,"hash":26,"mime":27,"name":28,"path":15,"size":29,"width":30,"height":31,"provider_metadata":117},{"public_id":26,"resource_type":33},{"ext":24,"url":35,"hash":36,"mime":27,"name":37,"path":15,"size":38,"width":39,"height":40,"provider_metadata":119},{"public_id":36,"resource_type":33},{"ext":24,"url":43,"hash":44,"mime":27,"name":45,"path":15,"size":46,"width":47,"height":48,"provider_metadata":121},{"public_id":44,"resource_type":33},{"ext":24,"url":51,"hash":52,"mime":27,"name":53,"path":15,"size":54,"width":55,"height":56,"provider_metadata":123},{"public_id":52,"resource_type":33},{"public_id":58,"resource_type":33},{"pagination":126},{"page":127,"pageSize":128,"pageCount":127,"total":127},1,25,{"data":130,"meta":354},[131,232,294],{"id":132,"Title":133,"Content":134,"Description":135,"Category":10,"slug":136,"createdAt":137,"updatedAt":138,"publishedAt":139,"readTime":15,"documentId":140,"Image":141,"author":182},32,"Custom Domains: Your Bot, Your Brand, Your Domain","Your bots just got a whole lot more professional. We're excited to announce **Custom Domains** — a feature that lets you serve your Chat Thing bots from your very own domain.\n\nInstead of embedding your bot from `embed.chatthing.ai`, you can now use something like `chat.yourcompany.com` or `support.yourbrand.io`. It's fully white-labelled, SSL-secured, and takes just a few minutes to set up.\n\n## Why Custom Domains?\n\nWhen you embed a Chat Thing bot on your website, your users see our domain in the embed URL. For most use cases that's fine, but if you're building a product, running an agency, or just want that extra polish — having your own domain makes all the difference.\n\n**Benefits include:**\n\n- **Brand consistency** — Your bot lives on your domain, matching the rest of your site\n- **Trust signals** — Users see your domain, not a third party\n- **Professional appearance** — Perfect for client-facing bots and enterprise deployments\n- **Full SSL coverage** — We handle certificates automatically via Cloudflare\n\n## How It Works\n\nSetting up a custom domain is straightforward:\n\n1. **Add your domain** — Head to your bot's Web channel settings and enter your desired domain (e.g., `chat.yourcompany.com`)\n2. **Configure DNS** — We'll generate three DNS records for you to add:\n   - A TXT record for SSL certificate validation\n   - A TXT record to verify domain ownership\n   - A CNAME record pointing to `embed.chatthing.ai`\n3. **Verify and go live** — Click verify, wait for DNS propagation, and you're done!\n\n![Custom domains section](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770654691\u002Fdocs\u002Fmzhljvoxddzbh2rqbbqd.png)\n\nOnce active, your embed codes automatically update to use your custom domain. No code changes needed.\n\n![Custom domain active with embed code](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770654295\u002Fdocs\u002Flribfkrjyalvghfyo4ed.png)\n\n## Domain Status Flow\n\nYour domain will progress through these statuses:\n\n- **Pending** — Domain added, awaiting setup\n- **DNS Pending** — Records detected, SSL certificate being issued\n- **Active** — Fully configured and ready to use ✅\n- **Failed** — Check your DNS records and try again\n\n## Availability\n\nCustom Domains is available as a paid addon. Each addon provides one custom domain slot across your team. You can purchase additional slots from your [billing page](https:\u002F\u002Fchatthing.ai\u002Fapp\u002Fbilling) if you need multiple domains.\n\n## Get Started\n\nReady to give your bots a professional home? Check out our [Custom Domains documentation](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Fcustom-domains) for the full setup guide.","Give your AI bots a fully white-labelled experience. Custom domains let you serve your bot from your own domain like chat.yourcompany.com instead of embed.chatthing.ai.","custom-domains-your-bot-your-brand-your-domain","2026-02-10T11:49:25.830Z","2026-04-17T15:39:35.071Z","2026-02-10T12:00:48.918Z","xi6rdt5pnge2pst8iggy46ju",{"id":142,"name":143,"alternativeText":15,"caption":15,"width":144,"height":145,"formats":146,"hash":176,"ext":80,"mime":83,"size":177,"url":178,"previewUrl":15,"provider":61,"provider_metadata":179,"createdAt":180,"updatedAt":180,"documentId":181,"publishedAt":66,"focalPoint":15},694,"file_94---5d631697-29ed-4946-9cd4-efccfd7fe3f5.jpg",1280,720,{"large":147,"small":155,"medium":162,"thumbnail":169},{"ext":80,"url":148,"hash":149,"mime":83,"name":150,"path":15,"size":151,"width":30,"height":152,"sizeInBytes":153,"provider_metadata":154},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770724454\u002Flarge_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92.jpg","large_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92","large_file_94---5d631697-29ed-4946-9cd4-efccfd7fe3f5.jpg",41.03,563,41029,{"public_id":149,"resource_type":33},{"ext":80,"url":156,"hash":157,"mime":83,"name":158,"path":15,"size":159,"width":39,"height":40,"sizeInBytes":160,"provider_metadata":161},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770724454\u002Fsmall_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92.jpg","small_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92","small_file_94---5d631697-29ed-4946-9cd4-efccfd7fe3f5.jpg",15.21,15213,{"public_id":157,"resource_type":33},{"ext":80,"url":163,"hash":164,"mime":83,"name":165,"path":15,"size":166,"width":47,"height":48,"sizeInBytes":167,"provider_metadata":168},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770724454\u002Fmedium_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92.jpg","medium_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92","medium_file_94---5d631697-29ed-4946-9cd4-efccfd7fe3f5.jpg",29.46,29457,{"public_id":164,"resource_type":33},{"ext":80,"url":170,"hash":171,"mime":83,"name":172,"path":15,"size":173,"width":55,"height":56,"sizeInBytes":174,"provider_metadata":175},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770724454\u002Fthumbnail_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92.jpg","thumbnail_file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92","thumbnail_file_94---5d631697-29ed-4946-9cd4-efccfd7fe3f5.jpg",4.78,4779,{"public_id":171,"resource_type":33},"file_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92",53.77,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1770724454\u002Ffile_94_5d631697_29ed_4946_9cd4_efccfd7fe3f5_758939dc92.jpg",{"public_id":176,"resource_type":33},"2026-02-10T11:54:14.857Z","fwim9aki1tntxtle4g2o0rc0",{"id":127,"Name":183,"createdAt":184,"updatedAt":185,"publishedAt":186,"documentId":187,"Image":188},"Gem","2023-08-25T14:44:02.325Z","2026-04-03T14:53:07.377Z","2023-08-25T14:44:05.581Z","rs8ltnu1mkqi6j2hvepdj8ym",{"id":189,"name":190,"alternativeText":15,"caption":15,"width":191,"height":192,"formats":193,"hash":226,"ext":80,"mime":83,"size":227,"url":228,"previewUrl":15,"provider":61,"provider_metadata":229,"createdAt":230,"updatedAt":230,"documentId":231,"publishedAt":66,"focalPoint":15},732,"me2026.jpg",2288,1978,{"large":194,"small":202,"medium":210,"thumbnail":218},{"ext":80,"url":195,"hash":196,"mime":83,"name":197,"path":15,"size":198,"width":30,"height":199,"sizeInBytes":200,"provider_metadata":201},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1775227982\u002Flarge_me2026_022d4321e3.jpg","large_me2026_022d4321e3","large_me2026.jpg",170.04,865,170040,{"public_id":196,"resource_type":33},{"ext":80,"url":203,"hash":204,"mime":83,"name":205,"path":15,"size":206,"width":39,"height":207,"sizeInBytes":208,"provider_metadata":209},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1775227982\u002Fsmall_me2026_022d4321e3.jpg","small_me2026_022d4321e3","small_me2026.jpg",43.94,432,43943,{"public_id":204,"resource_type":33},{"ext":80,"url":211,"hash":212,"mime":83,"name":213,"path":15,"size":214,"width":47,"height":215,"sizeInBytes":216,"provider_metadata":217},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1775227982\u002Fmedium_me2026_022d4321e3.jpg","medium_me2026_022d4321e3","medium_me2026.jpg",95.7,648,95701,{"public_id":212,"resource_type":33},{"ext":80,"url":219,"hash":220,"mime":83,"name":221,"path":15,"size":222,"width":223,"height":104,"sizeInBytes":224,"provider_metadata":225},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1775227982\u002Fthumbnail_me2026_022d4321e3.jpg","thumbnail_me2026_022d4321e3","thumbnail_me2026.jpg",6.75,181,6747,{"public_id":220,"resource_type":33},"me2026_022d4321e3",732.7,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1775227982\u002Fme2026_022d4321e3.jpg",{"public_id":226,"resource_type":33},"2026-04-03T14:53:02.980Z","fzyymo1uivslt1rep9c83edj",{"id":233,"Title":234,"Content":235,"Description":236,"Category":10,"slug":237,"createdAt":238,"updatedAt":239,"publishedAt":240,"readTime":15,"documentId":241,"Image":242,"author":282},29,"New in Chat Thing: Dictation, Spoken Responses, Spam Protection, Bot Duplication & More!","We've been hard at work shipping some highly-requested features to help you build even better AI agents. Here’s a look at what’s new:\n\n### 🗣️ Dictation & Spoken Responses\n\nFrankly, we're a little embarrassed this one took so long, but we're thrilled to finally release Dictation and Spoken Responses for the web channel! Your users can now interact with your bots using just their voice for a more natural and accessible experience.\n\nAnd this is just the beginning—soon, you’ll be able to customise the voice to perfectly match your brand.\n\nLearn how to enable it in the [Web Channel Documentation](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Fweb-channel#dictation-and-spoken-responses).\n\n![Xnapper-2025-07-30-20.00.42.png](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753902103\u002FXnapper_2025_07_30_20_00_42_d3a9b00e2d.png)\n\n### 🛡️ Spam Protection\n\nProtect your public-facing bots from abuse with our new Spam Protection feature. Powered by Cloudflare Turnstile, it provides a seamless, privacy-preserving way to block automated spam without forcing your users to solve annoying CAPTCHAs. You can activate it from your web channel settings.\n\nCheck out the [Spam Protection Documentation](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Fweb-channel#spam-protection) to get started.\n\n![Cloudflare turnstile spam protection](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753965261\u002FCloudflare_turnstile_spam_protection_f03ff305b8.png)\n\n### 💬 \"Talk to a human\" Power-up Update\n\nWe've made our \"Talk to a human\" power-up more flexible. You can now specify exactly which email address you want escalations to be forwarded to, directly within the power-up settings.\n\nFind out more in the[ Talk to a human Docs](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Ftalk-to-a-human).\n\n### ✨ Duplicate your Bots\n\nSpeed up your workflow with bot duplication! You can now create a copy of any existing bot, with full control to choose what you want to include—from data sources and prompts to channel settings and power-ups.\n\nLearn how in the [Duplicating Bots Documentation](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Fduplicating-bots).\n\n### Advanced: New Dynamic Prompt Tags\n\nFor our advanced users, you can now include two new replacement tags in your prompts that will be replaced dynamically at runtime: \u003Cbot-id> and \u003Cconversation-id>. This allows for more advanced logging, tracking, and multi-agent workflows.\n\n---\n\nWe can’t wait to see what you think of these updates, happy agent building","Announcing new Chat Thing features: Add voice dictation and spoken responses to your bot, enable Cloudflare spam protection, duplicate bots, and more.","new-in-chat-thing-dictation-spoken-responses-spam-protection-bot-duplication-and-more","2025-07-31T13:58:00.791Z","2025-07-31T14:00:47.897Z","2025-07-31T13:58:05.390Z","oqpzapmxkep0kh8kv70pb38f",{"id":243,"name":244,"alternativeText":15,"caption":15,"width":20,"height":21,"formats":245,"hash":276,"ext":247,"mime":250,"size":277,"url":278,"previewUrl":15,"provider":61,"provider_metadata":279,"createdAt":280,"updatedAt":280,"documentId":281,"publishedAt":66,"focalPoint":15},670,"Audio and spam protection.png",{"large":246,"small":255,"medium":262,"thumbnail":269},{"ext":247,"url":248,"hash":249,"mime":250,"name":251,"path":15,"size":252,"width":30,"height":152,"sizeInBytes":253,"provider_metadata":254},".png","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753970224\u002Flarge_Audio_and_spam_protection_3d99f3f000.png","large_Audio_and_spam_protection_3d99f3f000","image\u002Fpng","large_Audio and spam protection.png",277.43,277434,{"public_id":249,"resource_type":33},{"ext":247,"url":256,"hash":257,"mime":250,"name":258,"path":15,"size":259,"width":39,"height":40,"sizeInBytes":260,"provider_metadata":261},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753970223\u002Fsmall_Audio_and_spam_protection_3d99f3f000.png","small_Audio_and_spam_protection_3d99f3f000","small_Audio and spam protection.png",79.14,79135,{"public_id":257,"resource_type":33},{"ext":247,"url":263,"hash":264,"mime":250,"name":265,"path":15,"size":266,"width":47,"height":48,"sizeInBytes":267,"provider_metadata":268},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753970223\u002Fmedium_Audio_and_spam_protection_3d99f3f000.png","medium_Audio_and_spam_protection_3d99f3f000","medium_Audio and spam protection.png",157.7,157704,{"public_id":264,"resource_type":33},{"ext":247,"url":270,"hash":271,"mime":250,"name":272,"path":15,"size":273,"width":55,"height":56,"sizeInBytes":274,"provider_metadata":275},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753970223\u002Fthumbnail_Audio_and_spam_protection_3d99f3f000.png","thumbnail_Audio_and_spam_protection_3d99f3f000","thumbnail_Audio and spam protection.png",28.05,28048,{"public_id":271,"resource_type":33},"Audio_and_spam_protection_3d99f3f000",235.92,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1753970223\u002FAudio_and_spam_protection_3d99f3f000.png",{"public_id":276,"resource_type":33},"2025-07-31T13:57:04.793Z","uxsjqm1a2n6w8usjw345lxrc",{"id":68,"Name":69,"createdAt":70,"updatedAt":71,"publishedAt":72,"documentId":73,"Image":283},{"id":75,"name":76,"alternativeText":15,"caption":15,"width":77,"height":77,"formats":284,"hash":106,"ext":80,"mime":83,"size":107,"url":108,"previewUrl":15,"provider":61,"provider_metadata":293,"createdAt":110,"updatedAt":110,"documentId":111,"publishedAt":66,"focalPoint":15},{"large":285,"small":287,"medium":289,"thumbnail":291},{"ext":80,"url":81,"hash":82,"mime":83,"name":84,"path":15,"size":85,"width":30,"height":30,"provider_metadata":286},{"public_id":82,"resource_type":33},{"ext":80,"url":88,"hash":89,"mime":83,"name":90,"path":15,"size":91,"width":39,"height":39,"provider_metadata":288},{"public_id":89,"resource_type":33},{"ext":80,"url":94,"hash":95,"mime":83,"name":96,"path":15,"size":97,"width":47,"height":47,"provider_metadata":290},{"public_id":95,"resource_type":33},{"ext":80,"url":100,"hash":101,"mime":83,"name":102,"path":15,"size":103,"width":104,"height":104,"provider_metadata":292},{"public_id":101,"resource_type":33},{"public_id":106,"resource_type":33},{"id":295,"Title":296,"Content":297,"Description":298,"Category":10,"slug":299,"createdAt":300,"updatedAt":301,"publishedAt":302,"readTime":15,"documentId":303,"Image":304,"author":342},28,"Try GPT-4.1 now + more updates","Hi agent builders! It’s been a while but we’ve got some great updates for you today!\n\n## Introducing GPT-4.1 Models\nHot off the press, only released yesterday, we've integrated OpenAI's latest GPT-4.1 models into Chat Thing, offering significant performance enhancements across the board. You can't use these models via ChatGPT as they are API only so Chat Thing is a great place to test them out! Here's some of the improvements:\n\n- **Expanded Context Window**: Handle up to 1 million tokens, enabling deeper context understanding.​\n- **Improved Coding Capabilities**: Achieved a 54.6% score on SWE-bench Verified, surpassing GPT-4o's 33.2%. ​\n- **Enhanced Instruction Following**: Better at adhering to complex, multi-step instructions. ​\n- **Cost-Effective Options**: GPT-4.1 Nano is now our most affordable model.\n\nRead OpenAI’s announcement post [here](https:\u002F\u002Fopenai.com\u002Findex\u002Fgpt-4-1\u002F)\n\nYou can select the 4.1 models from the model selector in your bot settings now. \n\n## Enhanced Chat Responses\n\n- **Code Syntax Highlighting**: Code blocks in responses now feature syntax highlighting for improved readability.​\n![Code Block Syntax Highlighting PR 851.png](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732406\u002FCode_Block_Syntax_Highlighting_PR_851_f4893cc0d8.png)\n- **LaTeX Rendering**: Mathematical expressions are rendered using LaTeX for clearer presentation.​\n![LaTeX Math Expression Rendering PR 852.png](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732431\u002FLa_Te_X_Math_Expression_Rendering_PR_852_aa86045fe6.png)\n\n## Additional Updates\n\n- Multilingual Support: Added and refined translations for multi-modal chat interface elements.​\n- RSS Data Source Scraping: Enabled CSS exclude rules to refine content extraction.​\n- Email Enhancements: Included reply-to headers in \"talk-to-human\" emails for better communication.​\n- UI Improvements: Enhanced conversation view styling for better readability.​\n- Bug Fixes: Resolved issues including duplicate bot-to-bot responses and improved API power-up validation.​\n\nWe can’t wait to see what you think of these updates, happy agent building!","Create smarter AI agents with Chat Thing's latest update: now featuring OpenAI's GPT-4.1 models, code syntax highlighting, LaTeX rendering, and enhanced multilingual support.​","try-gpt-4-1-now-more-updates","2025-04-15T15:54:21.709Z","2025-04-15T15:54:26.380Z","2025-04-15T15:54:26.318Z","rwu362ud60msel9b830pga3v",{"id":305,"name":306,"alternativeText":15,"caption":15,"width":20,"height":21,"formats":307,"hash":336,"ext":24,"mime":27,"size":337,"url":338,"previewUrl":15,"provider":61,"provider_metadata":339,"createdAt":340,"updatedAt":340,"documentId":341,"publishedAt":66,"focalPoint":15},649,"GPT-4.1 Release from Figma.webp",{"large":308,"small":315,"medium":322,"thumbnail":329},{"ext":24,"url":309,"hash":310,"mime":27,"name":311,"path":15,"size":312,"width":30,"height":31,"sizeInBytes":313,"provider_metadata":314},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732011\u002Flarge_GPT_4_1_Release_from_Figma_29961568c3.webp","large_GPT_4_1_Release_from_Figma_29961568c3","large_GPT-4.1 Release from Figma.webp",20.96,20956,{"public_id":310,"resource_type":33},{"ext":24,"url":316,"hash":317,"mime":27,"name":318,"path":15,"size":319,"width":39,"height":40,"sizeInBytes":320,"provider_metadata":321},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732011\u002Fsmall_GPT_4_1_Release_from_Figma_29961568c3.webp","small_GPT_4_1_Release_from_Figma_29961568c3","small_GPT-4.1 Release from Figma.webp",10.12,10118,{"public_id":317,"resource_type":33},{"ext":24,"url":323,"hash":324,"mime":27,"name":325,"path":15,"size":326,"width":47,"height":48,"sizeInBytes":327,"provider_metadata":328},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732011\u002Fmedium_GPT_4_1_Release_from_Figma_29961568c3.webp","medium_GPT_4_1_Release_from_Figma_29961568c3","medium_GPT-4.1 Release from Figma.webp",15.85,15848,{"public_id":324,"resource_type":33},{"ext":24,"url":330,"hash":331,"mime":27,"name":332,"path":15,"size":333,"width":55,"height":56,"sizeInBytes":334,"provider_metadata":335},"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732011\u002Fthumbnail_GPT_4_1_Release_from_Figma_29961568c3.webp","thumbnail_GPT_4_1_Release_from_Figma_29961568c3","thumbnail_GPT-4.1 Release from Figma.webp",4.46,4462,{"public_id":331,"resource_type":33},"GPT_4_1_Release_from_Figma_29961568c3",40.8,"https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1744732011\u002FGPT_4_1_Release_from_Figma_29961568c3.webp",{"public_id":336,"resource_type":33},"2025-04-15T15:46:52.064Z","izzhki5509t22umz9g0cq22p",{"id":68,"Name":69,"createdAt":70,"updatedAt":71,"publishedAt":72,"documentId":73,"Image":343},{"id":75,"name":76,"alternativeText":15,"caption":15,"width":77,"height":77,"formats":344,"hash":106,"ext":80,"mime":83,"size":107,"url":108,"previewUrl":15,"provider":61,"provider_metadata":353,"createdAt":110,"updatedAt":110,"documentId":111,"publishedAt":66,"focalPoint":15},{"large":345,"small":347,"medium":349,"thumbnail":351},{"ext":80,"url":81,"hash":82,"mime":83,"name":84,"path":15,"size":85,"width":30,"height":30,"provider_metadata":346},{"public_id":82,"resource_type":33},{"ext":80,"url":88,"hash":89,"mime":83,"name":90,"path":15,"size":91,"width":39,"height":39,"provider_metadata":348},{"public_id":89,"resource_type":33},{"ext":80,"url":94,"hash":95,"mime":83,"name":96,"path":15,"size":97,"width":47,"height":47,"provider_metadata":350},{"public_id":95,"resource_type":33},{"ext":80,"url":100,"hash":101,"mime":83,"name":102,"path":15,"size":103,"width":104,"height":104,"provider_metadata":352},{"public_id":101,"resource_type":33},{"public_id":106,"resource_type":33},{"pagination":355},{"page":127,"pageSize":356,"pageCount":357,"total":358},3,5,14,{"prev":360,"next":370},{"id":361,"Title":362,"Content":363,"Description":364,"Category":10,"slug":365,"createdAt":366,"updatedAt":367,"publishedAt":368,"readTime":15,"documentId":369},20,"Build bots with Claude 3.5 Sonnet + other updates","Hello everyone!\n\nWe're thrilled to share some exciting updates with you that are sure to enhance your experience with Chat Thing!\n\n## Build AI Chat Bots powered by Claude 3.5 Sonnet!\n\nYou can now choose Claude 3.5 Sonnet as the model to power your chat bots built with Chat Thing! This brings the total number of models supported by Chat Thing to an impressive 17!\n\nWhy should you use Claude 3.5 Sonnet?\n\nIt's been taking the AI scene by storm, with many agreeing that it **outperforms GPT-4o at many tasks**. It also works out **slightly cheaper than GPT-4o in terms of input tokens**, meaning your Chat Thing message tokens will go further. \n\nAdditionally, **it has a gigantic 200k context window** compared to GPT-4o's 128k. This means it has more room to hold your chat history, load more of your data sources into context, and greater potential to generate substantial content. While GPT-4o's 128k context window is sufficient for most tasks, it's beneficial to have the option of a larger context window when needed.\n\nYou can now select Claude 3.5 Sonnet from your bot's \"General settings\" within the \"Model settings\" section.\n\n![Xnapper July 15.webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721053521\u002FXnapper_July_15_f27ef0d0f6.webp)\n\nWe'd love to hear your thoughts on this new model!\n\n## Enhanced knowledge retrieval \n\nWe've introduced a new option called \"Enhanced knowledge retrieval\" that should significantly improve your bot's responses when users ask vague follow-up questions. \n\nTLet's illustrate this with a brief example. Take a look at this conversation with the bot we use on our [Digital Agency Site: Pixelhop](https:\u002F\u002Fpixelhop.io):\n\n![Xnapper July 15 (1).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721054242\u002FXnapper_July_15_1_796a729fdc.webp)\n\nThe user asks, \"What projects have you worked on?\" and the bot responds with a list of our projects. That's great, and you can see beneath the response that we have several source links to pages from our site that helped build the response.\n\n![Xnapper July 15 (2).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721054361\u002FXnapper_July_15_2_d174d96df8.webp)\n\nNext, the user asks, \"Tell me more about the last one.\" The bot's response looks acceptable at first glance, but upon closer inspection, it contains several hallucinations and fabricated facts about the project. Interestingly, it has no sources under its response. \n\n![Xnapper July 15 (3).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721054597\u002FXnapper_July_15_3_f4a5b628fd.webp)\n\nWhy is this happening? We have an entire page dedicated to this project on the Pixelhop site, so the bot should have all the information it needs to answer correctly. \n\nPrior to the enhanced knowledge retrieval feature, when your bot searched its data sources for relevant knowledge, it was only based on the last question. In this case, the question is extremely vague. The bot doesn't know which project the user is referring to, and since the question doesn't explicitly mention the project name, the data source search returns no items it deems relevant enough to the question. \n\nEnhanced knowledge retrieval addresses this by using AI to rewrite the search question with more context from the previous conversation. For example, the question \"Tell me more about the last one\" will be converted to \"Tell me more about the Rye and Beyond project\" before it's used to search the data sources. This results in much more relevant results and significantly reduces the risk of the bot making things up or hallucinating.  \n\nObserve how much better this answer is, with no hallucinations, because it's using the correct relevant knowledge from its data sources, as you can see under the answer:\n\n![Xnapper July 15 (4).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721055269\u002FXnapper_July_15_4_e97e733c04.webp)\n\nYou can turn this setting on from your bot's \"General settings\" in the \"Model settings\" section.\n\n![Xnapper July 15 (5).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721055410\u002FXnapper_July_15_5_3e81835cb3.webp)\n\nEnabling this setting uses slightly more message tokens and may slow your bot's responses marginally, but we believe in most cases, this trade-off is worthwhile for better responses. \n\nIf the reaction to this feature is positive, we may consider enabling it by default in the future.\n\n### That's all for now\nWe're excited about these new features and how they can improve your Chat Thing experience. We encourage you to try them out and let us know your thoughts. Your feedback is invaluable in helping us continue to enhance our platform.\n\nHave you tried these new features yet? We'd love to hear about your experience!\n","Claude 3.5 Sonnet integration and enhanced knowledge retrieval. Build smarter AI chatbots with improved context handling and accuracy.","build-bots-with-claude-3-5-sonnet-other-updates","2024-07-15T14:02:37.506Z","2024-07-15T15:15:44.047Z","2024-07-15T15:13:41.256Z","cjxctwdi85tfblgoc7fqurs1",{"id":371,"Title":372,"Content":373,"Description":374,"Category":375,"slug":376,"createdAt":377,"updatedAt":378,"publishedAt":379,"readTime":15,"documentId":380},19,"Build an AI shopping co-pilot","We recently [client-side power-ups and improvements to the SDK](https:\u002F\u002Fchatthing.ai\u002Fblog\u002Fclient-side-power-ups-and-sdk-improvements) that make it easy to create amazing integrations with your websites and web apps. In this tutorial, we will demonstrate how you can build an AI-powered shopping co-pilot that can perform actions on your user's behalf and generally be super helpful!\n\nYou can take a look at what we will be building here: [AI shopping copilot demo](https:\u002F\u002Fai-shopping-copilot-demo.pages.dev\u002F)\nand you can find all the code here: [Github AI shopping copilot demo](https:\u002F\u002Fgithub.com\u002Fpixelhop\u002Fai-shopping-copilot-demo)\n\nIf you prefer watching to reading, checkout the video version of this post:\n\n{% youtube  id=\"DobIEEFHAWo\" \u002F%}\n\n## Let's get started\n\nFirst, we need to create our bot in Chat Thing. We created a new bot, gave it a name, some example questions to guide the user on what it can do, and the most important part, the system message prompt. \n\nTake a look at our settings below: \n\n![shopping-co-pilot-settings.webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1720717806\u002Fshopping_co_pilot_settings_3fcbfce39e.webp)\n\nThis is a simple demo, so our prompt doesn't need to be complicated:\n\n>You are a helpful shopping assistant at a store that sells AI merchandise.\n>\n>You can navigate to the following URLs\n>* \"\u002F\" - The home page\n>* \"\u002Fproducts\u002F:productId\" - A product page, where \"productId\" is replaced with the actual id of a product\n>* \"\u002Fcheckout\" - The checkout page\n>\n>You can offer to navigate customers to the above page if you feel it useful, or if they would like more info about a product.\n>\n>Answer in a fun, informal, jokey, friendly tone.\n\nWe tell the bot it's a shopping assistant, we give it info about the URLs it can navigate to (more on that later), and we tell it the tone it should use. All pretty standard prompting!\n\nFor this demo, we are using GPT4-o as our model, but any model that supports power-ups will work.\n\n## Turn on advanced SDK features\n\nBefore embedding your bot on your site, you should turn on the advanced SDK features by going to your bot \"Channels\" page, and then the \"Web Channel Settings\" and enabling the toggle.\n\n![Xnapper July 11 Screenshot.jpg](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1720728221\u002FXnapper_July_11_Screenshot_57e9cc71d9.jpg)\n\nThis setting is optional, as enabling it makes your bot more susceptible to prompt hijacking by allowing you to override and extend the prompt from the frontend. This is a tradeoff that is necessary if you need the advanced client-side functionality.\n\n## Embed your bot onto your site\n\nNow that you have a bot and the advanced SDK functionality is turned on, it's time to grab its embed script and add it to your site. \n\nClick the \"Embed\" button in your bot settings, and then grab the \"Embed as chat widget\" script and add it to the HTML of your site.\n\n![Xnapper July 11.jpg](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1720728672\u002FXnapper_July_11_66982b6d60.jpg)\n\nOurs looks like this:\n\n![Xnapper July 11 Screenshot (1).jpg](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1720728804\u002FXnapper_July_11_Screenshot_1_577e800510.jpg)\n\nYou should now see your chat widget on the page and be able to open it.\n\n![Xnapper July 15 (6).webp](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721059071\u002FXnapper_July_15_6_e657c7214f.webp)\n\n## Create AI co-pilots for your site with client-side power-ups\n\nWith the bot now on your site, the real fun of integration can begin. Our new Chat Thing SDK has lots of functionality that you can read about here: [Chat Thing AI SDK](https:\u002F\u002Fchatthing.ai\u002Fdocs\u002Fsdk), but for this tutorial, we will mainly be focusing on using client-side power-ups so our bot can take actions on behalf of the user right on the front-end of your website or app.\n\nBefore we can do that, we need to get hold of the Chat Thing SDK that is added to the global window object after our Chat Thing script loads. Due to the Chat Thing script being deferred, it might not be ready as soon as the page loads, so we need a bit of code that will wait for it to be ready and return the SDK when it is. (We will be improving how this works later, as well as releasing an NPM package that won't have this issue).\n\nWe create a simple composable that returns the SDK like below:\n\n```typescript\nexport const useChatThing = () => {\n    function getChatThing(resolve: (sdk: Window['chatThing']) => void) {\n        if (window.chatThing) {\n            return resolve(window.chatThing);\n        }\n\n        setTimeout(() => getChatThing(resolve), 200);\n    }\n\n    return new Promise\u003CWindow['chatThing']>((resolve) => {\n        getChatThing(resolve);\n    });\n};\n```\n\nWe can now get hold of the Chat Thing SDK ready to use like this:\n\n```typescript\nconst chatThing = await useChatThing();\n```\n\nNow that we have a reference to the Chat Thing SDK, we can use it to tightly integrate the bot with our app.\n\n### Letting out bot know about the available products\n\nBefore we can get the bot to do cool things like add a product to a cart for us, we need to let it know about the available products. For the purpose of keeping this tutorial short and simple, we have chosen to do this using the new \"Extend system message\" functionality of the SDK. \n\n```typescript\nchatThing.systemMessage('extend', `\n    \u003Cproducts>\n    ${JSON.stringify(products)}\n    \u003C\u002Fproducts>\n  `);\n```\n\nThis allows you to add additional information to your system message on the fly. Here we stringify our list of products and add them to the system message.\n\nIn case you are wondering, our fake products array looks a bit like this:\n\n```typescript\nexport const products: Product[] = [\n  {\n    id: \"AI-001\",\n    name: \"AI-Generated Fortune Cookies\",\n    price: 9.99,\n    image: window.location.origin + \"\u002Fimages\u002Fai-fortune-cookies.webp\",\n    description: `\u003Cp>Indulge in our \u003Cstrong>AI-Generated Fortune Cookies\u003C\u002Fstrong>, where every cookie contains a unique, humorous fortune created by artificial intelligence. Perfect for parties, gifts, or just a good laugh!\u003C\u002Fp>`,\n  },\n  ...\n```\n\nOf course, in a real e-commerce app, you will not have a single array containing all your products lying around, or at least I hope you don't, and even if you did, it's not a great idea to use your system message as a way of communicating these to the bot as you will waste thousands and thousands of tokens with each message. \n\nThe best implementation would be to create a client-side power-up that allows your bot to dynamically search through your products inventory. That's a tutorial in itself, so for the time being, let's put up with our basic implementation.\n\n### Registering your first custom client-side power-ups with the SDK\n\nIn our example Vue.js e-commerce store, we do this in the `onMounted` hook of `App.vue` so that power-ups are loaded as soon as the Vue.js app is mounted.\n\nLet's see how we can create a power-up to add a product to the basket. \n\n```typescript\n  chatThing.registerPowerUp({\n    name: 'Add to basket',\n    description: 'Add a product to the basket',\n    parameters: {\n      productId: {\n        type: 'string',\n        description: 'The unique product ID',\n        required: true\n      },\n      qty: {\n        type: 'number',\n        description: 'How many to add',\n        required: true\n      }\n    },\n    handler: (args) => {\n      return addToCart(args.productId, args.qty);\n    }\n  });\n```\n\nThere's a bit to break down here, so let's go through it step by step. We pass the `registerPowerUp` function a configuration object that contains a few things.\n\nFirst up, we have `name` and `description`. Name is hopefully very obviously the name of the power-up. The name will help the bot decide when to use this power-up and will also be shown in the chat UI while the power-up is running. \n\nDescription is very important and is the primary information the bot will use to determine when to use your power-up. In this case, adding an item to a cart is a relatively simple action, so a description of \"Add a product to the basket\" is enough.\n\nNext, we have the `parameters` object. This object lets you define the arguments your bot will need to collect before it can perform your action. So in this example, to add a product to the basket, we need a product ID and the quantity of items to be added.\n\nEach parameter object has the following:\n\n* `type` - The type of parameter: \"string\", \"number\", \"boolean\", or \"object\"\n* `description` - Similar to the power-up description, the parameter description lets the bot know what this parameter is and how it should fill it.\n* `required` - A boolean value, true if the parameter is always required by the action, false if not\n* \nFinally, we have the `handler` callback. This is where you add the implementation for this power-up. When the bot decides to use this action, the handler will be called and passed an arguments object containing the parameters you defined. \n\nIn this case we will receive an object containing the product ID and quantity looking like this:\n\n```typescript\n{\n  productId: 'some-product-id',\n  qty: 2\n}\n```\n\nYou can do anything you like in the handler. You could call an API, use an existing function in your app, trigger an update to a global store, or whatever else you would like to do. The only rule is that your handler must return something back to the bot. This could be a success or error message, or some useful information the bot can use for future answers.\n\nIn our example, we use our existing add to cart function that updates our fake cart, and just for reference, it looks something like this:\n\n```typescript\nexport function addToCart(productId: string, qty: number) {\n  const product = products.find((product) => product.id === productId);\n  const existingProductInCart = cart.value.find(\n    (product) => product.id === productId\n  );\n\n  if (existingProductInCart) {\n    existingProductInCart.qty += qty;\n  } else if (product) {\n    cart.value.push({\n      ...product,\n      qty,\n    });\n  }\n\n  return {\n    cart: cart.value,\n    totalPrice: totalPrice.value,\n  };\n}\n```\n\nRemember, this is a fake e-commerce implementation, but it's useful to see what the function returns. It returns an object that contains the current cart and all the items in it, and a total price property. This is returned back to the bot so it can update you on the new price of the cart as well as the items in it.\n\nAnd with all that done, we should now be able to add a product to the cart using the bot!\n\n![Xnapper July 15.jpg](https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1721067556\u002FXnapper_July_15_2052889232.jpg)\n\n### Adding more functionality\n\nNow that you've added your first client-side power-up, hopefully it should be quite straightforward for you to add others. I won't go through how we implemented each of the others in our demo (although remember you can find all the code [here](https:\u002F\u002Fgithub.com\u002Fpixelhop\u002Fai-shopping-copilot-demo\u002Ftree\u002Fmain)), but we added additional power-ups to remove items, get the cart, check order status, and finally to navigate the user to other pages. \n\n### Wrapping up\n\nThe possibilities with client-side power-ups are absolutely huge, and we can't wait to see what you do with them! We will be posting more detailed tutorials like this for exciting use cases, so if there's anything in particular you would like to see, please let us know!","Learn how to build an AI-powered shopping co-pilot using Chat Thing's client-side power-ups. Create a smart assistant that enhances your e-commerce experience.","blog","building-an-ai-shopping-co-pilot","2024-07-11T16:36:06.203Z","2024-07-23T15:10:02.199Z","2024-07-23T15:10:02.190Z","tvo2vw4hnfeiayjrsp9rxuqd"]