[{"data":1,"prerenderedAt":5020},["ShallowReactive",2],{"help-integrations":3},[4,713,981,1313,1930,2337,2932,3228,3653,3843,4157,4795],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"category":6,"order":11,"difficulty":12,"time_to_complete":13,"related":14,"body":18,"_type":707,"_id":708,"_source":709,"_file":710,"_stem":711,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fapi-overview","integrations",false,"","REST API overview and authentication","Getting started with the AIsoule REST API — authentication, base URL, request format, and your first API call.",1,"intermediate","5 minutes",[15,16,17],"\u002Fhelp\u002Fintegrations\u002Fsending-messages-api","\u002Fhelp\u002Fintegrations\u002Fwebhooks-receiving","\u002Fhelp\u002Fintegrations\u002Fapi-rate-limits",{"type":19,"children":20,"toc":690},"root",[21,30,36,43,53,58,64,71,112,117,128,134,139,148,154,194,200,205,216,221,230,236,241,250,255,264,270,513,519,577,583,588,631,637],{"type":22,"tag":23,"props":24,"children":26},"element","h1",{"id":25},"rest-api-overview",[27],{"type":28,"value":29},"text","REST API overview",{"type":22,"tag":31,"props":32,"children":33},"p",{},[34],{"type":28,"value":35},"The AIsoule REST API lets you programmatically send messages, manage contacts, and integrate with your existing systems.",{"type":22,"tag":37,"props":38,"children":40},"h2",{"id":39},"base-url",[41],{"type":28,"value":42},"Base URL",{"type":22,"tag":44,"props":45,"children":47},"pre",{"code":46},"https:\u002F\u002Fapp.aisoule.com\u002Fapi\n",[48],{"type":22,"tag":49,"props":50,"children":51},"code",{"__ignoreMap":8},[52],{"type":28,"value":46},{"type":22,"tag":31,"props":54,"children":55},{},[56],{"type":28,"value":57},"All API endpoints are relative to this base URL.",{"type":22,"tag":37,"props":59,"children":61},{"id":60},"authentication",[62],{"type":28,"value":63},"Authentication",{"type":22,"tag":65,"props":66,"children":68},"h3",{"id":67},"api-key-authentication",[69],{"type":28,"value":70},"API Key authentication",{"type":22,"tag":72,"props":73,"children":74},"ol",{},[75,87,97,102,107],{"type":22,"tag":76,"props":77,"children":78},"li",{},[79,81],{"type":28,"value":80},"Go to ",{"type":22,"tag":82,"props":83,"children":84},"strong",{},[85],{"type":28,"value":86},"Settings → API Keys",{"type":22,"tag":76,"props":88,"children":89},{},[90,92],{"type":28,"value":91},"Click ",{"type":22,"tag":82,"props":93,"children":94},{},[95],{"type":28,"value":96},"\"New API Key\"",{"type":22,"tag":76,"props":98,"children":99},{},[100],{"type":28,"value":101},"Enter a name (e.g., \"CRM Integration\")",{"type":22,"tag":76,"props":103,"children":104},{},[105],{"type":28,"value":106},"Set an expiry date (optional)",{"type":22,"tag":76,"props":108,"children":109},{},[110],{"type":28,"value":111},"Copy the generated key — it's only shown once!",{"type":22,"tag":31,"props":113,"children":114},{},[115],{"type":28,"value":116},"Include the API key in every request:",{"type":22,"tag":44,"props":118,"children":123},{"code":119,"language":120,"meta":8,"className":121},"curl -H \"X-API-Key: your_api_key_here\" \\\n  https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fcontacts\n","bash",[122],"language-bash",[124],{"type":22,"tag":49,"props":125,"children":126},{"__ignoreMap":8},[127],{"type":28,"value":119},{"type":22,"tag":65,"props":129,"children":131},{"id":130},"cookie-based-authentication",[132],{"type":28,"value":133},"Cookie-based authentication",{"type":22,"tag":31,"props":135,"children":136},{},[137],{"type":28,"value":138},"For browser-based integrations, you can also use session cookies from the login endpoint:",{"type":22,"tag":44,"props":140,"children":143},{"code":141,"language":120,"meta":8,"className":142},"curl -X POST https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"email\": \"you@company.com\", \"password\": \"your_password\"}'\n",[122],[144],{"type":22,"tag":49,"props":145,"children":146},{"__ignoreMap":8},[147],{"type":28,"value":141},{"type":22,"tag":37,"props":149,"children":151},{"id":150},"request-format",[152],{"type":28,"value":153},"Request format",{"type":22,"tag":155,"props":156,"children":157},"ul",{},[158,174,184],{"type":22,"tag":76,"props":159,"children":160},{},[161,166,168],{"type":22,"tag":82,"props":162,"children":163},{},[164],{"type":28,"value":165},"Content-Type:",{"type":28,"value":167}," ",{"type":22,"tag":49,"props":169,"children":171},{"className":170},[],[172],{"type":28,"value":173},"application\u002Fjson",{"type":22,"tag":76,"props":175,"children":176},{},[177,182],{"type":22,"tag":82,"props":178,"children":179},{},[180],{"type":28,"value":181},"Method:",{"type":28,"value":183}," GET (read), POST (create), PUT (update), DELETE (remove)",{"type":22,"tag":76,"props":185,"children":186},{},[187,192],{"type":22,"tag":82,"props":188,"children":189},{},[190],{"type":28,"value":191},"Response format:",{"type":28,"value":193}," JSON envelope",{"type":22,"tag":65,"props":195,"children":197},{"id":196},"response-envelope",[198],{"type":28,"value":199},"Response envelope",{"type":22,"tag":31,"props":201,"children":202},{},[203],{"type":28,"value":204},"All responses follow this format:",{"type":22,"tag":44,"props":206,"children":211},{"code":207,"language":208,"meta":8,"className":209},"{\n  \"data\": { ... },\n  \"status\": \"success\"\n}\n","json",[210],"language-json",[212],{"type":22,"tag":49,"props":213,"children":214},{"__ignoreMap":8},[215],{"type":28,"value":207},{"type":22,"tag":31,"props":217,"children":218},{},[219],{"type":28,"value":220},"Error responses:",{"type":22,"tag":44,"props":222,"children":225},{"code":223,"language":208,"meta":8,"className":224},"{\n  \"message\": \"Error description\",\n  \"status\": \"error\"\n}\n",[210],[226],{"type":22,"tag":49,"props":227,"children":228},{"__ignoreMap":8},[229],{"type":28,"value":223},{"type":22,"tag":37,"props":231,"children":233},{"id":232},"your-first-api-call",[234],{"type":28,"value":235},"Your first API call",{"type":22,"tag":31,"props":237,"children":238},{},[239],{"type":28,"value":240},"List your contacts:",{"type":22,"tag":44,"props":242,"children":245},{"code":243,"language":120,"meta":8,"className":244},"curl -H \"X-API-Key: your_key\" \\\n  https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fcontacts\n",[122],[246],{"type":22,"tag":49,"props":247,"children":248},{"__ignoreMap":8},[249],{"type":28,"value":243},{"type":22,"tag":31,"props":251,"children":252},{},[253],{"type":28,"value":254},"Response:",{"type":22,"tag":44,"props":256,"children":259},{"code":257,"language":208,"meta":8,"className":258},"{\n  \"data\": {\n    \"contacts\": [\n      {\n        \"id\": \"uuid\",\n        \"phone_number\": \"+919876543210\",\n        \"name\": \"John Doe\",\n        \"tags\": [\"customer\"],\n        \"stage\": \"Customer\"\n      }\n    ],\n    \"total\": 150,\n    \"page\": 1\n  }\n}\n",[210],[260],{"type":22,"tag":49,"props":261,"children":262},{"__ignoreMap":8},[263],{"type":28,"value":257},{"type":22,"tag":37,"props":265,"children":267},{"id":266},"available-endpoints",[268],{"type":28,"value":269},"Available endpoints",{"type":22,"tag":271,"props":272,"children":273},"table",{},[274,298],{"type":22,"tag":275,"props":276,"children":277},"thead",{},[278],{"type":22,"tag":279,"props":280,"children":281},"tr",{},[282,288,293],{"type":22,"tag":283,"props":284,"children":285},"th",{},[286],{"type":28,"value":287},"Method",{"type":22,"tag":283,"props":289,"children":290},{},[291],{"type":28,"value":292},"Endpoint",{"type":22,"tag":283,"props":294,"children":295},{},[296],{"type":28,"value":297},"Description",{"type":22,"tag":299,"props":300,"children":301},"tbody",{},[302,325,346,367,388,409,430,451,472,492],{"type":22,"tag":279,"props":303,"children":304},{},[305,311,320],{"type":22,"tag":306,"props":307,"children":308},"td",{},[309],{"type":28,"value":310},"GET",{"type":22,"tag":306,"props":312,"children":313},{},[314],{"type":22,"tag":49,"props":315,"children":317},{"className":316},[],[318],{"type":28,"value":319},"\u002Fcontacts",{"type":22,"tag":306,"props":321,"children":322},{},[323],{"type":28,"value":324},"List contacts",{"type":22,"tag":279,"props":326,"children":327},{},[328,333,341],{"type":22,"tag":306,"props":329,"children":330},{},[331],{"type":28,"value":332},"POST",{"type":22,"tag":306,"props":334,"children":335},{},[336],{"type":22,"tag":49,"props":337,"children":339},{"className":338},[],[340],{"type":28,"value":319},{"type":22,"tag":306,"props":342,"children":343},{},[344],{"type":28,"value":345},"Create contact",{"type":22,"tag":279,"props":347,"children":348},{},[349,353,362],{"type":22,"tag":306,"props":350,"children":351},{},[352],{"type":28,"value":310},{"type":22,"tag":306,"props":354,"children":355},{},[356],{"type":22,"tag":49,"props":357,"children":359},{"className":358},[],[360],{"type":28,"value":361},"\u002Fcontacts\u002F{id}",{"type":22,"tag":306,"props":363,"children":364},{},[365],{"type":28,"value":366},"Get contact",{"type":22,"tag":279,"props":368,"children":369},{},[370,375,383],{"type":22,"tag":306,"props":371,"children":372},{},[373],{"type":28,"value":374},"PUT",{"type":22,"tag":306,"props":376,"children":377},{},[378],{"type":22,"tag":49,"props":379,"children":381},{"className":380},[],[382],{"type":28,"value":361},{"type":22,"tag":306,"props":384,"children":385},{},[386],{"type":28,"value":387},"Update contact",{"type":22,"tag":279,"props":389,"children":390},{},[391,396,404],{"type":22,"tag":306,"props":392,"children":393},{},[394],{"type":28,"value":395},"DELETE",{"type":22,"tag":306,"props":397,"children":398},{},[399],{"type":22,"tag":49,"props":400,"children":402},{"className":401},[],[403],{"type":28,"value":361},{"type":22,"tag":306,"props":405,"children":406},{},[407],{"type":28,"value":408},"Delete contact",{"type":22,"tag":279,"props":410,"children":411},{},[412,416,425],{"type":22,"tag":306,"props":413,"children":414},{},[415],{"type":28,"value":332},{"type":22,"tag":306,"props":417,"children":418},{},[419],{"type":22,"tag":49,"props":420,"children":422},{"className":421},[],[423],{"type":28,"value":424},"\u002Fmessages\u002Fsend",{"type":22,"tag":306,"props":426,"children":427},{},[428],{"type":28,"value":429},"Send message",{"type":22,"tag":279,"props":431,"children":432},{},[433,437,446],{"type":22,"tag":306,"props":434,"children":435},{},[436],{"type":28,"value":310},{"type":22,"tag":306,"props":438,"children":439},{},[440],{"type":22,"tag":49,"props":441,"children":443},{"className":442},[],[444],{"type":28,"value":445},"\u002Ftemplates",{"type":22,"tag":306,"props":447,"children":448},{},[449],{"type":28,"value":450},"List templates",{"type":22,"tag":279,"props":452,"children":453},{},[454,458,467],{"type":22,"tag":306,"props":455,"children":456},{},[457],{"type":28,"value":310},{"type":22,"tag":306,"props":459,"children":460},{},[461],{"type":22,"tag":49,"props":462,"children":464},{"className":463},[],[465],{"type":28,"value":466},"\u002Fcampaigns",{"type":22,"tag":306,"props":468,"children":469},{},[470],{"type":28,"value":471},"List campaigns",{"type":22,"tag":279,"props":473,"children":474},{},[475,479,487],{"type":22,"tag":306,"props":476,"children":477},{},[478],{"type":28,"value":332},{"type":22,"tag":306,"props":480,"children":481},{},[482],{"type":22,"tag":49,"props":483,"children":485},{"className":484},[],[486],{"type":28,"value":466},{"type":22,"tag":306,"props":488,"children":489},{},[490],{"type":28,"value":491},"Create campaign",{"type":22,"tag":279,"props":493,"children":494},{},[495,499,508],{"type":22,"tag":306,"props":496,"children":497},{},[498],{"type":28,"value":310},{"type":22,"tag":306,"props":500,"children":501},{},[502],{"type":22,"tag":49,"props":503,"children":505},{"className":504},[],[506],{"type":28,"value":507},"\u002Faccounts",{"type":22,"tag":306,"props":509,"children":510},{},[511],{"type":28,"value":512},"List WhatsApp accounts",{"type":22,"tag":37,"props":514,"children":516},{"id":515},"rate-limits",[517],{"type":28,"value":518},"Rate limits",{"type":22,"tag":155,"props":520,"children":521},{},[522,532,542],{"type":22,"tag":76,"props":523,"children":524},{},[525,530],{"type":22,"tag":82,"props":526,"children":527},{},[528],{"type":28,"value":529},"100 requests per minute",{"type":28,"value":531}," per API key",{"type":22,"tag":76,"props":533,"children":534},{},[535,540],{"type":22,"tag":82,"props":536,"children":537},{},[538],{"type":28,"value":539},"10 requests per second",{"type":28,"value":541}," burst limit",{"type":22,"tag":76,"props":543,"children":544},{},[545,547],{"type":28,"value":546},"Rate limit headers included in responses:\n",{"type":22,"tag":155,"props":548,"children":549},{},[550,559,568],{"type":22,"tag":76,"props":551,"children":552},{},[553],{"type":22,"tag":49,"props":554,"children":556},{"className":555},[],[557],{"type":28,"value":558},"X-RateLimit-Limit",{"type":22,"tag":76,"props":560,"children":561},{},[562],{"type":22,"tag":49,"props":563,"children":565},{"className":564},[],[566],{"type":28,"value":567},"X-RateLimit-Remaining",{"type":22,"tag":76,"props":569,"children":570},{},[571],{"type":22,"tag":49,"props":572,"children":574},{"className":573},[],[575],{"type":28,"value":576},"X-RateLimit-Reset",{"type":22,"tag":37,"props":578,"children":580},{"id":579},"sdks-and-libraries",[581],{"type":28,"value":582},"SDKs and libraries",{"type":22,"tag":31,"props":584,"children":585},{},[586],{"type":28,"value":587},"Currently, we provide a REST API. You can use any HTTP client:",{"type":22,"tag":155,"props":589,"children":590},{},[591,601,611,621],{"type":22,"tag":76,"props":592,"children":593},{},[594,599],{"type":22,"tag":82,"props":595,"children":596},{},[597],{"type":28,"value":598},"JavaScript:",{"type":28,"value":600}," fetch, axios",{"type":22,"tag":76,"props":602,"children":603},{},[604,609],{"type":22,"tag":82,"props":605,"children":606},{},[607],{"type":28,"value":608},"Python:",{"type":28,"value":610}," requests, httpx",{"type":22,"tag":76,"props":612,"children":613},{},[614,619],{"type":22,"tag":82,"props":615,"children":616},{},[617],{"type":28,"value":618},"PHP:",{"type":28,"value":620}," Guzzle",{"type":22,"tag":76,"props":622,"children":623},{},[624,629],{"type":22,"tag":82,"props":625,"children":626},{},[627],{"type":28,"value":628},"Go:",{"type":28,"value":630}," net\u002Fhttp",{"type":22,"tag":37,"props":632,"children":634},{"id":633},"security-best-practices",[635],{"type":28,"value":636},"Security best practices",{"type":22,"tag":72,"props":638,"children":639},{},[640,650,660,670,680],{"type":22,"tag":76,"props":641,"children":642},{},[643,648],{"type":22,"tag":82,"props":644,"children":645},{},[646],{"type":28,"value":647},"Never expose API keys in frontend code",{"type":28,"value":649}," — Use server-side only",{"type":22,"tag":76,"props":651,"children":652},{},[653,658],{"type":22,"tag":82,"props":654,"children":655},{},[656],{"type":28,"value":657},"Rotate keys regularly",{"type":28,"value":659}," — Create new keys and revoke old ones",{"type":22,"tag":76,"props":661,"children":662},{},[663,668],{"type":22,"tag":82,"props":664,"children":665},{},[666],{"type":28,"value":667},"Use minimal permissions",{"type":28,"value":669}," — Create keys with only the access needed",{"type":22,"tag":76,"props":671,"children":672},{},[673,678],{"type":22,"tag":82,"props":674,"children":675},{},[676],{"type":28,"value":677},"Monitor usage",{"type":28,"value":679}," — Check API key activity in Settings → API Keys",{"type":22,"tag":76,"props":681,"children":682},{},[683,688],{"type":22,"tag":82,"props":684,"children":685},{},[686],{"type":28,"value":687},"Use HTTPS only",{"type":28,"value":689}," — All API calls must use HTTPS",{"title":8,"searchDepth":691,"depth":691,"links":692},2,[693,694,699,702,703,704,705,706],{"id":39,"depth":691,"text":42},{"id":60,"depth":691,"text":63,"children":695},[696,698],{"id":67,"depth":697,"text":70},3,{"id":130,"depth":697,"text":133},{"id":150,"depth":691,"text":153,"children":700},[701],{"id":196,"depth":697,"text":199},{"id":232,"depth":691,"text":235},{"id":266,"depth":691,"text":269},{"id":515,"depth":691,"text":518},{"id":579,"depth":691,"text":582},{"id":633,"depth":691,"text":636},"markdown","content:help:integrations:api-overview.md","content","help\u002Fintegrations\u002Fapi-overview.md","help\u002Fintegrations\u002Fapi-overview","md",{"_path":714,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":715,"description":716,"category":6,"order":717,"difficulty":12,"time_to_complete":13,"related":718,"body":720,"_type":707,"_id":978,"_source":709,"_file":979,"_stem":980,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fwebhook-events","Webhook event types reference","Complete reference of all webhook event types, their payloads, and when they fire.",10,[16,5,719],"\u002Fhelp\u002Fsettings\u002Fwebhook-configuration",{"type":19,"children":721,"toc":958},[722,727,732,738,744,749,758,764,769,778,784,789,795,800,806,811,820,826,832,841,847,852,858,864,873,879,885,890,899,905],{"type":22,"tag":23,"props":723,"children":725},{"id":724},"webhook-event-types-reference",[726],{"type":28,"value":715},{"type":22,"tag":31,"props":728,"children":729},{},[730],{"type":28,"value":731},"Complete list of events you can subscribe to and their payload formats.",{"type":22,"tag":37,"props":733,"children":735},{"id":734},"message-events",[736],{"type":28,"value":737},"Message events",{"type":22,"tag":65,"props":739,"children":741},{"id":740},"messageincoming",[742],{"type":28,"value":743},"message.incoming",{"type":22,"tag":31,"props":745,"children":746},{},[747],{"type":28,"value":748},"Fired when a customer sends you a message.",{"type":22,"tag":44,"props":750,"children":753},{"className":751,"code":752,"language":208,"meta":8},[210],"{\n  \"event\": \"message.incoming\",\n  \"timestamp\": \"2026-05-29T10:30:00Z\",\n  \"data\": {\n    \"message_id\": \"wamid.HBgLOTE5ODc2...\",\n    \"from\": \"+919876543210\",\n    \"contact_id\": \"uuid\",\n    \"contact_name\": \"John Doe\",\n    \"type\": \"text\",\n    \"text\": \"Hello, I need help\",\n    \"whatsapp_account_id\": \"uuid\"\n  }\n}\n",[754],{"type":22,"tag":49,"props":755,"children":756},{"__ignoreMap":8},[757],{"type":28,"value":752},{"type":22,"tag":65,"props":759,"children":761},{"id":760},"messagesent",[762],{"type":28,"value":763},"message.sent",{"type":22,"tag":31,"props":765,"children":766},{},[767],{"type":28,"value":768},"Fired when your message is sent to WhatsApp.",{"type":22,"tag":44,"props":770,"children":773},{"className":771,"code":772,"language":208,"meta":8},[210],"{\n  \"event\": \"message.sent\",\n  \"timestamp\": \"2026-05-29T10:30:05Z\",\n  \"data\": {\n    \"message_id\": \"wamid.HBgLOTE5ODc2...\",\n    \"to\": \"+919876543210\",\n    \"type\": \"text\",\n    \"status\": \"sent\"\n  }\n}\n",[774],{"type":22,"tag":49,"props":775,"children":776},{"__ignoreMap":8},[777],{"type":28,"value":772},{"type":22,"tag":65,"props":779,"children":781},{"id":780},"messagedelivered",[782],{"type":28,"value":783},"message.delivered",{"type":22,"tag":31,"props":785,"children":786},{},[787],{"type":28,"value":788},"Fired when message reaches the recipient's phone.",{"type":22,"tag":65,"props":790,"children":792},{"id":791},"messageread",[793],{"type":28,"value":794},"message.read",{"type":22,"tag":31,"props":796,"children":797},{},[798],{"type":28,"value":799},"Fired when recipient opens and reads the message.",{"type":22,"tag":65,"props":801,"children":803},{"id":802},"messagefailed",[804],{"type":28,"value":805},"message.failed",{"type":22,"tag":31,"props":807,"children":808},{},[809],{"type":28,"value":810},"Fired when message delivery fails.",{"type":22,"tag":44,"props":812,"children":815},{"className":813,"code":814,"language":208,"meta":8},[210],"{\n  \"event\": \"message.failed\",\n  \"data\": {\n    \"message_id\": \"wamid.xxx\",\n    \"to\": \"+919876543210\",\n    \"error_code\": 131047,\n    \"error_message\": \"Re-engagement message\"\n  }\n}\n",[816],{"type":22,"tag":49,"props":817,"children":818},{"__ignoreMap":8},[819],{"type":28,"value":814},{"type":22,"tag":37,"props":821,"children":823},{"id":822},"contact-events",[824],{"type":28,"value":825},"Contact events",{"type":22,"tag":65,"props":827,"children":829},{"id":828},"contactcreated",[830],{"type":28,"value":831},"contact.created",{"type":22,"tag":44,"props":833,"children":836},{"className":834,"code":835,"language":208,"meta":8},[210],"{\n  \"event\": \"contact.created\",\n  \"data\": {\n    \"id\": \"uuid\",\n    \"phone_number\": \"+919876543210\",\n    \"name\": \"John Doe\",\n    \"source\": \"whatsapp_webhook\"\n  }\n}\n",[837],{"type":22,"tag":49,"props":838,"children":839},{"__ignoreMap":8},[840],{"type":28,"value":835},{"type":22,"tag":65,"props":842,"children":844},{"id":843},"contactupdated",[845],{"type":28,"value":846},"contact.updated",{"type":22,"tag":31,"props":848,"children":849},{},[850],{"type":28,"value":851},"Fired when contact data changes (name, tags, stage, custom fields).",{"type":22,"tag":37,"props":853,"children":855},{"id":854},"campaign-events",[856],{"type":28,"value":857},"Campaign events",{"type":22,"tag":65,"props":859,"children":861},{"id":860},"campaigncompleted",[862],{"type":28,"value":863},"campaign.completed",{"type":22,"tag":44,"props":865,"children":868},{"className":866,"code":867,"language":208,"meta":8},[210],"{\n  \"event\": \"campaign.completed\",\n  \"data\": {\n    \"id\": \"uuid\",\n    \"name\": \"May Promotion\",\n    \"total\": 1000,\n    \"sent\": 985,\n    \"delivered\": 970,\n    \"read\": 650,\n    \"failed\": 15\n  }\n}\n",[869],{"type":22,"tag":49,"props":870,"children":871},{"__ignoreMap":8},[872],{"type":28,"value":867},{"type":22,"tag":37,"props":874,"children":876},{"id":875},"transfer-events",[877],{"type":28,"value":878},"Transfer events",{"type":22,"tag":65,"props":880,"children":882},{"id":881},"transfercreated",[883],{"type":28,"value":884},"transfer.created",{"type":22,"tag":31,"props":886,"children":887},{},[888],{"type":28,"value":889},"Fired when a conversation is transferred to an agent.",{"type":22,"tag":44,"props":891,"children":894},{"className":892,"code":893,"language":208,"meta":8},[210],"{\n  \"event\": \"transfer.created\",\n  \"data\": {\n    \"contact_id\": \"uuid\",\n    \"from_agent_id\": null,\n    \"to_agent_id\": \"uuid\",\n    \"to_team_id\": \"uuid\",\n    \"notes\": \"Customer asking about refund\"\n  }\n}\n",[895],{"type":22,"tag":49,"props":896,"children":897},{"__ignoreMap":8},[898],{"type":28,"value":893},{"type":22,"tag":37,"props":900,"children":902},{"id":901},"tips-for-handling-events",[903],{"type":28,"value":904},"Tips for handling events",{"type":22,"tag":72,"props":906,"children":907},{},[908,918,928,938,948],{"type":22,"tag":76,"props":909,"children":910},{},[911,916],{"type":22,"tag":82,"props":912,"children":913},{},[914],{"type":28,"value":915},"Respond with 200 immediately",{"type":28,"value":917}," — Process async",{"type":22,"tag":76,"props":919,"children":920},{},[921,926],{"type":22,"tag":82,"props":922,"children":923},{},[924],{"type":28,"value":925},"Use message_id for dedup",{"type":28,"value":927}," — Same event may arrive twice",{"type":22,"tag":76,"props":929,"children":930},{},[931,936],{"type":22,"tag":82,"props":932,"children":933},{},[934],{"type":28,"value":935},"Filter by event type",{"type":28,"value":937}," — Only subscribe to what you need",{"type":22,"tag":76,"props":939,"children":940},{},[941,946],{"type":22,"tag":82,"props":942,"children":943},{},[944],{"type":28,"value":945},"Log raw payloads",{"type":28,"value":947}," — Helpful for debugging",{"type":22,"tag":76,"props":949,"children":950},{},[951,956],{"type":22,"tag":82,"props":952,"children":953},{},[954],{"type":28,"value":955},"Handle unknown events gracefully",{"type":28,"value":957}," — New events may be added",{"title":8,"searchDepth":691,"depth":691,"links":959},[960,967,971,974,977],{"id":734,"depth":691,"text":737,"children":961},[962,963,964,965,966],{"id":740,"depth":697,"text":743},{"id":760,"depth":697,"text":763},{"id":780,"depth":697,"text":783},{"id":791,"depth":697,"text":794},{"id":802,"depth":697,"text":805},{"id":822,"depth":691,"text":825,"children":968},[969,970],{"id":828,"depth":697,"text":831},{"id":843,"depth":697,"text":846},{"id":854,"depth":691,"text":857,"children":972},[973],{"id":860,"depth":697,"text":863},{"id":875,"depth":691,"text":878,"children":975},[976],{"id":881,"depth":697,"text":884},{"id":901,"depth":691,"text":904},"content:help:integrations:webhook-events.md","help\u002Fintegrations\u002Fwebhook-events.md","help\u002Fintegrations\u002Fwebhook-events",{"_path":17,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":982,"description":983,"category":6,"order":984,"difficulty":12,"time_to_complete":985,"related":986,"body":988,"_type":707,"_id":1310,"_source":709,"_file":1311,"_stem":1312,"_extension":712},"API rate limits and best practices","Understanding AIsoule API rate limits, how to handle 429 errors, and best practices for high-volume integrations.",11,"3 minutes",[5,15,987],"\u002Fhelp\u002Fsettings\u002Fapi-keys",{"type":19,"children":989,"toc":1294},[990,996,1001,1007,1068,1073,1079,1084,1092,1125,1131,1136,1145,1151,1162,1168,1174,1179,1187,1193,1201,1207,1212,1218,1223,1229,1234,1240,1245,1278,1283,1289],{"type":22,"tag":23,"props":991,"children":993},{"id":992},"api-rate-limits",[994],{"type":28,"value":995},"API rate limits",{"type":22,"tag":31,"props":997,"children":998},{},[999],{"type":28,"value":1000},"AIsoule enforces rate limits to ensure platform stability. Here's how they work.",{"type":22,"tag":37,"props":1002,"children":1004},{"id":1003},"default-limits",[1005],{"type":28,"value":1006},"Default limits",{"type":22,"tag":271,"props":1008,"children":1009},{},[1010,1026],{"type":22,"tag":275,"props":1011,"children":1012},{},[1013],{"type":22,"tag":279,"props":1014,"children":1015},{},[1016,1021],{"type":22,"tag":283,"props":1017,"children":1018},{},[1019],{"type":28,"value":1020},"Limit type",{"type":22,"tag":283,"props":1022,"children":1023},{},[1024],{"type":28,"value":1025},"Value",{"type":22,"tag":299,"props":1027,"children":1028},{},[1029,1042,1055],{"type":22,"tag":279,"props":1030,"children":1031},{},[1032,1037],{"type":22,"tag":306,"props":1033,"children":1034},{},[1035],{"type":28,"value":1036},"Requests per minute",{"type":22,"tag":306,"props":1038,"children":1039},{},[1040],{"type":28,"value":1041},"100",{"type":22,"tag":279,"props":1043,"children":1044},{},[1045,1050],{"type":22,"tag":306,"props":1046,"children":1047},{},[1048],{"type":28,"value":1049},"Requests per second (burst)",{"type":22,"tag":306,"props":1051,"children":1052},{},[1053],{"type":28,"value":1054},"10",{"type":22,"tag":279,"props":1056,"children":1057},{},[1058,1063],{"type":22,"tag":306,"props":1059,"children":1060},{},[1061],{"type":28,"value":1062},"Max request body size",{"type":22,"tag":306,"props":1064,"children":1065},{},[1066],{"type":28,"value":1067},"5 MB",{"type":22,"tag":31,"props":1069,"children":1070},{},[1071],{"type":28,"value":1072},"These limits apply per API key.",{"type":22,"tag":37,"props":1074,"children":1076},{"id":1075},"rate-limit-headers",[1077],{"type":28,"value":1078},"Rate limit headers",{"type":22,"tag":31,"props":1080,"children":1081},{},[1082],{"type":28,"value":1083},"Every API response includes these headers:",{"type":22,"tag":44,"props":1085,"children":1087},{"code":1086},"X-RateLimit-Limit: 100\nX-RateLimit-Remaining: 87\nX-RateLimit-Reset: 1716984000\n",[1088],{"type":22,"tag":49,"props":1089,"children":1090},{"__ignoreMap":8},[1091],{"type":28,"value":1086},{"type":22,"tag":155,"props":1093,"children":1094},{},[1095,1105,1115],{"type":22,"tag":76,"props":1096,"children":1097},{},[1098,1103],{"type":22,"tag":82,"props":1099,"children":1100},{},[1101],{"type":28,"value":1102},"Limit",{"type":28,"value":1104}," — Your total allowed requests per window",{"type":22,"tag":76,"props":1106,"children":1107},{},[1108,1113],{"type":22,"tag":82,"props":1109,"children":1110},{},[1111],{"type":28,"value":1112},"Remaining",{"type":28,"value":1114}," — How many requests you have left",{"type":22,"tag":76,"props":1116,"children":1117},{},[1118,1123],{"type":22,"tag":82,"props":1119,"children":1120},{},[1121],{"type":28,"value":1122},"Reset",{"type":28,"value":1124}," — Unix timestamp when the window resets",{"type":22,"tag":37,"props":1126,"children":1128},{"id":1127},"handling-429-too-many-requests",[1129],{"type":28,"value":1130},"Handling 429 (Too Many Requests)",{"type":22,"tag":31,"props":1132,"children":1133},{},[1134],{"type":28,"value":1135},"When you exceed the limit, you'll receive:",{"type":22,"tag":44,"props":1137,"children":1140},{"code":1138,"language":208,"meta":8,"className":1139},"HTTP 429 Too Many Requests\n{\n  \"message\": \"Rate limit exceeded. Try again in 30 seconds.\",\n  \"status\": \"error\"\n}\n",[210],[1141],{"type":22,"tag":49,"props":1142,"children":1143},{"__ignoreMap":8},[1144],{"type":28,"value":1138},{"type":22,"tag":65,"props":1146,"children":1148},{"id":1147},"recommended-retry-strategy",[1149],{"type":28,"value":1150},"Recommended retry strategy",{"type":22,"tag":44,"props":1152,"children":1157},{"code":1153,"language":1154,"meta":8,"className":1155},"async function apiCallWithRetry(url, options, maxRetries = 3) {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    const response = await fetch(url, options);\n    \n    if (response.status === 429) {\n      const retryAfter = response.headers.get('Retry-After') || 30;\n      await sleep(retryAfter * 1000);\n      continue;\n    }\n    \n    return response;\n  }\n  throw new Error('Max retries exceeded');\n}\n","javascript",[1156],"language-javascript",[1158],{"type":22,"tag":49,"props":1159,"children":1160},{"__ignoreMap":8},[1161],{"type":28,"value":1153},{"type":22,"tag":37,"props":1163,"children":1165},{"id":1164},"best-practices-for-high-volume-usage",[1166],{"type":28,"value":1167},"Best practices for high-volume usage",{"type":22,"tag":65,"props":1169,"children":1171},{"id":1170},"_1-batch-operations",[1172],{"type":28,"value":1173},"1. Batch operations",{"type":22,"tag":31,"props":1175,"children":1176},{},[1177],{"type":28,"value":1178},"Instead of creating contacts one-by-one, use bulk endpoints:",{"type":22,"tag":44,"props":1180,"children":1182},{"code":1181},"POST \u002Fapi\u002Fcontacts\u002Fbulk\n",[1183],{"type":22,"tag":49,"props":1184,"children":1185},{"__ignoreMap":8},[1186],{"type":28,"value":1181},{"type":22,"tag":65,"props":1188,"children":1190},{"id":1189},"_2-implement-exponential-backoff",[1191],{"type":28,"value":1192},"2. Implement exponential backoff",{"type":22,"tag":44,"props":1194,"children":1196},{"code":1195},"Retry 1: wait 1 second\nRetry 2: wait 2 seconds\nRetry 3: wait 4 seconds\nRetry 4: wait 8 seconds\n",[1197],{"type":22,"tag":49,"props":1198,"children":1199},{"__ignoreMap":8},[1200],{"type":28,"value":1195},{"type":22,"tag":65,"props":1202,"children":1204},{"id":1203},"_3-cache-responses",[1205],{"type":28,"value":1206},"3. Cache responses",{"type":22,"tag":31,"props":1208,"children":1209},{},[1210],{"type":28,"value":1211},"Don't fetch the same data repeatedly. Cache contact lists, templates, etc. locally.",{"type":22,"tag":65,"props":1213,"children":1215},{"id":1214},"_4-use-webhooks-instead-of-polling",[1216],{"type":28,"value":1217},"4. Use webhooks instead of polling",{"type":22,"tag":31,"props":1219,"children":1220},{},[1221],{"type":28,"value":1222},"Instead of checking for new messages every second, set up webhooks to receive them in real-time.",{"type":22,"tag":65,"props":1224,"children":1226},{"id":1225},"_5-spread-requests-over-time",[1227],{"type":28,"value":1228},"5. Spread requests over time",{"type":22,"tag":31,"props":1230,"children":1231},{},[1232],{"type":28,"value":1233},"If you need to send 1,000 messages, spread them over 10 minutes (100\u002Fmin) instead of all at once.",{"type":22,"tag":37,"props":1235,"children":1237},{"id":1236},"metas-limits-separate-from-aisoule",[1238],{"type":28,"value":1239},"Meta's limits (separate from AIsoule)",{"type":22,"tag":31,"props":1241,"children":1242},{},[1243],{"type":28,"value":1244},"In addition to AIsoule's API limits, Meta has its own:",{"type":22,"tag":155,"props":1246,"children":1247},{},[1248,1258,1268],{"type":22,"tag":76,"props":1249,"children":1250},{},[1251,1256],{"type":22,"tag":82,"props":1252,"children":1253},{},[1254],{"type":28,"value":1255},"Messaging limits",{"type":28,"value":1257}," — Unique contacts per day (tier-based)",{"type":22,"tag":76,"props":1259,"children":1260},{},[1261,1266],{"type":22,"tag":82,"props":1262,"children":1263},{},[1264],{"type":28,"value":1265},"Template submission",{"type":28,"value":1267}," — Max 100 templates per hour",{"type":22,"tag":76,"props":1269,"children":1270},{},[1271,1276],{"type":22,"tag":82,"props":1272,"children":1273},{},[1274],{"type":28,"value":1275},"Media upload",{"type":28,"value":1277}," — Max 500 uploads per day",{"type":22,"tag":31,"props":1279,"children":1280},{},[1281],{"type":28,"value":1282},"These are enforced by Meta regardless of AIsoule's limits.",{"type":22,"tag":37,"props":1284,"children":1286},{"id":1285},"need-higher-limits",[1287],{"type":28,"value":1288},"Need higher limits?",{"type":22,"tag":31,"props":1290,"children":1291},{},[1292],{"type":28,"value":1293},"Contact support if you need increased rate limits for your use case. Enterprise plans may include higher limits.",{"title":8,"searchDepth":691,"depth":691,"links":1295},[1296,1297,1298,1301,1308,1309],{"id":1003,"depth":691,"text":1006},{"id":1075,"depth":691,"text":1078},{"id":1127,"depth":691,"text":1130,"children":1299},[1300],{"id":1147,"depth":697,"text":1150},{"id":1164,"depth":691,"text":1167,"children":1302},[1303,1304,1305,1306,1307],{"id":1170,"depth":697,"text":1173},{"id":1189,"depth":697,"text":1192},{"id":1203,"depth":697,"text":1206},{"id":1214,"depth":697,"text":1217},{"id":1225,"depth":697,"text":1228},{"id":1236,"depth":691,"text":1239},{"id":1285,"depth":691,"text":1288},"content:help:integrations:api-rate-limits.md","help\u002Fintegrations\u002Fapi-rate-limits.md","help\u002Fintegrations\u002Fapi-rate-limits",{"_path":1314,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1315,"description":1316,"category":6,"order":1317,"difficulty":12,"time_to_complete":985,"related":1318,"body":1320,"_type":707,"_id":1927,"_source":709,"_file":1928,"_stem":1929,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Ferror-codes","Error codes reference","Complete reference of AIsoule and WhatsApp API error codes with explanations and solutions.",12,[5,1319,17],"\u002Fhelp\u002Fmessaging\u002Fwhy-messages-fail",{"type":19,"children":1321,"toc":1921},[1322,1327,1332,1338,1509,1515,1721,1727,1861,1867],{"type":22,"tag":23,"props":1323,"children":1325},{"id":1324},"error-codes-reference",[1326],{"type":28,"value":1315},{"type":22,"tag":31,"props":1328,"children":1329},{},[1330],{"type":28,"value":1331},"Common error codes you may encounter when using the AIsoule API or sending messages.",{"type":22,"tag":37,"props":1333,"children":1335},{"id":1334},"http-status-codes",[1336],{"type":28,"value":1337},"HTTP status codes",{"type":22,"tag":271,"props":1339,"children":1340},{},[1341,1362],{"type":22,"tag":275,"props":1342,"children":1343},{},[1344],{"type":22,"tag":279,"props":1345,"children":1346},{},[1347,1352,1357],{"type":22,"tag":283,"props":1348,"children":1349},{},[1350],{"type":28,"value":1351},"Code",{"type":22,"tag":283,"props":1353,"children":1354},{},[1355],{"type":28,"value":1356},"Meaning",{"type":22,"tag":283,"props":1358,"children":1359},{},[1360],{"type":28,"value":1361},"Action",{"type":22,"tag":299,"props":1363,"children":1364},{},[1365,1383,1401,1419,1437,1455,1473,1491],{"type":22,"tag":279,"props":1366,"children":1367},{},[1368,1373,1378],{"type":22,"tag":306,"props":1369,"children":1370},{},[1371],{"type":28,"value":1372},"200",{"type":22,"tag":306,"props":1374,"children":1375},{},[1376],{"type":28,"value":1377},"Success",{"type":22,"tag":306,"props":1379,"children":1380},{},[1381],{"type":28,"value":1382},"Request completed",{"type":22,"tag":279,"props":1384,"children":1385},{},[1386,1391,1396],{"type":22,"tag":306,"props":1387,"children":1388},{},[1389],{"type":28,"value":1390},"400",{"type":22,"tag":306,"props":1392,"children":1393},{},[1394],{"type":28,"value":1395},"Bad Request",{"type":22,"tag":306,"props":1397,"children":1398},{},[1399],{"type":28,"value":1400},"Check your request body\u002Fparams",{"type":22,"tag":279,"props":1402,"children":1403},{},[1404,1409,1414],{"type":22,"tag":306,"props":1405,"children":1406},{},[1407],{"type":28,"value":1408},"401",{"type":22,"tag":306,"props":1410,"children":1411},{},[1412],{"type":28,"value":1413},"Unauthorized",{"type":22,"tag":306,"props":1415,"children":1416},{},[1417],{"type":28,"value":1418},"Invalid or missing API key",{"type":22,"tag":279,"props":1420,"children":1421},{},[1422,1427,1432],{"type":22,"tag":306,"props":1423,"children":1424},{},[1425],{"type":28,"value":1426},"403",{"type":22,"tag":306,"props":1428,"children":1429},{},[1430],{"type":28,"value":1431},"Forbidden",{"type":22,"tag":306,"props":1433,"children":1434},{},[1435],{"type":28,"value":1436},"Insufficient permissions",{"type":22,"tag":279,"props":1438,"children":1439},{},[1440,1445,1450],{"type":22,"tag":306,"props":1441,"children":1442},{},[1443],{"type":28,"value":1444},"404",{"type":22,"tag":306,"props":1446,"children":1447},{},[1448],{"type":28,"value":1449},"Not Found",{"type":22,"tag":306,"props":1451,"children":1452},{},[1453],{"type":28,"value":1454},"Resource doesn't exist",{"type":22,"tag":279,"props":1456,"children":1457},{},[1458,1463,1468],{"type":22,"tag":306,"props":1459,"children":1460},{},[1461],{"type":28,"value":1462},"409",{"type":22,"tag":306,"props":1464,"children":1465},{},[1466],{"type":28,"value":1467},"Conflict",{"type":22,"tag":306,"props":1469,"children":1470},{},[1471],{"type":28,"value":1472},"Duplicate resource",{"type":22,"tag":279,"props":1474,"children":1475},{},[1476,1481,1486],{"type":22,"tag":306,"props":1477,"children":1478},{},[1479],{"type":28,"value":1480},"429",{"type":22,"tag":306,"props":1482,"children":1483},{},[1484],{"type":28,"value":1485},"Rate Limited",{"type":22,"tag":306,"props":1487,"children":1488},{},[1489],{"type":28,"value":1490},"Wait and retry",{"type":22,"tag":279,"props":1492,"children":1493},{},[1494,1499,1504],{"type":22,"tag":306,"props":1495,"children":1496},{},[1497],{"type":28,"value":1498},"500",{"type":22,"tag":306,"props":1500,"children":1501},{},[1502],{"type":28,"value":1503},"Server Error",{"type":22,"tag":306,"props":1505,"children":1506},{},[1507],{"type":28,"value":1508},"Retry; contact support if persistent",{"type":22,"tag":37,"props":1510,"children":1512},{"id":1511},"whatsapp-specific-errors",[1513],{"type":28,"value":1514},"WhatsApp-specific errors",{"type":22,"tag":271,"props":1516,"children":1517},{},[1518,1538],{"type":22,"tag":275,"props":1519,"children":1520},{},[1521],{"type":22,"tag":279,"props":1522,"children":1523},{},[1524,1528,1533],{"type":22,"tag":283,"props":1525,"children":1526},{},[1527],{"type":28,"value":1351},{"type":22,"tag":283,"props":1529,"children":1530},{},[1531],{"type":28,"value":1532},"Error",{"type":22,"tag":283,"props":1534,"children":1535},{},[1536],{"type":28,"value":1537},"Solution",{"type":22,"tag":299,"props":1539,"children":1540},{},[1541,1559,1577,1595,1613,1631,1649,1667,1685,1703],{"type":22,"tag":279,"props":1542,"children":1543},{},[1544,1549,1554],{"type":22,"tag":306,"props":1545,"children":1546},{},[1547],{"type":28,"value":1548},"131047",{"type":22,"tag":306,"props":1550,"children":1551},{},[1552],{"type":28,"value":1553},"Re-engagement message",{"type":22,"tag":306,"props":1555,"children":1556},{},[1557],{"type":28,"value":1558},"Outside 24h window — use a template",{"type":22,"tag":279,"props":1560,"children":1561},{},[1562,1567,1572],{"type":22,"tag":306,"props":1563,"children":1564},{},[1565],{"type":28,"value":1566},"131048",{"type":22,"tag":306,"props":1568,"children":1569},{},[1570],{"type":28,"value":1571},"Spam rate limit",{"type":22,"tag":306,"props":1573,"children":1574},{},[1575],{"type":28,"value":1576},"Too many messages — slow down",{"type":22,"tag":279,"props":1578,"children":1579},{},[1580,1585,1590],{"type":22,"tag":306,"props":1581,"children":1582},{},[1583],{"type":28,"value":1584},"131049",{"type":22,"tag":306,"props":1586,"children":1587},{},[1588],{"type":28,"value":1589},"Message not sent",{"type":22,"tag":306,"props":1591,"children":1592},{},[1593],{"type":28,"value":1594},"Generic failure — check number validity",{"type":22,"tag":279,"props":1596,"children":1597},{},[1598,1603,1608],{"type":22,"tag":306,"props":1599,"children":1600},{},[1601],{"type":28,"value":1602},"131051",{"type":22,"tag":306,"props":1604,"children":1605},{},[1606],{"type":28,"value":1607},"Unsupported message type",{"type":22,"tag":306,"props":1609,"children":1610},{},[1611],{"type":28,"value":1612},"Message type not allowed for this number",{"type":22,"tag":279,"props":1614,"children":1615},{},[1616,1621,1626],{"type":22,"tag":306,"props":1617,"children":1618},{},[1619],{"type":28,"value":1620},"131052",{"type":22,"tag":306,"props":1622,"children":1623},{},[1624],{"type":28,"value":1625},"Media download failed",{"type":22,"tag":306,"props":1627,"children":1628},{},[1629],{"type":28,"value":1630},"Media URL is inaccessible",{"type":22,"tag":279,"props":1632,"children":1633},{},[1634,1639,1644],{"type":22,"tag":306,"props":1635,"children":1636},{},[1637],{"type":28,"value":1638},"131053",{"type":22,"tag":306,"props":1640,"children":1641},{},[1642],{"type":28,"value":1643},"Media upload failed",{"type":22,"tag":306,"props":1645,"children":1646},{},[1647],{"type":28,"value":1648},"File too large or wrong format",{"type":22,"tag":279,"props":1650,"children":1651},{},[1652,1657,1662],{"type":22,"tag":306,"props":1653,"children":1654},{},[1655],{"type":28,"value":1656},"131056",{"type":22,"tag":306,"props":1658,"children":1659},{},[1660],{"type":28,"value":1661},"Pair rate limit",{"type":22,"tag":306,"props":1663,"children":1664},{},[1665],{"type":28,"value":1666},"Too many messages to new contacts",{"type":22,"tag":279,"props":1668,"children":1669},{},[1670,1675,1680],{"type":22,"tag":306,"props":1671,"children":1672},{},[1673],{"type":28,"value":1674},"131057",{"type":22,"tag":306,"props":1676,"children":1677},{},[1678],{"type":28,"value":1679},"Account in maintenance",{"type":22,"tag":306,"props":1681,"children":1682},{},[1683],{"type":28,"value":1684},"Wait and retry in a few minutes",{"type":22,"tag":279,"props":1686,"children":1687},{},[1688,1693,1698],{"type":22,"tag":306,"props":1689,"children":1690},{},[1691],{"type":28,"value":1692},"368",{"type":22,"tag":306,"props":1694,"children":1695},{},[1696],{"type":28,"value":1697},"Temporarily blocked",{"type":22,"tag":306,"props":1699,"children":1700},{},[1701],{"type":28,"value":1702},"Quality issues — review your content",{"type":22,"tag":279,"props":1704,"children":1705},{},[1706,1711,1716],{"type":22,"tag":306,"props":1707,"children":1708},{},[1709],{"type":28,"value":1710},"130429",{"type":22,"tag":306,"props":1712,"children":1713},{},[1714],{"type":28,"value":1715},"Rate limit hit",{"type":22,"tag":306,"props":1717,"children":1718},{},[1719],{"type":28,"value":1720},"Slow down sending speed",{"type":22,"tag":37,"props":1722,"children":1724},{"id":1723},"aisoule-specific-errors",[1725],{"type":28,"value":1726},"AIsoule-specific errors",{"type":22,"tag":271,"props":1728,"children":1729},{},[1730,1750],{"type":22,"tag":275,"props":1731,"children":1732},{},[1733],{"type":22,"tag":279,"props":1734,"children":1735},{},[1736,1741,1746],{"type":22,"tag":283,"props":1737,"children":1738},{},[1739],{"type":28,"value":1740},"Error message",{"type":22,"tag":283,"props":1742,"children":1743},{},[1744],{"type":28,"value":1745},"Cause",{"type":22,"tag":283,"props":1747,"children":1748},{},[1749],{"type":28,"value":1537},{"type":22,"tag":299,"props":1751,"children":1752},{},[1753,1771,1789,1807,1825,1843],{"type":22,"tag":279,"props":1754,"children":1755},{},[1756,1761,1766],{"type":22,"tag":306,"props":1757,"children":1758},{},[1759],{"type":28,"value":1760},"\"Outside service window\"",{"type":22,"tag":306,"props":1762,"children":1763},{},[1764],{"type":28,"value":1765},"24h window expired",{"type":22,"tag":306,"props":1767,"children":1768},{},[1769],{"type":28,"value":1770},"Send a template message",{"type":22,"tag":279,"props":1772,"children":1773},{},[1774,1779,1784],{"type":22,"tag":306,"props":1775,"children":1776},{},[1777],{"type":28,"value":1778},"\"Template not approved\"",{"type":22,"tag":306,"props":1780,"children":1781},{},[1782],{"type":28,"value":1783},"Template pending\u002Frejected",{"type":22,"tag":306,"props":1785,"children":1786},{},[1787],{"type":28,"value":1788},"Wait for approval or fix and resubmit",{"type":22,"tag":279,"props":1790,"children":1791},{},[1792,1797,1802],{"type":22,"tag":306,"props":1793,"children":1794},{},[1795],{"type":28,"value":1796},"\"Account disconnected\"",{"type":22,"tag":306,"props":1798,"children":1799},{},[1800],{"type":28,"value":1801},"Token expired",{"type":22,"tag":306,"props":1803,"children":1804},{},[1805],{"type":28,"value":1806},"Reconnect account or refresh token",{"type":22,"tag":279,"props":1808,"children":1809},{},[1810,1815,1820],{"type":22,"tag":306,"props":1811,"children":1812},{},[1813],{"type":28,"value":1814},"\"Recipient not on WhatsApp\"",{"type":22,"tag":306,"props":1816,"children":1817},{},[1818],{"type":28,"value":1819},"Number doesn't have WhatsApp",{"type":22,"tag":306,"props":1821,"children":1822},{},[1823],{"type":28,"value":1824},"Verify the number",{"type":22,"tag":279,"props":1826,"children":1827},{},[1828,1833,1838],{"type":22,"tag":306,"props":1829,"children":1830},{},[1831],{"type":28,"value":1832},"\"Rate limit exceeded\"",{"type":22,"tag":306,"props":1834,"children":1835},{},[1836],{"type":28,"value":1837},"Too many API calls",{"type":22,"tag":306,"props":1839,"children":1840},{},[1841],{"type":28,"value":1842},"Implement backoff, wait 60 seconds",{"type":22,"tag":279,"props":1844,"children":1845},{},[1846,1851,1856],{"type":22,"tag":306,"props":1847,"children":1848},{},[1849],{"type":28,"value":1850},"\"Invalid phone number\"",{"type":22,"tag":306,"props":1852,"children":1853},{},[1854],{"type":28,"value":1855},"Wrong format",{"type":22,"tag":306,"props":1857,"children":1858},{},[1859],{"type":28,"value":1860},"Use country code, digits only",{"type":22,"tag":37,"props":1862,"children":1864},{"id":1863},"tips",[1865],{"type":28,"value":1866},"Tips",{"type":22,"tag":72,"props":1868,"children":1869},{},[1870,1880,1890,1900],{"type":22,"tag":76,"props":1871,"children":1872},{},[1873,1878],{"type":22,"tag":82,"props":1874,"children":1875},{},[1876],{"type":28,"value":1877},"Log error codes",{"type":28,"value":1879}," — Helps with debugging patterns",{"type":22,"tag":76,"props":1881,"children":1882},{},[1883,1888],{"type":22,"tag":82,"props":1884,"children":1885},{},[1886],{"type":28,"value":1887},"Implement retry for 429\u002F500",{"type":28,"value":1889}," — These are temporary",{"type":22,"tag":76,"props":1891,"children":1892},{},[1893,1898],{"type":22,"tag":82,"props":1894,"children":1895},{},[1896],{"type":28,"value":1897},"Don't retry 400\u002F401\u002F403",{"type":28,"value":1899}," — These need code fixes",{"type":22,"tag":76,"props":1901,"children":1902},{},[1903,1908,1910,1919],{"type":22,"tag":82,"props":1904,"children":1905},{},[1906],{"type":28,"value":1907},"Check Meta status",{"type":28,"value":1909}," — ",{"type":22,"tag":1911,"props":1912,"children":1916},"a",{"href":1913,"rel":1914},"https:\u002F\u002Fmetastatus.com",[1915],"nofollow",[1917],{"type":28,"value":1918},"metastatus.com",{"type":28,"value":1920}," for outages",{"title":8,"searchDepth":691,"depth":691,"links":1922},[1923,1924,1925,1926],{"id":1334,"depth":691,"text":1337},{"id":1511,"depth":691,"text":1514},{"id":1723,"depth":691,"text":1726},{"id":1863,"depth":691,"text":1866},"content:help:integrations:error-codes.md","help\u002Fintegrations\u002Ferror-codes.md","help\u002Fintegrations\u002Ferror-codes",{"_path":15,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1931,"description":1932,"category":6,"order":691,"difficulty":12,"time_to_complete":13,"related":1933,"body":1935,"_type":707,"_id":2334,"_source":709,"_file":2335,"_stem":2336,"_extension":712},"Sending messages via API","How to send WhatsApp messages programmatically using the AIsoule REST API — text, media, templates, and interactive.",[5,16,1934],"\u002Fhelp\u002Fmessaging\u002Fsend-template-message",{"type":19,"children":1936,"toc":2319},[1937,1942,1947,1952,1960,1964,1969,1977,1983,1992,2001,2007,2016,2022,2031,2064,2070,2076,2085,2091,2096,2105,2110,2119,2125,2130,2139,2144,2148,2176,2182,2262,2266],{"type":22,"tag":23,"props":1938,"children":1940},{"id":1939},"sending-messages-via-api",[1941],{"type":28,"value":1931},{"type":22,"tag":31,"props":1943,"children":1944},{},[1945],{"type":28,"value":1946},"Send WhatsApp messages programmatically from your application, CRM, or automation tools.",{"type":22,"tag":37,"props":1948,"children":1950},{"id":1949},"endpoint",[1951],{"type":28,"value":292},{"type":22,"tag":44,"props":1953,"children":1955},{"code":1954},"POST https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fmessages\u002Fsend\n",[1956],{"type":22,"tag":49,"props":1957,"children":1958},{"__ignoreMap":8},[1959],{"type":28,"value":1954},{"type":22,"tag":37,"props":1961,"children":1962},{"id":60},[1963],{"type":28,"value":63},{"type":22,"tag":31,"props":1965,"children":1966},{},[1967],{"type":28,"value":1968},"Include your API key in the header:",{"type":22,"tag":44,"props":1970,"children":1972},{"code":1971},"X-API-Key: your_api_key_here\n",[1973],{"type":22,"tag":49,"props":1974,"children":1975},{"__ignoreMap":8},[1976],{"type":28,"value":1971},{"type":22,"tag":37,"props":1978,"children":1980},{"id":1979},"sending-a-text-message",[1981],{"type":28,"value":1982},"Sending a text message",{"type":22,"tag":44,"props":1984,"children":1987},{"code":1985,"language":120,"meta":8,"className":1986},"curl -X POST https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fmessages\u002Fsend \\\n  -H \"X-API-Key: your_key\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"to\": \"+919876543210\",\n    \"type\": \"text\",\n    \"text\": \"Hello! Your order has been shipped.\"\n  }'\n",[122],[1988],{"type":22,"tag":49,"props":1989,"children":1990},{"__ignoreMap":8},[1991],{"type":28,"value":1985},{"type":22,"tag":1993,"props":1994,"children":1995},"blockquote",{},[1996],{"type":22,"tag":31,"props":1997,"children":1998},{},[1999],{"type":28,"value":2000},"Note: Text messages only work within the 24-hour window.",{"type":22,"tag":37,"props":2002,"children":2004},{"id":2003},"sending-a-template-message",[2005],{"type":28,"value":2006},"Sending a template message",{"type":22,"tag":44,"props":2008,"children":2011},{"code":2009,"language":120,"meta":8,"className":2010},"curl -X POST https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fmessages\u002Fsend \\\n  -H \"X-API-Key: your_key\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"to\": \"+919876543210\",\n    \"type\": \"template\",\n    \"template\": {\n      \"name\": \"order_confirmation\",\n      \"language\": \"en\",\n      \"components\": [\n        {\n          \"type\": \"body\",\n          \"parameters\": [\n            { \"type\": \"text\", \"text\": \"John\" },\n            { \"type\": \"text\", \"text\": \"ORD-789\" }\n          ]\n        }\n      ]\n    }\n  }'\n",[122],[2012],{"type":22,"tag":49,"props":2013,"children":2014},{"__ignoreMap":8},[2015],{"type":28,"value":2009},{"type":22,"tag":37,"props":2017,"children":2019},{"id":2018},"sending-media",[2020],{"type":28,"value":2021},"Sending media",{"type":22,"tag":44,"props":2023,"children":2026},{"code":2024,"language":120,"meta":8,"className":2025},"curl -X POST https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fmessages\u002Fsend \\\n  -H \"X-API-Key: your_key\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"to\": \"+919876543210\",\n    \"type\": \"image\",\n    \"image\": {\n      \"url\": \"https:\u002F\u002Fexample.com\u002Fproduct.jpg\",\n      \"caption\": \"Check out our new product!\"\n    }\n  }'\n",[122],[2027],{"type":22,"tag":49,"props":2028,"children":2029},{"__ignoreMap":8},[2030],{"type":28,"value":2024},{"type":22,"tag":31,"props":2032,"children":2033},{},[2034,2036,2042,2044,2050,2051,2057,2058],{"type":28,"value":2035},"Supported media types: ",{"type":22,"tag":49,"props":2037,"children":2039},{"className":2038},[],[2040],{"type":28,"value":2041},"image",{"type":28,"value":2043},", ",{"type":22,"tag":49,"props":2045,"children":2047},{"className":2046},[],[2048],{"type":28,"value":2049},"video",{"type":28,"value":2043},{"type":22,"tag":49,"props":2052,"children":2054},{"className":2053},[],[2055],{"type":28,"value":2056},"document",{"type":28,"value":2043},{"type":22,"tag":49,"props":2059,"children":2061},{"className":2060},[],[2062],{"type":28,"value":2063},"audio",{"type":22,"tag":37,"props":2065,"children":2067},{"id":2066},"sending-interactive-messages",[2068],{"type":28,"value":2069},"Sending interactive messages",{"type":22,"tag":65,"props":2071,"children":2073},{"id":2072},"buttons",[2074],{"type":28,"value":2075},"Buttons",{"type":22,"tag":44,"props":2077,"children":2080},{"code":2078,"language":208,"meta":8,"className":2079},"{\n  \"to\": \"+919876543210\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"button\",\n    \"body\": { \"text\": \"How can we help?\" },\n    \"action\": {\n      \"buttons\": [\n        { \"type\": \"reply\", \"reply\": { \"id\": \"sales\", \"title\": \"Sales\" } },\n        { \"type\": \"reply\", \"reply\": { \"id\": \"support\", \"title\": \"Support\" } }\n      ]\n    }\n  }\n}\n",[210],[2081],{"type":22,"tag":49,"props":2082,"children":2083},{"__ignoreMap":8},[2084],{"type":28,"value":2078},{"type":22,"tag":37,"props":2086,"children":2088},{"id":2087},"response-format",[2089],{"type":28,"value":2090},"Response format",{"type":22,"tag":31,"props":2092,"children":2093},{},[2094],{"type":28,"value":2095},"Success:",{"type":22,"tag":44,"props":2097,"children":2100},{"code":2098,"language":208,"meta":8,"className":2099},"{\n  \"data\": {\n    \"message_id\": \"wamid.HBgLOTE5ODc2NTQzMjEw...\",\n    \"status\": \"sent\"\n  }\n}\n",[210],[2101],{"type":22,"tag":49,"props":2102,"children":2103},{"__ignoreMap":8},[2104],{"type":28,"value":2098},{"type":22,"tag":31,"props":2106,"children":2107},{},[2108],{"type":28,"value":2109},"Error:",{"type":22,"tag":44,"props":2111,"children":2114},{"code":2112,"language":208,"meta":8,"className":2113},"{\n  \"message\": \"Outside 24-hour window. Use a template message.\",\n  \"status\": \"error\"\n}\n",[210],[2115],{"type":22,"tag":49,"props":2116,"children":2117},{"__ignoreMap":8},[2118],{"type":28,"value":2112},{"type":22,"tag":37,"props":2120,"children":2122},{"id":2121},"specifying-whatsapp-account",[2123],{"type":28,"value":2124},"Specifying WhatsApp account",{"type":22,"tag":31,"props":2126,"children":2127},{},[2128],{"type":28,"value":2129},"If you have multiple accounts, specify which one to send from:",{"type":22,"tag":44,"props":2131,"children":2134},{"code":2132,"language":208,"meta":8,"className":2133},"{\n  \"to\": \"+919876543210\",\n  \"type\": \"text\",\n  \"text\": \"Hello!\",\n  \"whatsapp_account\": \"account_id_here\"\n}\n",[210],[2135],{"type":22,"tag":49,"props":2136,"children":2137},{"__ignoreMap":8},[2138],{"type":28,"value":2132},{"type":22,"tag":31,"props":2140,"children":2141},{},[2142],{"type":28,"value":2143},"If not specified, the default outgoing account is used.",{"type":22,"tag":37,"props":2145,"children":2146},{"id":515},[2147],{"type":28,"value":518},{"type":22,"tag":155,"props":2149,"children":2150},{},[2151,2161,2171],{"type":22,"tag":76,"props":2152,"children":2153},{},[2154,2159],{"type":22,"tag":82,"props":2155,"children":2156},{},[2157],{"type":28,"value":2158},"100 messages per minute",{"type":28,"value":2160}," via API",{"type":22,"tag":76,"props":2162,"children":2163},{},[2164,2169],{"type":22,"tag":82,"props":2165,"children":2166},{},[2167],{"type":28,"value":2168},"10 messages per second",{"type":28,"value":2170}," burst",{"type":22,"tag":76,"props":2172,"children":2173},{},[2174],{"type":28,"value":2175},"Meta's messaging limits still apply (unique contacts per day)",{"type":22,"tag":37,"props":2177,"children":2179},{"id":2178},"error-codes",[2180],{"type":28,"value":2181},"Error codes",{"type":22,"tag":271,"props":2183,"children":2184},{},[2185,2199],{"type":22,"tag":275,"props":2186,"children":2187},{},[2188],{"type":22,"tag":279,"props":2189,"children":2190},{},[2191,2195],{"type":22,"tag":283,"props":2192,"children":2193},{},[2194],{"type":28,"value":1351},{"type":22,"tag":283,"props":2196,"children":2197},{},[2198],{"type":28,"value":1356},{"type":22,"tag":299,"props":2200,"children":2201},{},[2202,2214,2226,2238,2250],{"type":22,"tag":279,"props":2203,"children":2204},{},[2205,2209],{"type":22,"tag":306,"props":2206,"children":2207},{},[2208],{"type":28,"value":1390},{"type":22,"tag":306,"props":2210,"children":2211},{},[2212],{"type":28,"value":2213},"Invalid request (missing fields, bad format)",{"type":22,"tag":279,"props":2215,"children":2216},{},[2217,2221],{"type":22,"tag":306,"props":2218,"children":2219},{},[2220],{"type":28,"value":1408},{"type":22,"tag":306,"props":2222,"children":2223},{},[2224],{"type":28,"value":2225},"Invalid API key",{"type":22,"tag":279,"props":2227,"children":2228},{},[2229,2233],{"type":22,"tag":306,"props":2230,"children":2231},{},[2232],{"type":28,"value":1444},{"type":22,"tag":306,"props":2234,"children":2235},{},[2236],{"type":28,"value":2237},"Contact or template not found",{"type":22,"tag":279,"props":2239,"children":2240},{},[2241,2245],{"type":22,"tag":306,"props":2242,"children":2243},{},[2244],{"type":28,"value":1480},{"type":22,"tag":306,"props":2246,"children":2247},{},[2248],{"type":28,"value":2249},"Rate limit exceeded",{"type":22,"tag":279,"props":2251,"children":2252},{},[2253,2257],{"type":22,"tag":306,"props":2254,"children":2255},{},[2256],{"type":28,"value":1498},{"type":22,"tag":306,"props":2258,"children":2259},{},[2260],{"type":28,"value":2261},"Server error (retry)",{"type":22,"tag":37,"props":2263,"children":2264},{"id":1863},[2265],{"type":28,"value":1866},{"type":22,"tag":72,"props":2267,"children":2268},{},[2269,2279,2289,2299,2309],{"type":22,"tag":76,"props":2270,"children":2271},{},[2272,2277],{"type":22,"tag":82,"props":2273,"children":2274},{},[2275],{"type":28,"value":2276},"Use templates for first contact",{"type":28,"value":2278}," — Text messages fail outside the window",{"type":22,"tag":76,"props":2280,"children":2281},{},[2282,2287],{"type":22,"tag":82,"props":2283,"children":2284},{},[2285],{"type":28,"value":2286},"Handle errors gracefully",{"type":28,"value":2288}," — Implement retry logic for 429 and 500 errors",{"type":22,"tag":76,"props":2290,"children":2291},{},[2292,2297],{"type":22,"tag":82,"props":2293,"children":2294},{},[2295],{"type":28,"value":2296},"Validate phone numbers",{"type":28,"value":2298}," — Include country code, digits only",{"type":22,"tag":76,"props":2300,"children":2301},{},[2302,2307],{"type":22,"tag":82,"props":2303,"children":2304},{},[2305],{"type":28,"value":2306},"Log message IDs",{"type":28,"value":2308}," — Useful for tracking delivery via webhooks",{"type":22,"tag":76,"props":2310,"children":2311},{},[2312,2317],{"type":22,"tag":82,"props":2313,"children":2314},{},[2315],{"type":28,"value":2316},"Test in sandbox",{"type":28,"value":2318}," — Use a test number before production",{"title":8,"searchDepth":691,"depth":691,"links":2320},[2321,2322,2323,2324,2325,2326,2329,2330,2331,2332,2333],{"id":1949,"depth":691,"text":292},{"id":60,"depth":691,"text":63},{"id":1979,"depth":691,"text":1982},{"id":2003,"depth":691,"text":2006},{"id":2018,"depth":691,"text":2021},{"id":2066,"depth":691,"text":2069,"children":2327},[2328],{"id":2072,"depth":697,"text":2075},{"id":2087,"depth":691,"text":2090},{"id":2121,"depth":691,"text":2124},{"id":515,"depth":691,"text":518},{"id":2178,"depth":691,"text":2181},{"id":1863,"depth":691,"text":1866},"content:help:integrations:sending-messages-api.md","help\u002Fintegrations\u002Fsending-messages-api.md","help\u002Fintegrations\u002Fsending-messages-api",{"_path":16,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2338,"description":2339,"category":6,"order":697,"difficulty":12,"time_to_complete":13,"related":2340,"body":2342,"_type":707,"_id":2929,"_source":709,"_file":2930,"_stem":2931,"_extension":712},"Receiving messages via webhooks","How to set up outbound webhooks to receive real-time notifications when messages arrive, are delivered, or read.",[5,714,2341],"\u002Fhelp\u002Fsettings\u002Fmanaging-accounts",{"type":19,"children":2343,"toc":2918},[2344,2349,2354,2360,2365,2393,2399,2477,2483,2649,2655,2664,2670,2683,2688,2713,2724,2730,2773,2779,2784,2809,2815,2838,2861,2865],{"type":22,"tag":23,"props":2345,"children":2347},{"id":2346},"receiving-messages-via-webhooks",[2348],{"type":28,"value":2338},{"type":22,"tag":31,"props":2350,"children":2351},{},[2352],{"type":28,"value":2353},"Webhooks send real-time HTTP notifications to your server when events happen in AIsoule.",{"type":22,"tag":37,"props":2355,"children":2357},{"id":2356},"what-are-webhooks",[2358],{"type":28,"value":2359},"What are webhooks?",{"type":22,"tag":31,"props":2361,"children":2362},{},[2363],{"type":28,"value":2364},"Instead of polling the API repeatedly, webhooks push data to your server instantly when:",{"type":22,"tag":155,"props":2366,"children":2367},{},[2368,2373,2378,2383,2388],{"type":22,"tag":76,"props":2369,"children":2370},{},[2371],{"type":28,"value":2372},"A new message arrives",{"type":22,"tag":76,"props":2374,"children":2375},{},[2376],{"type":28,"value":2377},"A message is delivered or read",{"type":22,"tag":76,"props":2379,"children":2380},{},[2381],{"type":28,"value":2382},"A contact is created or updated",{"type":22,"tag":76,"props":2384,"children":2385},{},[2386],{"type":28,"value":2387},"A campaign completes",{"type":22,"tag":76,"props":2389,"children":2390},{},[2391],{"type":28,"value":2392},"An agent transfer happens",{"type":22,"tag":37,"props":2394,"children":2396},{"id":2395},"setting-up-a-webhook",[2397],{"type":28,"value":2398},"Setting up a webhook",{"type":22,"tag":72,"props":2400,"children":2401},{},[2402,2411,2420,2468],{"type":22,"tag":76,"props":2403,"children":2404},{},[2405,2406],{"type":28,"value":80},{"type":22,"tag":82,"props":2407,"children":2408},{},[2409],{"type":28,"value":2410},"Settings → Webhooks",{"type":22,"tag":76,"props":2412,"children":2413},{},[2414,2415],{"type":28,"value":91},{"type":22,"tag":82,"props":2416,"children":2417},{},[2418],{"type":28,"value":2419},"\"New Webhook\"",{"type":22,"tag":76,"props":2421,"children":2422},{},[2423,2425],{"type":28,"value":2424},"Configure:\n",{"type":22,"tag":155,"props":2426,"children":2427},{},[2428,2438,2448,2458],{"type":22,"tag":76,"props":2429,"children":2430},{},[2431,2436],{"type":22,"tag":82,"props":2432,"children":2433},{},[2434],{"type":28,"value":2435},"Name",{"type":28,"value":2437}," — Descriptive name (e.g., \"CRM Sync\")",{"type":22,"tag":76,"props":2439,"children":2440},{},[2441,2446],{"type":22,"tag":82,"props":2442,"children":2443},{},[2444],{"type":28,"value":2445},"URL",{"type":28,"value":2447}," — Your server endpoint (must be HTTPS)",{"type":22,"tag":76,"props":2449,"children":2450},{},[2451,2456],{"type":22,"tag":82,"props":2452,"children":2453},{},[2454],{"type":28,"value":2455},"Events",{"type":28,"value":2457}," — Select which events to receive",{"type":22,"tag":76,"props":2459,"children":2460},{},[2461,2466],{"type":22,"tag":82,"props":2462,"children":2463},{},[2464],{"type":28,"value":2465},"Secret",{"type":28,"value":2467}," — Auto-generated HMAC secret for verification",{"type":22,"tag":76,"props":2469,"children":2470},{},[2471,2472],{"type":28,"value":91},{"type":22,"tag":82,"props":2473,"children":2474},{},[2475],{"type":28,"value":2476},"Save",{"type":22,"tag":37,"props":2478,"children":2480},{"id":2479},"available-events",[2481],{"type":28,"value":2482},"Available events",{"type":22,"tag":271,"props":2484,"children":2485},{},[2486,2502],{"type":22,"tag":275,"props":2487,"children":2488},{},[2489],{"type":22,"tag":279,"props":2490,"children":2491},{},[2492,2497],{"type":22,"tag":283,"props":2493,"children":2494},{},[2495],{"type":28,"value":2496},"Event",{"type":22,"tag":283,"props":2498,"children":2499},{},[2500],{"type":28,"value":2501},"Triggered when",{"type":22,"tag":299,"props":2503,"children":2504},{},[2505,2521,2537,2553,2569,2585,2601,2617,2633],{"type":22,"tag":279,"props":2506,"children":2507},{},[2508,2516],{"type":22,"tag":306,"props":2509,"children":2510},{},[2511],{"type":22,"tag":49,"props":2512,"children":2514},{"className":2513},[],[2515],{"type":28,"value":743},{"type":22,"tag":306,"props":2517,"children":2518},{},[2519],{"type":28,"value":2520},"New message received from customer",{"type":22,"tag":279,"props":2522,"children":2523},{},[2524,2532],{"type":22,"tag":306,"props":2525,"children":2526},{},[2527],{"type":22,"tag":49,"props":2528,"children":2530},{"className":2529},[],[2531],{"type":28,"value":763},{"type":22,"tag":306,"props":2533,"children":2534},{},[2535],{"type":28,"value":2536},"Message sent successfully",{"type":22,"tag":279,"props":2538,"children":2539},{},[2540,2548],{"type":22,"tag":306,"props":2541,"children":2542},{},[2543],{"type":22,"tag":49,"props":2544,"children":2546},{"className":2545},[],[2547],{"type":28,"value":783},{"type":22,"tag":306,"props":2549,"children":2550},{},[2551],{"type":28,"value":2552},"Message delivered to recipient",{"type":22,"tag":279,"props":2554,"children":2555},{},[2556,2564],{"type":22,"tag":306,"props":2557,"children":2558},{},[2559],{"type":22,"tag":49,"props":2560,"children":2562},{"className":2561},[],[2563],{"type":28,"value":794},{"type":22,"tag":306,"props":2565,"children":2566},{},[2567],{"type":28,"value":2568},"Message read by recipient",{"type":22,"tag":279,"props":2570,"children":2571},{},[2572,2580],{"type":22,"tag":306,"props":2573,"children":2574},{},[2575],{"type":22,"tag":49,"props":2576,"children":2578},{"className":2577},[],[2579],{"type":28,"value":805},{"type":22,"tag":306,"props":2581,"children":2582},{},[2583],{"type":28,"value":2584},"Message delivery failed",{"type":22,"tag":279,"props":2586,"children":2587},{},[2588,2596],{"type":22,"tag":306,"props":2589,"children":2590},{},[2591],{"type":22,"tag":49,"props":2592,"children":2594},{"className":2593},[],[2595],{"type":28,"value":831},{"type":22,"tag":306,"props":2597,"children":2598},{},[2599],{"type":28,"value":2600},"New contact added",{"type":22,"tag":279,"props":2602,"children":2603},{},[2604,2612],{"type":22,"tag":306,"props":2605,"children":2606},{},[2607],{"type":22,"tag":49,"props":2608,"children":2610},{"className":2609},[],[2611],{"type":28,"value":846},{"type":22,"tag":306,"props":2613,"children":2614},{},[2615],{"type":28,"value":2616},"Contact data changed",{"type":22,"tag":279,"props":2618,"children":2619},{},[2620,2628],{"type":22,"tag":306,"props":2621,"children":2622},{},[2623],{"type":22,"tag":49,"props":2624,"children":2626},{"className":2625},[],[2627],{"type":28,"value":863},{"type":22,"tag":306,"props":2629,"children":2630},{},[2631],{"type":28,"value":2632},"Campaign finished sending",{"type":22,"tag":279,"props":2634,"children":2635},{},[2636,2644],{"type":22,"tag":306,"props":2637,"children":2638},{},[2639],{"type":22,"tag":49,"props":2640,"children":2642},{"className":2641},[],[2643],{"type":28,"value":884},{"type":22,"tag":306,"props":2645,"children":2646},{},[2647],{"type":28,"value":2648},"Agent transfer initiated",{"type":22,"tag":37,"props":2650,"children":2652},{"id":2651},"webhook-payload-format",[2653],{"type":28,"value":2654},"Webhook payload format",{"type":22,"tag":44,"props":2656,"children":2659},{"className":2657,"code":2658,"language":208,"meta":8},[210],"{\n  \"event\": \"message.incoming\",\n  \"timestamp\": \"2026-05-29T10:30:00Z\",\n  \"data\": {\n    \"message_id\": \"wamid.xxx\",\n    \"from\": \"+919876543210\",\n    \"contact_name\": \"John Doe\",\n    \"type\": \"text\",\n    \"text\": \"Hello, I need help with my order\",\n    \"whatsapp_account_id\": \"uuid\"\n  }\n}\n",[2660],{"type":22,"tag":49,"props":2661,"children":2662},{"__ignoreMap":8},[2663],{"type":28,"value":2658},{"type":22,"tag":37,"props":2665,"children":2667},{"id":2666},"verifying-webhook-signatures",[2668],{"type":28,"value":2669},"Verifying webhook signatures",{"type":22,"tag":31,"props":2671,"children":2672},{},[2673,2675,2681],{"type":28,"value":2674},"Every webhook request includes an HMAC-SHA256 signature in the ",{"type":22,"tag":49,"props":2676,"children":2678},{"className":2677},[],[2679],{"type":28,"value":2680},"X-Webhook-Signature",{"type":28,"value":2682}," header.",{"type":22,"tag":31,"props":2684,"children":2685},{},[2686],{"type":28,"value":2687},"To verify:",{"type":22,"tag":72,"props":2689,"children":2690},{},[2691,2696,2701],{"type":22,"tag":76,"props":2692,"children":2693},{},[2694],{"type":28,"value":2695},"Get the raw request body",{"type":22,"tag":76,"props":2697,"children":2698},{},[2699],{"type":28,"value":2700},"Compute HMAC-SHA256 using your webhook secret",{"type":22,"tag":76,"props":2702,"children":2703},{},[2704,2706,2711],{"type":28,"value":2705},"Compare with the ",{"type":22,"tag":49,"props":2707,"children":2709},{"className":2708},[],[2710],{"type":28,"value":2680},{"type":28,"value":2712}," header",{"type":22,"tag":44,"props":2714,"children":2719},{"className":2715,"code":2717,"language":2718,"meta":8},[2716],"language-python","import hmac, hashlib\n\ndef verify_signature(body, signature, secret):\n    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()\n    return hmac.compare_digest(expected, signature)\n","python",[2720],{"type":22,"tag":49,"props":2721,"children":2722},{"__ignoreMap":8},[2723],{"type":28,"value":2717},{"type":22,"tag":37,"props":2725,"children":2727},{"id":2726},"requirements-for-your-endpoint",[2728],{"type":28,"value":2729},"Requirements for your endpoint",{"type":22,"tag":155,"props":2731,"children":2732},{},[2733,2745,2756,2768],{"type":22,"tag":76,"props":2734,"children":2735},{},[2736,2738,2743],{"type":28,"value":2737},"Must respond with ",{"type":22,"tag":82,"props":2739,"children":2740},{},[2741],{"type":28,"value":2742},"HTTP 200",{"type":28,"value":2744}," within 5 seconds",{"type":22,"tag":76,"props":2746,"children":2747},{},[2748,2750,2754],{"type":28,"value":2749},"Must accept ",{"type":22,"tag":82,"props":2751,"children":2752},{},[2753],{"type":28,"value":332},{"type":28,"value":2755}," requests",{"type":22,"tag":76,"props":2757,"children":2758},{},[2759,2761,2766],{"type":28,"value":2760},"Must use ",{"type":22,"tag":82,"props":2762,"children":2763},{},[2764],{"type":28,"value":2765},"HTTPS",{"type":28,"value":2767}," (HTTP not supported)",{"type":22,"tag":76,"props":2769,"children":2770},{},[2771],{"type":28,"value":2772},"Should be idempotent (same event may be sent twice)",{"type":22,"tag":37,"props":2774,"children":2776},{"id":2775},"retry-policy",[2777],{"type":28,"value":2778},"Retry policy",{"type":22,"tag":31,"props":2780,"children":2781},{},[2782],{"type":28,"value":2783},"If your endpoint doesn't respond with 200:",{"type":22,"tag":155,"props":2785,"children":2786},{},[2787,2799,2804],{"type":22,"tag":76,"props":2788,"children":2789},{},[2790,2792,2797],{"type":28,"value":2791},"AIsoule retries ",{"type":22,"tag":82,"props":2793,"children":2794},{},[2795],{"type":28,"value":2796},"3 times",{"type":28,"value":2798}," with exponential backoff",{"type":22,"tag":76,"props":2800,"children":2801},{},[2802],{"type":28,"value":2803},"Delays: 10 seconds, 60 seconds, 5 minutes",{"type":22,"tag":76,"props":2805,"children":2806},{},[2807],{"type":28,"value":2808},"After 3 failures, the webhook is marked as failing",{"type":22,"tag":37,"props":2810,"children":2812},{"id":2811},"testing-webhooks",[2813],{"type":28,"value":2814},"Testing webhooks",{"type":22,"tag":31,"props":2816,"children":2817},{},[2818,2820,2827,2829,2836],{"type":28,"value":2819},"Use tools like ",{"type":22,"tag":1911,"props":2821,"children":2824},{"href":2822,"rel":2823},"https:\u002F\u002Fwebhook.site",[1915],[2825],{"type":28,"value":2826},"webhook.site",{"type":28,"value":2828}," or ",{"type":22,"tag":1911,"props":2830,"children":2833},{"href":2831,"rel":2832},"https:\u002F\u002Fngrok.com",[1915],[2834],{"type":28,"value":2835},"ngrok",{"type":28,"value":2837}," to test locally:",{"type":22,"tag":72,"props":2839,"children":2840},{},[2841,2846,2851,2856],{"type":22,"tag":76,"props":2842,"children":2843},{},[2844],{"type":28,"value":2845},"Get a temporary HTTPS URL from webhook.site",{"type":22,"tag":76,"props":2847,"children":2848},{},[2849],{"type":28,"value":2850},"Set it as your webhook URL in AIsoule",{"type":22,"tag":76,"props":2852,"children":2853},{},[2854],{"type":28,"value":2855},"Send a test message to your WhatsApp number",{"type":22,"tag":76,"props":2857,"children":2858},{},[2859],{"type":28,"value":2860},"See the webhook payload arrive in real-time",{"type":22,"tag":37,"props":2862,"children":2863},{"id":1863},[2864],{"type":28,"value":1866},{"type":22,"tag":72,"props":2866,"children":2867},{},[2868,2878,2888,2898,2908],{"type":22,"tag":76,"props":2869,"children":2870},{},[2871,2876],{"type":22,"tag":82,"props":2872,"children":2873},{},[2874],{"type":28,"value":2875},"Respond quickly",{"type":28,"value":2877}," — Process asynchronously, respond 200 immediately",{"type":22,"tag":76,"props":2879,"children":2880},{},[2881,2886],{"type":22,"tag":82,"props":2882,"children":2883},{},[2884],{"type":28,"value":2885},"Handle duplicates",{"type":28,"value":2887}," — Use message_id to deduplicate",{"type":22,"tag":76,"props":2889,"children":2890},{},[2891,2896],{"type":22,"tag":82,"props":2892,"children":2893},{},[2894],{"type":28,"value":2895},"Monitor failures",{"type":28,"value":2897}," — Check webhook status in Settings → Webhooks",{"type":22,"tag":76,"props":2899,"children":2900},{},[2901,2906],{"type":22,"tag":82,"props":2902,"children":2903},{},[2904],{"type":28,"value":2905},"Use the secret",{"type":28,"value":2907}," — Always verify signatures in production",{"type":22,"tag":76,"props":2909,"children":2910},{},[2911,2916],{"type":22,"tag":82,"props":2912,"children":2913},{},[2914],{"type":28,"value":2915},"Log everything",{"type":28,"value":2917}," — Store raw payloads for debugging",{"title":8,"searchDepth":691,"depth":691,"links":2919},[2920,2921,2922,2923,2924,2925,2926,2927,2928],{"id":2356,"depth":691,"text":2359},{"id":2395,"depth":691,"text":2398},{"id":2479,"depth":691,"text":2482},{"id":2651,"depth":691,"text":2654},{"id":2666,"depth":691,"text":2669},{"id":2726,"depth":691,"text":2729},{"id":2775,"depth":691,"text":2778},{"id":2811,"depth":691,"text":2814},{"id":1863,"depth":691,"text":1866},"content:help:integrations:webhooks-receiving.md","help\u002Fintegrations\u002Fwebhooks-receiving.md","help\u002Fintegrations\u002Fwebhooks-receiving",{"_path":2933,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2934,"description":2935,"category":6,"order":2936,"difficulty":12,"time_to_complete":13,"related":2937,"body":2938,"_type":707,"_id":3225,"_source":709,"_file":3226,"_stem":3227,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fwoocommerce","WooCommerce integration setup","How to connect your WooCommerce store to AIsoule for automated order notifications and customer messaging.",4,[5,16,1934],{"type":19,"children":2939,"toc":3215},[2940,2945,2950,2956,2979,2985,2991,2996,3027,3033,3038,3046,3052,3057,3120,3126,3131,3168,3172],{"type":22,"tag":23,"props":2941,"children":2943},{"id":2942},"woocommerce-integration-setup",[2944],{"type":28,"value":2934},{"type":22,"tag":31,"props":2946,"children":2947},{},[2948],{"type":28,"value":2949},"Connect your WooCommerce store to automatically send order notifications via WhatsApp.",{"type":22,"tag":37,"props":2951,"children":2953},{"id":2952},"what-the-integration-does",[2954],{"type":28,"value":2955},"What the integration does",{"type":22,"tag":155,"props":2957,"children":2958},{},[2959,2964,2969,2974],{"type":22,"tag":76,"props":2960,"children":2961},{},[2962],{"type":28,"value":2963},"Send order confirmation when a purchase is made",{"type":22,"tag":76,"props":2965,"children":2966},{},[2967],{"type":28,"value":2968},"Send shipping updates when order status changes",{"type":22,"tag":76,"props":2970,"children":2971},{},[2972],{"type":28,"value":2973},"Send abandoned cart reminders",{"type":22,"tag":76,"props":2975,"children":2976},{},[2977],{"type":28,"value":2978},"Sync customer data to AIsoule contacts",{"type":22,"tag":37,"props":2980,"children":2982},{"id":2981},"setup-steps",[2983],{"type":28,"value":2984},"Setup steps",{"type":22,"tag":65,"props":2986,"children":2988},{"id":2987},"_1-install-the-webhook-plugin",[2989],{"type":28,"value":2990},"1. Install the webhook plugin",{"type":22,"tag":31,"props":2992,"children":2993},{},[2994],{"type":28,"value":2995},"In your WordPress admin:",{"type":22,"tag":72,"props":2997,"children":2998},{},[2999,3004],{"type":22,"tag":76,"props":3000,"children":3001},{},[3002],{"type":28,"value":3003},"Go to WooCommerce → Settings → Advanced → Webhooks",{"type":22,"tag":76,"props":3005,"children":3006},{},[3007,3009],{"type":28,"value":3008},"Create webhooks for the events you want:\n",{"type":22,"tag":155,"props":3010,"children":3011},{},[3012,3017,3022],{"type":22,"tag":76,"props":3013,"children":3014},{},[3015],{"type":28,"value":3016},"Order created",{"type":22,"tag":76,"props":3018,"children":3019},{},[3020],{"type":28,"value":3021},"Order status changed",{"type":22,"tag":76,"props":3023,"children":3024},{},[3025],{"type":28,"value":3026},"Order completed",{"type":22,"tag":65,"props":3028,"children":3030},{"id":3029},"_2-configure-webhook-url",[3031],{"type":28,"value":3032},"2. Configure webhook URL",{"type":22,"tag":31,"props":3034,"children":3035},{},[3036],{"type":28,"value":3037},"Set the delivery URL to your AIsoule webhook endpoint:",{"type":22,"tag":44,"props":3039,"children":3041},{"code":3040},"https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fwebhooks\u002Fwoocommerce\n",[3042],{"type":22,"tag":49,"props":3043,"children":3044},{"__ignoreMap":8},[3045],{"type":28,"value":3040},{"type":22,"tag":65,"props":3047,"children":3049},{"id":3048},"_3-set-up-templates",[3050],{"type":28,"value":3051},"3. Set up templates",{"type":22,"tag":31,"props":3053,"children":3054},{},[3055],{"type":28,"value":3056},"Create WhatsApp templates for each notification:",{"type":22,"tag":155,"props":3058,"children":3059},{},[3060,3084,3105],{"type":22,"tag":76,"props":3061,"children":3062},{},[3063,3069,3071,3076,3078,3082],{"type":22,"tag":49,"props":3064,"children":3066},{"className":3065},[],[3067],{"type":28,"value":3068},"order_confirmation",{"type":28,"value":3070}," — \"Hi ",{"type":22,"tag":3072,"props":3073,"children":3075},"binding",{"value":3074},"1",[],{"type":28,"value":3077},", your order #",{"type":22,"tag":3072,"props":3079,"children":3081},{"value":3080},"2",[],{"type":28,"value":3083}," is confirmed!\"",{"type":22,"tag":76,"props":3085,"children":3086},{},[3087,3093,3095,3098,3100,3103],{"type":22,"tag":49,"props":3088,"children":3090},{"className":3089},[],[3091],{"type":28,"value":3092},"order_shipped",{"type":28,"value":3094}," — \"Your order #",{"type":22,"tag":3072,"props":3096,"children":3097},{"value":3074},[],{"type":28,"value":3099}," has been shipped. Track: ",{"type":22,"tag":3072,"props":3101,"children":3102},{"value":3080},[],{"type":28,"value":3104},"\"",{"type":22,"tag":76,"props":3106,"children":3107},{},[3108,3114,3115,3118],{"type":22,"tag":49,"props":3109,"children":3111},{"className":3110},[],[3112],{"type":28,"value":3113},"order_delivered",{"type":28,"value":3094},{"type":22,"tag":3072,"props":3116,"children":3117},{"value":3074},[],{"type":28,"value":3119}," has been delivered!\"",{"type":22,"tag":65,"props":3121,"children":3123},{"id":3122},"_4-map-events-to-templates",[3124],{"type":28,"value":3125},"4. Map events to templates",{"type":22,"tag":31,"props":3127,"children":3128},{},[3129],{"type":28,"value":3130},"In AIsoule Settings → Integrations → WooCommerce:",{"type":22,"tag":155,"props":3132,"children":3133},{},[3134,3146,3157],{"type":22,"tag":76,"props":3135,"children":3136},{},[3137,3139,3144],{"type":28,"value":3138},"Order Created → ",{"type":22,"tag":49,"props":3140,"children":3142},{"className":3141},[],[3143],{"type":28,"value":3068},{"type":28,"value":3145}," template",{"type":22,"tag":76,"props":3147,"children":3148},{},[3149,3151,3156],{"type":28,"value":3150},"Order Shipped → ",{"type":22,"tag":49,"props":3152,"children":3154},{"className":3153},[],[3155],{"type":28,"value":3092},{"type":28,"value":3145},{"type":22,"tag":76,"props":3158,"children":3159},{},[3160,3162,3167],{"type":28,"value":3161},"Order Delivered → ",{"type":22,"tag":49,"props":3163,"children":3165},{"className":3164},[],[3166],{"type":28,"value":3113},{"type":28,"value":3145},{"type":22,"tag":37,"props":3169,"children":3170},{"id":1863},[3171],{"type":28,"value":1866},{"type":22,"tag":72,"props":3173,"children":3174},{},[3175,3185,3195,3205],{"type":22,"tag":76,"props":3176,"children":3177},{},[3178,3183],{"type":22,"tag":82,"props":3179,"children":3180},{},[3181],{"type":28,"value":3182},"Get opt-in first",{"type":28,"value":3184}," — Only send to customers who opted in",{"type":22,"tag":76,"props":3186,"children":3187},{},[3188,3193],{"type":22,"tag":82,"props":3189,"children":3190},{},[3191],{"type":28,"value":3192},"Include order details",{"type":28,"value":3194}," — Order number, items, tracking link",{"type":22,"tag":76,"props":3196,"children":3197},{},[3198,3203],{"type":22,"tag":82,"props":3199,"children":3200},{},[3201],{"type":28,"value":3202},"Don't over-message",{"type":28,"value":3204}," — 2-3 updates per order is enough",{"type":22,"tag":76,"props":3206,"children":3207},{},[3208,3213],{"type":22,"tag":82,"props":3209,"children":3210},{},[3211],{"type":28,"value":3212},"Test with a test order",{"type":28,"value":3214}," — Place a test order to verify",{"title":8,"searchDepth":691,"depth":691,"links":3216},[3217,3218,3224],{"id":2952,"depth":691,"text":2955},{"id":2981,"depth":691,"text":2984,"children":3219},[3220,3221,3222,3223],{"id":2987,"depth":697,"text":2990},{"id":3029,"depth":697,"text":3032},{"id":3048,"depth":697,"text":3051},{"id":3122,"depth":697,"text":3125},{"id":1863,"depth":691,"text":1866},"content:help:integrations:woocommerce.md","help\u002Fintegrations\u002Fwoocommerce.md","help\u002Fintegrations\u002Fwoocommerce",{"_path":3229,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3230,"description":3231,"category":6,"order":3232,"difficulty":12,"time_to_complete":13,"related":3233,"body":3234,"_type":707,"_id":3650,"_source":709,"_file":3651,"_stem":3652,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fzapier-pabbly","Connecting with Zapier and Pabbly Connect","How to integrate AIsoule with 1000+ apps using Zapier or Pabbly Connect via webhooks.",5,[16,5,719],{"type":19,"children":3235,"toc":3640},[3236,3241,3246,3252,3264,3282,3288,3294,3355,3361,3413,3422,3428,3433,3461,3467,3583,3587],{"type":22,"tag":23,"props":3237,"children":3239},{"id":3238},"connecting-with-zapier-and-pabbly-connect",[3240],{"type":28,"value":3230},{"type":22,"tag":31,"props":3242,"children":3243},{},[3244],{"type":28,"value":3245},"Integrate AIsoule with thousands of apps using automation platforms.",{"type":22,"tag":37,"props":3247,"children":3249},{"id":3248},"how-it-works",[3250],{"type":28,"value":3251},"How it works",{"type":22,"tag":31,"props":3253,"children":3254},{},[3255,3257,3262],{"type":28,"value":3256},"AIsoule connects to Zapier\u002FPabbly via ",{"type":22,"tag":82,"props":3258,"children":3259},{},[3260],{"type":28,"value":3261},"webhooks",{"type":28,"value":3263},":",{"type":22,"tag":72,"props":3265,"children":3266},{},[3267,3272,3277],{"type":22,"tag":76,"props":3268,"children":3269},{},[3270],{"type":28,"value":3271},"AIsoule sends events (new message, new contact) to a webhook URL",{"type":22,"tag":76,"props":3273,"children":3274},{},[3275],{"type":28,"value":3276},"Zapier\u002FPabbly receives the event and triggers your automation",{"type":22,"tag":76,"props":3278,"children":3279},{},[3280],{"type":28,"value":3281},"The automation performs actions in other apps (CRM, email, sheets, etc.)",{"type":22,"tag":37,"props":3283,"children":3285},{"id":3284},"setting-up-with-zapier",[3286],{"type":28,"value":3287},"Setting up with Zapier",{"type":22,"tag":65,"props":3289,"children":3291},{"id":3290},"trigger-new-message-in-aisoule",[3292],{"type":28,"value":3293},"Trigger: New message in AIsoule",{"type":22,"tag":72,"props":3295,"children":3296},{},[3297,3302,3312,3317,3327,3332,3342,3346,3350],{"type":22,"tag":76,"props":3298,"children":3299},{},[3300],{"type":28,"value":3301},"In Zapier, create a new Zap",{"type":22,"tag":76,"props":3303,"children":3304},{},[3305,3307],{"type":28,"value":3306},"Choose trigger: ",{"type":22,"tag":82,"props":3308,"children":3309},{},[3310],{"type":28,"value":3311},"Webhooks by Zapier → Catch Hook",{"type":22,"tag":76,"props":3313,"children":3314},{},[3315],{"type":28,"value":3316},"Copy the webhook URL Zapier gives you",{"type":22,"tag":76,"props":3318,"children":3319},{},[3320,3322],{"type":28,"value":3321},"In AIsoule, go to ",{"type":22,"tag":82,"props":3323,"children":3324},{},[3325],{"type":28,"value":3326},"Settings → Webhooks → New Webhook",{"type":22,"tag":76,"props":3328,"children":3329},{},[3330],{"type":28,"value":3331},"Paste the Zapier URL",{"type":22,"tag":76,"props":3333,"children":3334},{},[3335,3337],{"type":28,"value":3336},"Select event: ",{"type":22,"tag":49,"props":3338,"children":3340},{"className":3339},[],[3341],{"type":28,"value":743},{"type":22,"tag":76,"props":3343,"children":3344},{},[3345],{"type":28,"value":2476},{"type":22,"tag":76,"props":3347,"children":3348},{},[3349],{"type":28,"value":2855},{"type":22,"tag":76,"props":3351,"children":3352},{},[3353],{"type":28,"value":3354},"In Zapier, click \"Test trigger\" — you should see the message data",{"type":22,"tag":65,"props":3356,"children":3358},{"id":3357},"action-send-message-from-aisoule",[3359],{"type":28,"value":3360},"Action: Send message from AIsoule",{"type":22,"tag":72,"props":3362,"children":3363},{},[3364,3369,3379,3390,3408],{"type":22,"tag":76,"props":3365,"children":3366},{},[3367],{"type":28,"value":3368},"In Zapier, add an action step",{"type":22,"tag":76,"props":3370,"children":3371},{},[3372,3374],{"type":28,"value":3373},"Choose: ",{"type":22,"tag":82,"props":3375,"children":3376},{},[3377],{"type":28,"value":3378},"Webhooks by Zapier → POST",{"type":22,"tag":76,"props":3380,"children":3381},{},[3382,3384],{"type":28,"value":3383},"URL: ",{"type":22,"tag":49,"props":3385,"children":3387},{"className":3386},[],[3388],{"type":28,"value":3389},"https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fmessages\u002Fsend",{"type":22,"tag":76,"props":3391,"children":3392},{},[3393,3395,3401,3402],{"type":28,"value":3394},"Headers: ",{"type":22,"tag":49,"props":3396,"children":3398},{"className":3397},[],[3399],{"type":28,"value":3400},"X-API-Key: your_key",{"type":28,"value":2043},{"type":22,"tag":49,"props":3403,"children":3405},{"className":3404},[],[3406],{"type":28,"value":3407},"Content-Type: application\u002Fjson",{"type":22,"tag":76,"props":3409,"children":3410},{},[3411],{"type":28,"value":3412},"Body:",{"type":22,"tag":44,"props":3414,"children":3417},{"className":3415,"code":3416,"language":208,"meta":8},[210],"{\n  \"to\": \"{{phone_number}}\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"your_template\",\n    \"language\": \"en\",\n    \"components\": []\n  }\n}\n",[3418],{"type":22,"tag":49,"props":3419,"children":3420},{"__ignoreMap":8},[3421],{"type":28,"value":3416},{"type":22,"tag":37,"props":3423,"children":3425},{"id":3424},"setting-up-with-pabbly-connect",[3426],{"type":28,"value":3427},"Setting up with Pabbly Connect",{"type":22,"tag":31,"props":3429,"children":3430},{},[3431],{"type":28,"value":3432},"Same concept as Zapier:",{"type":22,"tag":72,"props":3434,"children":3435},{},[3436,3441,3446,3451,3456],{"type":22,"tag":76,"props":3437,"children":3438},{},[3439],{"type":28,"value":3440},"Create a workflow in Pabbly",{"type":22,"tag":76,"props":3442,"children":3443},{},[3444],{"type":28,"value":3445},"Trigger: Webhook (catch)",{"type":22,"tag":76,"props":3447,"children":3448},{},[3449],{"type":28,"value":3450},"Copy the Pabbly webhook URL",{"type":22,"tag":76,"props":3452,"children":3453},{},[3454],{"type":28,"value":3455},"Add it as a webhook in AIsoule",{"type":22,"tag":76,"props":3457,"children":3458},{},[3459],{"type":28,"value":3460},"Action: Use HTTP\u002FAPI Request to call AIsoule's API",{"type":22,"tag":37,"props":3462,"children":3464},{"id":3463},"common-automations",[3465],{"type":28,"value":3466},"Common automations",{"type":22,"tag":271,"props":3468,"children":3469},{},[3470,3490],{"type":22,"tag":275,"props":3471,"children":3472},{},[3473],{"type":22,"tag":279,"props":3474,"children":3475},{},[3476,3481,3485],{"type":22,"tag":283,"props":3477,"children":3478},{},[3479],{"type":28,"value":3480},"Trigger",{"type":22,"tag":283,"props":3482,"children":3483},{},[3484],{"type":28,"value":1361},{"type":22,"tag":283,"props":3486,"children":3487},{},[3488],{"type":28,"value":3489},"Use case",{"type":22,"tag":299,"props":3491,"children":3492},{},[3493,3511,3529,3547,3565],{"type":22,"tag":279,"props":3494,"children":3495},{},[3496,3501,3506],{"type":22,"tag":306,"props":3497,"children":3498},{},[3499],{"type":28,"value":3500},"New WhatsApp message",{"type":22,"tag":306,"props":3502,"children":3503},{},[3504],{"type":28,"value":3505},"Add row to Google Sheet",{"type":22,"tag":306,"props":3507,"children":3508},{},[3509],{"type":28,"value":3510},"Log all conversations",{"type":22,"tag":279,"props":3512,"children":3513},{},[3514,3519,3524],{"type":22,"tag":306,"props":3515,"children":3516},{},[3517],{"type":28,"value":3518},"New contact in AIsoule",{"type":22,"tag":306,"props":3520,"children":3521},{},[3522],{"type":28,"value":3523},"Create contact in HubSpot",{"type":22,"tag":306,"props":3525,"children":3526},{},[3527],{"type":28,"value":3528},"CRM sync",{"type":22,"tag":279,"props":3530,"children":3531},{},[3532,3537,3542],{"type":22,"tag":306,"props":3533,"children":3534},{},[3535],{"type":28,"value":3536},"Order in Shopify",{"type":22,"tag":306,"props":3538,"children":3539},{},[3540],{"type":28,"value":3541},"Send WhatsApp template",{"type":22,"tag":306,"props":3543,"children":3544},{},[3545],{"type":28,"value":3546},"Order confirmation",{"type":22,"tag":279,"props":3548,"children":3549},{},[3550,3555,3560],{"type":22,"tag":306,"props":3551,"children":3552},{},[3553],{"type":28,"value":3554},"Form submission",{"type":22,"tag":306,"props":3556,"children":3557},{},[3558],{"type":28,"value":3559},"Send WhatsApp message",{"type":22,"tag":306,"props":3561,"children":3562},{},[3563],{"type":28,"value":3564},"Lead follow-up",{"type":22,"tag":279,"props":3566,"children":3567},{},[3568,3573,3578],{"type":22,"tag":306,"props":3569,"children":3570},{},[3571],{"type":28,"value":3572},"Campaign completed",{"type":22,"tag":306,"props":3574,"children":3575},{},[3576],{"type":28,"value":3577},"Send Slack notification",{"type":22,"tag":306,"props":3579,"children":3580},{},[3581],{"type":28,"value":3582},"Team alerts",{"type":22,"tag":37,"props":3584,"children":3585},{"id":1863},[3586],{"type":28,"value":1866},{"type":22,"tag":72,"props":3588,"children":3589},{},[3590,3600,3610,3620,3630],{"type":22,"tag":76,"props":3591,"children":3592},{},[3593,3598],{"type":22,"tag":82,"props":3594,"children":3595},{},[3596],{"type":28,"value":3597},"Start simple",{"type":28,"value":3599}," — One trigger, one action",{"type":22,"tag":76,"props":3601,"children":3602},{},[3603,3608],{"type":22,"tag":82,"props":3604,"children":3605},{},[3606],{"type":28,"value":3607},"Test thoroughly",{"type":28,"value":3609}," — Send test data before going live",{"type":22,"tag":76,"props":3611,"children":3612},{},[3613,3618],{"type":22,"tag":82,"props":3614,"children":3615},{},[3616],{"type":28,"value":3617},"Use filters",{"type":28,"value":3619}," — Don't trigger on every message (filter by keyword or contact)",{"type":22,"tag":76,"props":3621,"children":3622},{},[3623,3628],{"type":22,"tag":82,"props":3624,"children":3625},{},[3626],{"type":28,"value":3627},"Monitor runs",{"type":28,"value":3629}," — Check Zapier\u002FPabbly dashboard for failed runs",{"type":22,"tag":76,"props":3631,"children":3632},{},[3633,3638],{"type":22,"tag":82,"props":3634,"children":3635},{},[3636],{"type":28,"value":3637},"Use templates for outbound",{"type":28,"value":3639}," — API messages outside 24h window need templates",{"title":8,"searchDepth":691,"depth":691,"links":3641},[3642,3643,3647,3648,3649],{"id":3248,"depth":691,"text":3251},{"id":3284,"depth":691,"text":3287,"children":3644},[3645,3646],{"id":3290,"depth":697,"text":3293},{"id":3357,"depth":697,"text":3360},{"id":3424,"depth":691,"text":3427},{"id":3463,"depth":691,"text":3466},{"id":1863,"depth":691,"text":1866},"content:help:integrations:zapier-pabbly.md","help\u002Fintegrations\u002Fzapier-pabbly.md","help\u002Fintegrations\u002Fzapier-pabbly",{"_path":3654,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3655,"description":3656,"category":6,"order":3657,"difficulty":3658,"time_to_complete":13,"related":3659,"body":3661,"_type":707,"_id":3840,"_source":709,"_file":3841,"_stem":3842,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fsending-messages-api-templates","Sending messages via API (advanced)","Advanced API usage — sending templates with media headers, buttons, and handling responses.",6,"advanced",[15,5,3660],"\u002Fhelp\u002Fsettings\u002Fcreating-templates",{"type":19,"children":3662,"toc":3830},[3663,3669,3674,3680,3689,3695,3704,3710,3715,3724,3730,3739,3745,3750,3783,3787],{"type":22,"tag":23,"props":3664,"children":3666},{"id":3665},"advanced-api-messaging",[3667],{"type":28,"value":3668},"Advanced API messaging",{"type":22,"tag":31,"props":3670,"children":3671},{},[3672],{"type":28,"value":3673},"Send complex messages with media headers, buttons, and template parameters via the API.",{"type":22,"tag":37,"props":3675,"children":3677},{"id":3676},"template-with-image-header",[3678],{"type":28,"value":3679},"Template with image header",{"type":22,"tag":44,"props":3681,"children":3684},{"className":3682,"code":3683,"language":208,"meta":8},[210],"{\n  \"to\": \"+919876543210\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"order_shipped\",\n    \"language\": \"en\",\n    \"components\": [\n      {\n        \"type\": \"header\",\n        \"parameters\": [\n          { \"type\": \"image\", \"image\": { \"link\": \"https:\u002F\u002Fexample.com\u002Ftracking-map.jpg\" } }\n        ]\n      },\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"John\" },\n          { \"type\": \"text\", \"text\": \"ORD-789\" },\n          { \"type\": \"text\", \"text\": \"May 30, 2026\" }\n        ]\n      }\n    ]\n  }\n}\n",[3685],{"type":22,"tag":49,"props":3686,"children":3687},{"__ignoreMap":8},[3688],{"type":28,"value":3683},{"type":22,"tag":37,"props":3690,"children":3692},{"id":3691},"template-with-url-button-variable",[3693],{"type":28,"value":3694},"Template with URL button variable",{"type":22,"tag":44,"props":3696,"children":3699},{"className":3697,"code":3698,"language":208,"meta":8},[210],"{\n  \"to\": \"+919876543210\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"track_order\",\n    \"language\": \"en\",\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"ORD-789\" }\n        ]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"url\",\n        \"index\": 0,\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"ORD-789\" }\n        ]\n      }\n    ]\n  }\n}\n",[3700],{"type":22,"tag":49,"props":3701,"children":3702},{"__ignoreMap":8},[3703],{"type":28,"value":3698},{"type":22,"tag":37,"props":3705,"children":3707},{"id":3706},"handling-api-responses",[3708],{"type":28,"value":3709},"Handling API responses",{"type":22,"tag":65,"props":3711,"children":3713},{"id":3712},"success",[3714],{"type":28,"value":1377},{"type":22,"tag":44,"props":3716,"children":3719},{"className":3717,"code":3718,"language":208,"meta":8},[210],"{\n  \"data\": {\n    \"message_id\": \"wamid.HBgLOTE5ODc2...\",\n    \"status\": \"sent\"\n  }\n}\n",[3720],{"type":22,"tag":49,"props":3721,"children":3722},{"__ignoreMap":8},[3723],{"type":28,"value":3718},{"type":22,"tag":65,"props":3725,"children":3727},{"id":3726},"failure",[3728],{"type":28,"value":3729},"Failure",{"type":22,"tag":44,"props":3731,"children":3734},{"className":3732,"code":3733,"language":208,"meta":8},[210],"{\n  \"message\": \"Template 'xyz' not found or not approved\",\n  \"status\": \"error\"\n}\n",[3735],{"type":22,"tag":49,"props":3736,"children":3737},{"__ignoreMap":8},[3738],{"type":28,"value":3733},{"type":22,"tag":37,"props":3740,"children":3742},{"id":3741},"webhook-for-delivery-updates",[3743],{"type":28,"value":3744},"Webhook for delivery updates",{"type":22,"tag":31,"props":3746,"children":3747},{},[3748],{"type":28,"value":3749},"After sending, receive delivery updates via webhook:",{"type":22,"tag":72,"props":3751,"children":3752},{},[3753,3770],{"type":22,"tag":76,"props":3754,"children":3755},{},[3756,3758,3763,3765],{"type":28,"value":3757},"Set up a webhook for ",{"type":22,"tag":49,"props":3759,"children":3761},{"className":3760},[],[3762],{"type":28,"value":783},{"type":28,"value":3764}," and ",{"type":22,"tag":49,"props":3766,"children":3768},{"className":3767},[],[3769],{"type":28,"value":794},{"type":22,"tag":76,"props":3771,"children":3772},{},[3773,3775,3781],{"type":28,"value":3774},"Match by ",{"type":22,"tag":49,"props":3776,"children":3778},{"className":3777},[],[3779],{"type":28,"value":3780},"message_id",{"type":28,"value":3782}," to track each message",{"type":22,"tag":37,"props":3784,"children":3785},{"id":1863},[3786],{"type":28,"value":1866},{"type":22,"tag":72,"props":3788,"children":3789},{},[3790,3800,3810,3820],{"type":22,"tag":76,"props":3791,"children":3792},{},[3793,3798],{"type":22,"tag":82,"props":3794,"children":3795},{},[3796],{"type":28,"value":3797},"Validate before sending",{"type":28,"value":3799}," — Check template exists and is approved",{"type":22,"tag":76,"props":3801,"children":3802},{},[3803,3808],{"type":22,"tag":82,"props":3804,"children":3805},{},[3806],{"type":28,"value":3807},"Match parameter count",{"type":28,"value":3809}," — Must match template exactly",{"type":22,"tag":76,"props":3811,"children":3812},{},[3813,3818],{"type":22,"tag":82,"props":3814,"children":3815},{},[3816],{"type":28,"value":3817},"Use HTTPS for media URLs",{"type":28,"value":3819}," — HTTP links are rejected",{"type":22,"tag":76,"props":3821,"children":3822},{},[3823,3828],{"type":22,"tag":82,"props":3824,"children":3825},{},[3826],{"type":28,"value":3827},"Handle errors",{"type":28,"value":3829}," — Implement retry for 429\u002F500, don't retry 400",{"title":8,"searchDepth":691,"depth":691,"links":3831},[3832,3833,3834,3838,3839],{"id":3676,"depth":691,"text":3679},{"id":3691,"depth":691,"text":3694},{"id":3706,"depth":691,"text":3709,"children":3835},[3836,3837],{"id":3712,"depth":697,"text":1377},{"id":3726,"depth":697,"text":3729},{"id":3741,"depth":691,"text":3744},{"id":1863,"depth":691,"text":1866},"content:help:integrations:sending-messages-api-templates.md","help\u002Fintegrations\u002Fsending-messages-api-templates.md","help\u002Fintegrations\u002Fsending-messages-api-templates",{"_path":3844,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3845,"description":3846,"category":6,"order":3847,"difficulty":3658,"time_to_complete":3848,"related":3849,"body":3851,"_type":707,"_id":4154,"_source":709,"_file":4155,"_stem":4156,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fcustom-js-actions","Using the JavaScript VM for custom actions","How to write and execute JavaScript snippets as custom actions in conversations.",7,"4 minutes",[3850,5,16],"\u002Fhelp\u002Fsettings\u002Fcustom-actions",{"type":19,"children":3852,"toc":4146},[3853,3859,3864,3870,3875,3881,3917,3926,3932,4022,4028,4071,4077,4100,4104],{"type":22,"tag":23,"props":3854,"children":3856},{"id":3855},"javascript-vm-for-custom-actions",[3857],{"type":28,"value":3858},"JavaScript VM for custom actions",{"type":22,"tag":31,"props":3860,"children":3861},{},[3862],{"type":28,"value":3863},"Execute JavaScript code as custom actions during conversations for advanced automation.",{"type":22,"tag":37,"props":3865,"children":3867},{"id":3866},"what-is-the-js-vm",[3868],{"type":28,"value":3869},"What is the JS VM?",{"type":22,"tag":31,"props":3871,"children":3872},{},[3873],{"type":28,"value":3874},"AIsoule includes a sandboxed JavaScript virtual machine that can execute custom code when triggered by an agent or chatbot flow.",{"type":22,"tag":37,"props":3876,"children":3878},{"id":3877},"creating-a-js-action",[3879],{"type":28,"value":3880},"Creating a JS action",{"type":22,"tag":72,"props":3882,"children":3883},{},[3884,3893,3902,3912],{"type":22,"tag":76,"props":3885,"children":3886},{},[3887,3888],{"type":28,"value":80},{"type":22,"tag":82,"props":3889,"children":3890},{},[3891],{"type":28,"value":3892},"Settings → Custom Actions",{"type":22,"tag":76,"props":3894,"children":3895},{},[3896,3897],{"type":28,"value":91},{"type":22,"tag":82,"props":3898,"children":3899},{},[3900],{"type":28,"value":3901},"\"New Action\"",{"type":22,"tag":76,"props":3903,"children":3904},{},[3905,3907],{"type":28,"value":3906},"Select type: ",{"type":22,"tag":82,"props":3908,"children":3909},{},[3910],{"type":28,"value":3911},"JavaScript",{"type":22,"tag":76,"props":3913,"children":3914},{},[3915],{"type":28,"value":3916},"Write your code:",{"type":22,"tag":44,"props":3918,"children":3921},{"className":3919,"code":3920,"language":1154,"meta":8},[1156],"\u002F\u002F Available context:\n\u002F\u002F contact - current contact object\n\u002F\u002F message - last message\n\u002F\u002F agent - current agent\n\n\u002F\u002F Example: Format and return data\nconst result = {\n  formatted_phone: contact.phone_number.replace('+91', '0'),\n  greeting: `Hello ${contact.name || 'there'}!`\n};\n\nreturn result;\n",[3922],{"type":22,"tag":49,"props":3923,"children":3924},{"__ignoreMap":8},[3925],{"type":28,"value":3920},{"type":22,"tag":37,"props":3927,"children":3929},{"id":3928},"available-context-variables",[3930],{"type":28,"value":3931},"Available context variables",{"type":22,"tag":271,"props":3933,"children":3934},{},[3935,3951],{"type":22,"tag":275,"props":3936,"children":3937},{},[3938],{"type":22,"tag":279,"props":3939,"children":3940},{},[3941,3946],{"type":22,"tag":283,"props":3942,"children":3943},{},[3944],{"type":28,"value":3945},"Variable",{"type":22,"tag":283,"props":3947,"children":3948},{},[3949],{"type":28,"value":3950},"Contains",{"type":22,"tag":299,"props":3952,"children":3953},{},[3954,3971,3988,4005],{"type":22,"tag":279,"props":3955,"children":3956},{},[3957,3966],{"type":22,"tag":306,"props":3958,"children":3959},{},[3960],{"type":22,"tag":49,"props":3961,"children":3963},{"className":3962},[],[3964],{"type":28,"value":3965},"contact",{"type":22,"tag":306,"props":3967,"children":3968},{},[3969],{"type":28,"value":3970},"Contact object (name, phone, email, tags)",{"type":22,"tag":279,"props":3972,"children":3973},{},[3974,3983],{"type":22,"tag":306,"props":3975,"children":3976},{},[3977],{"type":22,"tag":49,"props":3978,"children":3980},{"className":3979},[],[3981],{"type":28,"value":3982},"message",{"type":22,"tag":306,"props":3984,"children":3985},{},[3986],{"type":28,"value":3987},"Last message object (text, type, timestamp)",{"type":22,"tag":279,"props":3989,"children":3990},{},[3991,4000],{"type":22,"tag":306,"props":3992,"children":3993},{},[3994],{"type":22,"tag":49,"props":3995,"children":3997},{"className":3996},[],[3998],{"type":28,"value":3999},"agent",{"type":22,"tag":306,"props":4001,"children":4002},{},[4003],{"type":28,"value":4004},"Current agent (name, email)",{"type":22,"tag":279,"props":4006,"children":4007},{},[4008,4017],{"type":22,"tag":306,"props":4009,"children":4010},{},[4011],{"type":22,"tag":49,"props":4012,"children":4014},{"className":4013},[],[4015],{"type":28,"value":4016},"organization",{"type":22,"tag":306,"props":4018,"children":4019},{},[4020],{"type":28,"value":4021},"Org details (name, id)",{"type":22,"tag":37,"props":4023,"children":4025},{"id":4024},"limitations",[4026],{"type":28,"value":4027},"Limitations",{"type":22,"tag":155,"props":4029,"children":4030},{},[4031,4041,4051,4061],{"type":22,"tag":76,"props":4032,"children":4033},{},[4034,4039],{"type":22,"tag":82,"props":4035,"children":4036},{},[4037],{"type":28,"value":4038},"Timeout:",{"type":28,"value":4040}," 5 seconds max execution",{"type":22,"tag":76,"props":4042,"children":4043},{},[4044,4049],{"type":22,"tag":82,"props":4045,"children":4046},{},[4047],{"type":28,"value":4048},"No network access:",{"type":28,"value":4050}," Cannot make HTTP calls (use webhook type instead)",{"type":22,"tag":76,"props":4052,"children":4053},{},[4054,4059],{"type":22,"tag":82,"props":4055,"children":4056},{},[4057],{"type":28,"value":4058},"Sandboxed:",{"type":28,"value":4060}," No access to filesystem or system APIs",{"type":22,"tag":76,"props":4062,"children":4063},{},[4064,4069],{"type":22,"tag":82,"props":4065,"children":4066},{},[4067],{"type":28,"value":4068},"Memory:",{"type":28,"value":4070}," Limited to 10MB",{"type":22,"tag":37,"props":4072,"children":4074},{"id":4073},"use-cases",[4075],{"type":28,"value":4076},"Use cases",{"type":22,"tag":155,"props":4078,"children":4079},{},[4080,4085,4090,4095],{"type":22,"tag":76,"props":4081,"children":4082},{},[4083],{"type":28,"value":4084},"Format data before displaying",{"type":22,"tag":76,"props":4086,"children":4087},{},[4088],{"type":28,"value":4089},"Calculate values (discounts, dates)",{"type":22,"tag":76,"props":4091,"children":4092},{},[4093],{"type":28,"value":4094},"Generate reference numbers",{"type":22,"tag":76,"props":4096,"children":4097},{},[4098],{"type":28,"value":4099},"Transform contact data",{"type":22,"tag":37,"props":4101,"children":4102},{"id":1863},[4103],{"type":28,"value":1866},{"type":22,"tag":72,"props":4105,"children":4106},{},[4107,4117,4126,4136],{"type":22,"tag":76,"props":4108,"children":4109},{},[4110,4115],{"type":22,"tag":82,"props":4111,"children":4112},{},[4113],{"type":28,"value":4114},"Keep it simple",{"type":28,"value":4116}," — Complex logic belongs in webhooks",{"type":22,"tag":76,"props":4118,"children":4119},{},[4120,4124],{"type":22,"tag":82,"props":4121,"children":4122},{},[4123],{"type":28,"value":3827},{"type":28,"value":4125}," — Use try\u002Fcatch",{"type":22,"tag":76,"props":4127,"children":4128},{},[4129,4134],{"type":22,"tag":82,"props":4130,"children":4131},{},[4132],{"type":28,"value":4133},"Test locally",{"type":28,"value":4135}," — Verify logic before deploying",{"type":22,"tag":76,"props":4137,"children":4138},{},[4139,4144],{"type":22,"tag":82,"props":4140,"children":4141},{},[4142],{"type":28,"value":4143},"Use for formatting",{"type":28,"value":4145}," — Best for data transformation, not business logic",{"title":8,"searchDepth":691,"depth":691,"links":4147},[4148,4149,4150,4151,4152,4153],{"id":3866,"depth":691,"text":3869},{"id":3877,"depth":691,"text":3880},{"id":3928,"depth":691,"text":3931},{"id":4024,"depth":691,"text":4027},{"id":4073,"depth":691,"text":4076},{"id":1863,"depth":691,"text":1866},"content:help:integrations:custom-js-actions.md","help\u002Fintegrations\u002Fcustom-js-actions.md","help\u002Fintegrations\u002Fcustom-js-actions",{"_path":4158,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4159,"description":4160,"category":6,"order":4161,"difficulty":12,"time_to_complete":13,"related":4162,"body":4165,"_type":707,"_id":4792,"_source":709,"_file":4793,"_stem":4794,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fpayment-gateway","Payment gateway setup (Razorpay\u002FStripe)","How to configure payment gateways to send payment links directly in WhatsApp conversations.",8,[4163,5,4164],"\u002Fhelp\u002Fmessaging\u002Fsending-payment-links","\u002Fhelp\u002Fmessaging\u002Fshared-team-inbox",{"type":19,"children":4166,"toc":4776},[4167,4173,4178,4184,4253,4259,4265,4287,4293,4350,4356,4393,4399,4404,4425,4430,4505,4511,4577,4582,4600,4606,4691,4695,4747,4753],{"type":22,"tag":23,"props":4168,"children":4170},{"id":4169},"payment-gateway-setup",[4171],{"type":28,"value":4172},"Payment gateway setup",{"type":22,"tag":31,"props":4174,"children":4175},{},[4176],{"type":28,"value":4177},"Accept payments directly in WhatsApp conversations by sending payment links.",{"type":22,"tag":37,"props":4179,"children":4181},{"id":4180},"supported-gateways",[4182],{"type":28,"value":4183},"Supported gateways",{"type":22,"tag":271,"props":4185,"children":4186},{},[4187,4208],{"type":22,"tag":275,"props":4188,"children":4189},{},[4190],{"type":22,"tag":279,"props":4191,"children":4192},{},[4193,4198,4203],{"type":22,"tag":283,"props":4194,"children":4195},{},[4196],{"type":28,"value":4197},"Gateway",{"type":22,"tag":283,"props":4199,"children":4200},{},[4201],{"type":28,"value":4202},"Regions",{"type":22,"tag":283,"props":4204,"children":4205},{},[4206],{"type":28,"value":4207},"Currencies",{"type":22,"tag":299,"props":4209,"children":4210},{},[4211,4232],{"type":22,"tag":279,"props":4212,"children":4213},{},[4214,4222,4227],{"type":22,"tag":306,"props":4215,"children":4216},{},[4217],{"type":22,"tag":82,"props":4218,"children":4219},{},[4220],{"type":28,"value":4221},"Razorpay",{"type":22,"tag":306,"props":4223,"children":4224},{},[4225],{"type":28,"value":4226},"India",{"type":22,"tag":306,"props":4228,"children":4229},{},[4230],{"type":28,"value":4231},"INR",{"type":22,"tag":279,"props":4233,"children":4234},{},[4235,4243,4248],{"type":22,"tag":306,"props":4236,"children":4237},{},[4238],{"type":22,"tag":82,"props":4239,"children":4240},{},[4241],{"type":28,"value":4242},"Stripe",{"type":22,"tag":306,"props":4244,"children":4245},{},[4246],{"type":28,"value":4247},"Global",{"type":22,"tag":306,"props":4249,"children":4250},{},[4251],{"type":28,"value":4252},"USD, EUR, GBP, + 135 more",{"type":22,"tag":37,"props":4254,"children":4256},{"id":4255},"setting-up-razorpay",[4257],{"type":28,"value":4258},"Setting up Razorpay",{"type":22,"tag":65,"props":4260,"children":4262},{"id":4261},"prerequisites",[4263],{"type":28,"value":4264},"Prerequisites",{"type":22,"tag":155,"props":4266,"children":4267},{},[4268,4282],{"type":22,"tag":76,"props":4269,"children":4270},{},[4271,4273,4280],{"type":28,"value":4272},"A Razorpay account (",{"type":22,"tag":1911,"props":4274,"children":4277},{"href":4275,"rel":4276},"https:\u002F\u002Frazorpay.com",[1915],[4278],{"type":28,"value":4279},"razorpay.com",{"type":28,"value":4281},")",{"type":22,"tag":76,"props":4283,"children":4284},{},[4285],{"type":28,"value":4286},"API Key ID and Key Secret from Razorpay Dashboard",{"type":22,"tag":65,"props":4288,"children":4290},{"id":4289},"configuration",[4291],{"type":28,"value":4292},"Configuration",{"type":22,"tag":72,"props":4294,"children":4295},{},[4296,4307,4318,4346],{"type":22,"tag":76,"props":4297,"children":4298},{},[4299,4300,4305],{"type":28,"value":80},{"type":22,"tag":82,"props":4301,"children":4302},{},[4303],{"type":28,"value":4304},"Settings → Integrations",{"type":28,"value":4306}," (or contact admin)",{"type":22,"tag":76,"props":4308,"children":4309},{},[4310,4312,4316],{"type":28,"value":4311},"Find ",{"type":22,"tag":82,"props":4313,"children":4314},{},[4315],{"type":28,"value":4221},{"type":28,"value":4317}," section",{"type":22,"tag":76,"props":4319,"children":4320},{},[4321,4323],{"type":28,"value":4322},"Enter:\n",{"type":22,"tag":155,"props":4324,"children":4325},{},[4326,4336],{"type":22,"tag":76,"props":4327,"children":4328},{},[4329,4334],{"type":22,"tag":82,"props":4330,"children":4331},{},[4332],{"type":28,"value":4333},"Key ID",{"type":28,"value":4335}," — From Razorpay Dashboard → Settings → API Keys",{"type":22,"tag":76,"props":4337,"children":4338},{},[4339,4344],{"type":22,"tag":82,"props":4340,"children":4341},{},[4342],{"type":28,"value":4343},"Key Secret",{"type":28,"value":4345}," — The secret key (shown once when generated)",{"type":22,"tag":76,"props":4347,"children":4348},{},[4349],{"type":28,"value":2476},{"type":22,"tag":65,"props":4351,"children":4353},{"id":4352},"testing",[4354],{"type":28,"value":4355},"Testing",{"type":22,"tag":155,"props":4357,"children":4358},{},[4359,4371,4376,4381],{"type":22,"tag":76,"props":4360,"children":4361},{},[4362,4364,4369],{"type":28,"value":4363},"Use Razorpay's ",{"type":22,"tag":82,"props":4365,"children":4366},{},[4367],{"type":28,"value":4368},"Test Mode",{"type":28,"value":4370}," keys first",{"type":22,"tag":76,"props":4372,"children":4373},{},[4374],{"type":28,"value":4375},"Send a test payment link to yourself",{"type":22,"tag":76,"props":4377,"children":4378},{},[4379],{"type":28,"value":4380},"Verify the payment flow works end-to-end",{"type":22,"tag":76,"props":4382,"children":4383},{},[4384,4386,4391],{"type":28,"value":4385},"Switch to ",{"type":22,"tag":82,"props":4387,"children":4388},{},[4389],{"type":28,"value":4390},"Live Mode",{"type":28,"value":4392}," keys for production",{"type":22,"tag":37,"props":4394,"children":4396},{"id":4395},"setting-up-stripe",[4397],{"type":28,"value":4398},"Setting up Stripe",{"type":22,"tag":65,"props":4400,"children":4402},{"id":4401},"prerequisites-1",[4403],{"type":28,"value":4264},{"type":22,"tag":155,"props":4405,"children":4406},{},[4407,4420],{"type":22,"tag":76,"props":4408,"children":4409},{},[4410,4412,4419],{"type":28,"value":4411},"A Stripe account (",{"type":22,"tag":1911,"props":4413,"children":4416},{"href":4414,"rel":4415},"https:\u002F\u002Fstripe.com",[1915],[4417],{"type":28,"value":4418},"stripe.com",{"type":28,"value":4281},{"type":22,"tag":76,"props":4421,"children":4422},{},[4423],{"type":28,"value":4424},"Publishable Key and Secret Key",{"type":22,"tag":65,"props":4426,"children":4428},{"id":4427},"configuration-1",[4429],{"type":28,"value":4292},{"type":22,"tag":72,"props":4431,"children":4432},{},[4433,4441,4450,4501],{"type":22,"tag":76,"props":4434,"children":4435},{},[4436,4437],{"type":28,"value":80},{"type":22,"tag":82,"props":4438,"children":4439},{},[4440],{"type":28,"value":4304},{"type":22,"tag":76,"props":4442,"children":4443},{},[4444,4445,4449],{"type":28,"value":4311},{"type":22,"tag":82,"props":4446,"children":4447},{},[4448],{"type":28,"value":4242},{"type":28,"value":4317},{"type":22,"tag":76,"props":4451,"children":4452},{},[4453,4454],{"type":28,"value":4322},{"type":22,"tag":155,"props":4455,"children":4456},{},[4457,4479],{"type":22,"tag":76,"props":4458,"children":4459},{},[4460,4465,4466,4472,4473],{"type":22,"tag":82,"props":4461,"children":4462},{},[4463],{"type":28,"value":4464},"Publishable Key",{"type":28,"value":1909},{"type":22,"tag":49,"props":4467,"children":4469},{"className":4468},[],[4470],{"type":28,"value":4471},"pk_live_...",{"type":28,"value":2828},{"type":22,"tag":49,"props":4474,"children":4476},{"className":4475},[],[4477],{"type":28,"value":4478},"pk_test_...",{"type":22,"tag":76,"props":4480,"children":4481},{},[4482,4487,4488,4494,4495],{"type":22,"tag":82,"props":4483,"children":4484},{},[4485],{"type":28,"value":4486},"Secret Key",{"type":28,"value":1909},{"type":22,"tag":49,"props":4489,"children":4491},{"className":4490},[],[4492],{"type":28,"value":4493},"sk_live_...",{"type":28,"value":2828},{"type":22,"tag":49,"props":4496,"children":4498},{"className":4497},[],[4499],{"type":28,"value":4500},"sk_test_...",{"type":22,"tag":76,"props":4502,"children":4503},{},[4504],{"type":28,"value":2476},{"type":22,"tag":37,"props":4506,"children":4508},{"id":4507},"sending-payment-links-in-chat",[4509],{"type":28,"value":4510},"Sending payment links in chat",{"type":22,"tag":72,"props":4512,"children":4513},{},[4514,4519,4531,4568],{"type":22,"tag":76,"props":4515,"children":4516},{},[4517],{"type":28,"value":4518},"Open a conversation",{"type":22,"tag":76,"props":4520,"children":4521},{},[4522,4524,4529],{"type":28,"value":4523},"Click the ",{"type":22,"tag":82,"props":4525,"children":4526},{},[4527],{"type":28,"value":4528},"💳 Payment",{"type":28,"value":4530}," button in the header",{"type":22,"tag":76,"props":4532,"children":4533},{},[4534,4536],{"type":28,"value":4535},"Fill in:\n",{"type":22,"tag":155,"props":4537,"children":4538},{},[4539,4549,4559],{"type":22,"tag":76,"props":4540,"children":4541},{},[4542,4547],{"type":22,"tag":82,"props":4543,"children":4544},{},[4545],{"type":28,"value":4546},"Amount",{"type":28,"value":4548}," — Payment amount",{"type":22,"tag":76,"props":4550,"children":4551},{},[4552,4557],{"type":22,"tag":82,"props":4553,"children":4554},{},[4555],{"type":28,"value":4556},"Currency",{"type":28,"value":4558}," — INR, USD, etc.",{"type":22,"tag":76,"props":4560,"children":4561},{},[4562,4566],{"type":22,"tag":82,"props":4563,"children":4564},{},[4565],{"type":28,"value":297},{"type":28,"value":4567}," — What the payment is for (e.g., \"Order #123\")",{"type":22,"tag":76,"props":4569,"children":4570},{},[4571,4572],{"type":28,"value":91},{"type":22,"tag":82,"props":4573,"children":4574},{},[4575],{"type":28,"value":4576},"\"Create & Send\"",{"type":22,"tag":31,"props":4578,"children":4579},{},[4580],{"type":28,"value":4581},"The customer receives a clickable payment link in WhatsApp. When they pay:",{"type":22,"tag":155,"props":4583,"children":4584},{},[4585,4590,4595],{"type":22,"tag":76,"props":4586,"children":4587},{},[4588],{"type":28,"value":4589},"You receive a notification",{"type":22,"tag":76,"props":4591,"children":4592},{},[4593],{"type":28,"value":4594},"The payment status updates in the conversation",{"type":22,"tag":76,"props":4596,"children":4597},{},[4598],{"type":28,"value":4599},"A receipt is generated",{"type":22,"tag":37,"props":4601,"children":4603},{"id":4602},"payment-status-tracking",[4604],{"type":28,"value":4605},"Payment status tracking",{"type":22,"tag":271,"props":4607,"children":4608},{},[4609,4624],{"type":22,"tag":275,"props":4610,"children":4611},{},[4612],{"type":22,"tag":279,"props":4613,"children":4614},{},[4615,4620],{"type":22,"tag":283,"props":4616,"children":4617},{},[4618],{"type":28,"value":4619},"Status",{"type":22,"tag":283,"props":4621,"children":4622},{},[4623],{"type":28,"value":1356},{"type":22,"tag":299,"props":4625,"children":4626},{},[4627,4643,4659,4675],{"type":22,"tag":279,"props":4628,"children":4629},{},[4630,4638],{"type":22,"tag":306,"props":4631,"children":4632},{},[4633],{"type":22,"tag":82,"props":4634,"children":4635},{},[4636],{"type":28,"value":4637},"Created",{"type":22,"tag":306,"props":4639,"children":4640},{},[4641],{"type":28,"value":4642},"Link sent, awaiting payment",{"type":22,"tag":279,"props":4644,"children":4645},{},[4646,4654],{"type":22,"tag":306,"props":4647,"children":4648},{},[4649],{"type":22,"tag":82,"props":4650,"children":4651},{},[4652],{"type":28,"value":4653},"Paid",{"type":22,"tag":306,"props":4655,"children":4656},{},[4657],{"type":28,"value":4658},"Customer completed payment ✅",{"type":22,"tag":279,"props":4660,"children":4661},{},[4662,4670],{"type":22,"tag":306,"props":4663,"children":4664},{},[4665],{"type":22,"tag":82,"props":4666,"children":4667},{},[4668],{"type":28,"value":4669},"Failed",{"type":22,"tag":306,"props":4671,"children":4672},{},[4673],{"type":28,"value":4674},"Payment attempt failed",{"type":22,"tag":279,"props":4676,"children":4677},{},[4678,4686],{"type":22,"tag":306,"props":4679,"children":4680},{},[4681],{"type":22,"tag":82,"props":4682,"children":4683},{},[4684],{"type":28,"value":4685},"Expired",{"type":22,"tag":306,"props":4687,"children":4688},{},[4689],{"type":28,"value":4690},"Link expired (configurable timeout)",{"type":22,"tag":37,"props":4692,"children":4693},{"id":1863},[4694],{"type":28,"value":1866},{"type":22,"tag":72,"props":4696,"children":4697},{},[4698,4707,4717,4727,4737],{"type":22,"tag":76,"props":4699,"children":4700},{},[4701,4705],{"type":22,"tag":82,"props":4702,"children":4703},{},[4704],{"type":28,"value":3192},{"type":28,"value":4706}," — Clear descriptions reduce payment disputes",{"type":22,"tag":76,"props":4708,"children":4709},{},[4710,4715],{"type":22,"tag":82,"props":4711,"children":4712},{},[4713],{"type":28,"value":4714},"Set expiry",{"type":28,"value":4716}," — Payment links should expire after 24-48 hours",{"type":22,"tag":76,"props":4718,"children":4719},{},[4720,4725],{"type":22,"tag":82,"props":4721,"children":4722},{},[4723],{"type":28,"value":4724},"Follow up",{"type":28,"value":4726}," — If not paid within a few hours, send a reminder",{"type":22,"tag":76,"props":4728,"children":4729},{},[4730,4735],{"type":22,"tag":82,"props":4731,"children":4732},{},[4733],{"type":28,"value":4734},"Test first",{"type":28,"value":4736}," — Always test with test mode keys before going live",{"type":22,"tag":76,"props":4738,"children":4739},{},[4740,4745],{"type":22,"tag":82,"props":4741,"children":4742},{},[4743],{"type":28,"value":4744},"Keep records",{"type":28,"value":4746}," — Payment IDs are logged for reconciliation",{"type":22,"tag":37,"props":4748,"children":4750},{"id":4749},"security",[4751],{"type":28,"value":4752},"Security",{"type":22,"tag":155,"props":4754,"children":4755},{},[4756,4761,4766,4771],{"type":22,"tag":76,"props":4757,"children":4758},{},[4759],{"type":28,"value":4760},"API keys are encrypted at rest in AIsoule",{"type":22,"tag":76,"props":4762,"children":4763},{},[4764],{"type":28,"value":4765},"Payment processing happens directly between customer and gateway",{"type":22,"tag":76,"props":4767,"children":4768},{},[4769],{"type":28,"value":4770},"AIsoule never stores card numbers or sensitive payment data",{"type":22,"tag":76,"props":4772,"children":4773},{},[4774],{"type":28,"value":4775},"All payment links use HTTPS",{"title":8,"searchDepth":691,"depth":691,"links":4777},[4778,4779,4784,4788,4789,4790,4791],{"id":4180,"depth":691,"text":4183},{"id":4255,"depth":691,"text":4258,"children":4780},[4781,4782,4783],{"id":4261,"depth":697,"text":4264},{"id":4289,"depth":697,"text":4292},{"id":4352,"depth":697,"text":4355},{"id":4395,"depth":691,"text":4398,"children":4785},[4786,4787],{"id":4401,"depth":697,"text":4264},{"id":4427,"depth":697,"text":4292},{"id":4507,"depth":691,"text":4510},{"id":4602,"depth":691,"text":4605},{"id":1863,"depth":691,"text":1866},{"id":4749,"depth":691,"text":4752},"content:help:integrations:payment-gateway.md","help\u002Fintegrations\u002Fpayment-gateway.md","help\u002Fintegrations\u002Fpayment-gateway",{"_path":4796,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4797,"description":4798,"category":6,"order":4799,"difficulty":12,"time_to_complete":985,"related":4800,"body":4803,"_type":707,"_id":5017,"_source":709,"_file":5018,"_stem":5019,"_extension":712},"\u002Fhelp\u002Fintegrations\u002Fproduct-catalog-sync","Product catalog sync from Meta","How to sync your Meta Commerce Manager product catalog with AIsoule for in-chat product sharing.",9,[4801,4802,2933],"\u002Fhelp\u002Fmessaging\u002Fproduct-catalog","\u002Fhelp\u002Fmessaging\u002Fcatalog-commerce",{"type":19,"children":4804,"toc":5009},[4805,4811,4816,4820,4840,4846,4864,4870,4894,4900,4905,4933,4939,4944,4962,4966],{"type":22,"tag":23,"props":4806,"children":4808},{"id":4807},"product-catalog-sync",[4809],{"type":28,"value":4810},"Product catalog sync",{"type":22,"tag":31,"props":4812,"children":4813},{},[4814],{"type":28,"value":4815},"Sync your product catalog from Meta Commerce Manager to share products in WhatsApp conversations.",{"type":22,"tag":37,"props":4817,"children":4818},{"id":4261},[4819],{"type":28,"value":4264},{"type":22,"tag":155,"props":4821,"children":4822},{},[4823,4835],{"type":22,"tag":76,"props":4824,"children":4825},{},[4826,4828],{"type":28,"value":4827},"A product catalog in ",{"type":22,"tag":1911,"props":4829,"children":4832},{"href":4830,"rel":4831},"https:\u002F\u002Fbusiness.facebook.com\u002Fcommerce",[1915],[4833],{"type":28,"value":4834},"Meta Commerce Manager",{"type":22,"tag":76,"props":4836,"children":4837},{},[4838],{"type":28,"value":4839},"Catalog linked to your WhatsApp Business Account",{"type":22,"tag":37,"props":4841,"children":4843},{"id":4842},"how-sync-works",[4844],{"type":28,"value":4845},"How sync works",{"type":22,"tag":72,"props":4847,"children":4848},{},[4849,4854,4859],{"type":22,"tag":76,"props":4850,"children":4851},{},[4852],{"type":28,"value":4853},"You create\u002Fmanage products in Meta Commerce Manager",{"type":22,"tag":76,"props":4855,"children":4856},{},[4857],{"type":28,"value":4858},"AIsoule automatically syncs the catalog data",{"type":22,"tag":76,"props":4860,"children":4861},{},[4862],{"type":28,"value":4863},"Products become available to share in conversations",{"type":22,"tag":37,"props":4865,"children":4867},{"id":4866},"viewing-synced-products",[4868],{"type":28,"value":4869},"Viewing synced products",{"type":22,"tag":72,"props":4871,"children":4872},{},[4873,4884,4889],{"type":22,"tag":76,"props":4874,"children":4875},{},[4876,4877,4882],{"type":28,"value":80},{"type":22,"tag":82,"props":4878,"children":4879},{},[4880],{"type":28,"value":4881},"Settings → Catalog",{"type":28,"value":4883}," (or the catalog section)",{"type":22,"tag":76,"props":4885,"children":4886},{},[4887],{"type":28,"value":4888},"Browse your synced products",{"type":22,"tag":76,"props":4890,"children":4891},{},[4892],{"type":28,"value":4893},"Each product shows: name, image, price, description",{"type":22,"tag":37,"props":4895,"children":4897},{"id":4896},"sending-products-in-chat",[4898],{"type":28,"value":4899},"Sending products in chat",{"type":22,"tag":31,"props":4901,"children":4902},{},[4903],{"type":28,"value":4904},"Once synced:",{"type":22,"tag":72,"props":4906,"children":4907},{},[4908,4912,4923,4928],{"type":22,"tag":76,"props":4909,"children":4910},{},[4911],{"type":28,"value":4518},{"type":22,"tag":76,"props":4913,"children":4914},{},[4915,4916,4921],{"type":28,"value":4523},{"type":22,"tag":82,"props":4917,"children":4918},{},[4919],{"type":28,"value":4920},"🛒 Product",{"type":28,"value":4922}," button",{"type":22,"tag":76,"props":4924,"children":4925},{},[4926],{"type":28,"value":4927},"Browse or search your catalog",{"type":22,"tag":76,"props":4929,"children":4930},{},[4931],{"type":28,"value":4932},"Select and send",{"type":22,"tag":37,"props":4934,"children":4936},{"id":4935},"updating-products",[4937],{"type":28,"value":4938},"Updating products",{"type":22,"tag":31,"props":4940,"children":4941},{},[4942],{"type":28,"value":4943},"Changes made in Meta Commerce Manager sync automatically:",{"type":22,"tag":155,"props":4945,"children":4946},{},[4947,4952,4957],{"type":22,"tag":76,"props":4948,"children":4949},{},[4950],{"type":28,"value":4951},"New products appear within minutes",{"type":22,"tag":76,"props":4953,"children":4954},{},[4955],{"type":28,"value":4956},"Price changes update automatically",{"type":22,"tag":76,"props":4958,"children":4959},{},[4960],{"type":28,"value":4961},"Deleted products are removed",{"type":22,"tag":37,"props":4963,"children":4964},{"id":1863},[4965],{"type":28,"value":1866},{"type":22,"tag":72,"props":4967,"children":4968},{},[4969,4979,4989,4999],{"type":22,"tag":76,"props":4970,"children":4971},{},[4972,4977],{"type":22,"tag":82,"props":4973,"children":4974},{},[4975],{"type":28,"value":4976},"Manage in Meta",{"type":28,"value":4978}," — AIsoule reads from Meta, doesn't write back",{"type":22,"tag":76,"props":4980,"children":4981},{},[4982,4987],{"type":22,"tag":82,"props":4983,"children":4984},{},[4985],{"type":28,"value":4986},"Keep images updated",{"type":28,"value":4988}," — Fresh product photos improve engagement",{"type":22,"tag":76,"props":4990,"children":4991},{},[4992,4997],{"type":22,"tag":82,"props":4993,"children":4994},{},[4995],{"type":28,"value":4996},"Organize collections",{"type":28,"value":4998}," — Group related products for easy browsing",{"type":22,"tag":76,"props":5000,"children":5001},{},[5002,5007],{"type":22,"tag":82,"props":5003,"children":5004},{},[5005],{"type":28,"value":5006},"Check sync status",{"type":28,"value":5008}," — If products aren't showing, verify the catalog is linked to your WABA",{"title":8,"searchDepth":691,"depth":691,"links":5010},[5011,5012,5013,5014,5015,5016],{"id":4261,"depth":691,"text":4264},{"id":4842,"depth":691,"text":4845},{"id":4866,"depth":691,"text":4869},{"id":4896,"depth":691,"text":4899},{"id":4935,"depth":691,"text":4938},{"id":1863,"depth":691,"text":1866},"content:help:integrations:product-catalog-sync.md","help\u002Fintegrations\u002Fproduct-catalog-sync.md","help\u002Fintegrations\u002Fproduct-catalog-sync",1780423177511]