[{"data":1,"prerenderedAt":31441},["ShallowReactive",2],{"docs-nav":3,"content-\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0":1552,"content-doc-\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0-inline":1552,"search-dialog-corpus":1631,"search-dialog-default-links":26565,"pinned-blogs":27633,"doc-nav-siblings:%2Fdocs%2Fno-code-tool%2Frelease-notes%2Faxiom-version-3-7-0":27634,"hero-media-\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0":31396},[4,8,12,16,40,44,48,52,56,60,80,84,1493,1497,1501,1524,1528,1532,1536,1540,1544,1548],{"title":5,"path":6,"stem":7},"About axciom ai","\u002F_about"," _about",{"title":9,"path":10,"stem":11},"A list of available compoenents and there variables","\u002F_components"," _components",{"title":13,"path":14,"stem":15},"Code Dashboard for browser automations","\u002F_code-dashboard","_code-dashboard",{"title":17,"path":18,"stem":19,"children":20},"Integrations","\u002F_integrations","_integrations",[21,24,28,32,36],{"title":22,"path":18,"stem":23},"The axiom.ai runner","_integrations\u002Findex",{"title":25,"path":26,"stem":27},"Integrate your browser automations with 2Captcha","\u002F_integrations\u002F2captcha","_integrations\u002F2captcha",{"title":29,"path":30,"stem":31},"Excel","\u002F_integrations\u002Fexcel","_integrations\u002Fexcel",{"title":33,"path":34,"stem":35},"Intergrate Google sheets with your browser automations","\u002F_integrations\u002Fgoogle-sheets","_integrations\u002Fgoogle-sheets",{"title":37,"path":38,"stem":39},"Integrate your browser automations and web scrapers with Zapier in Chrome.","\u002F_integrations\u002Fzap","_integrations\u002Fzap",{"title":41,"path":42,"stem":43},"Get started","\u002F_signup","_signup",{"title":45,"path":46,"stem":47},"Affiliate program","\u002Faffiliate-program","affiliate-program",{"title":49,"path":50,"stem":51},"Connect browser automation to Claude, ChatGPT, Gemini, and more | axiom.ai","\u002Fai-assistant","ai-assistant",{"title":53,"path":54,"stem":55},"Build browser automations with Claude","\u002Fbuild-in-claude","build-in-claude",{"title":57,"path":58,"stem":59},"Build browser automations with code","\u002Fbuild-with-code","build-with-code",{"title":61,"path":62,"stem":63,"children":64},"Build With No Code","\u002Fbuild-with-no-code","build-with-no-code",[65,68,72,76],{"title":66,"path":62,"stem":67},"Build no-code browser bots by describing them to AI","build-with-no-code\u002Findex",{"title":69,"path":70,"stem":71},"Build in Claude Code","\u002Fbuild-with-no-code\u002Fclaude","build-with-no-code\u002Fclaude",{"title":73,"path":74,"stem":75},"Build with code","\u002Fbuild-with-no-code\u002Fdescription","build-with-no-code\u002Fdescription",{"title":77,"path":78,"stem":79},"Build no-code bots step by step","\u002Fbuild-with-no-code\u002Fstep-by-step","build-with-no-code\u002Fstep-by-step",{"title":81,"path":82,"stem":83},"Customer support — docs, AI help, or talk to a human","\u002Fcustomer-support","customer-support",{"title":85,"path":86,"stem":87,"children":88},"Docs","\u002Fdocs","docs",[89,92,110,154,454,480,1489],{"title":90,"path":86,"stem":91},"Browser Automation Documentation: No-Code, Code, API | axiom","docs\u002Findex",{"title":93,"path":94,"stem":95,"children":96},"Account","\u002Fdocs\u002Faccount","docs\u002Faccount\u002Findex",[97,98,102,106],{"title":93,"path":94,"stem":95},{"title":99,"path":100,"stem":101},"Manage your account","\u002Fdocs\u002Faccount\u002Faccount","docs\u002Faccount\u002Faccount",{"title":103,"path":104,"stem":105},"Create an account","\u002Fdocs\u002Faccount\u002Fcreate-account","docs\u002Faccount\u002Fcreate-account",{"title":107,"path":108,"stem":109},"Manage your subscription","\u002Fdocs\u002Faccount\u002Fsubscription","docs\u002Faccount\u002Fsubscription",{"title":111,"path":112,"stem":113,"children":114},"Code Dashboard","\u002Fdocs\u002Fcode","docs\u002Fcode\u002Findex",[115,116,120,124,128,132,136,150],{"title":111,"path":112,"stem":113},{"title":117,"path":118,"stem":119},"Create scripts","\u002Fdocs\u002Fcode\u002Fcreate-scripts","docs\u002Fcode\u002Fcreate-scripts",{"title":121,"path":122,"stem":123},"Dashboard","\u002Fdocs\u002Fcode\u002Fdashboard","docs\u002Fcode\u002Fdashboard",{"title":125,"path":126,"stem":127},"Live editor","\u002Fdocs\u002Fcode\u002Flive-editor","docs\u002Fcode\u002Flive-editor",{"title":129,"path":130,"stem":131},"Run reports","\u002Fdocs\u002Fcode\u002Frun-reports","docs\u002Fcode\u002Frun-reports",{"title":133,"path":134,"stem":135},"Run scripts","\u002Fdocs\u002Fcode\u002Frunning-scripts","docs\u002Fcode\u002Frunning-scripts",{"title":137,"path":138,"stem":139,"children":140},"Sample scripts","\u002Fdocs\u002Fcode\u002Fsamples","docs\u002Fcode\u002Fsamples\u002Findex",[141,142,146],{"title":137,"path":138,"stem":139},{"title":143,"path":144,"stem":145},"Enter data into a page","\u002Fdocs\u002Fcode\u002Fsamples\u002Fdata-entry","docs\u002Fcode\u002Fsamples\u002Fdata-entry",{"title":147,"path":148,"stem":149},"Navigate to a page","\u002Fdocs\u002Fcode\u002Fsamples\u002Fnavigate-to-page","docs\u002Fcode\u002Fsamples\u002Fnavigate-to-page",{"title":151,"path":152,"stem":153},"Generate an API key","\u002Fdocs\u002Fcode\u002Ftoken-generation","docs\u002Fcode\u002Ftoken-generation",{"title":155,"path":156,"stem":157,"children":158},"Developer Hub","\u002Fdocs\u002Fdeveloper-hub","docs\u002Fdeveloper-hub\u002Findex",[159,160,370,392,440],{"title":155,"path":156,"stem":157},{"title":161,"path":162,"stem":163,"children":164},"API","\u002Fdocs\u002Fdeveloper-hub\u002Fapi","docs\u002Fdeveloper-hub\u002Fapi\u002Findex",[165,166,170,176,198,202,206,228,262,352],{"title":161,"path":162,"stem":163},{"title":167,"path":168,"stem":169},"Authentication","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fauthentication","docs\u002Fdeveloper-hub\u002Fapi\u002Fauthentication",{"title":171,"path":172,"stem":173,"children":174},"Chrome API","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fcdp","docs\u002Fdeveloper-hub\u002Fapi\u002Fcdp\u002Findex",[175],{"title":171,"path":172,"stem":173},{"title":177,"path":178,"stem":179,"children":180},"MCP","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fmcp","docs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Findex",[181,182,186,190,194],{"title":177,"path":178,"stem":179},{"title":183,"path":184,"stem":185},"Build your own server (Python)","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fbuild-your-own-server-python","docs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fbuild-your-own-server-python",{"title":187,"path":188,"stem":189},"Build your own server (TypeScript)","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fbuild-your-own-typescript","docs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fbuild-your-own-typescript",{"title":191,"path":192,"stem":193},"Desktop app MCP server","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fdesktop-app-server","docs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fdesktop-app-server",{"title":195,"path":196,"stem":197},"Register with Claude clients","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fregister-with-claude","docs\u002Fdeveloper-hub\u002Fapi\u002Fmcp\u002Fregister-with-claude",{"title":199,"path":200,"stem":201},"Programmatic signup","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fprogrammatic-signup","docs\u002Fdeveloper-hub\u002Fapi\u002Fprogrammatic-signup",{"title":203,"path":204,"stem":205},"Quickstart","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fquickstart","docs\u002Fdeveloper-hub\u002Fapi\u002Fquickstart",{"title":207,"path":208,"stem":209,"children":210},"Reference","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Freference","docs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Findex",[211,212,216,220,224],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Data payload format","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fdata-payload","docs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fdata-payload",{"title":217,"path":218,"stem":219},"Endpoints","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fendpoints","docs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fendpoints",{"title":221,"path":222,"stem":223},"Error codes","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Ferrorcodes","docs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Ferrorcodes",{"title":225,"path":226,"stem":227},"API responses","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fresponses","docs\u002Fdeveloper-hub\u002Fapi\u002Freference\u002Fresponses",{"title":229,"path":230,"stem":231,"children":232},"Orchestrate API","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Findex",[233,234,238,242,246,250,254,258],{"title":229,"path":230,"stem":231},{"title":235,"path":236,"stem":237},"Check run status","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fcheck-run-status","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fcheck-run-status",{"title":239,"path":240,"stem":241},"List automations","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Flist-automations","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Flist-automations",{"title":243,"path":244,"stem":245},"Pass input data","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fpass-input-data","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fpass-input-data",{"title":247,"path":248,"stem":249},"List run reports","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Frun-reports","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Frun-reports",{"title":251,"path":252,"stem":253},"Stop a run","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fstop-a-run","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fstop-a-run",{"title":255,"path":256,"stem":257},"Trigger an automation","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Ftrigger-an-automation","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Ftrigger-an-automation",{"title":259,"path":260,"stem":261},"Webhooks from a step","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fwebhooks-from-a-step","docs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\u002Fwebhooks-from-a-step",{"title":263,"path":264,"stem":265,"children":266},"Step API","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Findex",[267,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348],{"title":263,"path":264,"stem":265},{"title":269,"path":270,"stem":271},"Click","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick",{"title":273,"path":274,"stem":275},"Click and drag","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-and-drag","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-and-drag",{"title":277,"path":278,"stem":279},"Click engagement button","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-engagement-button","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-engagement-button",{"title":281,"path":282,"stem":283},"Click multiple","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-multiple","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclick-multiple",{"title":285,"path":286,"stem":287},"Close a session","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclose-a-session","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fclose-a-session",{"title":289,"path":290,"stem":291},"Date picker","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fdate-picker","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fdate-picker",{"title":293,"path":294,"stem":295},"Enter text","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fenter-text","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fenter-text",{"title":297,"path":298,"stem":299},"Get clipboard contents","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fget-clipboard-contents","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fget-clipboard-contents",{"title":301,"path":302,"stem":303},"Go to URL","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fgoto","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fgoto",{"title":305,"path":306,"stem":307},"Hover","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fhover","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fhover",{"title":309,"path":310,"stem":311},"Integrate AI","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fintegrate-ai","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fintegrate-ai",{"title":313,"path":314,"stem":315},"Press keys","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fpress-keys","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fpress-keys",{"title":317,"path":318,"stem":319},"Restart browser","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Frestart-browser","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Frestart-browser",{"title":321,"path":322,"stem":323},"Scrape","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fscrape","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fscrape",{"title":325,"path":326,"stem":327},"Scrape metadata","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fscrape-metadata","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fscrape-metadata",{"title":329,"path":330,"stem":331},"Select list","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fselect-list","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fselect-list",{"title":333,"path":334,"stem":335},"Solve captcha","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fsolve-captcha","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fsolve-captcha",{"title":337,"path":338,"stem":339},"Start a session","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fstart-a-session","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fstart-a-session ",{"title":341,"path":342,"stem":343},"Step function vs No-Code step","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fstep-function-vs-no-code-step","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fstep-function-vs-no-code-step",{"title":345,"path":346,"stem":347},"Switch browser tab","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fswitch-browser-tab","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fswitch-browser-tab",{"title":349,"path":350,"stem":351},"Wait","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fwait","docs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\u002Fwait",{"title":353,"path":354,"stem":355,"children":356},"Usage and limits","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits","docs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Findex",[357,358,362,366],{"title":353,"path":354,"stem":355},{"title":359,"path":360,"stem":361},"Queue and concurrency","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Fqueue-and-concurrency","docs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Fqueue-and-concurrency",{"title":363,"path":364,"stem":365},"Rate limits","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Frate-limits","docs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Frate-limits",{"title":367,"path":368,"stem":369},"Check remaining runtime","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Fremaining-runtime","docs\u002Fdeveloper-hub\u002Fapi\u002Fusage-and-limits\u002Fremaining-runtime",{"title":371,"path":372,"stem":373,"children":374},"Deep dives","\u002Fdocs\u002Fdeveloper-hub\u002Fdeep-dives","docs\u002Fdeveloper-hub\u002Fdeep-dives\u002Findex",[375,376,380,384,388],{"title":371,"path":372,"stem":373},{"title":377,"path":378,"stem":379},"Automation JSON structure","\u002Fdocs\u002Fdeveloper-hub\u002Fdeep-dives\u002Faxiom-structure","docs\u002Fdeveloper-hub\u002Fdeep-dives\u002Faxiom-structure",{"title":381,"path":382,"stem":383},"Chromium","\u002Fdocs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fchromium","docs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fchromium",{"title":385,"path":386,"stem":387},"Cookies in axiom.ai","\u002Fdocs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fcookies","docs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fcookies",{"title":389,"path":390,"stem":391},"Data handling","\u002Fdocs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fdata-handling","docs\u002Fdeveloper-hub\u002Fdeep-dives\u002Fdata-handling",{"title":393,"path":394,"stem":395,"children":396},"Code snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets","docs\u002Fdeveloper-hub\u002Fsnippets\u002Findex",[397,398,428],{"title":393,"path":394,"stem":395},{"title":399,"path":400,"stem":401,"children":402},"JavaScript snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Findex",[403,404,408,412,416,420,424],{"title":399,"path":400,"stem":401},{"title":405,"path":406,"stem":407},"Data snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fdata","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fdata",{"title":409,"path":410,"stem":411},"Interaction snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Finteraction","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Finteraction",{"title":413,"path":414,"stem":415},"Navigation snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fnavigation","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fnavigation",{"title":417,"path":418,"stem":419},"Network snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fnetwork","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fnetwork",{"title":421,"path":422,"stem":423},"Page manipulation snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fpage-manipulation","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fpage-manipulation",{"title":425,"path":426,"stem":427},"Scrape snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fscrape","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript\u002Fscrape",{"title":429,"path":430,"stem":431,"children":432},"Puppeteer snippets","\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer\u002Findex",[433,434,437],{"title":429,"path":430,"stem":431},{"title":409,"path":435,"stem":436},"\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer\u002Finteraction","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer\u002Finteraction",{"title":417,"path":438,"stem":439},"\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer\u002Fnetwork","docs\u002Fdeveloper-hub\u002Fsnippets\u002Fpuppeteer\u002Fnetwork",{"title":441,"path":442,"stem":443,"children":444},"Developer troubleshooting","\u002Fdocs\u002Fdeveloper-hub\u002Ftroubleshooting","docs\u002Fdeveloper-hub\u002Ftroubleshooting\u002Findex",[445,446,450],{"title":441,"path":442,"stem":443},{"title":447,"path":448,"stem":449},"API errors","\u002Fdocs\u002Fdeveloper-hub\u002Ftroubleshooting\u002Fapi","docs\u002Fdeveloper-hub\u002Ftroubleshooting\u002Fapi",{"title":451,"path":452,"stem":453},"Debug developer features","\u002Fdocs\u002Fdeveloper-hub\u002Ftroubleshooting\u002Fdebug","docs\u002Fdeveloper-hub\u002Ftroubleshooting\u002Fdebug",{"title":455,"path":456,"stem":457,"children":458},"FAQ","\u002Fdocs\u002Ffaq","docs\u002Ffaq\u002Findex",[459,460,464,468,472,476],{"title":455,"path":456,"stem":457},{"title":461,"path":462,"stem":463},"General FAQ","\u002Fdocs\u002Ffaq\u002Fgeneral","docs\u002Ffaq\u002Fgeneral",{"title":465,"path":466,"stem":467},"Builder FAQ","\u002Fdocs\u002Ffaq\u002Fno-code-builder","docs\u002Ffaq\u002Fno-code-builder",{"title":469,"path":470,"stem":471},"Runtime and scheduling FAQ","\u002Fdocs\u002Ffaq\u002Fruntime-and-scheduling","docs\u002Ffaq\u002Fruntime-and-scheduling",{"title":473,"path":474,"stem":475},"Subscriptions and accounts FAQ","\u002Fdocs\u002Ffaq\u002Fsubscriptions-and-accounts","docs\u002Ffaq\u002Fsubscriptions-and-accounts",{"title":477,"path":478,"stem":479},"Third-party tools FAQ","\u002Fdocs\u002Ffaq\u002Fthird-party","docs\u002Ffaq\u002Fthird-party",{"title":481,"path":482,"stem":483,"children":484},"No-Code Tool","\u002Fdocs\u002Fno-code-tool","docs\u002Fno-code-tool\u002Findex",[485,486,507,729,786,1228,1350,1397],{"title":481,"path":482,"stem":483},{"title":41,"path":487,"stem":488,"children":489},"\u002Fdocs\u002Fno-code-tool\u002Fget-started","docs\u002Fno-code-tool\u002Fget-started\u002Findex",[490,491,495,499,503],{"title":41,"path":487,"stem":488},{"title":492,"path":493,"stem":494},"Fill a form from a spreadsheet","\u002Fdocs\u002Fno-code-tool\u002Fget-started\u002Fform-filling","docs\u002Fno-code-tool\u002Fget-started\u002Fform-filling",{"title":496,"path":497,"stem":498},"Loop through a list of URLs","\u002Fdocs\u002Fno-code-tool\u002Fget-started\u002Floop-urls","docs\u002Fno-code-tool\u002Fget-started\u002Floop-urls",{"title":500,"path":501,"stem":502},"Scrape a page into a Google Sheet","\u002Fdocs\u002Fno-code-tool\u002Fget-started\u002Fscrape-to-sheet","docs\u002Fno-code-tool\u002Fget-started\u002Fscrape-to-sheet",{"title":504,"path":505,"stem":506},"How to automate web forms","\u002Fdocs\u002Fno-code-tool\u002Fget-started\u002Fwebforms","docs\u002Fno-code-tool\u002Fget-started\u002Fwebforms",{"title":508,"path":509,"stem":510,"children":511},"How it works","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works","docs\u002Fno-code-tool\u002Fhow-it-works\u002Findex",[512,513,595,617,621,625,628,632,636,666,670,712,716],{"title":508,"path":509,"stem":510},{"title":514,"path":515,"stem":516,"children":517},"Interact with the browser","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Findex",[518,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591],{"title":514,"path":515,"stem":516},{"title":520,"path":521,"stem":522},"Tick a checkbox","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fcheckbox","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fcheckbox",{"title":524,"path":525,"stem":526},"Automate a button click","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fclicks","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fclicks",{"title":528,"path":529,"stem":530},"Get the current URL","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fcurrent-url","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fcurrent-url",{"title":532,"path":533,"stem":534},"Use a date picker","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdate-picker","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdate-picker",{"title":536,"path":537,"stem":538},"Download files to Google Drive","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdownload-cloud","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdownload-cloud",{"title":540,"path":541,"stem":542},"Download files to your computer","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdownload-local","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fdownload-local",{"title":544,"path":545,"stem":546},"Enter text into an input field","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fenter-text","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fenter-text",{"title":548,"path":549,"stem":550},"Record keystrokes","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fkey-strokes","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fkey-strokes",{"title":552,"path":553,"stem":554},"Drag the mouse","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fmouse-drag","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fmouse-drag",{"title":556,"path":557,"stem":558},"Click multiple buttons","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fmulti-click","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fmulti-click",{"title":560,"path":561,"stem":562},"Click a radio button","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fradio-buttons","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fradio-buttons",{"title":564,"path":565,"stem":566},"Trigger a rollover","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Frollover","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Frollover",{"title":568,"path":569,"stem":570},"Use a select list","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fselect-lists","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fselect-lists",{"title":572,"path":573,"stem":574},"Click likes and follows","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fsocial-media-buttons","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fsocial-media-buttons",{"title":576,"path":577,"stem":578},"Solve a captcha","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fsolve-captcha","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fsolve-captcha",{"title":580,"path":581,"stem":582},"Switch and close browser tabs","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Ftabs","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Ftabs",{"title":584,"path":585,"stem":586},"Upload files from Google Drive","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fupload-cloud","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fupload-cloud",{"title":588,"path":589,"stem":590},"Upload files from your computer","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fupload-local","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fupload-local",{"title":592,"path":593,"stem":594},"Pause an automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fwait","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fbrowser-actions\u002Fwait",{"title":596,"path":597,"stem":598,"children":599},"Work with data","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Findex",[600,601,605,609,613],{"title":596,"path":597,"stem":598},{"title":602,"path":603,"stem":604},"How to write data to a specific row","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fdynamically_write","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fdynamically_write",{"title":606,"path":607,"stem":608},"How to export data from axiom.ai","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fexport","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fexport",{"title":610,"path":611,"stem":612},"How to import data to use in your automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fimport","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Fimport",{"title":614,"path":615,"stem":616},"Transforming data during the run","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Ftransform","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fdata\u002Ftransform",{"title":618,"path":619,"stem":620},"Scrape data","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fget-data","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fget-data",{"title":622,"path":623,"stem":624},"Make automations with our no-code tool","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fget-started","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fget-started",{"title":309,"path":626,"stem":627},"\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fintegrate-ai","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fintegrate-ai",{"title":629,"path":630,"stem":631},"Run custom JavaScript","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fjavascript","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fjavascript",{"title":633,"path":634,"stem":635},"Use logic","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogic","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogic",{"title":637,"path":638,"stem":639,"children":640},"Log in to sites","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Findex",[641,642,646,650,654,658,662],{"title":637,"path":638,"stem":639},{"title":643,"path":644,"stem":645},"Log in with 2FA","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002F2fa","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002F2fa",{"title":647,"path":648,"stem":649},"Log in using a password manager","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fpassword-manager","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fpassword-manager",{"title":651,"path":652,"stem":653},"Secure login automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsecure","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsecure",{"title":655,"path":656,"stem":657},"Log in by sharing your session","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsessions","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsessions",{"title":659,"path":660,"stem":661},"Log in using a Google Sheet","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsteps","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fsteps",{"title":663,"path":664,"stem":665},"Log in using the VPS","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fvps","docs\u002Fno-code-tool\u002Fhow-it-works\u002Flogin\u002Fvps",{"title":667,"path":668,"stem":669},"Loop through data","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Floop","docs\u002Fno-code-tool\u002Fhow-it-works\u002Floop",{"title":671,"path":672,"stem":673,"children":674},"Run and schedule bots","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Findex",[675,676,680,684,688,692,696,700,704,708],{"title":671,"path":672,"stem":673},{"title":677,"path":678,"stem":679},"Advanced running methods","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fadvanced-running-methods","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fadvanced-running-methods",{"title":681,"path":682,"stem":683},"Schedule an automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fautomation","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fautomation",{"title":685,"path":686,"stem":687},"Login with a scheduled automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Flogin","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Flogin",{"title":689,"path":690,"stem":691},"Structure automations for long runs","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Flong-bot-runs","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Flong-bot-runs",{"title":693,"path":694,"stem":695},"Manage scheduled automations","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fmanage","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fmanage",{"title":697,"path":698,"stem":699},"Schedule on a specific computer","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fother","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fother",{"title":701,"path":702,"stem":703},"Run your automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Frun","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Frun",{"title":705,"path":706,"stem":707},"Speed up your automations","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fspeed-up-run","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fspeed-up-run",{"title":709,"path":710,"stem":711},"Stop a running automation","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fstop-bot-runs","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fschedule-and-run\u002Fstop-bot-runs",{"title":713,"path":714,"stem":715},"VPS Guide","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fvps","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fvps",{"title":717,"path":718,"stem":719,"children":720},"Send and receive webhooks","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks\u002Findex",[721,722,726],{"title":717,"path":718,"stem":719},{"title":723,"path":724,"stem":725},"Import data with a webhook","\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks\u002Fexport","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks\u002Fexport",{"title":723,"path":727,"stem":728},"\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks\u002Fimport","docs\u002Fno-code-tool\u002Fhow-it-works\u002Fwebhooks\u002Fimport",{"title":17,"path":730,"stem":731,"children":732},"\u002Fdocs\u002Fno-code-tool\u002Fintegrations","docs\u002Fno-code-tool\u002Fintegrations\u002Findex",[733,734,738,742,746,750,754,758,762,766,770,774,778,782],{"title":17,"path":730,"stem":731},{"title":735,"path":736,"stem":737},"2Captcha","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002F2captcha","docs\u002Fno-code-tool\u002Fintegrations\u002F2captcha",{"title":739,"path":740,"stem":741},"ChatGPT","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fchatgpt","docs\u002Fno-code-tool\u002Fintegrations\u002Fchatgpt",{"title":743,"path":744,"stem":745},"Claude","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fclaude","docs\u002Fno-code-tool\u002Fintegrations\u002Fclaude",{"title":747,"path":748,"stem":749},"DeepSeek","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fdeepseek","docs\u002Fno-code-tool\u002Fintegrations\u002Fdeepseek",{"title":751,"path":752,"stem":753},"Microsoft Excel","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fexcel","docs\u002Fno-code-tool\u002Fintegrations\u002Fexcel",{"title":755,"path":756,"stem":757},"Gemini","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fgemini","docs\u002Fno-code-tool\u002Fintegrations\u002Fgemini",{"title":759,"path":760,"stem":761},"Google Sheets","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fgoogle-sheets","docs\u002Fno-code-tool\u002Fintegrations\u002Fgoogle-sheets",{"title":763,"path":764,"stem":765},"Make","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fmake","docs\u002Fno-code-tool\u002Fintegrations\u002Fmake",{"title":767,"path":768,"stem":769},"n8n","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fn8n","docs\u002Fno-code-tool\u002Fintegrations\u002Fn8n",{"title":771,"path":772,"stem":773},"Puppeteer","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fpuppeteer","docs\u002Fno-code-tool\u002Fintegrations\u002Fpuppeteer",{"title":775,"path":776,"stem":777},"Relay.app","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Frelay-app","docs\u002Fno-code-tool\u002Fintegrations\u002Frelay-app",{"title":779,"path":780,"stem":781},"Sonar","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fsonar","docs\u002Fno-code-tool\u002Fintegrations\u002Fsonar",{"title":783,"path":784,"stem":785},"Zapier","\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fzapier","docs\u002Fno-code-tool\u002Fintegrations\u002Fzapier",{"title":207,"path":787,"stem":788,"children":789},"\u002Fdocs\u002Fno-code-tool\u002Freference","docs\u002Fno-code-tool\u002Freference\u002Findex",[790,791,892],{"title":207,"path":787,"stem":788},{"title":792,"path":793,"stem":794,"children":795},"Automation settings","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Findex",[796,797,823,841,851],{"title":792,"path":793,"stem":794},{"title":798,"path":799,"stem":800,"children":801},"Chrome","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Findex",[802,803,807,811,815,819],{"title":798,"path":799,"stem":800},{"title":804,"path":805,"stem":806},"Bypass bot detection","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fbypass-bot-detection","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fbypass-bot-detection",{"title":808,"path":809,"stem":810},"Set executable path","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fexecutable-path","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fexecutable-path",{"title":812,"path":813,"stem":814},"Run in incognito mode","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fincognito","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fincognito",{"title":816,"path":817,"stem":818},"Load another extension","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fload-extension","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fload-extension",{"title":820,"path":821,"stem":822},"Set a custom Chromium profile","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fprofile","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fchrome\u002Fprofile",{"title":824,"path":825,"stem":826,"children":827},"Error handling","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Findex",[828,829,833,837],{"title":824,"path":825,"stem":826},{"title":830,"path":831,"stem":832},"Continue on error","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fcontinue-on-error","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fcontinue-on-error",{"title":834,"path":835,"stem":836},"Interact with iframes","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fiframes","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fiframes",{"title":838,"path":839,"stem":840},"Disable page monitoring","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fpage-monitoring","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Ferror-handling\u002Fpage-monitoring",{"title":842,"path":843,"stem":844,"children":845},"Import and export","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fimport-export","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fimport-export\u002Findex",[846,847],{"title":842,"path":843,"stem":844},{"title":848,"path":849,"stem":850},"Import or download an automation","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fimport-export\u002Fsharing","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Fimport-export\u002Fsharing",{"title":852,"path":853,"stem":854,"children":855},"Run options","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Findex",[856,857,861,865,869,873,877,881,884,888],{"title":852,"path":853,"stem":854},{"title":858,"path":859,"stem":860},"Block resources","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fblock-resources","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fblock-resources",{"title":862,"path":863,"stem":864},"Concurrency","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fconcurrency","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fconcurrency",{"title":866,"path":867,"stem":868},"Run headless","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fheadless","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fheadless",{"title":870,"path":871,"stem":872},"Set maximum runtime","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fmax-runtime","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fmax-runtime",{"title":874,"path":875,"stem":876},"Set up notifications","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fnotifications","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fnotifications",{"title":878,"path":879,"stem":880},"Use a proxy","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fproxy","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fproxy",{"title":681,"path":882,"stem":883},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fschedule","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fschedule",{"title":885,"path":886,"stem":887},"Store cookies","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fstore-cookies","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Fstore-cookies",{"title":889,"path":890,"stem":891},"Configure timezone","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Ftimezone","docs\u002Fno-code-tool\u002Freference\u002Fsettings\u002Frun-options\u002Ftimezone",{"title":893,"path":894,"stem":895,"children":896},"Step index","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Findex",[897,898,902,906,910,914,918,922,926,930,934,938,942,946,950,954,958,962,966,970,974,978,982,986,990,994,998,1002,1006,1010,1014,1018,1022,1026,1030,1034,1038,1042,1046,1050,1054,1058,1061,1065,1069,1073,1077,1081,1085,1089,1093,1097,1101,1105,1109,1113,1117,1121,1125,1129,1133,1136,1140,1144,1148,1152,1156,1160,1164,1168,1172,1176,1180,1184,1188,1192,1196,1200,1204,1208,1212,1216,1220,1224],{"title":893,"path":894,"stem":895},{"title":899,"path":900,"stem":901},"Add error metadata step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-error-metadata","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-error-metadata",{"title":903,"path":904,"stem":905},"Add row numbers","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-row-numbers","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-row-numbers",{"title":907,"path":908,"stem":909},"Append or Merge data step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fappend-or-merge-data","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fappend-or-merge-data",{"title":911,"path":912,"stem":913},"Back step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fback","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fback",{"title":915,"path":916,"stem":917},"Clear cookies step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-cookies","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-cookies",{"title":919,"path":920,"stem":921},"Clear data from a Google Sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-data-from-a-google-sheet","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-data-from-a-google-sheet",{"title":923,"path":924,"stem":925},"Click element step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-element","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-element",{"title":927,"path":928,"stem":929},"Click multiple elements step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-multiple-elements","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-multiple-elements",{"title":931,"path":932,"stem":933},"Click social media buttons step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-social-media-buttons","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-social-media-buttons",{"title":935,"path":936,"stem":937},"Close browser tab step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclose-tab","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclose-tab",{"title":939,"path":940,"stem":941},"Conditionally jump to another step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fconditionall-jump-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fconditionall-jump-step",{"title":943,"path":944,"stem":945},"Continue only if a condition is met step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcontinue-if-condition-met","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcontinue-if-condition-met",{"title":947,"path":948,"stem":949},"Count rows step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcount-rows","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcount-rows",{"title":951,"path":952,"stem":953},"Create a new Google Sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcreate-a-new-google-sheet","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcreate-a-new-google-sheet",{"title":955,"path":956,"stem":957},"Get current bot URL step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcurrent-url","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcurrent-url",{"title":959,"path":960,"stem":961},"Enter custom data step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcustom-data","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcustom-data",{"title":963,"path":964,"stem":965},"Date picker step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-picker","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-picker",{"title":967,"path":968,"stem":969},"Date and time step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-time","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-time",{"title":971,"path":972,"stem":973},"Delete from Google Drive step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-files-from-google-drive","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-files-from-google-drive",{"title":975,"path":976,"stem":977},"Delete rows from a Google Sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-rows-from-a-google-sheet","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-rows-from-a-google-sheet",{"title":979,"path":980,"stem":981},"Display a message step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdisplay-a-message","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdisplay-a-message",{"title":983,"path":984,"stem":985},"Download file from URL step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-from-url","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-from-url",{"title":987,"path":988,"stem":989},"Download file step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-step",{"title":991,"path":992,"stem":993},"Download files step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files",{"title":995,"path":996,"stem":997},"Download a file to Google Drive step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files-to-google-drive","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files-to-google-drive",{"title":999,"path":1000,"stem":1001},"Edit Row step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fedit-row","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fedit-row",{"title":1003,"path":1004,"stem":1005},"End loop","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-loop","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-loop",{"title":1007,"path":1008,"stem":1009},"End run","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-run","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-run",{"title":1011,"path":1012,"stem":1013},"Enter text step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fenter-text","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fenter-text",{"title":1015,"path":1016,"stem":1017},"Export to CSV step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fexport-csv-file","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fexport-csv-file",{"title":1019,"path":1020,"stem":1021},"Find Row step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ffind-row","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ffind-row",{"title":1023,"path":1024,"stem":1025},"Generate random password step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgenerate-random-password","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgenerate-random-password",{"title":1027,"path":1028,"stem":1029},"Get a list of links from a page step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-to-pages","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-to-pages",{"title":1031,"path":1032,"stem":1033},"Get a list of links from a URL step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-url","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-url",{"title":1035,"path":1036,"stem":1037},"Get data from a URL","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-url","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-url",{"title":1039,"path":1040,"stem":1041},"Get data from a webpage","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-website","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-website",{"title":1043,"path":1044,"stem":1045},"Go to page","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgo-to-page","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgo-to-page",{"title":1047,"path":1048,"stem":1049},"If a condition is true, run steps","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-condtion","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-condtion",{"title":1051,"path":1052,"stem":1053},"If Else condition step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-else-condition","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-else-condition",{"title":1055,"path":1056,"stem":1057},"Import CSV File step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fimport-csv-file","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fimport-csv-file",{"title":309,"path":1059,"stem":1060},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai",{"title":1062,"path":1063,"stem":1064},"Interact step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Finteract-with-a-pages-interface","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Finteract-with-a-pages-interface",{"title":1066,"path":1067,"stem":1068},"Join different data sources based on matching columns step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjoin-different-data-sources","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjoin-different-data-sources",{"title":1070,"path":1071,"stem":1072},"Jump to another step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjump-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjump-step",{"title":1074,"path":1075,"stem":1076},"Loop step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop",{"title":1078,"path":1079,"stem":1080},"Mouse click and drag","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmouse-click-and-drag","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmouse-click-and-drag",{"title":1082,"path":1083,"stem":1084},"Move a Google Sheet to a new folder in Google Drive","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmove-a-google-sheet","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmove-a-google-sheet",{"title":1086,"path":1087,"stem":1088},"Press keys(s) step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fpress-key","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fpress-key",{"title":1090,"path":1091,"stem":1092},"Read data from a Google Sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-a-google-sheet-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-a-google-sheet-step",{"title":1094,"path":1095,"stem":1096},"Read data from Airtable","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-airtable","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-airtable",{"title":1098,"path":1099,"stem":1100},"Read data from Excel sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-excel","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-excel",{"title":1102,"path":1103,"stem":1104},"Read file from Google Drive step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-file-from-google-drive","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-file-from-google-drive",{"title":1106,"path":1107,"stem":1108},"Read local file step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-local-file","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-local-file",{"title":1110,"path":1111,"stem":1112},"Receive data from another app","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freceive-data-from-another-app","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freceive-data-from-another-app",{"title":1114,"path":1115,"stem":1116},"Remove duplicates step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-duplicates","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-duplicates",{"title":1118,"path":1119,"stem":1120},"Remove HTML code step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-html-code","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-html-code",{"title":1122,"path":1123,"stem":1124},"Remove results that contain certain words step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-that-contain-certain-words","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-that-contain-certain-words",{"title":1126,"path":1127,"stem":1128},"Remove results which do not contain certain words step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-which-do-not-contain-certain-words","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-which-do-not-contain-certain-words",{"title":1130,"path":1131,"stem":1132},"Replace text step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freplace-text-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freplace-text-step",{"title":317,"path":1134,"stem":1135},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frestart-browser","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frestart-browser",{"title":1137,"path":1138,"stem":1139},"Rollover element step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frollover-element","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frollover-element",{"title":1141,"path":1142,"stem":1143},"Run another Axiom step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frun-another-axiom","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frun-another-axiom",{"title":1145,"path":1146,"stem":1147},"Save page HTML step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-page-as-html","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-page-as-html",{"title":1149,"path":1150,"stem":1151},"Save screenshot locally step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-locally","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-locally",{"title":1153,"path":1154,"stem":1155},"Save screenshot to Google Drive step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-to-google-drive","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-to-google-drive",{"title":1157,"path":1158,"stem":1159},"Scrape metadata step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fscrape-metadata","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fscrape-metadata",{"title":1161,"path":1162,"stem":1163},"Select list step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-list","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-list",{"title":1165,"path":1166,"stem":1167},"Select random rows step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-random-rows","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-random-rows",{"title":1169,"path":1170,"stem":1171},"Send an email step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsend-an-email","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsend-an-email",{"title":1173,"path":1174,"stem":1175},"Solve Captcha step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsolve-captcha","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsolve-captcha",{"title":1177,"path":1178,"stem":1179},"Split a name into columns step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-a-name-into-columns","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-a-name-into-columns",{"title":1181,"path":1182,"stem":1183},"Split by character step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character",{"title":1185,"path":1186,"stem":1187},"Swap rows and columns step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns",{"title":1189,"path":1190,"stem":1191},"Switch browser tab step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswitch-browser-tab","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswitch-browser-tab",{"title":1193,"path":1194,"stem":1195},"Trigger webhook step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftrigger-webhook","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftrigger-webhook",{"title":1197,"path":1198,"stem":1199},"Try catch","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftry-catch","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftry-catch",{"title":1201,"path":1202,"stem":1203},"Upload a file step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file",{"title":1205,"path":1206,"stem":1207},"Upload a file from Google Drive step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file-google-drive","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file-google-drive",{"title":1209,"path":1210,"stem":1211},"Wait step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwait","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwait",{"title":1213,"path":1214,"stem":1215},"Write data to a Google Sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-a-google-sheet-step","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-a-google-sheet-step",{"title":1217,"path":1218,"stem":1219},"Write data to Airtable","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-airtable","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-airtable",{"title":1221,"path":1222,"stem":1223},"Write data to a Excel sheet step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-an-excel-sheet","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-an-excel-sheet",{"title":1225,"path":1226,"stem":1227},"Write javascript step","\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-javascript","docs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-javascript",{"title":1229,"path":1230,"stem":1231,"children":1232},"Release notes","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes","docs\u002Fno-code-tool\u002Frelease-notes\u002Findex",[1233,1234,1238,1242,1246,1250,1254,1258,1262,1266,1270,1274,1278,1282,1286,1290,1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342,1346],{"title":1229,"path":1230,"stem":1231},{"title":1235,"path":1236,"stem":1237},"New Make integration, better loops, smarter scraping, and fixes","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-10-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-10-0",{"title":1239,"path":1240,"stem":1241},"Dashboard redesign, better conditionals, stop remote bots, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-11-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-11-0",{"title":1243,"path":1244,"stem":1245},"Solve captchas, press keys smarter, fix iframe hangs, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-12-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-12-0",{"title":1247,"path":1248,"stem":1249},"Optional steps, screenshot tool, scraper upgrades","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-13-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-13-0",{"title":1251,"path":1252,"stem":1253},"Selector overhaul, drag to reorder steps, new templates, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-14-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-14-0",{"title":1255,"path":1256,"stem":1257},"Custom scraper settings, new templates, and payment upgrade","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-15-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-15-0",{"title":1259,"path":1260,"stem":1261},"Upload to drive, undo mistakes, upgrade steps, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-16-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-16-0",{"title":1263,"path":1264,"stem":1265},"Better notifications, custom errors, iframe tools, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-17-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-17-0",{"title":1267,"path":1268,"stem":1269},"Structured scraping with chatgpt, new schedule view, filters, and fixes","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-18-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-18-0",{"title":1271,"path":1272,"stem":1273},"New debugger, generate text with chatgpt, save to drive, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-19-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-19-0",{"title":1275,"path":1276,"stem":1277},"Affiliates, smarter queues, overwrite files, and a 4.0 teaser","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-20-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-20-0",{"title":1279,"path":1280,"stem":1281},"Sneak peek at 4.0, open linked axioms, new steps, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-21-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-21-0",{"title":1283,"path":1284,"stem":1285},"Last stop before 4.0, Scrape images, reorder columns, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-22-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-22-0",{"title":1287,"path":1288,"stem":1289},"Live data previews, easier navigation, new onboarding tools","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-5-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-5-0",{"title":1291,"path":1292,"stem":1293},"Better sheets integration, loop controls, and fixes","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-6-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-6-0",{"title":1295,"path":1296,"stem":1297},"Better builder errors, webhook stability, test default data, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0",{"title":1299,"path":1300,"stem":1301},"Axiom academy is live, smarter scraping, improved validation","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-8-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-8-0",{"title":1303,"path":1304,"stem":1305},"Step-by-step templates, improved scraping, click multiple, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-9-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-9-0",{"title":1307,"path":1308,"stem":1309},"Build smarter with nesting, chatgpt 4, and cloud sessions","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-0-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-0-0",{"title":1311,"path":1312,"stem":1313},"Guided templates, step help, datepickers, partial screenshots, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-1-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-1-0",{"title":1315,"path":1316,"stem":1317},"Proxy auth, conditional logic, flexible scheduling, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-2-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-2-0",{"title":1319,"path":1320,"stem":1321},"Quick builder, new sidebar, better onboarding, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-3-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-3-0",{"title":1323,"path":1324,"stem":1325},"Live run status, step recommendations, keyboard shortcuts, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-4-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-4-0",{"title":1327,"path":1328,"stem":1329},"Scrape faster, set keys once, skip steps, end runs early, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-5-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-5-0",{"title":1331,"path":1332,"stem":1333},"Excel steps, folder sorting, GPT-4o smarts, end loop control, quick filters, and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-6-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-6-0",{"title":1335,"path":1336,"stem":1337},"Proxy rotation, AI updates, new run options and more","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-7-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-7-0",{"title":1339,"path":1340,"stem":1341},"Axiom.ai v4.8","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-8-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-8-0",{"title":1343,"path":1344,"stem":1345},"Axiom.ai v4.9","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-9-0","docs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-9-0",{"title":1347,"path":1348,"stem":1349},"Axiom.ai v4.10","\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Flatest","docs\u002Fno-code-tool\u002Frelease-notes\u002Flatest",{"title":622,"path":1351,"stem":1352,"children":1353},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder","docs\u002Fno-code-tool\u002Fthe-builder\u002Findex",[1354,1355,1359,1363,1367,1371,1375,1393],{"title":622,"path":1351,"stem":1352},{"title":1356,"path":1357,"stem":1358},"AI Assistant","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fai-assistant","docs\u002Fno-code-tool\u002Fthe-builder\u002Fai-assistant",{"title":1360,"path":1361,"stem":1362},"The no-code Builder","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder","docs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder",{"title":1364,"path":1365,"stem":1366},"The dashboard","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fdashboard","docs\u002Fno-code-tool\u002Fthe-builder\u002Fdashboard",{"title":1368,"path":1369,"stem":1370},"Installation","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Finstall","docs\u002Fno-code-tool\u002Fthe-builder\u002Finstall",{"title":1372,"path":1373,"stem":1374},"Pass data between steps","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fpass","docs\u002Fno-code-tool\u002Fthe-builder\u002Fpass",{"title":1376,"path":1377,"stem":1378,"children":1379},"The selector tool","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool","docs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Findex",[1380,1381,1385,1389],{"title":1376,"path":1377,"stem":1378},{"title":1382,"path":1383,"stem":1384},"Use custom CSS selectors","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors","docs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors",{"title":1386,"path":1387,"stem":1388},"Use the Multi Selector tool","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fmulti","docs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fmulti",{"title":1390,"path":1391,"stem":1392},"Use the Single Selector","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fsingle","docs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fsingle",{"title":1394,"path":1395,"stem":1396},"Share an automation","\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fsharing","docs\u002Fno-code-tool\u002Fthe-builder\u002Fsharing",{"title":1398,"path":1399,"stem":1400,"children":1401},"Troubleshooting","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Findex",[1402,1403,1407,1485],{"title":1398,"path":1399,"stem":1400},{"title":1404,"path":1405,"stem":1406},"Handle errors in an automation","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferror-handling","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferror-handling",{"title":1408,"path":1409,"stem":1410,"children":1411},"Common errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Findex",[1412,1413,1417,1421,1425,1443,1447],{"title":1408,"path":1409,"stem":1410},{"title":1414,"path":1415,"stem":1416},"Desktop app errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fdesktop-app","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fdesktop-app",{"title":1418,"path":1419,"stem":1420},"General errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fgeneral","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fgeneral",{"title":1422,"path":1423,"stem":1424},"Installation and uninstallation errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Finstallation","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Finstallation",{"title":1426,"path":1427,"stem":1428,"children":1429},"Integration errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002Findex",[1430,1431,1435,1439],{"title":1426,"path":1427,"stem":1428},{"title":1432,"path":1433,"stem":1434},"2Captcha errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002F2captcha","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002F2captcha",{"title":1436,"path":1437,"stem":1438},"AI integration errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002Fai","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002Fai",{"title":1440,"path":1441,"stem":1442},"Google Sheets errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002Fgoogle-sheets","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fintegrations\u002Fgoogle-sheets",{"title":1444,"path":1445,"stem":1446},"Runtime errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fruntime","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fruntime",{"title":1448,"path":1449,"stem":1450,"children":1451},"Step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Findex",[1452,1453,1457,1461,1465,1469,1473,1477,1481],{"title":1448,"path":1449,"stem":1450},{"title":1454,"path":1455,"stem":1456},"Control flow step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fcontrol-flow","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fcontrol-flow",{"title":1458,"path":1459,"stem":1460},"File step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Ffiles","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Ffiles",{"title":1462,"path":1463,"stem":1464},"Interact step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Finteract","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Finteract",{"title":1466,"path":1467,"stem":1468},"Loop step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Floop","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Floop",{"title":1470,"path":1471,"stem":1472},"Other step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fmisc","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fmisc",{"title":1474,"path":1475,"stem":1476},"Navigate step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fnavigate","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fnavigate",{"title":1478,"path":1479,"stem":1480},"Scrape step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fscrape","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fscrape",{"title":1482,"path":1483,"stem":1484},"Webhook and API step errors","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fwebhooks-api","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002Fsteps\u002Fwebhooks-api",{"title":1486,"path":1487,"stem":1488},"Debug an automation","\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug","docs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug",{"title":1490,"path":1491,"stem":1492},"Get support","\u002Fdocs\u002Fsupport","docs\u002Fsupport",{"title":1494,"path":1495,"stem":1496},"Extension uninstalled","\u002Fextension-uninstalled","extension-uninstalled",{"title":1498,"path":1499,"stem":1500},"Browser automation tools and infrastructure","\u002F","index",{"title":1502,"path":1503,"stem":1504,"children":1505},"Infrastructure","\u002Finfrastructure","infrastructure",[1506,1509,1512,1516,1520],{"title":1507,"path":1503,"stem":1508},"Private Browser Infrastructure","infrastructure\u002Findex",{"title":161,"path":1510,"stem":1511},"\u002Finfrastructure\u002F_api","infrastructure\u002F_api",{"title":1513,"path":1514,"stem":1515},"Build with Claude","\u002Finfrastructure\u002F_privacy","infrastructure\u002F_privacy",{"title":1517,"path":1518,"stem":1519},"Cloud Browser Infrastructure","\u002Finfrastructure\u002Fcloud","infrastructure\u002Fcloud",{"title":1521,"path":1522,"stem":1523},"Local Browser Automation on Desktop","\u002Finfrastructure\u002Fdesktop","infrastructure\u002Fdesktop",{"title":1525,"path":1526,"stem":1527},"Install the desktop runner for axiom.ai's browser automation extension","\u002Finstall-desktop-app","install-desktop-app",{"title":1529,"path":1530,"stem":1531},"No-code tool for making browser automations in Chrome","\u002Fno-code-tool","no-code-tool",{"title":1533,"path":1534,"stem":1535},"Pricing","\u002Fpricing","pricing",{"title":1537,"path":1538,"stem":1539},"Privacy Policy","\u002Fprivacy-policy","privacy-policy",{"title":1541,"path":1542,"stem":1543},"No-code steps for browser automation","\u002Fsteps","steps",{"title":1545,"path":1546,"stem":1547},"You're all set","\u002Fsuccess","success",{"title":1549,"path":1550,"stem":1551},"Terms of use","\u002Fterms-of-use","terms-of-use",{"id":1553,"title":1295,"body":1554,"date":1620,"description":1614,"extension":1621,"meta":1622,"navigation":1627,"order":1628,"path":1296,"seo":1629,"stem":1297,"__hash__":1630},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-7-0.md",{"type":1555,"value":1556,"toc":1613},"minimark",[1557,1560,1565,1568,1587,1591,1593],[1558,1559],"hero-media",{},[1561,1562,1564],"h2",{"id":1563},"new-features","New features",[1566,1567],"hr",{},[1569,1570,1571,1575,1578,1581,1584],"ul",{},[1572,1573,1574],"li",{},"“Receive data from another app” step now allows you to add default data to make testing easier.",[1572,1576,1577],{},"Data tokens can now be passed in custom selectors.",[1572,1579,1580],{},"Improvements to selector tool behaviour when no content of the selected type is found.",[1572,1582,1583],{},"Clarifying error messages and step instruction text across the board.",[1572,1585,1586],{},"Paid-only features now much more clearly marked.",[1561,1588,1590],{"id":1589},"bug-fixes","Bug fixes",[1566,1592],{},[1569,1594,1595,1598,1601,1604,1607,1610],{},[1572,1596,1597],{},"Improvements to validation and error reporting when triggering axiom.ai via webhook or API.",[1572,1599,1600],{},"Better handling on connections being dropped during long running  axiom.ai cloud sessions, when logging out or entering sleep mode etc.",[1572,1602,1603],{},"Minor brand update for consistency with new website design.",[1572,1605,1606],{},"Fixing an issue with result formatting if an error occurs during a looping bot run.",[1572,1608,1609],{},"Sending a webhook from  axiom.ai now works as you would expect.",[1572,1611,1612],{},"Updated help videos to latest versions.",{"title":1614,"searchDepth":1615,"depth":1615,"links":1616},"",3,[1617,1619],{"id":1563,"depth":1618,"text":1564},2,{"id":1589,"depth":1618,"text":1590},"2022-04-05","md",{"version":1623,"releasevideo":1624,"featuredimg":1625,"video":1626},3.7,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FfghWBAuBMiU","\u002Fv3-7.jpg","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FfghWBAuBMiU?rel=0&amp;",true,null,{"title":1295,"description":1614},"MVHGek0rclSpFOwe-bjY9DXQJn6K7FcLdHilVTKu9Rc",[1632,2138,2448,2672,2931,3146,3368,3837,4958,5619,6506,6719,7415,7730,8145,8607,8888,9105,9226,9445,9679,9885,10311,10510,10836,11369,11665,11781,12062,12230,12364,12736,13092,13380,13674,14243,14313,14580,14845,15094,15298,15796,15943,16117,16206,16503,16799,17384,17699,17985,18004,19718,19909,20196,20513,20809,21121,21394,21661,21765,21971,22248,22639,23926,24303,24535,24796,24987,25004,25287,25804,25821,26100,26284],{"id":1633,"title":1634,"body":1635,"date":2118,"description":2119,"extension":1621,"meta":2120,"navigation":1627,"order":1628,"path":2134,"seo":2135,"stem":2136,"__hash__":2137},"guides\u002Fguides\u002Fai-proofreading.md","Build an AI Proofreading Assistant for any Website",{"type":1555,"value":1636,"toc":2110},[1637,1639,1643,1645,1649,1669,1673,1684,1690,1693,1697,1700,1927,1931,1934,1938,1947,1950,1953,2099],[1566,1638],{},[1640,1641,1642],"p",{},"This template is designed to create an AI assistant that proofreads your website. The assistant retrieves website links from a Google Sheet, opens the link in a Chrome browser, and scrapes the data. Afterwards, it checks for any typos and writes the response back into the Google Sheet alongside the webpage URL. This template requires a ChatGPT account with API key.",[1558,1644],{},[1561,1646,1648],{"id":1647},"get-started-create-your-google-sheet","Get started: create your Google Sheet",[1640,1650,1651,1652,1656,1657,1660,1661,1664,1665,1668],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut ",[1653,1654,1655],"strong",{},"\"sheet.new\""," into the address bar, assuming you already have an account. Name your sheet something like ",[1653,1658,1659],{},"\"ChatGPT AI Proofreader\""," and set up a tab called ",[1653,1662,1663],{},"\"Links\"",". Add another tab called ",[1653,1666,1667],{},"\"Data\"",".",[1561,1670,1672],{"id":1671},"install-the-ai-proofreading-template","Install the AI Proofreading template",[1640,1674,1675,1676,1679,1680,1683],{},"To install this AI Proofreading template, click ",[1653,1677,1678],{},"\"Install template\"",". If you’re a new user, you’ll have to click ",[1653,1681,1682],{},"\"Install Chrome extension\""," and create a free axiom.ai account before you can edit the template.",[1640,1685,1686,1687,1668],{},"Once installed, click ",[1653,1688,1689],{},"\"Start\"",[1640,1691,1692],{},"axiom.ai will guide you through the steps you need to configure in the app.",[1561,1694,1696],{"id":1695},"configure-your-ai-proofreading-assistant-in-7-easy-steps","Configure your AI Proofreading Assistant in 7 easy steps",[1640,1698,1699],{},"Please note in step 2.2, you need to select a single block of content with the selector tool.",[1701,1702,1703],"guide",{},[1569,1704,1705,1729],{},[1572,1706,1707,1710,1711,1715],{},[1653,1708,1709],{},"1.0"," ",[1712,1713,1714],"code",{},"Read data from a Google Sheet",[1569,1716,1717,1723],{},[1572,1718,1719,1722],{},[1712,1720,1721],{},"Spreadsheet",": Search for the Google Sheet you created. Once found, click to select.",[1572,1724,1725,1728],{},[1712,1726,1727],{},"Sheet name",": Choose the sheet tab called 'Amazon product links'.",[1572,1730,1731,1710,1734,1736],{},[1653,1732,1733],{},"2.0",[1712,1735,667],{},[1569,1737,1738,1761,1786,1829,1857,1894],{},[1572,1739,1740,1710,1743,1745],{},[1653,1741,1742],{},"2.1",[1712,1744,1043],{},[1569,1746,1747],{},[1572,1748,1749,1752,1753,1756,1757,1760],{},[1712,1750,1751],{},"Enter URL",": Click ",[1712,1754,1755],{},"Insert Data",", select ",[1712,1758,1759],{},"google-sheet-data",", and select the column with the links in.",[1572,1762,1763,1710,1766,1769],{},[1653,1764,1765],{},"2.2",[1712,1767,1768],{},"Get data from bot's current page",[1569,1770,1771,1777],{},[1572,1772,1773,1776],{},[1712,1774,1775],{},"Select",": Point and click to select the data you wish to scrape. Make a single selection and choose an element that wraps around all the content.",[1572,1778,1779,1782,1783,1668],{},[1712,1780,1781],{},"Max Results",": Set to ",[1712,1784,1785],{},"1",[1572,1787,1788,1710,1791,1794],{},[1653,1789,1790],{},"2.3",[1712,1792,1793],{},"Generate text with ChatGPT",[1569,1795,1796,1802,1820],{},[1572,1797,1798,1801],{},[1712,1799,1800],{},"ChatGPT API key",": Enter your API key.",[1572,1803,1804,1807,1808,1811,1812,1815,1816,1819],{},[1712,1805,1806],{},"Prompt",": Insert the text ",[1712,1809,1810],{},"\"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell -\""," then click ",[1712,1813,1814],{},"Insert data"," followed by ",[1712,1817,1818],{},"[scrape-data]"," to add the scraped data to check.",[1572,1821,1822,1825,1826,1668],{},[1712,1823,1824],{},"Extract values",": Insert the values you want to extract, separated by a comma — for example: ",[1712,1827,1828],{},"name, email, job title",[1572,1830,1831,1710,1834,1837],{},[1653,1832,1833],{},"2.4",[1712,1835,1836],{},"Append or Merge Data",[1569,1838,1839,1849],{},[1572,1840,1841,1844,1845,1848],{},[1712,1842,1843],{},"Data A",": Insert ",[1712,1846,1847],{},"[google-sheet-data]"," and select the column containing the URL.",[1572,1850,1851,1844,1854,1668],{},[1712,1852,1853],{},"Data B",[1712,1855,1856],{},"[chatgpt-output]",[1572,1858,1859,1710,1862,1865],{},[1653,1860,1861],{},"2.5",[1712,1863,1864],{},"Write Data to a Google Sheet",[1569,1866,1867,1871,1876,1885],{},[1572,1868,1869,1722],{},[1712,1870,1721],{},[1572,1872,1873,1875],{},[1712,1874,1727],{},": Choose the tab you created.",[1572,1877,1878,1881,1882,1668],{},[1712,1879,1880],{},"DATA",": Select ",[1712,1883,1884],{},"[appended-data]",[1572,1886,1887,1890,1891,1668],{},[1712,1888,1889],{},"Clear data before writing | Add to existing data",": Set this option to ",[1712,1892,1893],{},"\"Add to existing\"",[1572,1895,1896,1710,1899,1902],{},[1653,1897,1898],{},"2.6",[1712,1900,1901],{},"Delete rows from a Google Sheet",[1569,1903,1904,1908,1913,1920],{},[1572,1905,1906,1722],{},[1712,1907,1721],{},[1572,1909,1910,1912],{},[1712,1911,1727],{},": Choose the tab you created for links.",[1572,1914,1915,1782,1918,1668],{},[1712,1916,1917],{},"First row",[1712,1919,1785],{},[1572,1921,1922,1782,1925,1668],{},[1712,1923,1924],{},"Last row",[1712,1926,1785],{},[1561,1928,1930],{"id":1929},"testing-and-running-your-ai-proofreader","Testing and running your AI proofreader",[1640,1932,1933],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the data.",[1561,1935,1937],{"id":1936},"customize-your-template","Customize your template",[1640,1939,1940,1941,1946],{},"Like all Axiom ",[1942,1943,1945],"a",{"href":1944},"\u002Fguides","templates",", you can use our no-code bot builder to customize any bot according to your requirements.",[1561,1948,1398],{"id":1949},"troubleshooting",[1640,1951,1952],{},"We recommend you watch the video to troubleshoot.",[1701,1954,1955],{},[1569,1956,1957,1978,1989,2004,2022,2033,2052,2073,2087],{},[1572,1958,1959,1962,1965,1966,1969,1970,1973,1974,1977],{},[1653,1960,1961],{},"Want to set an amount of loops?",[1963,1964],"br",{},"\nIn ",[1712,1967,1968],{},"Step 1.0",", set a ",[1712,1971,1972],{},"Last Cell"," — something like ",[1712,1975,1976],{},"AE50"," will scrape 50 rows.",[1572,1979,1980,1983,1965,1985,1988],{},[1653,1981,1982],{},"Selectors fail to find content?",[1963,1984],{},[1712,1986,1987],{},"Step 2.2 – Get data from bot's current page",", select a single block of content with the selector tool.",[1572,1990,1991,1994,1996,1997,2000,2001,1668],{},[1653,1992,1993],{},"Want to select all content on any website?",[1963,1995],{},"\nIn the same step, use a ",[1942,1998,1999],{"href":1383},"custom selector"," — try ",[1712,2002,2003],{},"body",[1572,2005,2006,2009,2011,2012,2015,2016,2019,2020,1668],{},[1653,2007,2008],{},"Slow running scrape?",[1963,2010],{},"\nIn the same step, toggle ",[1712,2013,2014],{},"Configure scraper",", then set ",[1712,2017,2018],{},"No. of retry..."," to ",[1712,2021,1785],{},[1572,2023,2024,2027,1965,2029,2032],{},[1653,2025,2026],{},"ChatGPT step not working?",[1963,2028],{},[1712,2030,2031],{},"Step 2.3 – Generate text with ChatGPT",", make sure you’ve entered your ChatGPT API key.",[1572,2034,2035,2038,2040,2041,2043,2044,2046,2049,2051],{},[1653,2036,2037],{},"Want better results from ChatGPT?",[1963,2039],{},"\nIn the same step, set the ",[1712,2042,1806],{}," to something like:",[1963,2045],{},[1712,2047,2048],{},"\"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell - [scrape-data]\".",[1963,2050],{},"\nTweak the wording to fine-tune results.",[1572,2053,2054,2057,1965,2059,2062,2063,2065,2066,2068,2069,2065,2071,1668],{},[1653,2055,2056],{},"Wrong data written to sheet?",[1963,2058],{},[1712,2060,2061],{},"Step 2.5 – Write Data to a Google Sheet",", check that ",[1712,2064,1843],{}," is ",[1712,2067,1847],{}," and ",[1712,2070,1853],{},[1712,2072,1856],{},[1572,2074,2075,2078,2080,2081,2084,2085,1668],{},[1653,2076,2077],{},"No data written?",[1963,2079],{},"\nIn the same step, check that ",[1712,2082,2083],{},"Data"," is set to ",[1712,2086,1884],{},[1572,2088,2089,2092,2094,2095,2098],{},[1653,2090,2091],{},"Keeps overwriting data?",[1963,2093],{},"\nMake sure ",[1712,2096,2097],{},"Add to existing"," is selected in the same step.",[1640,2100,2101,2102,2105,2106],{},"We offer excellent customer support. If you need help, ",[1942,2103,2104],{"href":82},"get in touch."," You could also read this full guide on how to do ",[1942,2107,2109],{"href":2108},"\u002Fblog\u002Fchatgpt-web-scraping","ChatGPT web scraping.",{"title":1614,"searchDepth":1615,"depth":1615,"links":2111},[2112,2113,2114,2115,2116,2117],{"id":1647,"depth":1618,"text":1648},{"id":1671,"depth":1618,"text":1672},{"id":1695,"depth":1618,"text":1696},{"id":1929,"depth":1618,"text":1930},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2023-04-04","Learn how to test, run, and customize your AI proofreader using a no-code bot. Includes troubleshooting tips, ChatGPT setup, and data export to Google Sheets.",{"logoFile":2121,"read":2122,"level":2123,"video":2124,"templateId":2125,"type":2126,"format":2127,"intent_type":2128,"intent":2129,"tags":2130,"platfrom":2133},"\u002Ftemplates\u002Fchat-gpt-logo.png","5 minutes","Easy","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FWhq1hgwYxcY",56,"no-code","template","pattern","Generate or transform content using AI",[2131,2132],"ai","scraping",[739],"\u002Fguides\u002Fai-proofreading",{"title":1634,"description":2119},"guides\u002Fai-proofreading","4pDvas5NqHibFUtuqv8Ow70UgUxrUGHugw1LHQ1ei1Y",{"id":2139,"title":2140,"body":2141,"date":1628,"description":2435,"extension":1621,"meta":2436,"navigation":1627,"order":1628,"path":2444,"seo":2445,"stem":2446,"__hash__":2447},"guides\u002Fguides\u002Fapple-shortcuts.md","How to use Apple Shortcuts to trigger an axiom.ai automation",{"type":1555,"value":2142,"toc":2424},[2143,2145,2148,2151,2153,2157,2159,2162,2192,2196,2198,2201,2206,2244,2248,2253,2255,2258,2286,2290,2292,2295,2316,2319,2323,2325,2328,2352,2356,2358,2361,2364,2383,2387,2389,2396,2403,2407,2409,2412,2414,2420],[1566,2144],{},[1640,2146,2147],{},"Users often inspire the best ideas, and we love to explore them. When someone asked if they could trigger a bot on their Mac using Apple Shortcuts, we thought, \"why not?\" We found not only can you do this, but you can also add a button to the macOS Dock for quick access. If you're a coder, you can even trigger a bot from the command line. Plus, you can trigger the bot from your iPhone, iPad, Mac or Apple Watch, making automation even more flexible.",[1640,2149,2150],{},"This guide assumes you already have an automation set up, want to create a trigger using Apple Shortcuts, and have a an axiom.ai subscription that supports webhooks.",[1558,2152],{},[1561,2154,2156],{"id":2155},"getting-started","Getting started",[1566,2158],{},[1640,2160,2161],{},"To get started, you will need the following from the axiom.ai Chrome extension:",[1701,2163,2164],{},[2165,2166,2167,2177,2183],"ol",{},[1572,2168,2169,2172,2173,1668],{},[1653,2170,2171],{},"API key",": The API key is found on the ",[1942,2174,2176],{"href":2175},"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fkeys","dashboard",[1572,2178,2179,2182],{},[1653,2180,2181],{},"Automation name",": Get the name of the automation you wish to trigger.",[1572,2184,2185,2188,2189,1668],{},[1653,2186,2187],{},"Endpoint",": The current endpoint is ",[1712,2190,2191],{},"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger",[1561,2193,2195],{"id":2194},"trigger-an-axiomai-automation-with-apple-shortcuts","Trigger an axiom.ai automation with Apple Shortcuts",[1566,2197],{},[1640,2199,2200],{},"Open the Apple Shortcuts application on your iPhone, iPad, or Mac.",[2202,2203],"img",{"src":2204,"alt":2205},"\u002Fdocs\u002Fguides\u002Fapple-shortcuts-get-contents.jpg","open apple Shortcuts in apple mac app folder",[1701,2207,2208],{},[2165,2209,2210,2216,2226,2238],{},[1572,2211,2212,2215],{},[1653,2213,2214],{},"Create shortcut",": Tap the \"+\" icon to create a new Shortcut.",[1572,2217,2218,2221,2222,2225],{},[1653,2219,2220],{},"Add step",": Add a ",[1653,2223,2224],{},"get contents from URL"," action, set the URL to the axiom.ai endpoint from above.",[1572,2227,2228,2231,2232,2019,2235,1668],{},[1653,2229,2230],{},"Configure",": Change the ",[1653,2233,2234],{},"method",[1653,2236,2237],{},"POST",[1572,2239,2240,2243],{},[1653,2241,2242],{},"Request body",": Add two key\u002Fvalue pairs. The first item will have a key called \"key\" and a value of your API key, the second will be called \"name\" and will be the automation name.",[2202,2245],{"src":2246,"alt":2247},"\u002Fdocs\u002Fguides\u002Fapple-shortcuts-get-contents-config-2.jpg","using Google App Script API request to trigger axiom.ai bot run",[2249,2250,2252],"h3",{"id":2251},"set-up-the-apple-shortcut-to-open-the-browser","Set up the Apple Shortcut to open the browser",[1566,2254],{},[1640,2256,2257],{},"Optionally, you can set your automation to automatically open the URL from the cloud run on your device. Add the following actions to your Apple Shortcut.",[1701,2259,2260],{},[2165,2261,2262,2274,2280],{},[1572,2263,2264,2221,2267,2270,2271,2273],{},[1653,2265,2266],{},"Get dictionary value",[1653,2268,2269],{},"get dictionary value"," action below the ",[1653,2272,2224],{}," action. This action converts the JSON response into a dictionary so you can work with its contents.",[1572,2275,2276,2279],{},[1653,2277,2278],{},"Get value for key",": In the \"key\" field, type \"OPEN LINK IN BROWSER\" (case sensitive).",[1572,2281,2282,2285],{},[1653,2283,2284],{},"Open URLs",": Set the value to \"dictionary value\".",[2249,2287,2289],{"id":2288},"trigger-a-bot-run-from-your-mac-dock","Trigger a bot run from your Mac dock",[1566,2291],{},[1640,2293,2294],{},"Your Apple Shortcut can be added to your macOS dock, allowing you easy access to your triggers with a single click.",[1701,2296,2297],{},[2165,2298,2299,2306,2309],{},[1572,2300,2301,2302,2305],{},"Open the ",[1653,2303,2304],{},"\"Shortcuts app\""," on your Mac.",[1572,2307,2308],{},"Right-click (or Control-click) on the shortcut you want to add to the Dock.",[1572,2310,2311,2312,2315],{},"Select ",[1653,2313,2314],{},"\"Add to Dock\""," from the context menu.",[2202,2317],{"src":2318,"alt":2247},"\u002Fdocs\u002Fguides\u002Fmac-dock.jpg",[2249,2320,2322],{"id":2321},"trigger-a-bot-run-from-the-command-line","Trigger a bot run from the command line",[1566,2324],{},[1640,2326,2327],{},"Apple developers have made it possible to trigger Apple Shortcuts from the command line. Open the Terminal and type the following command:",[2329,2330,2334],"pre",{"className":2331,"code":2332,"language":2333,"meta":1614,"style":1614},"language-bash shiki shiki-themes github-light-default github-dark-default","shortcuts run \"My bot's name\"\n","bash",[1712,2335,2336],{"__ignoreMap":1614},[2337,2338,2341,2345,2349],"span",{"class":2339,"line":2340},"line",1,[2337,2342,2344],{"class":2343},"sTDnQ","shortcuts",[2337,2346,2348],{"class":2347},"sSVrQ"," run",[2337,2350,2351],{"class":2347}," \"My bot's name\"\n",[2249,2353,2355],{"id":2354},"trigger-bot-runs-with-siri","Trigger bot runs with Siri",[1566,2357],{},[1640,2359,2360],{},"You can trigger your Shortcuts using Siri, which means you can run your bot tasks in the axiom.ai cloud using voice commands.",[1640,2362,2363],{},"The following prompt will allow you to run your Shortcut, which will trigger your axiom.ai automation:",[2329,2365,2369],{"className":2366,"code":2367,"language":2368,"meta":1614,"style":1614},"language-js shiki shiki-themes github-light-default github-dark-default","\"Hi Siri, run shortcut\" then \"Name of shortcut\"\n","js",[1712,2370,2371],{"__ignoreMap":1614},[2337,2372,2373,2376,2380],{"class":2339,"line":2340},[2337,2374,2375],{"class":2347},"\"Hi Siri, run shortcut\"",[2337,2377,2379],{"class":2378},"s4rv2"," then ",[2337,2381,2382],{"class":2347},"\"Name of shortcut\"\n",[1561,2384,2386],{"id":2385},"testing-your-workflow","Testing your workflow",[1566,2388],{},[1640,2390,2391,2392,2395],{},"Test the shortcut by tapping ",[1653,2393,2394],{},"run",". Apple Shortcuts will display any error messages and you should follow these for more information.",[1640,2397,2398,2399,1668],{},"If your automation is triggered successfully but the automation has run into an error, you will find these in your ",[1942,2400,2402],{"href":2401},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug#run-reports","run reports",[1561,2404,2406],{"id":2405},"wrapping-up","Wrapping up",[1566,2408],{},[1640,2410,2411],{},"Apple Shortcuts allows for you to create powerful shortcuts that can be powered up with axiom.ai. From triggering your automations based on your device configuration, to being able to trigger your automations from your Apple Watch, Apple Shortcuts has you covered. We'd love to hear what you use Apple Shortcuts for with your automations!",[1566,2413],{},[1640,2415,2416],{},[2417,2418,2419],"em",{},"Information valid as of 29th October 2024, tested on iOS18, iPadOS18, macOS15.",[2421,2422,2423],"style",{},"html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}",{"title":1614,"searchDepth":1615,"depth":1615,"links":2425},[2426,2427,2433,2434],{"id":2155,"depth":1618,"text":2156},{"id":2194,"depth":1618,"text":2195,"children":2428},[2429,2430,2431,2432],{"id":2251,"depth":1615,"text":2252},{"id":2288,"depth":1615,"text":2289},{"id":2321,"depth":1615,"text":2322},{"id":2354,"depth":1615,"text":2355},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to set up an Apple shortcut that can trigger a bot from your dock or command line for faster automation. This guide covers creating a shortcut, configuring it to work with desktop apps, and using the command line to run the bot, streamlining your workflow with ease.",{"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":2438,"platfrom":2441,"video":2443},"Move data between apps",[2439,2440],"api","trigger",[2442],"Mac","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FwE3PZCeivAI?rel=0&amp;","\u002Fguides\u002Fapple-shortcuts",{"title":2140,"description":2435},"guides\u002Fapple-shortcuts","jucW4uOTjSAvYiU8YOf-98E6nDmLA_9J5sMRpkz-0KA",{"id":2449,"title":2450,"body":2451,"date":2652,"description":2653,"extension":1621,"meta":2654,"navigation":1627,"order":1628,"path":2668,"seo":2669,"stem":2670,"__hash__":2671},"guides\u002Fguides\u002Fautomate-facebook-messages.md","How to automate messages on Facebook",{"type":1555,"value":2452,"toc":2644},[2453,2455,2458,2460,2464,2471,2475,2484,2487,2489,2493,2594,2598,2604,2606,2614,2616,2621,2640],[1566,2454],{},[1640,2456,2457],{},"The Facebook Messenger bot sends direct messages (DMs) in Chrome, sourced from a Google Sheet. It cycles through profile links in the sheet, opens them in Chrome, clicks on the message button, types a message, and presses return to send. After sending a message, the bot deletes the row and proceeds to the next profile.",[1558,2459],{},[1561,2461,2463],{"id":2462},"get-started-set-up-your-google-sheet","Get started: Set up your Google Sheet",[1640,2465,2466,2467,2470],{},"Create a new Google Sheet. You can do this in your Chrome browser by typing 'sheet.new' into the address bar, assuming you have a Google account. Name your sheet something like ",[1653,2468,2469],{},"\"Facebook Messenger bot\"",".. Set up a tab with profile links to message.",[1561,2472,2474],{"id":2473},"install-the-facebook-messenger-bot","Install the Facebook Messenger bot",[1640,2476,2477,2478,2480,2481,2483],{},"To install this Facebook Messenger bot, click ",[1653,2479,1678],{},".. If you’re a new user, you’ll have to click ",[1653,2482,1682],{},"., then create a free axiom.ai account to edit the template.",[1640,2485,2486],{},"Once installed, click 'Start'.",[1640,2488,1692],{},[1561,2490,2492],{"id":2491},"configure-your-facebook-messenger-bot-in-four-easy-steps","Configure your Facebook Messenger bot in four easy steps",[1701,2494,2495,2591],{},[1569,2496,2497,2514],{},[1572,2498,2499,1710,2501,2503],{},[1653,2500,1968],{},[1712,2502,1714],{},[1569,2504,2505,2509],{},[1572,2506,2507,1722],{},[1712,2508,1721],{},[1572,2510,2511,2513],{},[1712,2512,1727],{},": Choose the tab with the Facebook profile links.",[1572,2515,2516,1710,2519,2521],{},[1653,2517,2518],{},"Step 2.0",[1712,2520,667],{},[1569,2522,2523,2541,2549,2565,2573],{},[1572,2524,2525,1710,2528,2531],{},[1653,2526,2527],{},"Step 2.1",[1712,2529,2530],{},"Go to page: Profile page",[1569,2532,2533],{},[1572,2534,2535,2537,2538,2540],{},[1712,2536,1751],{},": Click 'Insert data', choose ",[1712,2539,1759],{},", and select the column with Facebook profile links.",[1572,2542,2543,1710,2546],{},[1653,2544,2545],{},"Step 2.2",[1712,2547,2548],{},"Click Element: Message^",[1572,2550,2551,1710,2554,2557],{},[1653,2552,2553],{},"Step 2.3",[1712,2555,2556],{},"Enter Text: Message",[1569,2558,2559],{},[1572,2560,2561,2564],{},[1712,2562,2563],{},"Text",": Input the message to be sent.",[1572,2566,2567,1710,2570],{},[1653,2568,2569],{},"Step 2.4",[1712,2571,2572],{},"Press Key(s): Send message^",[1572,2574,2575,1710,2578,2580],{},[1653,2576,2577],{},"Step 2.5",[1712,2579,1901],{},[1569,2581,2582,2586],{},[1572,2583,2584,1722],{},[1712,2585,1721],{},[1572,2587,2588,2590],{},[1712,2589,1727],{},": Choose the tab with Facebook links.",[1640,2592,2593],{},"^ Preconfigured",[1561,2595,2597],{"id":2596},"run-your-facebook-messenger-bot","Run your Facebook Messenger bot",[1640,2599,2600,2601,1668],{},"To test this Facebook Messenger bot, disable step 2.2 to prevent messages being sent.\nIf you wish to schedule the bot ",[1942,2602,2603],{"href":638},"add steps to login",[1561,2605,1937],{"id":1936},[1640,2607,1940,2608,2610,2611,1668],{},[1942,2609,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements. For example Step 2.3 you could personalise the message by passing in a name from the Google Sheet, simply click ",[1653,2612,2613],{},"\"Insert data\"",[1561,2615,1398],{"id":1949},[1640,2617,2618,2619,1668],{},"We recommend you watch the video to troubleshoot. If you wish to schedule the bot you will need to share the Cookie in settings or ",[1942,2620,2603],{"href":638},[1701,2622,2623],{},[1569,2624,2625,2634],{},[1572,2626,2627,2630,2631,2633],{},[1653,2628,2629],{},"Message button not clicked?"," Click ",[1712,2632,1775],{}," and reselect the button.",[1572,2635,2636,2639],{},[1653,2637,2638],{},"Message not being sent?"," Try re-recording the Return key action.",[1640,2641,2101,2642],{},[1942,2643,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":2645},[2646,2647,2648,2649,2650,2651],{"id":2462,"depth":1618,"text":2463},{"id":2473,"depth":1618,"text":2474},{"id":2491,"depth":1618,"text":2492},{"id":2596,"depth":1618,"text":2597},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2022-04-07","This guide shows how to automate sending Facebook Messenger messages using a Google Sheet and axiom.ai’s no-code bot.",{"pinned":1627,"read":2655,"level":2123,"video":2656,"templateId":2657,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":2660,"platfrom":2666},"3 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FIIQyYGVcjUY",55,"usecase","Interact with pages",[2661,2662,2663,2664,2665],"social-media","dm","messaging","data entry","google sheets",[2667],"Facebook","\u002Fguides\u002Fautomate-facebook-messages",{"title":2450,"description":2653},"guides\u002Fautomate-facebook-messages","PJEF8Dvc_FkQ8r4wZTPTx18uh9Gv20EB_r1u8pl85a0",{"id":2673,"title":2674,"body":2675,"date":2652,"description":2919,"extension":1621,"meta":2920,"navigation":1627,"order":1628,"path":2927,"seo":2928,"stem":2929,"__hash__":2930},"guides\u002Fguides\u002Fautomate-facebook-posts.md","How to automate posting to Facebook with a bot",{"type":1555,"value":2676,"toc":2911},[2677,2679,2686,2688,2690,2698,2702,2708,2712,2714,2718,2825,2829,2839,2841,2845,2847,2851,2902],[1566,2678],{},[1640,2680,2681,2682,2685],{},"This Facebook automation template uses a bot to post content from a Google Sheet to Facebook without requiring an API. The bot retrieves data from the Sheet, opens Facebook in Chrome, clicks on ",[1653,2683,2684],{},"\"What's on your mind?\""," then inputs the data into the Facebook post web form, emulating your actions. After clicking post the bot removes the processed row from the Sheet.",[1558,2687],{},[1561,2689,2463],{"id":2462},[1640,2691,1651,2692,2694,2695,1668],{},[1653,2693,1655],{},", assuming you already have an account. Name your sheet something like ",[1653,2696,2697],{},"\"Facebook posts\"",[1561,2699,2701],{"id":2700},"install-the-facebook-post-bot","Install the Facebook post bot",[1640,2703,2704,2705,2707],{},"To install this FB bot, click ",[1653,2706,1678],{},". If you’re a new user, you’ll have to click 'Install Chrome extension' and create a free axiom.ai account before you can edit the template.",[1640,2709,1686,2710,1668],{},[1653,2711,1689],{},[1640,2713,1692],{},[1561,2715,2717],{"id":2716},"configure-your-facebook-post-bot-in-four-easy-steps","Configure your Facebook post bot in four easy steps",[1701,2719,2720],{},[1569,2721,2722,2740],{},[1572,2723,2724,1710,2726,2728],{},[1653,2725,1709],{},[1712,2727,1714],{},[1569,2729,2730,2735],{},[1572,2731,2732,2734],{},[1712,2733,1721],{},": Search for the Google Sheet you created. Once found, click to select",[1572,2736,2737,2739],{},[1712,2738,1727],{},": Choose the tab with the posts in it",[1572,2741,2742,1710,2744,2746],{},[1653,2743,1733],{},[1712,2745,667],{},[1569,2747,2748,2755,2762,2778,2785,2801,2808],{},[1572,2749,2750,1710,2752],{},[1653,2751,1742],{},[1712,2753,2754],{},"Go to page: facebook.com^",[1572,2756,2757,1710,2759],{},[1653,2758,1765],{},[1712,2760,2761],{},"Click element: What's on your mind?^",[1572,2763,2764,1710,2766,2769],{},[1653,2765,1790],{},[1712,2767,2768],{},"Enter text: Post message",[1569,2770,2771],{},[1572,2772,2773,2775,2776],{},[1712,2774,2563],{},": Click 'Insert data', select ",[1712,2777,1847],{},[1572,2779,2780,1710,2782],{},[1653,2781,1833],{},[1712,2783,2784],{},"Click element: Picture icon button^",[1572,2786,2787,1710,2789,2792],{},[1653,2788,1861],{},[1712,2790,2791],{},"Upload a file: Grey upload field",[1569,2793,2794],{},[1572,2795,2796,2775,2799],{},[1712,2797,2798],{},"File Path",[1712,2800,1847],{},[1572,2802,2803,1710,2805],{},[1653,2804,1898],{},[1712,2806,2807],{},"Click element: Post^",[1572,2809,2810,1710,2813,2815],{},[1653,2811,2812],{},"2.7",[1712,2814,1901],{},[1569,2816,2817,2821],{},[1572,2818,2819,2734],{},[1712,2820,1721],{},[1572,2822,2823,2739],{},[1712,2824,1727],{},[1561,2826,2828],{"id":2827},"run-your-facebook-post-bot","Run your Facebook post bot",[1640,2830,2831,2832,2834,2835,2838],{},"To test the Facebook bot, you should first disable step 2.6 or delete the test post on Facebook. It's necessary to run the bot while being logged into Facebook, as this will allow the sharing of cookies and enable Axiom to open Facebook in a logged-in state.  If you wish to schedule the bot, ",[1942,2833,2603],{"href":638},". The upload file step means this bot only runs on the desktop app. To run in the cloud simply replace the 'Upload files' step with the ",[1942,2836,2837],{"href":1206},"'Upload from Google drive'"," step.",[1561,2840,1937],{"id":1936},[1640,2842,1940,2843,1946],{},[1942,2844,1945],{"href":1944},[1561,2846,1398],{"id":1949},[1640,2848,2618,2849,1668],{},[1942,2850,2603],{"href":638},[1701,2852,2853],{},[1569,2854,2855,2867,2877,2883,2893],{},[1572,2856,2857,2860,2861,2863,2864,1668],{},[1653,2858,2859],{},"'What's on your mind?' button not found?","\nReselect the button. It's using the ",[1942,2862,1999],{"href":1383}," setting ",[1712,2865,2866],{},"'element text'",[1572,2868,2869,2872,2873,2876],{},[1653,2870,2871],{},"Text not entering?","\nReselect the ",[1712,2874,2875],{},"'What's on your mind?'"," text input field.",[1572,2878,2879,2882],{},[1653,2880,2881],{},"Image icon not found?","\nReselect the picture icon element.",[1572,2884,2885,2888,2889,2892],{},[1653,2886,2887],{},"Upload field not found?","\nReselect the grey ",[1653,2890,2891],{},"\"Add photos\u002Fvideos\""," upload area.",[1572,2894,2895,2898,2901],{},[1653,2896,2897],{},"File not uploading?",[1942,2899,2900],{"href":1210},"Add a wait step"," after the upload, especially for large files.",[1640,2903,2101,2904,2906,2907],{},[1942,2905,2104],{"href":82},"\nTo learn more, read this full in-depth guide on automating ",[1942,2908,2910],{"href":2909},"\u002Fblog\u002Fhow-to-automate-facebook-posts","posting to facebook.",{"title":1614,"searchDepth":1615,"depth":1615,"links":2912},[2913,2914,2915,2916,2917,2918],{"id":2462,"depth":1618,"text":2463},{"id":2700,"depth":1618,"text":2701},{"id":2716,"depth":1618,"text":2717},{"id":2827,"depth":1618,"text":2828},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide explains how to automate posting to Facebook using a no-code bot from axiom.ai. Learn how to post from a Google Sheet without using the API.",{"pinned":1627,"read":2921,"level":2123,"video":2922,"templateId":2923,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":2924,"platfrom":2926},"4 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fn4OPAr1eiQ8",30,[2661,2925,2665],"posting",[2667],"\u002Fguides\u002Fautomate-facebook-posts",{"title":2674,"description":2919},"guides\u002Fautomate-facebook-posts","HavdTDWEWX014xj_KAX-d4MMh-HVaCNQ0hfrqYU1_O4",{"id":2932,"title":2933,"body":2934,"date":2652,"description":3132,"extension":1621,"meta":3133,"navigation":1627,"order":1628,"path":3142,"seo":3143,"stem":3144,"__hash__":3145},"guides\u002Fguides\u002Fautomate-gmail-inbox-clean.md","How to clean up your overflowing Gmail Inbox",{"type":1555,"value":2935,"toc":3125},[2936,2938,2941,2943,2947,2950,2952,2955,2959,2988,2992,2995,2997,3001,3005,3007,3115],[1566,2937],{},[1640,2939,2940],{},"This Gmail inbox cleaner template uses search terms to locate and delete emails. It inputs terms into 'Search in mail', submits, selects all emails, clicks 'Select all conversations that match this search' for bulk deletion, or just deletes emails directly if the option is not available.",[1558,2942],{},[1561,2944,2946],{"id":2945},"get-started-install-the-gmail-inbox-cleaner","Get started: install the Gmail inbox cleaner",[1640,2948,2949],{},"To install this Gmail inbox cleaner, click 'Install template'. If you’re a new user, you’ll have to click 'Install Chrome extension' and create a free axiom.ai account before you can edit the template.",[1640,2951,2486],{},[1640,2953,2954],{},"axiom.ai will guide you through the single step you need to configure in the app.",[1561,2956,2958],{"id":2957},"configure-your-gmail-inbox-cleaner-in-60-seconds","Configure your Gmail inbox cleaner in 60 seconds",[1701,2960,2961],{},[1569,2962,2963,2979],{},[1572,2964,2965,1710,2967,2970,2971],{},[1653,2966,1968],{},[1712,2968,2969],{},"Enter custom data:"," Add terms to search by",[1569,2972,2973],{},[1572,2974,2975,2978],{},[1712,2976,2977],{},"Custom data",": Enter emails or search terms, one per line.",[1572,2980,2981,2984],{},[1653,2982,2983],{},"Step 2.0 – 3.8",[1569,2985,2986],{},[1572,2987,2593],{},[1561,2989,2991],{"id":2990},"run-your-gmail-inbox-cleaner","Run your Gmail inbox cleaner",[1640,2993,2994],{},"For safety, first run a test using non-critical email addresses to search and remove.",[1561,2996,1937],{"id":1936},[1640,2998,1940,2999,1946],{},[1942,3000,1945],{"href":1944},[1561,3002,3004],{"id":3003},"trouibleshooting","Trouibleshooting",[1640,3006,1952],{},[1701,3008,3009],{},[1569,3010,3011,3022,3036,3047,3058,3069,3079,3093,3104],{},[1572,3012,3013,3016,1965,3018,3021],{},[1653,3014,3015],{},"Loops once?",[1963,3017],{},[1712,3019,3020],{},"Step 1.0 – Enter custom data",", check for blank spaces in the input field.",[1572,3023,3024,3027,1965,3029,3032,3033,1668],{},[1653,3025,3026],{},"Wrong URL?",[1963,3028],{},[1712,3030,3031],{},"Step 2.0 – Go to page",", make sure the URL is set to ",[1712,3034,3035],{},"https:\u002F\u002Fmail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox",[1572,3037,3038,3041,1965,3043,3046],{},[1653,3039,3040],{},"Search not working?",[1963,3042],{},[1712,3044,3045],{},"Step 3.1 – Enter text",", reselect the \"Search in mail\" input field.",[1572,3048,3049,3052,1965,3054,3057],{},[1653,3050,3051],{},"Select All not clicked?",[1963,3053],{},[1712,3055,3056],{},"Step 3.3 – Click element",", reselect the \"Select All\" tick box.",[1572,3059,3060,3063,1965,3065,3068],{},[1653,3061,3062],{},"Link not clicked?",[1963,3064],{},[1712,3066,3067],{},"Step 3.4 – Get data from bot's current page",", reselect \"Select all conversations that match this search\".",[1572,3070,3071,3074,3076,3077,1668],{},[1653,3072,3073],{},"Scraper retrying too long?",[1963,3075],{},"\nIn the same step, change \"Number of attempts when results not found\" to ",[1712,3078,1785],{},[1572,3080,3081,3084,1965,3086,3089,3090,3092],{},[1653,3082,3083],{},"Condition not working?",[1963,3085],{},[1712,3087,3088],{},"Step 3.5 – If condition",", make sure ",[1712,3091,1818],{}," is set.",[1572,3094,3095,3098,1965,3100,3103],{},[1653,3096,3097],{},"Delete not clicked?",[1963,3099],{},[1712,3101,3102],{},"Step 3.7 – Click element",", reselect the \"Delete\" button.",[1572,3105,3106,3109,1965,3111,3114],{},[1653,3107,3108],{},"Bot behaves randomly?",[1963,3110],{},[1712,3112,3113],{},"Step 3.8 – Wait",", increase the wait time.",[1640,3116,2101,3117,3119,3120,3124],{},[1942,3118,2104],{"href":82},"\nIf you are keen to learn more about browser automation, why not create an ",[1942,3121,3123],{"href":3122},"\u002Fblog\u002Fhow-to-send-email-blast","email blast"," using Gmail?",{"title":1614,"searchDepth":1615,"depth":1615,"links":3126},[3127,3128,3129,3130,3131],{"id":2945,"depth":1618,"text":2946},{"id":2957,"depth":1618,"text":2958},{"id":2990,"depth":1618,"text":2991},{"id":1936,"depth":1618,"text":1937},{"id":3003,"depth":1618,"text":3004},"This guide shows how to automatically delete emails in Gmail using axiom.ai’s no-code inbox cleaner. Learn to search, select, and bulk delete emails step by step.",{"read":3134,"level":2123,"video":3135,"templateId":3136,"type":2126,"format":2127,"intent_type":2658,"intent":3137,"tags":3138,"platfrom":3140},"2 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F3a0IKP3i_EY",13,"Send and manage emails",[3139],"email",[3141],"Gmail","\u002Fguides\u002Fautomate-gmail-inbox-clean",{"title":2933,"description":3132},"guides\u002Fautomate-gmail-inbox-clean","AtpQC69ZlgqlmCEiT92loTF1hKrp3y9V5FsxJxVx3Zk",{"id":3147,"title":3148,"body":3149,"date":3354,"description":3355,"extension":1621,"meta":3356,"navigation":1627,"order":1628,"path":3364,"seo":3365,"stem":3366,"__hash__":3367},"guides\u002Fguides\u002Fautomate-screenshots.md","How to automate screenshots",{"type":1555,"value":3150,"toc":3346},[3151,3153,3156,3158,3160,3165,3169,3176,3180,3182,3186,3289,3293,3296,3298,3306,3308,3310,3342],[1566,3152],{},[1640,3154,3155],{},"This AI bot template captures screenshots of webpages, operating by reading links from a Google Sheet, loading each page in Chrome, and taking a screenshot, followed by link deletion after processing. The screenshot is downloaded to your desktop.",[1558,3157],{},[1561,3159,1648],{"id":1647},[1640,3161,1651,3162,3164],{},[1653,3163,1655],{},", assuming you already have an account. Name your sheet something like 'Automate screenshots’ and set up a tab called 'Website links'.",[1561,3166,3168],{"id":3167},"install-the-screenshot-bot","Install the Screenshot bot",[1640,3170,3171,3172,1679,3174,1683],{},"To install this Screenshot bot click ",[1653,3173,1678],{},[1653,3175,1682],{},[1640,3177,1686,3178,1668],{},[1653,3179,1689],{},[1640,3181,1692],{},[1561,3183,3185],{"id":3184},"configure-your-screenshot-bot-in-minutes","Configure your Screenshot bot in minutes",[1701,3187,3188],{},[1569,3189,3190,3207],{},[1572,3191,3192,1710,3194,3196],{},[1653,3193,1709],{},[1712,3195,1714],{},[1569,3197,3198,3202],{},[1572,3199,3200,1722],{},[1712,3201,1721],{},[1572,3203,3204,3206],{},[1712,3205,1727],{},": Choose the sheet tab called 'Website links'.",[1572,3208,3209,1710,3211,3213],{},[1653,3210,1733],{},[1712,3212,667],{},[1569,3214,3215,3231,3263],{},[1572,3216,3217,1710,3219,3221],{},[1653,3218,1742],{},[1712,3220,1043],{},[1569,3222,3223],{},[1572,3224,3225,3227,3228,3230],{},[1712,3226,1751],{},": Click 'Insert Data', select ",[1712,3229,1759],{},", and choose the column with the links in it.",[1572,3232,3233,1710,3235,3238],{},[1653,3234,1765],{},[1712,3236,3237],{},"Save screenshot locally",[1569,3239,3240,3246,3252,3258],{},[1572,3241,3242,3245],{},[1712,3243,3244],{},"Folder",": Set a folder to download to.",[1572,3247,3248,3251],{},[1712,3249,3250],{},"File name",": Optional.",[1572,3253,3254,3257],{},[1712,3255,3256],{},"File type",": Select file types JPEG or PNG.",[1572,3259,3260,3251],{},[1712,3261,3262],{},"Overwrite existing file",[1572,3264,3265,1710,3267,3269],{},[1653,3266,1790],{},[1712,3268,1901],{},[1569,3270,3271,3275,3280,3285],{},[1572,3272,3273,1722],{},[1712,3274,1721],{},[1572,3276,3277,3279],{},[1712,3278,1727],{},": Choose the tab you created for website links.",[1572,3281,3282,3284],{},[1712,3283,1917],{},": Set to 1.",[1572,3286,3287,3284],{},[1712,3288,1924],{},[1561,3290,3292],{"id":3291},"run-your-screenshot-bot","Run your Screenshot bot",[1640,3294,3295],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the screenshots.",[1561,3297,1937],{"id":1936},[1640,3299,1940,3300,3302,3303,2838],{},[1942,3301,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements.\nIf you wish to download files whilst running in the cloud replace step 2.2 with the ",[1942,3304,3305],{"href":996},"Download to Google Drive",[1561,3307,1398],{"id":1949},[1640,3309,1952],{},[1701,3311,3312],{},[1569,3313,3314,3331],{},[1572,3315,3316,3319,1965,3321,3323,3324,3326,3327,3330],{},[1653,3317,3318],{},"Want to set a specific number of loops?",[1963,3320],{},[1712,3322,1968],{},", set the ",[1712,3325,1972],{}," to something like ",[1712,3328,3329],{},"AE100"," to scrape 100 rows.",[1572,3332,3333,3336,1965,3338,3341],{},[1653,3334,3335],{},"Files not saving?",[1963,3337],{},[1712,3339,3340],{},"Step 2.2 – Save screenshot locally",", check folder permissions on your computer.",[1640,3343,2101,3344],{},[1942,3345,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":3347},[3348,3349,3350,3351,3352,3353],{"id":1647,"depth":1618,"text":1648},{"id":3167,"depth":1618,"text":3168},{"id":3184,"depth":1618,"text":3185},{"id":3291,"depth":1618,"text":3292},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2022-01-30","This guide explains how to automate webpage screenshots using axiom.ai’s no-code bot. Capture pages from a Google Sheet and save screenshots to your desktop.",{"logoFile":3357,"read":2655,"video":3358,"templateId":3359,"type":2126,"format":2127,"intent_type":3360,"intent":2659,"tags":3361,"platfrom":3362},"\u002Ftemplates\u002Faxiom-template-icon.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBJB-siW113A",48,"workflow",[2132,2665],[3363],"Any","\u002Fguides\u002Fautomate-screenshots",{"title":3148,"description":3355},"guides\u002Fautomate-screenshots","poZFHQiU-KBQxIrYiJy9tvAaZMjswtpUw7sTeZpi1-M",{"id":3369,"title":3370,"body":3371,"date":1628,"description":3829,"extension":1621,"meta":3830,"navigation":1627,"order":1628,"path":3833,"seo":3834,"stem":3835,"__hash__":3836},"guides\u002Fguides\u002Fautomator.md","How to use Apple Automator to trigger an axiom.ai automation",{"type":1555,"value":3372,"toc":3823},[3373,3375,3378,3380,3383,3406,3410,3413,3424,3449,3452,3799,3801,3804,3810,3812,3815,3820],[1566,3374],{},[1640,3376,3377],{},"Automator is a macOS application that allows users to create custom workflows, tasks, and scripts to automate repetitive actions and streamline processes without needing extensive programming knowledge. This comes pre-installed on all macOS systems.",[1561,3379,2156],{"id":2155},[1640,3381,3382],{},"To get started, you will need thing from the axiom.ai Chrome extension:",[1701,3384,3385],{},[2165,3386,3387,3394,3399],{},[1572,3388,3389,3391,3392,1668],{},[1653,3390,2171],{}," - The API key is found on the ",[1942,3393,2176],{"href":2175},[1572,3395,3396,3398],{},[1653,3397,2181],{}," - Get the name of the automation you wish to trigger.",[1572,3400,3401,3403,3404,1668],{},[1653,3402,2187],{}," - The current endpoint is ",[1712,3405,2191],{},[1561,3407,3409],{"id":3408},"trigger-an-axiomai-automation-using-automator","Trigger an axiom.ai automation using Automator",[1640,3411,3412],{},"To get started, create your Automator workflow as you normally would, when you're ready to trigger your automation, continue this guide.",[1640,3414,3415,3416,3419,3420,3423],{},"Using the data from above, we will construct multiple variables called ",[1712,3417,3418],{},"webhookURL",", to store the URL of the axiom.ai API, and ",[1712,3421,3422],{},"jsonData"," to construct the payload that is to be sent to the automation. There are numerous modifications that will be needed:",[1701,3425,3426],{},[1569,3427,3428,3434,3440],{},[1572,3429,3430,3433],{},[1712,3431,3432],{},"\u003CYOUR_KEY>"," - This should be replaced with your API key.",[1572,3435,3436,3439],{},[1712,3437,3438],{},"\u003CAUTOMATION_NAME>"," - This should be replaced with your automation name.",[1572,3441,3442,3445,3446,3448],{},[1712,3443,3444],{},"data"," - The contents inside of the ",[1712,3447,3444],{}," key should be replaced with your own data, if you wish to send data to your automation. This should be an array of arrays, as is in the example.",[1640,3450,3451],{},"When ready, add a \"Run AppleScript\" component to your workflow to add thing script into your workflow and trigger your automation:",[2329,3453,3457],{"className":3454,"code":3455,"language":3456,"meta":1614,"style":1614},"language-sh shiki shiki-themes github-light-default github-dark-default","on run\n    -- The endpoint from above\n    set webhookURL to \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\"\n\n    -- This is the payload that is being sent to the axiom.ai API. All quotation marks inside the curly brackets will need to be escaped.\n    set jsonData to \"{ \\\"key\\\": \\\"\u003CYOUR_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": [[\\\"Item 1\\\", \\\"Item 2\\\"]] }\"\n    \n    try\n        -- Send the POST request using cURL\n        set response to do shell script \"curl -X POST \" & quoted form of webhookURL & \" -H 'Content-Type: application\u002Fjson' -d \" & quoted form of jsonData\n        return \"Webhook successful: \" & response\n    on error errorMsg\n        return \"Webhook failed: \" & errMsg\n    end try\nend run\n","sh",[1712,3458,3459,3467,3484,3499,3505,3577,3656,3662,3668,3691,3744,3758,3770,3782,3791],{"__ignoreMap":1614},[2337,3460,3461,3464],{"class":2339,"line":2340},[2337,3462,3463],{"class":2343},"on",[2337,3465,3466],{"class":2347}," run\n",[2337,3468,3469,3472,3475,3478,3481],{"class":2339,"line":1618},[2337,3470,3471],{"class":2343},"    --",[2337,3473,3474],{"class":2347}," The",[2337,3476,3477],{"class":2347}," endpoint",[2337,3479,3480],{"class":2347}," from",[2337,3482,3483],{"class":2347}," above\n",[2337,3485,3486,3490,3493,3496],{"class":2339,"line":1615},[2337,3487,3489],{"class":3488},"sHrmB","    set",[2337,3491,3492],{"class":2347}," webhookURL",[2337,3494,3495],{"class":2347}," to",[2337,3497,3498],{"class":2347}," \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\"\n",[2337,3500,3502],{"class":2339,"line":3501},4,[2337,3503,3504],{"emptyLinePlaceholder":1627},"\n",[2337,3506,3508,3510,3513,3516,3519,3522,3525,3527,3530,3533,3535,3537,3540,3543,3546,3549,3552,3555,3557,3560,3563,3566,3569,3571,3574],{"class":2339,"line":3507},5,[2337,3509,3471],{"class":2343},[2337,3511,3512],{"class":2347}," This",[2337,3514,3515],{"class":2347}," is",[2337,3517,3518],{"class":2347}," the",[2337,3520,3521],{"class":2347}," payload",[2337,3523,3524],{"class":2347}," that",[2337,3526,3515],{"class":2347},[2337,3528,3529],{"class":2347}," being",[2337,3531,3532],{"class":2347}," sent",[2337,3534,3495],{"class":2347},[2337,3536,3518],{"class":2347},[2337,3538,3539],{"class":2347}," axiom.ai",[2337,3541,3542],{"class":2347}," API.",[2337,3544,3545],{"class":2347}," All",[2337,3547,3548],{"class":2347}," quotation",[2337,3550,3551],{"class":2347}," marks",[2337,3553,3554],{"class":2347}," inside",[2337,3556,3518],{"class":2347},[2337,3558,3559],{"class":2347}," curly",[2337,3561,3562],{"class":2347}," brackets",[2337,3564,3565],{"class":2347}," will",[2337,3567,3568],{"class":2347}," need",[2337,3570,3495],{"class":2347},[2337,3572,3573],{"class":2347}," be",[2337,3575,3576],{"class":2347}," escaped.\n",[2337,3578,3580,3582,3585,3587,3590,3594,3597,3599,3602,3604,3606,3608,3611,3613,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634,3637,3639,3642,3644,3646,3648,3651,3653],{"class":2339,"line":3579},6,[2337,3581,3489],{"class":3488},[2337,3583,3584],{"class":2347}," jsonData",[2337,3586,3495],{"class":2347},[2337,3588,3589],{"class":2347}," \"{ ",[2337,3591,3593],{"class":3592},"sjeE4","\\\"",[2337,3595,3596],{"class":2347},"key",[2337,3598,3593],{"class":3592},[2337,3600,3601],{"class":2347},": ",[2337,3603,3593],{"class":3592},[2337,3605,3432],{"class":2347},[2337,3607,3593],{"class":3592},[2337,3609,3610],{"class":2347},", ",[2337,3612,3593],{"class":3592},[2337,3614,3615],{"class":2347},"name",[2337,3617,3593],{"class":3592},[2337,3619,3601],{"class":2347},[2337,3621,3593],{"class":3592},[2337,3623,3438],{"class":2347},[2337,3625,3593],{"class":3592},[2337,3627,3610],{"class":2347},[2337,3629,3593],{"class":3592},[2337,3631,3444],{"class":2347},[2337,3633,3593],{"class":3592},[2337,3635,3636],{"class":2347},": [[",[2337,3638,3593],{"class":3592},[2337,3640,3641],{"class":2347},"Item 1",[2337,3643,3593],{"class":3592},[2337,3645,3610],{"class":2347},[2337,3647,3593],{"class":3592},[2337,3649,3650],{"class":2347},"Item 2",[2337,3652,3593],{"class":3592},[2337,3654,3655],{"class":2347},"]] }\"\n",[2337,3657,3659],{"class":2339,"line":3658},7,[2337,3660,3661],{"class":2378},"    \n",[2337,3663,3665],{"class":2339,"line":3664},8,[2337,3666,3667],{"class":2343},"    try\n",[2337,3669,3671,3674,3677,3679,3682,3685,3688],{"class":2339,"line":3670},9,[2337,3672,3673],{"class":2343},"        --",[2337,3675,3676],{"class":2347}," Send",[2337,3678,3518],{"class":2347},[2337,3680,3681],{"class":2347}," POST",[2337,3683,3684],{"class":2347}," request",[2337,3686,3687],{"class":2347}," using",[2337,3689,3690],{"class":2347}," cURL\n",[2337,3692,3694,3697,3700,3702,3705,3708,3711,3714,3717,3720,3723,3726,3728,3730,3733,3735,3737,3739,3741],{"class":2339,"line":3693},10,[2337,3695,3696],{"class":3488},"        set",[2337,3698,3699],{"class":2347}," response",[2337,3701,3495],{"class":2347},[2337,3703,3704],{"class":2347}," do",[2337,3706,3707],{"class":2347}," shell",[2337,3709,3710],{"class":2347}," script",[2337,3712,3713],{"class":2347}," \"curl -X POST \"",[2337,3715,3716],{"class":2378}," & ",[2337,3718,3719],{"class":2343},"quoted",[2337,3721,3722],{"class":2347}," form",[2337,3724,3725],{"class":2347}," of",[2337,3727,3492],{"class":2347},[2337,3729,3716],{"class":2378},[2337,3731,3732],{"class":2343},"\" -H 'Content-Type: application\u002Fjson' -d \"",[2337,3734,3716],{"class":2378},[2337,3736,3719],{"class":2343},[2337,3738,3722],{"class":2347},[2337,3740,3725],{"class":2347},[2337,3742,3743],{"class":2347}," jsonData\n",[2337,3745,3747,3750,3753,3755],{"class":2339,"line":3746},11,[2337,3748,3749],{"class":3592},"        return",[2337,3751,3752],{"class":2347}," \"Webhook successful: \"",[2337,3754,3716],{"class":2378},[2337,3756,3757],{"class":2343},"response\n",[2337,3759,3761,3764,3767],{"class":2339,"line":3760},12,[2337,3762,3763],{"class":2343},"    on",[2337,3765,3766],{"class":2347}," error",[2337,3768,3769],{"class":2347}," errorMsg\n",[2337,3771,3772,3774,3777,3779],{"class":2339,"line":3136},[2337,3773,3749],{"class":3592},[2337,3775,3776],{"class":2347}," \"Webhook failed: \"",[2337,3778,3716],{"class":2378},[2337,3780,3781],{"class":2343},"errMsg\n",[2337,3783,3785,3788],{"class":2339,"line":3784},14,[2337,3786,3787],{"class":3592},"    end",[2337,3789,3790],{"class":2378}," try\n",[2337,3792,3794,3797],{"class":2339,"line":3793},15,[2337,3795,3796],{"class":3592},"end",[2337,3798,3466],{"class":2378},[1561,3800,2386],{"id":2385},[1640,3802,3803],{},"In order to test your workflow, click \"Run\", or run the script on its own. Any errors that are being produced within Automator will appear within the \"Run Applescript\" component of your workflow. Follow the instructions within the component for more information on how to proceed.",[1640,3805,3806,3807,1668],{},"For more information on errors related to the axiom.ai API, see ",[1942,3808,3809],{"href":1409},"Common Errors",[1561,3811,2406],{"id":2405},[1640,3813,3814],{},"Automator provides a great method of being able to run your axiom.ai automations. It offers the ability to access various pieces of information from the system itself, which can be beneficial when it comes to monitoring system configuration, such as memory. Your automations can easily be used as a middle-man to set up notifications for system monitoring, especially if the system is being used in server configuration.",[1640,3816,3817],{},[2417,3818,3819],{},"Information accurate as of January 2025, changes to either platform may render these instructions non-functional.",[2421,3821,3822],{},"html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":3824},[3825,3826,3827,3828],{"id":2155,"depth":1618,"text":2156},{"id":3408,"depth":1618,"text":3409},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"This guide explains how to trigger an axiom.ai automation using Apple Automator. Learn to set up a workflow with AppleScript and send data using the Axiom webhook.",{"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":3831,"platfrom":3832},[2439,2440],[2442],"\u002Fguides\u002Fautomator",{"title":3370,"description":3829},"guides\u002Fautomator","K_I1mqpJ2vYezZL06hRST2ypKqjLgTp_XVcwqftlYA0",{"id":3838,"title":3839,"body":3840,"date":1628,"description":4950,"extension":1621,"meta":4951,"navigation":1627,"order":1628,"path":4954,"seo":4955,"stem":4956,"__hash__":4957},"guides\u002Fguides\u002Fbaserow.md","How to post data to Baserow using an axiom.ai automation",{"type":1555,"value":3841,"toc":4939},[3842,3844,3853,3855,3858,3861,3882,3886,3889,3893,3896,3906,3909,3965,3968,4256,4274,4290,4298,4302,4305,4308,4373,4376,4578,4592,4596,4598,4601,4646,4648,4856,4879,4882,4893,4895,4901,4904,4912,4914,4922,4925,4936],[1566,3843],{},[1640,3845,3846,3852],{},[1942,3847,3851],{"href":3848,"rel":3849},"https:\u002F\u002Fbaserow.io",[3850],"nofollow","Baserow"," offers an alternative to spreadsheets and allows for data management at scale with cloud or self-hosted options. Combined with axiom.ai, there are many opportunities to power up your workflows and store your processed data.",[1561,3854,2156],{"id":2155},[1640,3856,3857],{},"For this guide, we will assume that you have an automation set up within axiom.ai, have a Baserow account and a database already set up.",[1640,3859,3860],{},"To send data to Baserow from your automation, you'll need the following information from your database:",[1701,3862,3863],{},[2165,3864,3865,3876],{},[1572,3866,3867,3870,3871,3875],{},[1653,3868,3869],{},"Table ID"," - You'll find this in the URL - navigate to your table, and grab the second last number. For example, ",[1942,3872,3873],{"href":3873,"rel":3874},"https:\u002F\u002Fbaserow.io\u002Fdatabase\u002Fxxxxxx\u002Ftable\u002F",[3850],"\u003CTABLE_ID>\u002Fxxxxxx.",[1572,3877,3878,3881],{},[1653,3879,3880],{},"Database Token"," - A database token will need to be generated, navigate to My Settings → Database tokens → Create token → give it a name and click \"create token\". Set the permissions depending on what you are looking to do via your automation.",[1561,3883,3885],{"id":3884},"automating-baserow-using-an-axiomai-automation","Automating Baserow using an axiom.ai automation",[1640,3887,3888],{},"There are many functions of Baserow that can be used within your automation to send data to Baserow, or fetch data from Baserow.",[2249,3890,3892],{"id":3891},"sending-data-to-baserow","Sending data to Baserow",[1640,3894,3895],{},"Create your automation as you normally would - when you're ready to send your data onto Baserow, continue this guide.",[1640,3897,3898,3899,3901,3902,3905],{},"If the data that you are looking to send contains multiple rows of data, first add a ",[1942,3900,667],{"href":1075}," step to your automation, setting the data to the data token that contains the data that you wish to send to Baserow. Inside of the \"Loop through data\" step, add a ",[1942,3903,3904],{"href":1226},"Write Javascript"," step. If you only have a single row of data, you can skip adding the \"Loop through data\" step.",[1640,3907,3908],{},"First, we will establish some variables to hold important information that your script will need, replacing the text within the \u003C > with your data:",[2329,3910,3912],{"className":2366,"code":3911,"language":2368,"meta":1614,"style":1614},"const table_id = \"\u003CTABLE_ID>\";\nconst baserow_url = `https:\u002F\u002Fapi.baserow.io\u002Fapi\u002Fdatabase\u002Frows\u002Ftable\u002F${table_id}\u002F?user_field_names=true`;\nconst database_token = \"\u003CDATABASE_TOKEN>\";\n",[1712,3913,3914,3931,3951],{"__ignoreMap":1614},[2337,3915,3916,3919,3922,3925,3928],{"class":2339,"line":2340},[2337,3917,3918],{"class":3592},"const",[2337,3920,3921],{"class":3488}," table_id",[2337,3923,3924],{"class":3592}," =",[2337,3926,3927],{"class":2347}," \"\u003CTABLE_ID>\"",[2337,3929,3930],{"class":2378},";\n",[2337,3932,3933,3935,3938,3940,3943,3946,3949],{"class":2339,"line":1618},[2337,3934,3918],{"class":3592},[2337,3936,3937],{"class":3488}," baserow_url",[2337,3939,3924],{"class":3592},[2337,3941,3942],{"class":2347}," `https:\u002F\u002Fapi.baserow.io\u002Fapi\u002Fdatabase\u002Frows\u002Ftable\u002F${",[2337,3944,3945],{"class":2378},"table_id",[2337,3947,3948],{"class":2347},"}\u002F?user_field_names=true`",[2337,3950,3930],{"class":2378},[2337,3952,3953,3955,3958,3960,3963],{"class":2339,"line":1615},[2337,3954,3918],{"class":3592},[2337,3956,3957],{"class":3488}," database_token",[2337,3959,3924],{"class":3592},[2337,3961,3962],{"class":2347}," \"\u003CDATABASE_TOKEN>\"",[2337,3964,3930],{"class":2378},[1640,3966,3967],{},"Next, we will want to create a function that handles sending the data to Baserow, and then call this function. This should be contained within the same \"Write Javascript\" step as the code above.",[2329,3969,3971],{"className":2366,"code":3970,"language":2368,"meta":1614,"style":1614},"const sendToBaserow = async () => {\n    try {\n        const response = await fetch(baserow_url, {\n            method: 'POST',\n            headers: {\n                \"Authorization\": `Token ${database_token}`,\n                \"Content-Type\": \"application\u002Fx-www-form-urlencoded\"\n            },\n            body: new URLSearchParams({\n                \"Name\": \"[google-sheet-data?*&0]\",\n                \"Homepage\": \"[google-sheet-data?*&1]\"\n            })\n        });\n      \n        if (!response.ok) {\n            console.error(\"Something went wrong with response\", response);\n            return;\n        }\n      \n        const result = await response.json();\n        console.log(result);\n    } catch (error) {\n        console.error(\"Something went wrong\", error);\n    }\n}\n\nsendToBaserow();\n",[1712,3972,3973,3995,4002,4020,4031,4036,4054,4064,4069,4083,4095,4105,4110,4115,4120,4134,4152,4160,4166,4171,4192,4204,4216,4231,4237,4243,4248],{"__ignoreMap":1614},[2337,3974,3975,3977,3981,3983,3986,3989,3992],{"class":2339,"line":2340},[2337,3976,3918],{"class":3592},[2337,3978,3980],{"class":3979},"sbjLL"," sendToBaserow",[2337,3982,3924],{"class":3592},[2337,3984,3985],{"class":3592}," async",[2337,3987,3988],{"class":2378}," () ",[2337,3990,3991],{"class":3592},"=>",[2337,3993,3994],{"class":2378}," {\n",[2337,3996,3997,4000],{"class":2339,"line":1618},[2337,3998,3999],{"class":3592},"    try",[2337,4001,3994],{"class":2378},[2337,4003,4004,4007,4009,4011,4014,4017],{"class":2339,"line":1615},[2337,4005,4006],{"class":3592},"        const",[2337,4008,3699],{"class":3488},[2337,4010,3924],{"class":3592},[2337,4012,4013],{"class":3592}," await",[2337,4015,4016],{"class":3979}," fetch",[2337,4018,4019],{"class":2378},"(baserow_url, {\n",[2337,4021,4022,4025,4028],{"class":2339,"line":3501},[2337,4023,4024],{"class":2378},"            method: ",[2337,4026,4027],{"class":2347},"'POST'",[2337,4029,4030],{"class":2378},",\n",[2337,4032,4033],{"class":2339,"line":3507},[2337,4034,4035],{"class":2378},"            headers: {\n",[2337,4037,4038,4041,4043,4046,4049,4052],{"class":2339,"line":3579},[2337,4039,4040],{"class":2347},"                \"Authorization\"",[2337,4042,3601],{"class":2378},[2337,4044,4045],{"class":2347},"`Token ${",[2337,4047,4048],{"class":2378},"database_token",[2337,4050,4051],{"class":2347},"}`",[2337,4053,4030],{"class":2378},[2337,4055,4056,4059,4061],{"class":2339,"line":3658},[2337,4057,4058],{"class":2347},"                \"Content-Type\"",[2337,4060,3601],{"class":2378},[2337,4062,4063],{"class":2347},"\"application\u002Fx-www-form-urlencoded\"\n",[2337,4065,4066],{"class":2339,"line":3664},[2337,4067,4068],{"class":2378},"            },\n",[2337,4070,4071,4074,4077,4080],{"class":2339,"line":3670},[2337,4072,4073],{"class":2378},"            body: ",[2337,4075,4076],{"class":3592},"new",[2337,4078,4079],{"class":3979}," URLSearchParams",[2337,4081,4082],{"class":2378},"({\n",[2337,4084,4085,4088,4090,4093],{"class":2339,"line":3693},[2337,4086,4087],{"class":2347},"                \"Name\"",[2337,4089,3601],{"class":2378},[2337,4091,4092],{"class":2347},"\"[google-sheet-data?*&0]\"",[2337,4094,4030],{"class":2378},[2337,4096,4097,4100,4102],{"class":2339,"line":3746},[2337,4098,4099],{"class":2347},"                \"Homepage\"",[2337,4101,3601],{"class":2378},[2337,4103,4104],{"class":2347},"\"[google-sheet-data?*&1]\"\n",[2337,4106,4107],{"class":2339,"line":3760},[2337,4108,4109],{"class":2378},"            })\n",[2337,4111,4112],{"class":2339,"line":3136},[2337,4113,4114],{"class":2378},"        });\n",[2337,4116,4117],{"class":2339,"line":3784},[2337,4118,4119],{"class":2378},"      \n",[2337,4121,4122,4125,4128,4131],{"class":2339,"line":3793},[2337,4123,4124],{"class":3592},"        if",[2337,4126,4127],{"class":2378}," (",[2337,4129,4130],{"class":3592},"!",[2337,4132,4133],{"class":2378},"response.ok) {\n",[2337,4135,4137,4140,4143,4146,4149],{"class":2339,"line":4136},16,[2337,4138,4139],{"class":2378},"            console.",[2337,4141,4142],{"class":3979},"error",[2337,4144,4145],{"class":2378},"(",[2337,4147,4148],{"class":2347},"\"Something went wrong with response\"",[2337,4150,4151],{"class":2378},", response);\n",[2337,4153,4155,4158],{"class":2339,"line":4154},17,[2337,4156,4157],{"class":3592},"            return",[2337,4159,3930],{"class":2378},[2337,4161,4163],{"class":2339,"line":4162},18,[2337,4164,4165],{"class":2378},"        }\n",[2337,4167,4169],{"class":2339,"line":4168},19,[2337,4170,4119],{"class":2378},[2337,4172,4174,4176,4179,4181,4183,4186,4189],{"class":2339,"line":4173},20,[2337,4175,4006],{"class":3592},[2337,4177,4178],{"class":3488}," result",[2337,4180,3924],{"class":3592},[2337,4182,4013],{"class":3592},[2337,4184,4185],{"class":2378}," response.",[2337,4187,4188],{"class":3979},"json",[2337,4190,4191],{"class":2378},"();\n",[2337,4193,4195,4198,4201],{"class":2339,"line":4194},21,[2337,4196,4197],{"class":2378},"        console.",[2337,4199,4200],{"class":3979},"log",[2337,4202,4203],{"class":2378},"(result);\n",[2337,4205,4207,4210,4213],{"class":2339,"line":4206},22,[2337,4208,4209],{"class":2378},"    } ",[2337,4211,4212],{"class":3592},"catch",[2337,4214,4215],{"class":2378}," (error) {\n",[2337,4217,4219,4221,4223,4225,4228],{"class":2339,"line":4218},23,[2337,4220,4197],{"class":2378},[2337,4222,4142],{"class":3979},[2337,4224,4145],{"class":2378},[2337,4226,4227],{"class":2347},"\"Something went wrong\"",[2337,4229,4230],{"class":2378},", error);\n",[2337,4232,4234],{"class":2339,"line":4233},24,[2337,4235,4236],{"class":2378},"    }\n",[2337,4238,4240],{"class":2339,"line":4239},25,[2337,4241,4242],{"class":2378},"}\n",[2337,4244,4246],{"class":2339,"line":4245},26,[2337,4247,3504],{"emptyLinePlaceholder":1627},[2337,4249,4251,4254],{"class":2339,"line":4250},27,[2337,4252,4253],{"class":3979},"sendToBaserow",[2337,4255,4191],{"class":2378},[1640,4257,4258,4259,4262,4263,4266,4267,4270,4271,4273],{},"Most of the code above will not need to be modified, however, you will need to update the code inside of the ",[1712,4260,4261],{},"body: new URLSearchParams({})"," code with the fields and data that you wish to send. The first item in the key-value pair, ",[1712,4264,4265],{},"Name",", for example, needs to be the name of a ",[2417,4268,4269],{},"single"," column. The second item will be the data that you are sending to Baserow - remember, you can use the ",[1942,4272,1814],{"href":1373}," option to insert data tokens from throughout your automation.",[1640,4275,4276,4277,4281,4282,4285,4286,4289],{},"By default, when you create a row using this method this will trigger webhooks - if you are following the guide on ",[1942,4278,4280],{"href":4279},"#triggering-an-axiomai-automation-using-baserow","Triggering an axiom.ai automation using Baserow"," you may wish to keep this in mind. This can be disabled by adding ",[1712,4283,4284],{},"&send_webhook_events=false"," to the end of the ",[1712,4287,4288],{},"baserow_url"," variable in the code.",[1640,4291,4292],{},[2417,4293,4294,4295,4297],{},"Please note, Baserow's API has a rate limit of 20 requests per second as of time of writing - to respect this, it's recommended to add additional ",[1942,4296,349],{"href":1210}," steps inside your \"Loop through data\" step.",[2249,4299,4301],{"id":4300},"retrieving-a-single-row-from-baserow","Retrieving a single row from Baserow",[1640,4303,4304],{},"Create your automation as you normally would - when you're ready to retrieve your data from Baserow, continue this guide.",[1640,4306,4307],{},"To get a single row from your Baserow database, you'll need to perform a request to their API. To access a single row, you will need the ID of the row. This can be found in the UI. First, we will establish some variables to hold important information that your script will need, replacing the text within the \u003C > with your data:",[2329,4309,4311],{"className":2366,"code":4310,"language":2368,"meta":1614,"style":1614},"const table_id = \"\u003CTABLE_ID>\";\nconst row_id = \"\u003CTABLE_ROW>\";\nconst database_token = \"\u003CDATABASE_TOKEN>\";\nconst baserow_url = `https:\u002F\u002Fapi.baserow.io\u002Fapi\u002Fdatabase\u002Frows\u002Ftable\u002F${table_id}\u002F${row_id}\u002F?user_field_names=true`;\n",[1712,4312,4313,4325,4339,4351],{"__ignoreMap":1614},[2337,4314,4315,4317,4319,4321,4323],{"class":2339,"line":2340},[2337,4316,3918],{"class":3592},[2337,4318,3921],{"class":3488},[2337,4320,3924],{"class":3592},[2337,4322,3927],{"class":2347},[2337,4324,3930],{"class":2378},[2337,4326,4327,4329,4332,4334,4337],{"class":2339,"line":1618},[2337,4328,3918],{"class":3592},[2337,4330,4331],{"class":3488}," row_id",[2337,4333,3924],{"class":3592},[2337,4335,4336],{"class":2347}," \"\u003CTABLE_ROW>\"",[2337,4338,3930],{"class":2378},[2337,4340,4341,4343,4345,4347,4349],{"class":2339,"line":1615},[2337,4342,3918],{"class":3592},[2337,4344,3957],{"class":3488},[2337,4346,3924],{"class":3592},[2337,4348,3962],{"class":2347},[2337,4350,3930],{"class":2378},[2337,4352,4353,4355,4357,4359,4361,4363,4366,4369,4371],{"class":2339,"line":3501},[2337,4354,3918],{"class":3592},[2337,4356,3937],{"class":3488},[2337,4358,3924],{"class":3592},[2337,4360,3942],{"class":2347},[2337,4362,3945],{"class":2378},[2337,4364,4365],{"class":2347},"}\u002F${",[2337,4367,4368],{"class":2378},"row_id",[2337,4370,3948],{"class":2347},[2337,4372,3930],{"class":2378},[1640,4374,4375],{},"Next, we will want to create a function that handles retrieving the data from Baserow, and then call this function. This should be contained within the same \"Write Javascript\" step as the code above.",[2329,4377,4379],{"className":2366,"code":4378,"language":2368,"meta":1614,"style":1614},"const retrieveRow = async () => {\n    try {\n        const response = await fetch(baserow_url, {\n            method: 'GET',\n            headers: {\n                \"Authorization\": `Token ${database_token}`,\n                \"Content-Type\": \"application\u002Fx-www-form-urlencoded\"\n            }\n        });\n      \n        if (!response.ok) {\n            console.error(\"Something went wrong\", response); \n        }\n      \n        const result = await response.json();\n\n        \u002F\u002F Return the results in a format that your automation is expecting.\n        return [Object.values(result)];\n    } catch (error) {\n        console.error(\"Something went wrong\", error); \n    }\n}\n\nreturn retrieveRow();\n",[1712,4380,4381,4398,4404,4418,4427,4431,4445,4453,4458,4462,4466,4476,4489,4493,4497,4513,4517,4523,4536,4544,4557,4561,4565,4569],{"__ignoreMap":1614},[2337,4382,4383,4385,4388,4390,4392,4394,4396],{"class":2339,"line":2340},[2337,4384,3918],{"class":3592},[2337,4386,4387],{"class":3979}," retrieveRow",[2337,4389,3924],{"class":3592},[2337,4391,3985],{"class":3592},[2337,4393,3988],{"class":2378},[2337,4395,3991],{"class":3592},[2337,4397,3994],{"class":2378},[2337,4399,4400,4402],{"class":2339,"line":1618},[2337,4401,3999],{"class":3592},[2337,4403,3994],{"class":2378},[2337,4405,4406,4408,4410,4412,4414,4416],{"class":2339,"line":1615},[2337,4407,4006],{"class":3592},[2337,4409,3699],{"class":3488},[2337,4411,3924],{"class":3592},[2337,4413,4013],{"class":3592},[2337,4415,4016],{"class":3979},[2337,4417,4019],{"class":2378},[2337,4419,4420,4422,4425],{"class":2339,"line":3501},[2337,4421,4024],{"class":2378},[2337,4423,4424],{"class":2347},"'GET'",[2337,4426,4030],{"class":2378},[2337,4428,4429],{"class":2339,"line":3507},[2337,4430,4035],{"class":2378},[2337,4432,4433,4435,4437,4439,4441,4443],{"class":2339,"line":3579},[2337,4434,4040],{"class":2347},[2337,4436,3601],{"class":2378},[2337,4438,4045],{"class":2347},[2337,4440,4048],{"class":2378},[2337,4442,4051],{"class":2347},[2337,4444,4030],{"class":2378},[2337,4446,4447,4449,4451],{"class":2339,"line":3658},[2337,4448,4058],{"class":2347},[2337,4450,3601],{"class":2378},[2337,4452,4063],{"class":2347},[2337,4454,4455],{"class":2339,"line":3664},[2337,4456,4457],{"class":2378},"            }\n",[2337,4459,4460],{"class":2339,"line":3670},[2337,4461,4114],{"class":2378},[2337,4463,4464],{"class":2339,"line":3693},[2337,4465,4119],{"class":2378},[2337,4467,4468,4470,4472,4474],{"class":2339,"line":3746},[2337,4469,4124],{"class":3592},[2337,4471,4127],{"class":2378},[2337,4473,4130],{"class":3592},[2337,4475,4133],{"class":2378},[2337,4477,4478,4480,4482,4484,4486],{"class":2339,"line":3760},[2337,4479,4139],{"class":2378},[2337,4481,4142],{"class":3979},[2337,4483,4145],{"class":2378},[2337,4485,4227],{"class":2347},[2337,4487,4488],{"class":2378},", response); \n",[2337,4490,4491],{"class":2339,"line":3136},[2337,4492,4165],{"class":2378},[2337,4494,4495],{"class":2339,"line":3784},[2337,4496,4119],{"class":2378},[2337,4498,4499,4501,4503,4505,4507,4509,4511],{"class":2339,"line":3793},[2337,4500,4006],{"class":3592},[2337,4502,4178],{"class":3488},[2337,4504,3924],{"class":3592},[2337,4506,4013],{"class":3592},[2337,4508,4185],{"class":2378},[2337,4510,4188],{"class":3979},[2337,4512,4191],{"class":2378},[2337,4514,4515],{"class":2339,"line":4136},[2337,4516,3504],{"emptyLinePlaceholder":1627},[2337,4518,4519],{"class":2339,"line":4154},[2337,4520,4522],{"class":4521},"sU953","        \u002F\u002F Return the results in a format that your automation is expecting.\n",[2337,4524,4525,4527,4530,4533],{"class":2339,"line":4162},[2337,4526,3749],{"class":3592},[2337,4528,4529],{"class":2378}," [Object.",[2337,4531,4532],{"class":3979},"values",[2337,4534,4535],{"class":2378},"(result)];\n",[2337,4537,4538,4540,4542],{"class":2339,"line":4168},[2337,4539,4209],{"class":2378},[2337,4541,4212],{"class":3592},[2337,4543,4215],{"class":2378},[2337,4545,4546,4548,4550,4552,4554],{"class":2339,"line":4173},[2337,4547,4197],{"class":2378},[2337,4549,4142],{"class":3979},[2337,4551,4145],{"class":2378},[2337,4553,4227],{"class":2347},[2337,4555,4556],{"class":2378},", error); \n",[2337,4558,4559],{"class":2339,"line":4194},[2337,4560,4236],{"class":2378},[2337,4562,4563],{"class":2339,"line":4206},[2337,4564,4242],{"class":2378},[2337,4566,4567],{"class":2339,"line":4218},[2337,4568,3504],{"emptyLinePlaceholder":1627},[2337,4570,4571,4574,4576],{"class":2339,"line":4233},[2337,4572,4573],{"class":3592},"return",[2337,4575,4387],{"class":3979},[2337,4577,4191],{"class":2378},[1640,4579,4580,4581,4584,4585],{},"Your row data will then be contained within the ",[1712,4582,4583],{},"code-data"," data token within your automation. ",[2417,4586,4587,4588,4591],{},"Note: this data will contain additional data such as the Row ID, it's recommended you review the data using a ",[1942,4589,4590],{"href":980},"Display a message"," step before use.",[2249,4593,4595],{"id":4594},"retrieving-multiple-rows-from-baserow","Retrieving multiple rows from Baserow",[1640,4597,4304],{},[1640,4599,4600],{},"In order to retrieve multiple rows, we'll need to add some code to your automation. First, we will establish some variables to hold important information that your script will need, replacing the text within the \u003C > with your data:",[2329,4602,4604],{"className":2366,"code":4603,"language":2368,"meta":1614,"style":1614},"const table_id = \"\u003CTABLE_ID>\";\nconst database_token = \"\u003CDATABASE_TOKEN>\";\nconst baserow_url = `https:\u002F\u002Fapi.baserow.io\u002Fapi\u002Fdatabase\u002Frows\u002Ftable\u002F${table_id}\u002F?user_field_names=true`;\n",[1712,4605,4606,4618,4630],{"__ignoreMap":1614},[2337,4607,4608,4610,4612,4614,4616],{"class":2339,"line":2340},[2337,4609,3918],{"class":3592},[2337,4611,3921],{"class":3488},[2337,4613,3924],{"class":3592},[2337,4615,3927],{"class":2347},[2337,4617,3930],{"class":2378},[2337,4619,4620,4622,4624,4626,4628],{"class":2339,"line":1618},[2337,4621,3918],{"class":3592},[2337,4623,3957],{"class":3488},[2337,4625,3924],{"class":3592},[2337,4627,3962],{"class":2347},[2337,4629,3930],{"class":2378},[2337,4631,4632,4634,4636,4638,4640,4642,4644],{"class":2339,"line":1615},[2337,4633,3918],{"class":3592},[2337,4635,3937],{"class":3488},[2337,4637,3924],{"class":3592},[2337,4639,3942],{"class":2347},[2337,4641,3945],{"class":2378},[2337,4643,3948],{"class":2347},[2337,4645,3930],{"class":2378},[1640,4647,4375],{},[2329,4649,4651],{"className":2366,"code":4650,"language":2368,"meta":1614,"style":1614},"const retrieveRow = async () => {\n    try {\n        const response = await fetch(baserow_url, {\n            method: 'GET',\n            headers: {\n                \"Authorization\": `Token ${database_token}`,\n                \"Content-Type\": \"application\u002Fx-www-form-urlencoded\"\n            }\n        });\n      \n        if (!response.ok) {\n            console.error(\"Something went wrong\", response); \n        }\n      \n        const result = await response.json();\n        \n        \u002F\u002F Return the results in a format that your automation is expecting.\n        return result.results.map(row => Object.values(row));\n    } catch (error) {\n        console.error(\"Something went wrong\", error); \n    }\n}\n\nreturn retrieveRow();\n",[1712,4652,4653,4669,4675,4689,4697,4701,4715,4723,4727,4731,4735,4745,4757,4761,4765,4781,4786,4790,4816,4824,4836,4840,4844,4848],{"__ignoreMap":1614},[2337,4654,4655,4657,4659,4661,4663,4665,4667],{"class":2339,"line":2340},[2337,4656,3918],{"class":3592},[2337,4658,4387],{"class":3979},[2337,4660,3924],{"class":3592},[2337,4662,3985],{"class":3592},[2337,4664,3988],{"class":2378},[2337,4666,3991],{"class":3592},[2337,4668,3994],{"class":2378},[2337,4670,4671,4673],{"class":2339,"line":1618},[2337,4672,3999],{"class":3592},[2337,4674,3994],{"class":2378},[2337,4676,4677,4679,4681,4683,4685,4687],{"class":2339,"line":1615},[2337,4678,4006],{"class":3592},[2337,4680,3699],{"class":3488},[2337,4682,3924],{"class":3592},[2337,4684,4013],{"class":3592},[2337,4686,4016],{"class":3979},[2337,4688,4019],{"class":2378},[2337,4690,4691,4693,4695],{"class":2339,"line":3501},[2337,4692,4024],{"class":2378},[2337,4694,4424],{"class":2347},[2337,4696,4030],{"class":2378},[2337,4698,4699],{"class":2339,"line":3507},[2337,4700,4035],{"class":2378},[2337,4702,4703,4705,4707,4709,4711,4713],{"class":2339,"line":3579},[2337,4704,4040],{"class":2347},[2337,4706,3601],{"class":2378},[2337,4708,4045],{"class":2347},[2337,4710,4048],{"class":2378},[2337,4712,4051],{"class":2347},[2337,4714,4030],{"class":2378},[2337,4716,4717,4719,4721],{"class":2339,"line":3658},[2337,4718,4058],{"class":2347},[2337,4720,3601],{"class":2378},[2337,4722,4063],{"class":2347},[2337,4724,4725],{"class":2339,"line":3664},[2337,4726,4457],{"class":2378},[2337,4728,4729],{"class":2339,"line":3670},[2337,4730,4114],{"class":2378},[2337,4732,4733],{"class":2339,"line":3693},[2337,4734,4119],{"class":2378},[2337,4736,4737,4739,4741,4743],{"class":2339,"line":3746},[2337,4738,4124],{"class":3592},[2337,4740,4127],{"class":2378},[2337,4742,4130],{"class":3592},[2337,4744,4133],{"class":2378},[2337,4746,4747,4749,4751,4753,4755],{"class":2339,"line":3760},[2337,4748,4139],{"class":2378},[2337,4750,4142],{"class":3979},[2337,4752,4145],{"class":2378},[2337,4754,4227],{"class":2347},[2337,4756,4488],{"class":2378},[2337,4758,4759],{"class":2339,"line":3136},[2337,4760,4165],{"class":2378},[2337,4762,4763],{"class":2339,"line":3784},[2337,4764,4119],{"class":2378},[2337,4766,4767,4769,4771,4773,4775,4777,4779],{"class":2339,"line":3793},[2337,4768,4006],{"class":3592},[2337,4770,4178],{"class":3488},[2337,4772,3924],{"class":3592},[2337,4774,4013],{"class":3592},[2337,4776,4185],{"class":2378},[2337,4778,4188],{"class":3979},[2337,4780,4191],{"class":2378},[2337,4782,4783],{"class":2339,"line":4136},[2337,4784,4785],{"class":2378},"        \n",[2337,4787,4788],{"class":2339,"line":4154},[2337,4789,4522],{"class":4521},[2337,4791,4792,4794,4797,4800,4802,4805,4808,4811,4813],{"class":2339,"line":4162},[2337,4793,3749],{"class":3592},[2337,4795,4796],{"class":2378}," result.results.",[2337,4798,4799],{"class":3979},"map",[2337,4801,4145],{"class":2378},[2337,4803,4804],{"class":2343},"row",[2337,4806,4807],{"class":3592}," =>",[2337,4809,4810],{"class":2378}," Object.",[2337,4812,4532],{"class":3979},[2337,4814,4815],{"class":2378},"(row));\n",[2337,4817,4818,4820,4822],{"class":2339,"line":4168},[2337,4819,4209],{"class":2378},[2337,4821,4212],{"class":3592},[2337,4823,4215],{"class":2378},[2337,4825,4826,4828,4830,4832,4834],{"class":2339,"line":4173},[2337,4827,4197],{"class":2378},[2337,4829,4142],{"class":3979},[2337,4831,4145],{"class":2378},[2337,4833,4227],{"class":2347},[2337,4835,4556],{"class":2378},[2337,4837,4838],{"class":2339,"line":4194},[2337,4839,4236],{"class":2378},[2337,4841,4842],{"class":2339,"line":4206},[2337,4843,4242],{"class":2378},[2337,4845,4846],{"class":2339,"line":4218},[2337,4847,3504],{"emptyLinePlaceholder":1627},[2337,4849,4850,4852,4854],{"class":2339,"line":4233},[2337,4851,4573],{"class":3592},[2337,4853,4387],{"class":3979},[2337,4855,4191],{"class":2378},[1640,4857,4858,4859,3610,4862,3610,4865,2068,4868,4871,4872,4875,4876,4878],{},"There are various different parameters that can be provided to Baserow to customise the data that you are retrieving, such as ",[1712,4860,4861],{},"page",[1712,4863,4864],{},"size",[1712,4866,4867],{},"search",[1712,4869,4870],{},"order_by",". We recommend reviewing their API documentation for more details: ",[1712,4873,4874],{},"https:\u002F\u002Fbaserow.io\u002Fapi-docs\u002Fdatabase\u002F\u003CTABLE_ID>",". All rows of data will be contained within the ",[1712,4877,4583],{}," data token within your automation to use in later steps.",[1561,4880,4280],{"id":4881},"triggering-an-axiomai-automation-using-baserow",[1640,4883,4884,4885,4888,4889,4892],{},"Baserow allows for webhooks to be triggered when an event occurs within your database table. This can be useful for notifying third-party applications of changes. Unfortunately, as axiom.ai requires specific details within the payload of a webhook request it is not currently possible to trigger your automations directly, but it may be possible to do so using a third party tool such as ",[1942,4886,783],{"href":4887},".\u002Fzapier"," or ",[1942,4890,763],{"href":4891},".\u002Fpost-data-to-make"," as a service layer between axiom.ai and Baserow.",[1561,4894,2386],{"id":2385},[1640,4896,4897,4898,2838],{},"To test adding data to Baserow, click \"Run\" within the Builder - open up your Baserow dashboard and open the table to view any changes. To test retrieving data from Baserow, add an output for your data, for example, a ",[1942,4899,4900],{"href":1214},"Write data to a Google Sheet",[1640,4902,4903],{},"To test triggering an axiom.ai automation from an event, perform the event that you have set up within your automation - for example, by inserting or updating data within your database.",[1640,4905,4906,4907,2068,4910,1668],{},"For further advice on debugging your automations, see ",[1942,4908,4909],{"href":1487},"How to debug",[1942,4911,1408],{"href":1409},[1561,4913,2406],{"id":2405},[1640,4915,4916,4917],{},"Combining Baserow and axiom.ai automations allows you to have a data store that is scalable to store your data - from scraping data, to keeping track of a list of contacts, the possibilities are only limited by your own imagination. We are excited to see what you build with this guide - let us know over in our ",[1942,4918,4921],{"href":4919,"rel":4920},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Faxiom_ai",[3850],"community",[1640,4923,4924],{},"Information correct as of 15th January 2025, changes to either platforms may require updates",[1640,4926,4927],{},[2417,4928,4929,4932,4933,4935],{},[4930,4931,1785],"sup",{}," Triggering your automations via webhook requires a paid subscription, see ",[1942,4934,1535],{"href":1534}," for more details.",[2421,4937,4938],{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}",{"title":1614,"searchDepth":1615,"depth":1615,"links":4940},[4941,4942,4947,4948,4949],{"id":2155,"depth":1618,"text":2156},{"id":3884,"depth":1618,"text":3885,"children":4943},[4944,4945,4946],{"id":3891,"depth":1615,"text":3892},{"id":4300,"depth":1615,"text":4301},{"id":4594,"depth":1615,"text":4595},{"id":4881,"depth":1618,"text":4280},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to automatically post to your Baserow account using an axiom.ai automation",{"type":1712,"format":1701,"intent_type":2128,"intent":2437,"tags":4952,"platfrom":4953},[2439,2440],[3851],"\u002Fguides\u002Fbaserow",{"title":3839,"description":4950},"guides\u002Fbaserow","-Fz_8RMg6DKzQOpXEctBkNifMNzq0v1CSC6yXsY-xR8",{"id":4959,"title":4960,"body":4961,"date":1628,"description":5611,"extension":1621,"meta":5612,"navigation":1627,"order":1628,"path":4991,"seo":5616,"stem":5617,"__hash__":5618},"guides\u002Fguides\u002Fblack-box.md","How to scrape Amazon product data from Black Box into a Google Sheet",{"type":1555,"value":4962,"toc":5603},[4963,4965,4973,4979,4982,4993,4996,4999,5019,5023,5038,5048,5419,5422,5428,5432,5446,5450,5452,5475,5479,5492,5532,5539,5545,5547,5560,5573,5589],[1566,4964],{},[1640,4966,4967,4968,4972],{},"Black Box, a tool from ",[1942,4969,4971],{"href":4970},"\u002Fautomate\u002Fhelium10-login","Helium10",", is a product research tool designed for Amazon sellers. It helps users find profitable products by filtering through millions of listings based on criteria like demand, competition, and sales volume.",[2202,4974],{"src":4975,"className":4976,"alt":4978},"\u002Fdocs\u002Fguides\u002Fblack-box-screen-shot.webp",[4977],"mb-3","Atuomate data entry into the Black box search field.",[1640,4980,4981],{},"In this guide, you'll learn how to use a bot to load the Black Box homepage, automate the input of search criteria, and click \"Search.\" The bot will then scrape the results and extract them into a Google Sheet.",[1640,4983,4984,4985,4888,4989,1668],{},"For this guide, we'll focus on Simple Search Mode, but the same principles apply to automating an Advanced Search. Check out our other Helium 10 guides if you're interested in automating ",[1942,4986,4988],{"href":4987},"\u002Fguides\u002Fcerebro","Cerebro",[1942,4990,4992],{"href":4991},"\u002Fguides\u002Fblack-box","BlackBox",[1561,4994,4995],{"id":2155},"Getting Started",[1640,4997,4998],{},"To begin, create a Google Sheet and add two tabs for search criteria and another to store the extracted data.",[2165,5000,5001,5007,5013],{},[1572,5002,5003,5006],{},[1653,5004,5005],{},"Create a new Google Sheet:"," If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.",[1572,5008,5009,5012],{},[1653,5010,5011],{},"Set up tab one:"," Enter your criteria into the first tab.",[1572,5014,5015,5018],{},[1653,5016,5017],{},"Set up tab two:"," Name the second tab \"Products\" and leave it blank.",[1561,5020,5022],{"id":5021},"how-to-automate-extracting-product-data-from-black-box","How to automate extracting product data from Black Box",[1640,5024,5025,5026,5029,5030,5033,5034,5037],{},"To start building your bot, open ",[1653,5027,5028],{},"axiom.ai"," and click ",[1653,5031,5032],{},"\"New automation\""," to use the no-code bot builder. Then, click ",[1653,5035,5036],{},"\"Add first step\""," and follow the guide.",[1640,5039,5040,5041,5044,5045],{},"Download the ",[1942,5042,2127],{"href":5043,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_black_box.json"," we created for this scraper. Click to learn how to ",[1942,5046,5047],{"href":849},"upload it.",[1701,5049,5050],{},[1569,5051,5052,5070,5347,5386],{},[1572,5053,5054,1710,5056,5058],{},[1653,5055,1709],{},[1712,5057,1714],{},[1569,5059,5060,5065],{},[1572,5061,5062,5064],{},[1712,5063,1721],{},": Search for and add the Google Sheet you created.",[1572,5066,5067,5069],{},[1712,5068,1727],{},": Choose the tab containing the search criteria.",[1572,5071,5072,1710,5074,5076,5088],{},[1653,5073,1733],{},[1712,5075,667],{},[1569,5077,5078],{},[1572,5079,5080,1752,5082,5084,5085,5087],{},[1712,5081,667],{},[1712,5083,1755],{}," and select ",[1712,5086,1759],{},". The loop step will now iterate through the search criteria in the Google Sheet.",[1569,5089,5090,5110,5146,5172,5198,5224,5251],{},[1572,5091,5092,1710,5094,5096],{},[1653,5093,1742],{},[1712,5095,1043],{},[1569,5097,5098],{},[1572,5099,5100,5102,5103,1668],{},[1712,5101,1751],{},": The URL will look something like this: ",[1653,5104,5105,5106,5105],{},"\"",[1942,5107,5108],{"href":5108,"rel":5109},"https:\u002F\u002Fmembers.helium10.com\u002Fblack-box\u002Fproducts?accountId=xxxxxxx",[3850],[1572,5111,5112,1710,5114,5116],{},[1653,5113,1765],{},[1712,5115,329],{},[1569,5117,5118,5129],{},[1572,5119,5120,1752,5122,5124,5125,5128],{},[1712,5121,1775],{},[1712,5123,1775],{},", then select the ",[1712,5126,5127],{},"Market place"," dropdown.",[1572,5130,5131,5133,5134,5136,5137,5140,5141,5145],{},[1712,5132,2563],{},": In the text field, click ",[1712,5135,1755],{}," and choose the Google Sheet data. In the data preview, select column ",[1712,5138,5139],{},"A"," with the marketplace value.\n",[2202,5142],{"src":5143,"alt":5144},"\u002Fdocs\u002Fguides\u002Fseelector-tool-black-box.webp","axiom.ai select data to insert into select list in Black Box","  \n",[1572,5147,5148,1710,5150,5152],{},[1653,5149,1790],{},[1712,5151,329],{},[1569,5153,5154,5163],{},[1572,5155,5156,1752,5158,5124,5160,5128],{},[1712,5157,1775],{},[1712,5159,1775],{},[1712,5161,5162],{},"Category",[1572,5164,5165,5133,5167,5136,5169,5171],{},[1712,5166,2563],{},[1712,5168,1755],{},[1712,5170,5139],{}," with the category value.",[1572,5173,5174,1710,5176,5178],{},[1653,5175,1833],{},[1712,5177,329],{},[1569,5179,5180,5189],{},[1572,5181,5182,1752,5184,5124,5186,5128],{},[1712,5183,1775],{},[1712,5185,1775],{},[1712,5187,5188],{},"Improvement range",[1572,5190,5191,5133,5193,5136,5195,5197],{},[1712,5192,2563],{},[1712,5194,1755],{},[1712,5196,5139],{}," with the improvement range value.",[1572,5199,5200,1710,5202,5204],{},[1653,5201,1861],{},[1712,5203,329],{},[1569,5205,5206,5215],{},[1572,5207,5208,1752,5210,5124,5212,5128],{},[1712,5209,1775],{},[1712,5211,1775],{},[1712,5213,5214],{},"Price range",[1572,5216,5217,5133,5219,5136,5221,5223],{},[1712,5218,2563],{},[1712,5220,1755],{},[1712,5222,5139],{}," with the price range value.",[1572,5225,5226,1710,5228,5231],{},[1653,5227,1898],{},[1712,5229,5230],{},"Click element",[1569,5232,5233],{},[1572,5234,5235,1752,5237,5239,5240,5243,5244,5247,5248,1668],{},[1712,5236,1775],{},[1712,5238,1775],{},", then click on ",[1712,5241,5242],{},"Custom"," and tick ",[1712,5245,5246],{},"Use element text",". Finally, click ",[1712,5249,5250],{},"Complete",[1572,5252,5253,1710,5255,5257],{},[1653,5254,2812],{},[1712,5256,1768],{},[1569,5258,5259,5266,5284,5295,5302,5327,5333,5340],{},[1572,5260,5261,1752,5263,5265],{},[1712,5262,1775],{},[1712,5264,1775],{}," to open the multi-selector tool.",[1572,5267,5268,5269,5271,5272,5275,5276,5279,5280,5145],{},"In column ",[1712,5270,5139],{},", click the arrow, then click ",[1712,5273,5274],{},"Select link",". On the Black Box page, click the image in the ",[1712,5277,5278],{},"Product"," column, then repeat in the row below.\n",[2202,5281],{"src":5282,"alt":5283},"\u002Fdocs\u002Fguides\u002Fselect-data-black-box.webp","axiom.ai selecting data to scrape from Black Box",[1572,5285,5286,5287,5290,5291,5294],{},"Press ",[1712,5288,5289],{},"Shift + N"," to add a new column. On the page, select the ",[1712,5292,5293],{},"Product title"," in one row, then repeat in the next.",[1572,5296,5297,5298,5301],{},"Add another column. On the page, select the ",[1712,5299,5300],{},"BSR",", selecting the number in one row, then repeat in the next.",[1572,5303,5304,5305,5308,5309,5311,5312,5315,5316,5319,5320,5322,5323,5145],{},"To extract the ",[1712,5306,5307],{},"Price",", press ",[1712,5310,5289],{}," to add a new column. Then, in the new column, click the arrow and select ",[1712,5313,5314],{},"Custom Selector",", insert ",[1712,5317,5318],{},"[data-testid=\"table-cell-price\"]",", then press ",[1712,5321,5250],{},".\n",[2202,5324],{"src":5325,"alt":5326},"\u002Fdocs\u002Fguides\u002Fcustom-selector-black-box.webp","axiom.ai using a custom selector",[1572,5328,5329,5330,5294],{},"Add one more column. On the page, select the ",[1712,5331,5332],{},"Brand",[1572,5334,5335,5336,5339],{},"Select the ",[1712,5337,5338],{},"Next"," button for pagination using the right arrow key.",[1572,5341,5342,5343,5346],{},"Set a maximum number of results you wish to scrape. I chose ",[1712,5344,5345],{},"100"," when making this bot.",[1572,5348,5349,1710,5352,5354],{},[1653,5350,5351],{},"3.0",[1712,5353,4900],{},[1569,5355,5356,5361,5367,5377],{},[1572,5357,5358,5360],{},[1712,5359,1721],{},": Select your Google Sheet.",[1572,5362,5363,5366],{},[1712,5364,5365],{},"Sheet Name",": Choose the tab where you want to write the Amazon product data.",[1572,5368,5369,1752,5371,5373,5374,1668],{},[1712,5370,2083],{},[1712,5372,1755],{}," and choose ",[1712,5375,5376],{},"scraped-data-",[1572,5378,5379,1881,5382,5385],{},[1712,5380,5381],{},"Write Options",[1712,5383,5384],{},"Add to Existing Data"," to append new data without deleting existing data.",[1572,5387,5388,1710,5391,5393],{},[1653,5389,5390],{},"4.0",[1712,5392,1901],{},[1569,5394,5395,5399,5403,5411],{},[1572,5396,5397,5360],{},[1712,5398,1721],{},[1572,5400,5401,5069],{},[1712,5402,5365],{},[1572,5404,5405,5408,5409,1668],{},[1712,5406,5407],{},"First Row to Delete",": Leave this set to ",[1712,5410,1785],{},[1572,5412,5413,1782,5416,1668],{},[1712,5414,5415],{},"Last Row to Delete",[1712,5417,5418],{},"10",[1640,5420,5421],{},"The Black Box automation, when completed, should resemble the diagram below.",[2202,5423],{"src":5424,"className":5425,"alt":5427},"\u002Fdocs\u002Fguides\u002Fblack-box-axiom-ai-steps.webp",[5426],"mt-4","axiom.ai design pattern for building a bot to automate data extraction from helium10 tool black box",[1561,5429,5431],{"id":5430},"testing-your-black-box-automation","Testing your Black Box automation",[1640,5433,5434,5435,5438,5439,5442,5443,5445],{},"Once you have saved your ",[1653,5436,5437],{},"Helium 10 Black Box"," automation, click ",[1653,5440,5441],{},"\"Run\""," within the ",[1653,5444,5028],{}," extension to start extracting Amazon product data.",[2202,5447],{"src":5448,"alt":5449},"\u002Fdocs\u002Fguides\u002Fdata-google-sheet-black-box.WebP","axiom.ai data scraped into a Google Sheet",[1561,5451,1398],{"id":1949},[1701,5453,5454],{},[1569,5455,5456,5464],{},[1572,5457,5458,5461,5463],{},[1653,5459,5460],{},"Elements not found?",[1963,5462],{},"\nIf elements are not being clicked, try reselecting them. Changing marketplaces can affect selectors.",[1572,5465,5466,5469,1965,5471,5474],{},[1653,5467,5468],{},"Keyword data not loading in time?",[1963,5470],{},[1712,5472,5473],{},"Step 8",", adjust the wait time. The Cerebro tool can sometimes be slow to load data.",[1561,5476,5478],{"id":5477},"try-out-the-template","Try out the template",[1640,5480,5481,5482,5484,5485,5488,5489,5491],{},"While creating this guide and testing ",[1653,5483,5028],{}," on ",[1653,5486,5487],{},"Helium 10",", we also built a ",[1653,5490,2127],{},". If you choose to use the template, you will need to do the following:",[1701,5493,5494],{},[2165,5495,5496,5505,5515,5524],{},[1572,5497,5498,5501,5502,1668],{},[1653,5499,5500],{},"Step 1:"," Add your own ",[1653,5503,5504],{},"Google Sheet",[1572,5506,5507,5510,5511,5514],{},[1653,5508,5509],{},"Step 2.1:"," Add the ",[1653,5512,5513],{},"URL"," to the Black Box page while logged in.",[1572,5516,5517,5520,5521,5523],{},[1653,5518,5519],{},"Step 2.7:"," Select the ",[1653,5522,3444],{}," you wish to scrape.",[1572,5525,5526,5529,5530,1668],{},[1653,5527,5528],{},"Steps 2.8 and 2.9:"," Add your ",[1653,5531,5504],{},[1640,5533,5534,5535,5538],{},"Please note that this template is a ",[1653,5536,5537],{},"starting point",", and you may need to customize it.",[1640,5540,5541,5542,1668],{},"Click to download the ",[1942,5543,5544],{"href":5043,"download":1627},"Black Box template",[1561,5546,2406],{"id":2405},[1640,5548,5549,5550,5553,5554,5556,5557,5559],{},"Extracting product data from ",[1653,5551,5552],{},"Black Box"," is straightforward. You can simply point and select the data you want to extract. Some fields, like ",[1653,5555,5307],{},", may require a ",[1653,5558,1999],{},", but it’s easy to set up.",[1640,5561,5562,5563,5566,5567,5570,5571,5523],{},"You can fully customize this ",[1653,5564,5565],{},"automation"," by adding the ",[1653,5568,5569],{},"search criteria"," you want and selecting the ",[1653,5572,3444],{},[1640,5574,5575,5576,5579,5580,5582,5583,1668],{},"The same methods also apply to ",[1653,5577,5578],{},"Advanced Search Mode",". If you need help automating ",[1653,5581,5487],{},", reach out to ",[1653,5584,5585],{},[1942,5586,5588],{"href":5587},"mailto:support@axiom.ai","support@axiom.ai",[1640,5590,5591],{},[2417,5592,5593,5594,5597,5598,4888,5600,5602],{},"Testing was completed on ",[1653,5595,5596],{},"January 29, 2025",". Features in ",[1653,5599,5487],{},[1653,5601,5028],{}," may change over time, and updates may be needed.",{"title":1614,"searchDepth":1615,"depth":1615,"links":5604},[5605,5606,5607,5608,5609,5610],{"id":2155,"depth":1618,"text":4995},{"id":5021,"depth":1618,"text":5022},{"id":5430,"depth":1618,"text":5431},{"id":1949,"depth":1618,"text":1398},{"id":5477,"depth":1618,"text":5478},{"id":2405,"depth":1618,"text":2406},"Learn how to use axiom.ai to automate the extraction of product listings from Black Box, a Helium 10 tool. You will automate data entry by inputting criteria into the search fields, trigger the search automatically, and write the extracted data into a Google Sheet.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2658,"intent":5613,"tags":5614,"platfrom":5615},"Extract data from websites",[2132,2665],[4971],{"title":4960,"description":5611},"guides\u002Fblack-box","AU_jBQq4FGoewRk0pdEfMaJX5Ns7uG8_lA0nhZAhrjE",{"id":5620,"title":5621,"body":5622,"date":1628,"description":6497,"extension":1621,"meta":6498,"navigation":1627,"order":1628,"path":6502,"seo":6503,"stem":6504,"__hash__":6505},"guides\u002Fguides\u002Fbluesky.md","How to post to Bluesky using an axiom.ai automation",{"type":1555,"value":5623,"toc":6486},[5624,5626,5629,5632,5634,5643,5659,5665,5669,5681,5685,5695,5719,5736,5860,5863,5867,5875,5923,5930,5941,6061,6064,6088,6092,6105,6121,6125,6128,6467,6469,6476,6478,6483],[1566,5625],{},[1640,5627,5628],{},"Automating the creation of new posts to Bluesky can offer your brand an opportunity to get their voice out into a new environment quickly. This allows you to build automations that can use data to create your posts. Combine this with bots that scrape data from websites, or read data from Google Sheets and you have a powerful automation. Even better? Combine it with a schedule.",[1640,5630,5631],{},"We recommend having a bit of experience with JavaScript before attempting this guide - our support team will be unable to assist with issues related to this code, or any modifications of it.",[1561,5633,2156],{"id":2155},[1640,5635,5636,5637,5642],{},"A Bluesky account is required to post on Bluesky, head to ",[1942,5638,5641],{"href":5639,"rel":5640},"https:\u002F\u002Fbsky.app",[3850],"bsky.app"," to get started.",[1701,5644,5645],{},[2165,5646,5647,5653],{},[1572,5648,5649,5652],{},[1653,5650,5651],{},"Username"," - Your username can be found on your Bluesky profile.",[1572,5654,5655,5658],{},[1653,5656,5657],{},"App password"," - To generate an app password head into Bluesky → Settings → Privacy and security → App passwords → \"Add App Password\". Store this for later - you won't be able to access it again.",[1640,5660,5661,5662,1668],{},"To learn more about managing login credentials within your automations, see ",[1942,5663,5664],{"href":638},"Logins",[1561,5666,5668],{"id":5667},"creating-a-new-bluesky-post-using-an-axiomai-automation","Creating a new Bluesky post using an axiom.ai automation",[1640,5670,5671,5672,5675,5676,5680],{},"To get started, create your automation as normal. Once you are ready to create your Bluesky post, continue with this guide. We'll show you how to use your automation data to create dynamic content. All of the code below is part of a single script which has been broken down to make it easier to follow and understand, these parts should all be combined into a single script within a single ",[1942,5673,5674],{"href":1226},"Write JavaScript"," step, see ",[1942,5677,5679],{"href":5678},"#full-script","full script"," for the whole script.",[2249,5682,5684],{"id":5683},"step-1-creating-an-authorisation-session","Step 1: Creating an authorisation session",[1640,5686,5687,5688,2068,5691,5694],{},"Authorising your account is the first step to automating posting on Bluesky. To do this, you will need your ",[1712,5689,5690],{},"username",[1712,5692,5693],{},"app password"," to get started. To begin, create an object containing your credentials:",[2329,5696,5698],{"className":2366,"code":5697,"language":2368,"meta":1614,"style":1614},"const authorisationData = {\n    \"identifier\": \"\u003CUSERNAME>.bsky.social\",\n    \"password\": \"\u003CAPP_PASSWORD>\"\n}\n",[1712,5699,5700,5705,5710,5715],{"__ignoreMap":1614},[2337,5701,5702],{"class":2339,"line":2340},[2337,5703,5704],{},"const authorisationData = {\n",[2337,5706,5707],{"class":2339,"line":1618},[2337,5708,5709],{},"    \"identifier\": \"\u003CUSERNAME>.bsky.social\",\n",[2337,5711,5712],{"class":2339,"line":1615},[2337,5713,5714],{},"    \"password\": \"\u003CAPP_PASSWORD>\"\n",[2337,5716,5717],{"class":2339,"line":3501},[2337,5718,4242],{},[1640,5720,5721,5722,5724,5725,2068,5728,5731,5732,5735],{},"Now that you have this, we can create a method to send a ",[1712,5723,2237],{}," request to Bluesky to authorise your account. We'll also be creating the ",[1712,5726,5727],{},"accessJwt",[1712,5729,5730],{},"did"," variables to hold the two pieces of data we need from the response. We will be sending this request to the ",[1712,5733,5734],{},"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession"," endpoint.",[2329,5737,5739],{"className":2366,"code":5738,"language":2368,"meta":1614,"style":1614},"var accessJwt;\nvar did;\n\nconst authorise = async () => {\n    try {\n        \u002F\u002F Create a POST request and send along your credentials from the `authorisationData` variable\n        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession\", {\n            method: \"POST,\n            headers: { \"Content-Type\": \"application\u002Fjson\" },\n            body: JSON.stringify(authorisationData)\n        })\n\n        \u002F\u002F Something went wrong with the request, double check your credentials and the URL used above\n        if (!response.ok) throw new Error(`Something went wrong: ${response.status}`);\n\n        \u002F\u002F Parse the response\n        const result = await response.json();\n\n        \u002F\u002F Access the information in the `results` variable for later use\n        accessJwt = result.accessJwt;\n        did = result.did;\n    } catch (error) {\n        throw error;\n    }\n}\n",[1712,5740,5741,5746,5751,5755,5760,5765,5770,5775,5780,5785,5790,5795,5799,5804,5809,5813,5818,5823,5827,5832,5837,5842,5847,5852,5856],{"__ignoreMap":1614},[2337,5742,5743],{"class":2339,"line":2340},[2337,5744,5745],{},"var accessJwt;\n",[2337,5747,5748],{"class":2339,"line":1618},[2337,5749,5750],{},"var did;\n",[2337,5752,5753],{"class":2339,"line":1615},[2337,5754,3504],{"emptyLinePlaceholder":1627},[2337,5756,5757],{"class":2339,"line":3501},[2337,5758,5759],{},"const authorise = async () => {\n",[2337,5761,5762],{"class":2339,"line":3507},[2337,5763,5764],{},"    try {\n",[2337,5766,5767],{"class":2339,"line":3579},[2337,5768,5769],{},"        \u002F\u002F Create a POST request and send along your credentials from the `authorisationData` variable\n",[2337,5771,5772],{"class":2339,"line":3658},[2337,5773,5774],{},"        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession\", {\n",[2337,5776,5777],{"class":2339,"line":3664},[2337,5778,5779],{},"            method: \"POST,\n",[2337,5781,5782],{"class":2339,"line":3670},[2337,5783,5784],{},"            headers: { \"Content-Type\": \"application\u002Fjson\" },\n",[2337,5786,5787],{"class":2339,"line":3693},[2337,5788,5789],{},"            body: JSON.stringify(authorisationData)\n",[2337,5791,5792],{"class":2339,"line":3746},[2337,5793,5794],{},"        })\n",[2337,5796,5797],{"class":2339,"line":3760},[2337,5798,3504],{"emptyLinePlaceholder":1627},[2337,5800,5801],{"class":2339,"line":3136},[2337,5802,5803],{},"        \u002F\u002F Something went wrong with the request, double check your credentials and the URL used above\n",[2337,5805,5806],{"class":2339,"line":3784},[2337,5807,5808],{},"        if (!response.ok) throw new Error(`Something went wrong: ${response.status}`);\n",[2337,5810,5811],{"class":2339,"line":3793},[2337,5812,3504],{"emptyLinePlaceholder":1627},[2337,5814,5815],{"class":2339,"line":4136},[2337,5816,5817],{},"        \u002F\u002F Parse the response\n",[2337,5819,5820],{"class":2339,"line":4154},[2337,5821,5822],{},"        const result = await response.json();\n",[2337,5824,5825],{"class":2339,"line":4162},[2337,5826,3504],{"emptyLinePlaceholder":1627},[2337,5828,5829],{"class":2339,"line":4168},[2337,5830,5831],{},"        \u002F\u002F Access the information in the `results` variable for later use\n",[2337,5833,5834],{"class":2339,"line":4173},[2337,5835,5836],{},"        accessJwt = result.accessJwt;\n",[2337,5838,5839],{"class":2339,"line":4194},[2337,5840,5841],{},"        did = result.did;\n",[2337,5843,5844],{"class":2339,"line":4206},[2337,5845,5846],{},"    } catch (error) {\n",[2337,5848,5849],{"class":2339,"line":4218},[2337,5850,5851],{},"        throw error;\n",[2337,5853,5854],{"class":2339,"line":4233},[2337,5855,4236],{},[2337,5857,5858],{"class":2339,"line":4239},[2337,5859,4242],{},[1640,5861,5862],{},"If all goes well, you'll now be authorised to continue with your script and create new posts on Bluesky.",[2249,5864,5866],{"id":5865},"step-2-create-a-new-post","Step 2: Create a new post",[1640,5868,5869,5870,2068,5872,5874],{},"To create a new post, ensure that you have completed the step above - without completing this step you will not be authorised to post to your Bluesky account. To create a new post, we first need to construct the body of the request that is to be sent to their API. This will use the data that you stored in the ",[1712,5871,5727],{},[1712,5873,5730],{}," variables previously.",[2329,5876,5878],{"className":2366,"code":5877,"language":2368,"meta":1614,"style":1614},"const data = {\n    \"repo\": did,\n    \"collection\": \"app.bsky.feed.post\",\n    \"record\": {\n        \"$type\": \"app.bsky.feed.post\",\n        \"text\": \"[custom-data]\",\n        \"createdAt\": `${new Date().toISOString()}`\n    }\n}\n",[1712,5879,5880,5885,5890,5895,5900,5905,5910,5915,5919],{"__ignoreMap":1614},[2337,5881,5882],{"class":2339,"line":2340},[2337,5883,5884],{},"const data = {\n",[2337,5886,5887],{"class":2339,"line":1618},[2337,5888,5889],{},"    \"repo\": did,\n",[2337,5891,5892],{"class":2339,"line":1615},[2337,5893,5894],{},"    \"collection\": \"app.bsky.feed.post\",\n",[2337,5896,5897],{"class":2339,"line":3501},[2337,5898,5899],{},"    \"record\": {\n",[2337,5901,5902],{"class":2339,"line":3507},[2337,5903,5904],{},"        \"$type\": \"app.bsky.feed.post\",\n",[2337,5906,5907],{"class":2339,"line":3579},[2337,5908,5909],{},"        \"text\": \"[custom-data]\",\n",[2337,5911,5912],{"class":2339,"line":3658},[2337,5913,5914],{},"        \"createdAt\": `${new Date().toISOString()}`\n",[2337,5916,5917],{"class":2339,"line":3664},[2337,5918,4236],{},[2337,5920,5921],{"class":2339,"line":3670},[2337,5922,4242],{},[1640,5924,5925,5926,5929],{},"You'll notice in the line ",[1712,5927,5928],{},"\"text\": \"[custom-data]\""," we used an axiom.ai data token - use the \"Insert data\" option to insert data from your automation into your \"text\" field to create dynamic posts that make use of your automation data.",[1640,5931,5932,5933,5936,5937,5940],{},"Next, we will want to create the post itself. We will be using the ",[1712,5934,5935],{},"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord"," endpoint. We'll also be creating a variable called ",[1712,5938,5939],{},"status"," to store the status of the response.",[2329,5942,5944],{"className":2366,"code":5943,"language":2368,"meta":1614,"style":1614},"var status;\n\nconst createPost = async () => {\n    \u002F\u002F Throw an error if there is no access token\n    if (!accessJwt) throw new Error(\"Access token missing\");\n\n    try {\n        \u002F\u002F Create a POST request, using the `accessJwt` variable for authorisation, and the `createPostObject()` function to create your data\n        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord\", {\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application\u002Fjson\",\n                \"Authorization\": `Bearer ${accessJwt}`\n            },\n            body: JSON.stringify(data)\n        })\n\n        \u002F\u002F Parse the response\n        const result = await response.json();\n\n        \u002F\u002F Access the information in the `results` variable for later use\n        status = result.validationStatus;\n    } catch (error) {\n        throw error;\n    }\n}\n",[1712,5945,5946,5951,5955,5960,5965,5970,5974,5978,5983,5988,5993,5997,6002,6007,6011,6016,6020,6024,6028,6032,6036,6040,6045,6049,6053,6057],{"__ignoreMap":1614},[2337,5947,5948],{"class":2339,"line":2340},[2337,5949,5950],{},"var status;\n",[2337,5952,5953],{"class":2339,"line":1618},[2337,5954,3504],{"emptyLinePlaceholder":1627},[2337,5956,5957],{"class":2339,"line":1615},[2337,5958,5959],{},"const createPost = async () => {\n",[2337,5961,5962],{"class":2339,"line":3501},[2337,5963,5964],{},"    \u002F\u002F Throw an error if there is no access token\n",[2337,5966,5967],{"class":2339,"line":3507},[2337,5968,5969],{},"    if (!accessJwt) throw new Error(\"Access token missing\");\n",[2337,5971,5972],{"class":2339,"line":3579},[2337,5973,3504],{"emptyLinePlaceholder":1627},[2337,5975,5976],{"class":2339,"line":3658},[2337,5977,5764],{},[2337,5979,5980],{"class":2339,"line":3664},[2337,5981,5982],{},"        \u002F\u002F Create a POST request, using the `accessJwt` variable for authorisation, and the `createPostObject()` function to create your data\n",[2337,5984,5985],{"class":2339,"line":3670},[2337,5986,5987],{},"        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord\", {\n",[2337,5989,5990],{"class":2339,"line":3693},[2337,5991,5992],{},"            method: \"POST\",\n",[2337,5994,5995],{"class":2339,"line":3746},[2337,5996,4035],{},[2337,5998,5999],{"class":2339,"line":3760},[2337,6000,6001],{},"                \"Content-Type\": \"application\u002Fjson\",\n",[2337,6003,6004],{"class":2339,"line":3136},[2337,6005,6006],{},"                \"Authorization\": `Bearer ${accessJwt}`\n",[2337,6008,6009],{"class":2339,"line":3784},[2337,6010,4068],{},[2337,6012,6013],{"class":2339,"line":3793},[2337,6014,6015],{},"            body: JSON.stringify(data)\n",[2337,6017,6018],{"class":2339,"line":4136},[2337,6019,5794],{},[2337,6021,6022],{"class":2339,"line":4154},[2337,6023,3504],{"emptyLinePlaceholder":1627},[2337,6025,6026],{"class":2339,"line":4162},[2337,6027,5817],{},[2337,6029,6030],{"class":2339,"line":4168},[2337,6031,5822],{},[2337,6033,6034],{"class":2339,"line":4173},[2337,6035,3504],{"emptyLinePlaceholder":1627},[2337,6037,6038],{"class":2339,"line":4194},[2337,6039,5831],{},[2337,6041,6042],{"class":2339,"line":4206},[2337,6043,6044],{},"        status = result.validationStatus;\n",[2337,6046,6047],{"class":2339,"line":4218},[2337,6048,5846],{},[2337,6050,6051],{"class":2339,"line":4233},[2337,6052,5851],{},[2337,6054,6055],{"class":2339,"line":4239},[2337,6056,4236],{},[2337,6058,6059],{"class":2339,"line":4245},[2337,6060,4242],{},[1640,6062,6063],{},"Finally, we are going to want to call these functions and return a response to be handled in step 3.",[2329,6065,6067],{"className":2366,"code":6066,"language":2368,"meta":1614,"style":1614},"await authorise();\nawait createPost();\n\nreturn status;\n",[1712,6068,6069,6074,6079,6083],{"__ignoreMap":1614},[2337,6070,6071],{"class":2339,"line":2340},[2337,6072,6073],{},"await authorise();\n",[2337,6075,6076],{"class":2339,"line":1618},[2337,6077,6078],{},"await createPost();\n",[2337,6080,6081],{"class":2339,"line":1615},[2337,6082,3504],{"emptyLinePlaceholder":1627},[2337,6084,6085],{"class":2339,"line":3501},[2337,6086,6087],{},"return status;\n",[2249,6089,6091],{"id":6090},"step-3-handling-the-response","Step 3: Handling the response",[1640,6093,6094,6095,6097,6098,6101,6102,6104],{},"Now that your post has been posted, we can make use of your data. If all has gone well, the ",[1712,6096,5939],{}," variable that has been returned will contain a string ",[1712,6099,6100],{},"valid",". This will be stored in the ",[1712,6103,4583],{}," data token that is output from the 'Write Javascript' step. You can use this in various steps to make a dynamic automation, such as:",[1569,6106,6107,6112,6117],{},[1572,6108,6109,2838],{},[1942,6110,6111],{"href":1052},"If\u002Felse",[1572,6113,6114,2838],{},[1942,6115,6116],{"href":944},"Continue only if a condition is met",[1572,6118,6119,2838],{},[1942,6120,939],{"href":940},[2249,6122,6124],{"id":6123},"full-script","Full script",[1640,6126,6127],{},"As previously mentioned, this script should be contained inside a single \"Write Javascript\" step. Find the full script below:",[2329,6129,6131],{"className":2366,"code":6130,"language":2368,"meta":1614,"style":1614},"const authorisationData = {\n    \"identifier\": \"\u003CUSERNAME>\",\n    \"password\": \"\u003CAPP_PASSWORD>\"\n}\n\nvar accessJwt;\nvar did;\n\nconst authorise = async () => {\n    try {\n        \u002F\u002F Create a POST request and send along your credentials from the `authorisationData` variable\n        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession\", {\n            method: \"POST,\n            headers: { \"Content-Type\": \"application\u002Fjson\" },\n            body: JSON.stringify(authorisationData)\n        })\n\n        \u002F\u002F Something went wrong with the request, double check your credentials and the URL used above\n        if (!response.ok) throw new Error(`Something went wrong: ${response.status}`);\n\n        \u002F\u002F Parse the response\n        const result = await response.json();\n\n        \u002F\u002F Access the information in the `results` variable for later use\n        accessJwt = result.accessJwt;\n        did = result.did;\n    } catch (error) {\n        throw error;\n    }\n}\n\nconst data = {\n    \"repo\": did,\n    \"collection\": \"app.bsky.feed.post\",\n    \"record\": {\n    \"$type\": \"app.bsky.feed.post\",\n    \"text\": \"[custom-data]\",\n    \"createdAt\": `${new Date().toISOString()}`\n    }\n}\n\nvar status;\n\nconst createPost = async () => {\n    \u002F\u002F Throw an error if there is no access token\n    if (!accessJwt) throw new Error(\"Access token missing\");\n\n    try {\n        \u002F\u002F Create a POST request, using the `accessJwt` variable for authorisation, and the `createPostObject()` function to create your data\n        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord\", {\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application\u002Fjson\",\n                \"Authorization\": `Bearer ${accessJwt}`\n            },\n            body: JSON.stringify(data)\n        })\n\n        \u002F\u002F Parse the response\n        const result = await response.json();\n\n        \u002F\u002F Access the information in the `results` variable for later use\n        status = result.validationStatus;\n    } catch (error) {\n        throw new Error(`Something wrong wrong: ${error}`)\n    }\n}\n\nawait authorise();\nawait createPost();\n\nreturn status;\n",[1712,6132,6133,6137,6142,6146,6150,6154,6158,6162,6166,6170,6174,6178,6182,6186,6190,6194,6198,6202,6206,6210,6214,6218,6222,6226,6230,6234,6238,6242,6247,6252,6256,6261,6266,6271,6276,6281,6287,6293,6299,6304,6309,6314,6319,6324,6329,6334,6339,6344,6348,6353,6358,6363,6368,6373,6378,6382,6386,6391,6396,6401,6406,6411,6416,6421,6426,6432,6437,6442,6447,6452,6457,6462],{"__ignoreMap":1614},[2337,6134,6135],{"class":2339,"line":2340},[2337,6136,5704],{},[2337,6138,6139],{"class":2339,"line":1618},[2337,6140,6141],{},"    \"identifier\": \"\u003CUSERNAME>\",\n",[2337,6143,6144],{"class":2339,"line":1615},[2337,6145,5714],{},[2337,6147,6148],{"class":2339,"line":3501},[2337,6149,4242],{},[2337,6151,6152],{"class":2339,"line":3507},[2337,6153,3504],{"emptyLinePlaceholder":1627},[2337,6155,6156],{"class":2339,"line":3579},[2337,6157,5745],{},[2337,6159,6160],{"class":2339,"line":3658},[2337,6161,5750],{},[2337,6163,6164],{"class":2339,"line":3664},[2337,6165,3504],{"emptyLinePlaceholder":1627},[2337,6167,6168],{"class":2339,"line":3670},[2337,6169,5759],{},[2337,6171,6172],{"class":2339,"line":3693},[2337,6173,5764],{},[2337,6175,6176],{"class":2339,"line":3746},[2337,6177,5769],{},[2337,6179,6180],{"class":2339,"line":3760},[2337,6181,5774],{},[2337,6183,6184],{"class":2339,"line":3136},[2337,6185,5779],{},[2337,6187,6188],{"class":2339,"line":3784},[2337,6189,5784],{},[2337,6191,6192],{"class":2339,"line":3793},[2337,6193,5789],{},[2337,6195,6196],{"class":2339,"line":4136},[2337,6197,5794],{},[2337,6199,6200],{"class":2339,"line":4154},[2337,6201,3504],{"emptyLinePlaceholder":1627},[2337,6203,6204],{"class":2339,"line":4162},[2337,6205,5803],{},[2337,6207,6208],{"class":2339,"line":4168},[2337,6209,5808],{},[2337,6211,6212],{"class":2339,"line":4173},[2337,6213,3504],{"emptyLinePlaceholder":1627},[2337,6215,6216],{"class":2339,"line":4194},[2337,6217,5817],{},[2337,6219,6220],{"class":2339,"line":4206},[2337,6221,5822],{},[2337,6223,6224],{"class":2339,"line":4218},[2337,6225,3504],{"emptyLinePlaceholder":1627},[2337,6227,6228],{"class":2339,"line":4233},[2337,6229,5831],{},[2337,6231,6232],{"class":2339,"line":4239},[2337,6233,5836],{},[2337,6235,6236],{"class":2339,"line":4245},[2337,6237,5841],{},[2337,6239,6240],{"class":2339,"line":4250},[2337,6241,5846],{},[2337,6243,6245],{"class":2339,"line":6244},28,[2337,6246,5851],{},[2337,6248,6250],{"class":2339,"line":6249},29,[2337,6251,4236],{},[2337,6253,6254],{"class":2339,"line":2923},[2337,6255,4242],{},[2337,6257,6259],{"class":2339,"line":6258},31,[2337,6260,3504],{"emptyLinePlaceholder":1627},[2337,6262,6264],{"class":2339,"line":6263},32,[2337,6265,5884],{},[2337,6267,6269],{"class":2339,"line":6268},33,[2337,6270,5889],{},[2337,6272,6274],{"class":2339,"line":6273},34,[2337,6275,5894],{},[2337,6277,6279],{"class":2339,"line":6278},35,[2337,6280,5899],{},[2337,6282,6284],{"class":2339,"line":6283},36,[2337,6285,6286],{},"    \"$type\": \"app.bsky.feed.post\",\n",[2337,6288,6290],{"class":2339,"line":6289},37,[2337,6291,6292],{},"    \"text\": \"[custom-data]\",\n",[2337,6294,6296],{"class":2339,"line":6295},38,[2337,6297,6298],{},"    \"createdAt\": `${new Date().toISOString()}`\n",[2337,6300,6302],{"class":2339,"line":6301},39,[2337,6303,4236],{},[2337,6305,6307],{"class":2339,"line":6306},40,[2337,6308,4242],{},[2337,6310,6312],{"class":2339,"line":6311},41,[2337,6313,3504],{"emptyLinePlaceholder":1627},[2337,6315,6317],{"class":2339,"line":6316},42,[2337,6318,5950],{},[2337,6320,6322],{"class":2339,"line":6321},43,[2337,6323,3504],{"emptyLinePlaceholder":1627},[2337,6325,6327],{"class":2339,"line":6326},44,[2337,6328,5959],{},[2337,6330,6332],{"class":2339,"line":6331},45,[2337,6333,5964],{},[2337,6335,6337],{"class":2339,"line":6336},46,[2337,6338,5969],{},[2337,6340,6342],{"class":2339,"line":6341},47,[2337,6343,3504],{"emptyLinePlaceholder":1627},[2337,6345,6346],{"class":2339,"line":3359},[2337,6347,5764],{},[2337,6349,6351],{"class":2339,"line":6350},49,[2337,6352,5982],{},[2337,6354,6356],{"class":2339,"line":6355},50,[2337,6357,5987],{},[2337,6359,6361],{"class":2339,"line":6360},51,[2337,6362,5992],{},[2337,6364,6366],{"class":2339,"line":6365},52,[2337,6367,4035],{},[2337,6369,6371],{"class":2339,"line":6370},53,[2337,6372,6001],{},[2337,6374,6376],{"class":2339,"line":6375},54,[2337,6377,6006],{},[2337,6379,6380],{"class":2339,"line":2657},[2337,6381,4068],{},[2337,6383,6384],{"class":2339,"line":2125},[2337,6385,6015],{},[2337,6387,6389],{"class":2339,"line":6388},57,[2337,6390,5794],{},[2337,6392,6394],{"class":2339,"line":6393},58,[2337,6395,3504],{"emptyLinePlaceholder":1627},[2337,6397,6399],{"class":2339,"line":6398},59,[2337,6400,5817],{},[2337,6402,6404],{"class":2339,"line":6403},60,[2337,6405,5822],{},[2337,6407,6409],{"class":2339,"line":6408},61,[2337,6410,3504],{"emptyLinePlaceholder":1627},[2337,6412,6414],{"class":2339,"line":6413},62,[2337,6415,5831],{},[2337,6417,6419],{"class":2339,"line":6418},63,[2337,6420,6044],{},[2337,6422,6424],{"class":2339,"line":6423},64,[2337,6425,5846],{},[2337,6427,6429],{"class":2339,"line":6428},65,[2337,6430,6431],{},"        throw new Error(`Something wrong wrong: ${error}`)\n",[2337,6433,6435],{"class":2339,"line":6434},66,[2337,6436,4236],{},[2337,6438,6440],{"class":2339,"line":6439},67,[2337,6441,4242],{},[2337,6443,6445],{"class":2339,"line":6444},68,[2337,6446,3504],{"emptyLinePlaceholder":1627},[2337,6448,6450],{"class":2339,"line":6449},69,[2337,6451,6073],{},[2337,6453,6455],{"class":2339,"line":6454},70,[2337,6456,6078],{},[2337,6458,6460],{"class":2339,"line":6459},71,[2337,6461,3504],{"emptyLinePlaceholder":1627},[2337,6463,6465],{"class":2339,"line":6464},72,[2337,6466,6087],{},[1561,6468,2386],{"id":2385},[1640,6470,6471,6472,6475],{},"Once you have the script in place, hit \"Run\". If there are any errors, follow the instructions or see ",[1942,6473,6474],{"href":1409},"common errors"," for more details. If successful, you will see your post appear on Bluesky - congrats!",[1561,6477,2406],{"id":2405},[1640,6479,6480,6481,1668],{},"As Bluesky continues to grow in popularity, we are likely to see more and more brands move over to the social network site. Automating posting to this site has been made easy due to the protocols that they offer and when combined with axiom.ai allows you to create an automated posting bot that can do most of the heavy lifting. You can also combine this bot with a bot that posts to Facebook, X and LinkedIn using our ",[1942,6482,1945],{"href":1944},[2421,6484,6485],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":6487},[6488,6489,6495,6496],{"id":2155,"depth":1618,"text":2156},{"id":5667,"depth":1618,"text":5668,"children":6490},[6491,6492,6493,6494],{"id":5683,"depth":1615,"text":5684},{"id":5865,"depth":1615,"text":5866},{"id":6090,"depth":1615,"text":6091},{"id":6123,"depth":1615,"text":6124},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"This guide explains how to automate posting to Bluesky using an axiom.ai automation with JavaScript. Learn to authorize, create posts, and handle API responses.",{"type":1712,"format":1701,"intent_type":2658,"intent":2659,"tags":6499,"platfrom":6500},[2661,2925],[6501],"Bluesky","\u002Fguides\u002Fbluesky",{"title":5621,"description":6497},"guides\u002Fbluesky","uSOGo6o9AUiUB0USc9agE-krmAXL848Y7oQsur_UCcI",{"id":6507,"title":6508,"body":6509,"date":1628,"description":6710,"extension":1621,"meta":6711,"navigation":1627,"order":1628,"path":6715,"seo":6716,"stem":6717,"__hash__":6718},"guides\u002Fguides\u002Fcapture-network-requests.md","How to capture network requests from a page",{"type":1555,"value":6510,"toc":6704},[6511,6513,6516,6518,6521,6525,6541,6654,6671,6679,6681,6693,6695,6701],[1566,6512],{},[1640,6514,6515],{},"Capturing network requests from a page can be very helpful in understanding the functionality of a page, and what resources that they are loading. This can be done using your automation and some simple code.",[1561,6517,2156],{"id":2155},[1640,6519,6520],{},"To get started, create a new automation.",[1561,6522,6524],{"id":6523},"capturing-network-requests","Capturing network requests",[1640,6526,6527,6528,6530,6531,6533,6534,6537,6538,6540],{},"As the first step in your automation, add a ",[1942,6529,1043],{"href":1044}," step. Then, add a ",[1942,6532,3904],{"href":1226}," step to your automation. The following will return an array of arrays that contains the ",[1712,6535,6536],{},"entryType"," and the ",[1712,6539,3615],{}," of the entries.",[2329,6542,6544],{"className":2366,"code":6543,"language":2368,"meta":1614,"style":1614},"var resources = [];\n\n\u002F\u002F Grab the resources\nconst entries = window.performance.getEntriesByType(\"resource\");\n\n\u002F\u002F Loop through the PerformanceEntry objects that were returned, add these to the `resources` array.\nentries.forEach((entry) => {\n    resources.push([entry.entryType, entry.name]);\n})\n\n\u002F\u002F Return the data\nreturn resources;\n",[1712,6545,6546,6560,6564,6569,6592,6596,6601,6622,6633,6638,6642,6647],{"__ignoreMap":1614},[2337,6547,6548,6551,6554,6557],{"class":2339,"line":2340},[2337,6549,6550],{"class":3592},"var",[2337,6552,6553],{"class":2378}," resources ",[2337,6555,6556],{"class":3592},"=",[2337,6558,6559],{"class":2378}," [];\n",[2337,6561,6562],{"class":2339,"line":1618},[2337,6563,3504],{"emptyLinePlaceholder":1627},[2337,6565,6566],{"class":2339,"line":1615},[2337,6567,6568],{"class":4521},"\u002F\u002F Grab the resources\n",[2337,6570,6571,6573,6576,6578,6581,6584,6586,6589],{"class":2339,"line":3501},[2337,6572,3918],{"class":3592},[2337,6574,6575],{"class":3488}," entries",[2337,6577,3924],{"class":3592},[2337,6579,6580],{"class":2378}," window.performance.",[2337,6582,6583],{"class":3979},"getEntriesByType",[2337,6585,4145],{"class":2378},[2337,6587,6588],{"class":2347},"\"resource\"",[2337,6590,6591],{"class":2378},");\n",[2337,6593,6594],{"class":2339,"line":3507},[2337,6595,3504],{"emptyLinePlaceholder":1627},[2337,6597,6598],{"class":2339,"line":3579},[2337,6599,6600],{"class":4521},"\u002F\u002F Loop through the PerformanceEntry objects that were returned, add these to the `resources` array.\n",[2337,6602,6603,6606,6609,6612,6615,6618,6620],{"class":2339,"line":3658},[2337,6604,6605],{"class":2378},"entries.",[2337,6607,6608],{"class":3979},"forEach",[2337,6610,6611],{"class":2378},"((",[2337,6613,6614],{"class":2343},"entry",[2337,6616,6617],{"class":2378},") ",[2337,6619,3991],{"class":3592},[2337,6621,3994],{"class":2378},[2337,6623,6624,6627,6630],{"class":2339,"line":3664},[2337,6625,6626],{"class":2378},"    resources.",[2337,6628,6629],{"class":3979},"push",[2337,6631,6632],{"class":2378},"([entry.entryType, entry.name]);\n",[2337,6634,6635],{"class":2339,"line":3670},[2337,6636,6637],{"class":2378},"})\n",[2337,6639,6640],{"class":2339,"line":3693},[2337,6641,3504],{"emptyLinePlaceholder":1627},[2337,6643,6644],{"class":2339,"line":3746},[2337,6645,6646],{"class":4521},"\u002F\u002F Return the data\n",[2337,6648,6649,6651],{"class":2339,"line":3760},[2337,6650,4573],{"class":3592},[2337,6652,6653],{"class":2378}," resources;\n",[1640,6655,6656,6657,6660,6661,6666,6667,1668],{},"The ",[1712,6658,6659],{},"window.performance.getEntriesByType(\"resource\")"," will return an array of ",[1942,6662,6665],{"href":6663,"rel":6664},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FPerformanceEntry",[3850],"PerformanceEntry"," objects that can be used to access the resources. Check out the developer documentation for more information on the information that can be accessed using this function: ",[1942,6668,6670],{"href":6663,"rel":6669},[3850],"developer.mozilla.org",[1640,6672,6673,6674,6676,6677,2838],{},"You'll find the data retrieved in the ",[1712,6675,4583],{}," data token. This can be used in later steps of your automation, for example, written to a Google Sheet using the ",[1942,6678,4900],{"href":1214},[1561,6680,2386],{"id":2385},[1640,6682,6683,6684,6686,6687,6689,6690,6692],{},"To test, ensure that you have a URL set within the \"Go to page\" step. Next, you can use the ",[1942,6685,4590],{"href":980}," step, or the ",[1942,6688,4900],{"href":1214}," step to output the ",[1712,6691,4583],{}," data token that should contain the data regarding the network requests that have been captured.",[1561,6694,2406],{"id":2405},[1640,6696,6697,6698,1668],{},"These are numerous reasons why you may wish to capture network requests on a third-party website, including integration testing, security testing, or even learning and development opportunities. axiom.ai gives you the ability to do this with ease using just two steps. We are excited to see what you do with this - let us know over in our ",[1942,6699,4921],{"href":4919,"rel":6700},[3850],[2421,6702,6703],{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":6705},[6706,6707,6708,6709],{"id":2155,"depth":1618,"text":2156},{"id":6523,"depth":1618,"text":6524},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to capture network requests from a page using an axiom.ai automation",{"type":1712,"format":1701,"intent_type":2128,"intent":5613,"tags":6712,"platfrom":6714},[6713],"network",[3363],"\u002Fguides\u002Fcapture-network-requests",{"title":6508,"description":6710},"guides\u002Fcapture-network-requests","JsO_-iPRJHagJQUyy7vbL4Te9w9V9n4dCxm6lj_4xOY",{"id":6720,"title":6721,"body":6722,"date":1628,"description":7408,"extension":1621,"meta":7409,"navigation":1627,"order":1628,"path":4987,"seo":7412,"stem":7413,"__hash__":7414},"guides\u002Fguides\u002Fcerebro.md","How to download ASIN data from Cerebro into a Google Sheet",{"type":1555,"value":6723,"toc":7399},[6724,6726,6738,6743,6754,6757,6766,6768,6770,6780,6812,6816,6818,6821,6828,7217,7220,7225,7229,7231,7243,7249,7275,7279,7281,7289,7341,7345,7350,7352,7354,7376,7386,7388],[1566,6725],{},[1640,6727,6728,6729,6733,6734,6737],{},"Cerebro is a tool from ",[1653,6730,6731],{},[1942,6732,4971],{"href":4970}," that allows Amazon sellers to conduct ",[1653,6735,6736],{},"reverse ASIN lookups",". It helps identify keywords for which a competitor's product is ranking, providing insights into keyword volume. Extracting keywords is tedious, but a bot can automate it for you, ensuring you get the most out of your Helium10 subscription.",[2202,6739],{"src":6740,"className":6741,"alt":6742},"\u002Fdocs\u002Fguides\u002Fcerebro-search-field.webp",[4977],"Atuomate data entry into the Cerebro search field.",[1640,6744,6745,6746,6749,6750,6753],{},"In this guide, you'll learn how to use a bot to load the ",[1653,6747,6748],{},"Cerebro homepage",", enter 10 ASINs into the search field, and click ",[1653,6751,6752],{},"\"Get Keywords.\""," The bot will then scroll the page, click \"Export,\" and download the CSV file. After that, it will import the CSV and write the data to a Google Sheet. Once the bot completes its first loop, it will delete the processed ASINs and repeat the loop with a new set of ASINs.",[1640,6755,6756],{},"We also chose to export the data rather than scrape it directly from the page because exporting is significantly faster than scraping page by page if we want all the data.",[1640,6758,6759,6760,4888,6762,1668],{},"Check out our other Helium10 guides if you're interested in automating ",[1942,6761,5552],{"href":4991},[1942,6763,6765],{"href":6764},"\u002Fguides\u002FMagnet","Magnet",[1561,6767,2156],{"id":2155},[1566,6769],{},[1640,6771,6772,6773,6775,6776,6779],{},"To begin, create a ",[1653,6774,5504],{}," and add two tabs: one for ",[1653,6777,6778],{},"ASINs"," and another for storing extracted data.",[1701,6781,6782],{},[2165,6783,6784,6793,6803],{},[1572,6785,6786,6788,6789,6792],{},[1653,6787,5005],{}," If you're logged into Google, type ",[1712,6790,6791],{},"sheet.new"," in your browser to quickly create a new sheet.",[1572,6794,6795,5529,6797,6800,6801,1668],{},[1653,6796,5011],{},[1653,6798,6799],{},"ASIN numbers"," into the first tab, column ",[1653,6802,5139],{},[1572,6804,6805,6807,6808,6811],{},[1653,6806,5017],{}," Name the second tab ",[1653,6809,6810],{},"\"ASIN data\""," and leave it blank.",[1561,6813,6815],{"id":6814},"how-to-automate-extracting-the-asin-data","How to automate extracting the ASIN data",[1566,6817],{},[1640,6819,6820],{},"To start building your bot, open axiom.ai and click \"New Automation\" to launch the no-code bot builder. Then, click \"Add First Step\" and follow the guide.",[1640,6822,5040,6823,5044,6826],{},[1942,6824,2127],{"href":6825,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_helium10_cerebro.json",[1942,6827,5047],{"href":849},[1701,6829,6830],{},[1569,6831,6832,6858,6877,6894,6924,6947,6980,7014,7032,7052,7090,7107,7133,7167,7197],{},[1572,6833,6834,1710,6836,6838],{},[1653,6835,1709],{},[1712,6837,1714],{},[1569,6839,6840,6844,6849],{},[1572,6841,6842,5064],{},[1712,6843,1721],{},[1572,6845,6846,6848],{},[1712,6847,1727],{},": Choose the tab containing the ASINs.",[1572,6850,6851,6854,6855,6857],{},[1712,6852,6853],{},"Last cell",": Enter ",[1712,6856,5418],{},", the maximum number of ASINs we can search per loop.",[1572,6859,6860,1710,6862,6864],{},[1653,6861,1733],{},[1712,6863,1043],{},[1569,6865,6866],{},[1572,6867,6868,5102,6870,5322,6873,5145],{},[1712,6869,1751],{},[1712,6871,6872],{},"\"members.helium10.com\u002Fcerebro\u002Famazon\u002Fview\u002Fxxxxxxxx?accountId=xxxxxxx\"",[2202,6874],{"src":6875,"alt":6876},"\u002Fdocs\u002Fguides\u002Fgoto-page-cerebro.webp","axiom.ai using the go-to page step to load the Cerebro tool",[1572,6878,6879,1710,6881,6883],{},[1653,6880,5351],{},[1712,6882,667],{},[1569,6884,6885],{},[1572,6886,6887,1752,6889,5084,6891,6893],{},[1712,6888,667],{},[1712,6890,1755],{},[1712,6892,1759],{},". The loop step will now iterate through the ASINs in the Google Sheet.",[1572,6895,6896,1710,6898,6900],{},[1653,6897,5390],{},[1712,6899,293],{},[1569,6901,6902,6911],{},[1572,6903,6904,1752,6906,5084,6908,6910],{},[1712,6905,2563],{},[1712,6907,1755],{},[1712,6909,1759],{}," to pass the ASIN numbers from the sheet.",[1572,6912,6913,6916,6917,6919,6920,5145],{},[1712,6914,6915],{},"Select column",": Choose column ",[1712,6918,5139],{}," in the preview.\n",[2202,6921],{"src":6922,"alt":6923},"\u002Fdocs\u002Fguides\u002Fcerebro-enter-text-axiom-ai.webp","axiom.ai using the enter text step to enter ASINs in the Cerebro search field",[1572,6925,6926,1710,6929,6932],{},[1653,6927,6928],{},"5.0",[1712,6930,6931],{},"Press key(s)",[1569,6933,6934],{},[1572,6935,6936,6939,6940,6943,6944,1668],{},[1712,6937,6938],{},"Key",": Press ",[1712,6941,6942],{},"Record",", then ",[1712,6945,6946],{},"Tab",[1572,6948,6949,1710,6952,6954],{},[1653,6950,6951],{},"6.0",[1712,6953,5230],{},[1569,6955,6956,6967],{},[1572,6957,6958,1752,6960,6962,6963,6966],{},[1712,6959,1775],{},[1712,6961,1775],{},", then click on the ",[1712,6964,6965],{},"Get Keywords"," button.",[1572,6968,6969,6971,6972,6974,6975,5247,6978,1668],{},[1712,6970,5242],{},": In the selector tool, click ",[1712,6973,5242],{},", then tick ",[1712,6976,6977],{},"Use element text instead of HTML",[1712,6979,5250],{},[1572,6981,6982,1710,6985,6987],{},[1653,6983,6984],{},"7.0",[1712,6986,5230],{},[1569,6988,6989,7004],{},[1572,6990,6991,1752,6993,5239,6995,6997,6998,4888,7001,1668],{},[1712,6992,1775],{},[1712,6994,1775],{},[1712,6996,5242],{}," and insert ",[1712,6999,7000],{},"[data-testid=\"runnewsearch\"]",[1712,7002,7003],{},"[data-testid=\"loadfromhistory\"]",[1572,7005,7006,7009,7010,5145],{},[1712,7007,7008],{},"Optional Click",": Tick this option, as the pop-up does not always appear.\n",[2202,7011],{"src":7012,"alt":7013},"\u002Fdocs\u002Fguides\u002Fcerebro-dialog-history.webp","axiom.ai interacting with dialog in Cerebro during bot run",[1572,7015,7016,1710,7019,7021],{},[1653,7017,7018],{},"8.0",[1712,7020,349],{},[1569,7022,7023],{},[1572,7024,7025,1844,7028,7031],{},[1712,7026,7027],{},"Wait time",[1712,7029,7030],{},"7000"," to make the bot wait 7 seconds. You may need to experiment with wait time.",[1572,7033,7034,1710,7037,7039],{},[1653,7035,7036],{},"9.0",[1712,7038,5230],{},[1569,7040,7041],{},[1572,7042,7043,1752,7045,5239,7047,6997,7049,1668],{},[1712,7044,1775],{},[1712,7046,1775],{},[1712,7048,5242],{},[1712,7050,7051],{},"#cerebro-amazon-single-com_wrapper button[data-testid=\"exportdata\"]",[1572,7053,7054,1710,7057,7060],{},[1653,7055,7056],{},"10.0",[1712,7058,7059],{},"Download file",[1569,7061,7062,7080,7085],{},[1572,7063,7064,1752,7066,7068,7069,5243,7071,7073,7074,7077,7078,1668],{},[1712,7065,1775],{},[1712,7067,1775],{},", then click ",[1712,7070,5242],{},[1712,7072,6977],{},". Insert ",[1712,7075,7076],{},"\"...as a CSV file.\""," Then click ",[1712,7079,5250],{},[1572,7081,7082,7084],{},[1712,7083,3244],{},": Set a folder path to download into.",[1572,7086,7087,7089],{},[1712,7088,3250],{},": Enter a name to save the file as.",[1572,7091,7092,1710,7095,7097],{},[1653,7093,7094],{},"11.0",[1712,7096,349],{},[1569,7098,7099],{},[1572,7100,7101,1844,7103,7106],{},[1712,7102,7027],{},[1712,7104,7105],{},"4000"," to make the bot wait 4 seconds. You may need to experiment with wait time.",[1572,7108,7109,1710,7112,7115],{},[1653,7110,7111],{},"12.0",[1712,7113,7114],{},"Import CSV File",[1569,7116,7117],{},[1572,7118,7119,7122,7123,5084,7125,7128,7129,5145],{},[1712,7120,7121],{},"Import CSV",": Insert the folder path, then click ",[1712,7124,1755],{},[1712,7126,7127],{},"File-download-data"," to add the file name to the path.\n",[2202,7130],{"src":7131,"alt":7132},"\u002Fdocs\u002Fguides\u002Faxiom-ai-set-file-path-import-csv.webp","axiom.ai setting file path to import CSV",[1572,7134,7135,1710,7138,7140],{},[1653,7136,7137],{},"13.0",[1712,7139,4900],{},[1569,7141,7142,7146,7151,7160],{},[1572,7143,7144,5360],{},[1712,7145,1721],{},[1572,7147,7148,7150],{},[1712,7149,5365],{},": Choose the tab where you want to write the ASIN data.",[1572,7152,7153,1752,7155,5373,7157,1668],{},[1712,7154,2083],{},[1712,7156,1755],{},[1712,7158,7159],{},"Imported-csv",[1572,7161,7162,1881,7164,7166],{},[1712,7163,5381],{},[1712,7165,5384],{}," to append new data without deleting the existing data.",[1572,7168,7169,1710,7172,7174],{},[1653,7170,7171],{},"14.0",[1712,7173,1901],{},[1569,7175,7176,7180,7185,7191],{},[1572,7177,7178,5360],{},[1712,7179,1721],{},[1572,7181,7182,7184],{},[1712,7183,5365],{},": Choose the tab containing the ASIN numbers.",[1572,7186,7187,5408,7189,1668],{},[1712,7188,5407],{},[1712,7190,1785],{},[1572,7192,7193,1782,7195,1668],{},[1712,7194,5415],{},[1712,7196,5418],{},[1572,7198,7199,1710,7202,7204],{},[1653,7200,7201],{},"15.0",[1712,7203,1070],{},[1569,7205,7206,7211],{},[1572,7207,7208,5360],{},[1712,7209,7210],{},"Jump to step",[1572,7212,7213,7216],{},[1712,7214,7215],{},"Maximum cycles",": Set the maximum number of times the bot should repeat the process.",[1640,7218,7219],{},"The Cerebro automation, when completed, should resemble the diagram below.",[2202,7221],{"src":7222,"className":7223,"alt":7224},"\u002Fdocs\u002Fguides\u002Fhelium10-cerebro-axiom-bot-design-pattern.webp",[5426],"axiom.ai design pattern for building a bot to automate dat extraction from helium10 tool Cerebro",[1561,7226,7228],{"id":7227},"testing-your-cerebro-automation","Testing your Cerebro automation",[1566,7230],{},[1640,7232,5434,7233,5438,7235,5442,7237,7239,7240,1668],{},[1653,7234,4971],{},[1653,7236,5441],{},[1653,7238,5028],{}," extension to start extracting ",[1653,7241,7242],{},"ASIN data",[2249,7244,7246],{"id":7245},"issues-you-may-encounter",[1653,7247,7248],{},"Issues you may encounter:",[2165,7250,7251,7261],{},[1572,7252,7253,7256,7257,7260],{},[1653,7254,7255],{},"Click elements not found:"," If elements are not being clicked, you may need to reselect them. Changing ",[1653,7258,7259],{},"marketplaces"," can sometimes affect selectors.",[1572,7262,7263,1710,7266,7268,7269,7272,7273,1668],{},[1653,7264,7265],{},"Keyword data not loading in time:",[1653,7267,4988],{}," can sometimes be slow to load data. You may need to adjust the ",[1653,7270,7271],{},"wait time"," in ",[1653,7274,5473],{},[1561,7276,7278],{"id":7277},"try-the-cerebro-template","Try the Cerebro template",[1566,7280],{},[1640,7282,5481,7283,5484,7285,5488,7287,5491],{},[1653,7284,5028],{},[1653,7286,4971],{},[1653,7288,2127],{},[2165,7290,7291,7297,7309,7320,7334],{},[1572,7292,7293,5501,7295,1668],{},[1653,7294,5500],{},[1653,7296,5504],{},[1572,7298,7299,7302,7303,7305,7306,1668],{},[1653,7300,7301],{},"Step 2:"," Insert the ",[1653,7304,5513],{}," to the ",[1653,7307,7308],{},"Cerebro landing page",[1572,7310,7311,7302,7314,2068,7317,1668],{},[1653,7312,7313],{},"Step 8:",[1653,7315,7316],{},"download path",[1653,7318,7319],{},"file name",[1572,7321,7322,7325,7326,7329,7330,7333],{},[1653,7323,7324],{},"Step 10:"," Set the ",[1653,7327,7328],{},"import path",", including the ",[1653,7331,7332],{},"download file token"," (contains the file name).",[1572,7335,7336,5501,7339,1668],{},[1653,7337,7338],{},"Steps 11 and 12:",[1653,7340,5504],{},[1640,7342,5534,7343,5538],{},[1653,7344,5537],{},[1640,7346,5541,7347],{},[1942,7348,7349],{"href":6825,"download":1627},"Cerebro template.",[1561,7351,2406],{"id":2405},[1566,7353],{},[1640,7355,7356,7357,7359,7360,7363,7364,7367,7368,7371,7372,7375],{},"Extracting data in ",[1653,7358,4988],{}," isn’t always straightforward, but it's possible with automation. For example, ",[1653,7361,7362],{},"changing marketplaces"," can affect the ",[1653,7365,7366],{},"CSS selectors"," used to click on elements. I also found that, due to the ",[1653,7369,7370],{},"large quantity of data",", it's ",[1653,7373,7374],{},"faster to download the CSV and import it into a Google Sheet"," rather than scrape the data page by page.",[1640,7377,7378,7379,5582,7381,7385],{},"If you need help automating ",[1653,7380,4971],{},[1653,7382,7383],{},[1942,7384,5588],{"href":5587},", and we’ll help you create an automation.",[1566,7387],{},[1640,7389,7390],{},[2417,7391,5593,7392,5597,7395,4888,7397,5602],{},[1653,7393,7394],{},"January 22, 2025",[1653,7396,4971],{},[1653,7398,5028],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":7400},[7401,7402,7403,7406,7407],{"id":2155,"depth":1618,"text":2156},{"id":6814,"depth":1618,"text":6815},{"id":7227,"depth":1618,"text":7228,"children":7404},[7405],{"id":7245,"depth":1615,"text":7248},{"id":7277,"depth":1618,"text":7278},{"id":2405,"depth":1618,"text":2406},"Learn how to use axiom.ai to automate the input of ASINs into Cerebro, a Helium10 tool, then click \"Get Keywords.\" Once the keyword search is complete, axiom.ai will download a CSV of the data, and upload it into a Google Sheet.",{"type":2126,"format":1701,"intent_type":2658,"intent":5613,"tags":7410,"platfrom":7411},[2132,2665],[4971],{"title":6721,"description":7408},"guides\u002Fcerebro","NvIDdezwXPTDtWE5l0WI_FfqwLVMWwvEpV3u3KJbqVg",{"id":7416,"title":7417,"body":7418,"date":2118,"description":7721,"extension":1621,"meta":7722,"navigation":1627,"order":1628,"path":7726,"seo":7727,"stem":7728,"__hash__":7729},"guides\u002Fguides\u002Fchatgpt-web-scraper.md","How to scrape data with ChatGPT from any website",{"type":1555,"value":7419,"toc":7713},[7420,7422,7425,7427,7429,7442,7446,7456,7461,7463,7467,7474,7626,7630,7632,7634,7638,7640,7642],[1566,7421],{},[1640,7423,7424],{},"This template builds a web scraper that loops through links stored in a Google Sheet, opening each page in a browser. It then scrapes the page using code and passes the data to ChatGPT to extract the specific values defined by the user. After each loop, the scraper deletes a row in the Google Sheet, preparing it to process the next. A ChatGPT API key is required.",[1558,7426],{},[1561,7428,1648],{"id":1647},[1640,7430,1651,7431,2694,7433,7436,7437,1664,7440,1668],{},[1653,7432,6791],{},[1653,7434,7435],{},"ChatGPT Scrape","' and set up a tab called ",[1653,7438,7439],{},"Links",[1653,7441,2083],{},[1561,7443,7445],{"id":7444},"install-the-chatgpt-template","Install the ChatGPT template",[1640,7447,7448,7449,7452,7453,1683],{},"To install this ChatGPT template click ",[1653,7450,7451],{},"Install template",". If you're a new user, you'll have to click ",[1653,7454,7455],{},"Install Chrome extension",[1640,7457,1686,7458,1668],{},[1653,7459,7460],{},"start",[1640,7462,1692],{},[1561,7464,7466],{"id":7465},"configure-your-chatgpt-scraper-in-five-easy-steps","Configure your ChatGPT scraper in Five easy steps",[1640,7468,7469,7470,7473],{},"Please note in ",[1712,7471,7472],{},"step 2.2 Get data from bot's current page"," you need to select a single block of content with the selector tool.",[1701,7475,7476],{},[1569,7477,7478,7498],{},[1572,7479,7480,1710,7482,7484],{},[1653,7481,1709],{},[1712,7483,1714],{},[1569,7485,7486,7490],{},[1572,7487,7488,1722],{},[1712,7489,1721],{},[1572,7491,7492,7494,7495,1668],{},[1712,7493,1727],{},": Choose the sheet tab called ",[1712,7496,7497],{},"\"Amazon product links\"",[1572,7499,7500,1710,7502,7504],{},[1653,7501,1733],{},[1712,7503,667],{},[1569,7505,7506,7521,7540,7568,7598],{},[1572,7507,7508,1710,7510,7512],{},[1653,7509,1742],{},[1712,7511,1043],{},[1569,7513,7514],{},[1572,7515,7516,3227,7518,7520],{},[1712,7517,1751],{},[1712,7519,1759],{},", and choose the column with the links.",[1572,7522,7523,1710,7525,7527],{},[1653,7524,1765],{},[1712,7526,1768],{},[1569,7528,7529,7534],{},[1572,7530,7531,7533],{},[1712,7532,1775],{},": Point and click to select the data you wish to scrape using a single selector.",[1572,7535,7536,1782,7538,1668],{},[1712,7537,1781],{},[1712,7539,1785],{},[1572,7541,7542,1710,7544,7547],{},[1653,7543,1790],{},[1712,7545,7546],{},"Extract data with ChatGPT",[1569,7548,7549,7553,7560],{},[1572,7550,7551,1801],{},[1712,7552,1800],{},[1572,7554,7555,1844,7557,1668],{},[1712,7556,2083],{},[1712,7558,7559],{},"scrape-data",[1572,7561,7562,7564,7565,7567],{},[1712,7563,1824],{},": Enter values to extract (e.g. ",[1712,7566,1828],{},").",[1572,7569,7570,1710,7572,7574],{},[1653,7571,1833],{},[1712,7573,4900],{},[1569,7575,7576,7580,7584,7591],{},[1572,7577,7578,1722],{},[1712,7579,1721],{},[1572,7581,7582,1875],{},[1712,7583,1727],{},[1572,7585,7586,1881,7588,1668],{},[1712,7587,1880],{},[1712,7589,7590],{},"chatgpt-data",[1572,7592,7593,1782,7595,1668],{},[1712,7594,1889],{},[1712,7596,7597],{},"\"Add to existing data\"",[1572,7599,7600,1710,7602,7604],{},[1653,7601,1861],{},[1712,7603,1901],{},[1569,7605,7606,7610,7614,7620],{},[1572,7607,7608,2734],{},[1712,7609,1721],{},[1572,7611,7612,1912],{},[1712,7613,1727],{},[1572,7615,7616,1782,7618,1668],{},[1712,7617,1917],{},[1712,7619,1785],{},[1572,7621,7622,1782,7624,1668],{},[1712,7623,1924],{},[1712,7625,1785],{},[1561,7627,7629],{"id":7628},"testing-and-running-your-chatgpt-web-scraper","Testing and running your ChatGPT web scraper",[1640,7631,1933],{},[1561,7633,1937],{"id":1936},[1640,7635,1940,7636,1946],{},[1942,7637,1945],{"href":1944},[1561,7639,1398],{"id":1949},[1640,7641,1952],{},[1701,7643,7644],{},[1569,7645,7646,7662,7672,7687,7702],{},[1572,7647,7648,7651,7653,7654,7656,7657,7659,7660,1977],{},[1653,7649,7650],{},"Want to set a number of loops?",[1963,7652],{},"\nSet a ",[1712,7655,1972],{}," in the ",[1712,7658,1714],{}," step — for example, ",[1712,7661,1976],{},[1572,7663,7664,7667,1965,7669,7671],{},[1653,7665,7666],{},"Not scraping content correctly?",[1963,7668],{},[1712,7670,1768],{},", select a single block of content using the selector tool.",[1572,7673,7674,7677,7679,7680,7682,7683,7656,7685,2838],{},[1653,7675,7676],{},"Want to scrape the whole page?",[1963,7678],{},"\nUse a ",[1942,7681,1999],{"href":1383}," like ",[1712,7684,2003],{},[1712,7686,1768],{},[1572,7688,7689,7692,7694,7695,2015,7697,2019,7699,7701],{},[1653,7690,7691],{},"Scrape running slowly?",[1963,7693],{},"\nToggle ",[1712,7696,2014],{},[1712,7698,2018],{},[1712,7700,1785],{}," in the same step.",[1572,7703,7704,7707,2094,7709,2084,7711],{},[1653,7705,7706],{},"Data not showing up in ChatGPT?",[1963,7708],{},[1712,7710,2083],{},[1712,7712,7559],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":7714},[7715,7716,7717,7718,7719,7720],{"id":1647,"depth":1618,"text":1648},{"id":7444,"depth":1618,"text":7445},{"id":7465,"depth":1618,"text":7466},{"id":7628,"depth":1618,"text":7629},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide shows how to scrape website content and extract data using ChatGPT and axiom.ai. Learn to loop through links, extract values, and write results to a Google Sheet.",{"pinned":1627,"read":2655,"level":2123,"video":7723,"templateId":6365,"type":2126,"format":2127,"intent_type":3360,"intent":2129,"tags":7724,"platfrom":7725},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F8Llq6EYiSuo",[2132,2665],[739],"\u002Fguides\u002Fchatgpt-web-scraper",{"title":7417,"description":7721},"guides\u002Fchatgpt-web-scraper","YpEhc1e5YckB0bBSPLiATp8_oI0B1PtAh1Fb0D6gJn0",{"id":7731,"title":7732,"body":7733,"date":1628,"description":8135,"extension":1621,"meta":8136,"navigation":1627,"order":1628,"path":8141,"seo":8142,"stem":8143,"__hash__":8144},"guides\u002Fguides\u002Fcheck-for-login.md","How to automate checking if a site requires a login",{"type":1555,"value":7734,"toc":8125},[7735,7737,7748,7750,7756,7760,7767,7786,7790,7800,7804,7807,7820,7837,7841,7850,7884,7906,7937,7941,7945,7952,7958,7962,7969,8037,8040,8105,8107,8110,8119],[1566,7736],{},[1640,7738,7739,7740,7743,7744,7747],{},"To automate tasks that depend on the state of a web page, such as whether a user is logged in or logged out, you can implement a simple check for a unique text value like ",[1653,7741,7742],{},"\"Log in.\""," By using an ",[1653,7745,7746],{},"\"If \u002F Else condition\""," step, your automation can dynamically decide the next actions: logging in by entering credentials and clicking the login button if the text is found, or continuing with subsequent steps if it is not. This adaptable approach ensures your automation handles different page states seamlessly, improving reliability and efficiency.",[1558,7749],{},[1640,7751,7752,7753,7755],{},"This guide will teach you the basic steps you need to run your bot on a site that requires you to login. Login methods may vary, and wording may vary on your site. For tips on how to manage logins within your automation, see our ",[1942,7754,5664],{"href":638}," guide. For this example, we are going to store credentials within Google Sheets.",[1561,7757,7759],{"id":7758},"creating-your-automation","Creating your automation",[1640,7761,7762,7763,7766],{},"Create a new automation by clicking \"New automation\", and then use the ",[1942,7764,7765],{"href":1361},"Step Finder"," to add steps. There are various stages to the automation that we are going to review, let's see them in plain English first:",[1701,7768,7769],{},[2165,7770,7771,7774,7777,7780,7783],{},[1572,7772,7773],{},"Navigate to the page.",[1572,7775,7776],{},"Check if the page is a login page.",[1572,7778,7779],{},"Enter your email.",[1572,7781,7782],{},"Enter your password.",[1572,7784,7785],{},"Click \"login\".",[2249,7787,7789],{"id":7788},"navigate-to-the-site","Navigate to the site",[1640,7791,7792,7793,7795,7796,7799],{},"Use the ",[1942,7794,1043],{"href":1044}," step to navigate to the site that you wish to automate - this does not have to be the ",[1653,7797,7798],{},"\"login\""," page as sites will often redirect to it if a login is required.",[2249,7801,7803],{"id":7802},"check-if-the-page-is-a-login-page","Check if the page is a login page",[1640,7805,7806],{},"There are a couple of methods of determining if the page that the bot is currently on is a login page or not. These methods both assume that you have previously encountered the login page for the site that you are automating and that you are familiar with it's structure.",[1640,7808,6656,7809,7812,7813,4888,7816,7819],{},[1942,7810,7811],{"href":956},"Get current bot URL"," step can be used to retrieve the current URL of the bot - this can be helpful in situations where the login page includes words like ",[1653,7814,7815],{},"login\"",[1653,7817,7818],{},"sign-in\"",", for example.",[1640,7821,6656,7822,7824,7825,7828,7829,7832,7833,7836],{},[1942,7823,1768],{"href":1040}," step can be used to scrape the page - this can be used to scrape any elements on the login page, such as a title with ",[1653,7826,7827],{},"\"Login\""," in it's contents. We recommend encapsulating this with a ",[1942,7830,7831],{"href":1198},"Try \u002F Catch"," step as this will produce an error if the bot does not need to log into the site, and the ",[1653,7834,7835],{},"\"Try \u002F Catch\""," step can catch this error.",[2249,7838,7840],{"id":7839},"checking-the-returned-output","Checking the returned output",[1640,7842,6656,7843,7845,7846,7849],{},[1942,7844,7811],{"href":956}," step will return the current URL of the bot, you will need to use an ",[1942,7847,7848],{"href":1048},"If condition is true, run steps"," step to check this value. Add the step and configure as described below:",[1701,7851,7852],{},[1569,7853,7854,7869],{},[1572,7855,7856,1710,7858,7861],{},[1653,7857,1709],{},[1712,7859,7860],{},"Data to check",[1569,7862,7863],{},[1572,7864,7865,7868],{},[1712,7866,7867],{},"[current-url]",": Select this as the value to evaluate.",[1572,7870,7871,1710,7873,7876],{},[1653,7872,1733],{},[1712,7874,7875],{},"Condition to check",[1569,7877,7878],{},[1572,7879,7880,7883],{},[1712,7881,7882],{},"Login",": Enter the text value you want to match.",[1640,7885,7886,7887,7889,7890,7892,7893,7896,7897,7899,7900,7902,7903,7905],{},"If you have set up the ",[1942,7888,1768],{"href":1040}," step inside a ",[1653,7891,7835],{}," step, you will need to insert any further steps related to the login into the ",[1653,7894,7895],{},"\"try\""," portion of this step. You will need to use an ",[1942,7898,7848],{"href":1048}," step to check this the value returned from the step against the value that you are looking for. Add the step inside the ",[1653,7901,7895],{}," portion of the ",[1653,7904,7835],{}," step, under the \"Get data from bot's current page\" step and configure as described below:",[1701,7907,7908],{},[1569,7909,7910,7922],{},[1572,7911,7912,1710,7914,7916],{},[1653,7913,1709],{},[1712,7915,7860],{},[1569,7917,7918],{},[1572,7919,7920,7868],{},[1712,7921,1818],{},[1572,7923,7924,1710,7926,7928],{},[1653,7925,1733],{},[1712,7927,7875],{},[1569,7929,7930],{},[1572,7931,7932,7934,7935,1668],{},[1712,7933,7882],{},": Enter the text value to check for, for example ",[1653,7936,7827],{},[2202,7938],{"src":7939,"alt":7940},"\u002Fdocs\u002Fguides\u002Fif-condition-login.jpg","axiom.ai - if condition check for value",[2249,7942,7944],{"id":7943},"entering-credentials","Entering credentials",[1640,7946,7947,7948,7951],{},"Next, inside of the ",[1653,7949,7950],{},"\"If condition is true, run steps\""," step, add two \"Enter text\" steps. The first should be configured to enter your email\u002Fusername and the second should be configured to enter your password. If you are reading these credentials in from a third-party, such as Google Sheets, use the \"Insert data\" option to input your data tokens containing these credentials.",[1640,7953,7954,7955,7957],{},"Finally, use a ",[1942,7956,5230],{"href":924}," step to click the \"login\" button on the site to complete the login.",[2249,7959,7961],{"id":7960},"final-automation-structure","Final automation structure",[1640,7963,7964,7965,7968],{},"If you used the ",[1653,7966,7967],{},"\"Get bot's current URL\""," step, your automation should look similar to the structure below:",[1701,7970,7971],{},[1569,7972,7973,7980,7988,8029],{},[1572,7974,7975,1710,7977,7979],{},[1653,7976,1709],{},[1712,7978,1043],{},": Navigate to the login page.",[1572,7981,7982,1710,7984,7987],{},[1653,7983,1733],{},[1712,7985,7986],{},"Get bot's current URL",": Store the current page URL.",[1572,7989,7990,1710,7992,7994,7995],{},[1653,7991,5351],{},[1712,7993,7848],{},": Run the following steps only if the condition matches.\n",[1569,7996,7997,8009,8020],{},[1572,7998,7999,1710,8002,3601,8005,8008],{},[1653,8000,8001],{},"3.1",[1712,8003,8004],{},"Enter Text",[1712,8006,8007],{},"Email"," type your email address.",[1572,8010,8011,1710,8014,3601,8016,8019],{},[1653,8012,8013],{},"3.2",[1712,8015,8004],{},[1712,8017,8018],{},"Password"," type your password.",[1572,8021,8022,1710,8025,8028],{},[1653,8023,8024],{},"3.3",[1712,8026,8027],{},"Click Element",": Click the login button.",[1572,8030,8031,1710,8033,8036],{},[1653,8032,5390],{},[1712,8034,8035],{},"Continue flow",": Add any other steps here.",[1640,8038,8039],{},"If you used the \"Get data from bot's current page\" step, your automation should look similar to the structure below:",[1701,8041,8042],{},[1569,8043,8044,8050,8097],{},[1572,8045,8046,1710,8048,7979],{},[1653,8047,1709],{},[1712,8049,1043],{},[1572,8051,8052,1710,8054,8056,8057],{},[1653,8053,1733],{},[1712,8055,7831],{},": Run steps that may fail.\n",[1569,8058,8059,8066],{},[1572,8060,8061,1710,8063,8065],{},[1653,8062,1742],{},[1712,8064,1768],{},": Select login text.",[1572,8067,8068,1710,8070,5322,8073],{},[1653,8069,1765],{},[1712,8071,8072],{},"Catch",[1569,8074,8075,8083,8091],{},[1572,8076,8077,1710,8079,3601,8081,8008],{},[1653,8078,1790],{},[1712,8080,8004],{},[1712,8082,8007],{},[1572,8084,8085,1710,8087,3601,8089,8019],{},[1653,8086,1833],{},[1712,8088,8004],{},[1712,8090,8018],{},[1572,8092,8093,1710,8095,8028],{},[1653,8094,1861],{},[1712,8096,8027],{},[1572,8098,8099,1710,8101,8104],{},[1653,8100,5351],{},[1712,8102,8103],{},"Other steps",": Continue the flow as needed.",[1561,8106,2406],{"id":2405},[1640,8108,8109],{},"The method that you choose to use will depend on how the site that you are looking to automate handles logins - some sites will have a specific subdomain that they use, some will have a simple page, and some may even have a popup that you will need to take into consideration when building your automations.",[1640,8111,8112,8113,8115,8116,4935],{},"We would also recommend reviewing our documentation on managing ",[1942,8114,5664],{"href":638}," for further tips and tricks to use, including using your pre-existing login session in the cloud, see ",[1942,8117,8118],{"href":886},"Learn how to store cookies",[1640,8120,8121,8122,8124],{},"Some login activity may prompt the site to display a CAPTCHA challenge to continue, see our ",[1942,8123,735],{"href":736}," integration for more details on navigating sites with CAPTCHA enabled.",{"title":1614,"searchDepth":1615,"depth":1615,"links":8126},[8127,8134],{"id":7758,"depth":1618,"text":7759,"children":8128},[8129,8130,8131,8132,8133],{"id":7788,"depth":1615,"text":7789},{"id":7802,"depth":1615,"text":7803},{"id":7839,"depth":1615,"text":7840},{"id":7943,"depth":1615,"text":7944},{"id":7960,"depth":1615,"text":7961},{"id":2405,"depth":1618,"text":2406},"This guide shows how to check if a website requires login using axiom.ai. Learn to detect login pages and conditionally enter credentials using no-code steps.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2659,"tags":8137,"platfrom":8139,"video":8140},[8138],"login",[3363],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FKZPOE8xisTM?rel=0&amp;","\u002Fguides\u002Fcheck-for-login",{"title":7732,"description":8135},"guides\u002Fcheck-for-login","Gp6bLGA8kKmhLnzh3lnrE73kiWexfahe6cH6I2s-xKQ",{"id":8146,"title":8147,"body":8148,"date":1628,"description":8597,"extension":1621,"meta":8598,"navigation":1627,"order":1628,"path":8603,"seo":8604,"stem":8605,"__hash__":8606},"guides\u002Fguides\u002Fcurl.md","How to use cURL to trigger an axiom.ai automation",{"type":1555,"value":8149,"toc":8588},[8150,8152,8155,8157,8159,8161,8179,8183,8185,8193,8265,8268,8297,8301,8303,8307,8309,8316,8528,8535,8537,8539,8546,8567,8573,8578,8580,8582,8585],[1566,8151],{},[1640,8153,8154],{},"Learn how to get started with cURL to trigger your axiom.ai automations. This can be useful for triggering your automations from the command line on Windows, macOS or Linux.",[1561,8156,2156],{"id":2155},[1566,8158],{},[1640,8160,2161],{},[2165,8162,8163,8169,8173],{},[1572,8164,8165,3391,8167,1668],{},[1653,8166,2171],{},[1942,8168,2176],{"href":2175},[1572,8170,8171,3398],{},[1653,8172,2181],{},[1572,8174,8175,3403,8177,1668],{},[1653,8176,2187],{},[1712,8178,2191],{},[1561,8180,8182],{"id":8181},"trigger-an-axiomai-automation-using-curl","Trigger an axiom.ai automation using cURL",[1566,8184],{},[1640,8186,8187,8188,8192],{},"Open your command line to get started, and use the following command to trigger your automation. You'll need the information from the ",[1942,8189,8191],{"href":8190},"#getting-started","getting started"," section of this guide.",[2329,8194,8196],{"className":3454,"code":8195,"language":3456,"meta":1614,"style":1614},"curl -X POST https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger -H \"Content-Type: application\u002Fjson\" -d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": []\"}\"\n",[1712,8197,8198],{"__ignoreMap":1614},[2337,8199,8200,8203,8206,8208,8211,8214,8217,8220,8223,8225,8227,8229,8231,8233,8236,8238,8240,8242,8244,8246,8248,8250,8252,8254,8256,8258,8260,8262],{"class":2339,"line":2340},[2337,8201,8202],{"class":2343},"curl",[2337,8204,8205],{"class":3488}," -X",[2337,8207,3681],{"class":2347},[2337,8209,8210],{"class":2347}," https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger",[2337,8212,8213],{"class":3488}," -H",[2337,8215,8216],{"class":2347}," \"Content-Type: application\u002Fjson\"",[2337,8218,8219],{"class":3488}," -d",[2337,8221,8222],{"class":2347}," \"{",[2337,8224,3593],{"class":3592},[2337,8226,3596],{"class":2347},[2337,8228,3593],{"class":3592},[2337,8230,3601],{"class":2347},[2337,8232,3593],{"class":3592},[2337,8234,8235],{"class":2347},"\u003CAPI_KEY>",[2337,8237,3593],{"class":3592},[2337,8239,3610],{"class":2347},[2337,8241,3593],{"class":3592},[2337,8243,3615],{"class":2347},[2337,8245,3593],{"class":3592},[2337,8247,3601],{"class":2347},[2337,8249,3593],{"class":3592},[2337,8251,3438],{"class":2347},[2337,8253,3593],{"class":3592},[2337,8255,3610],{"class":2347},[2337,8257,3593],{"class":3592},[2337,8259,3444],{"class":2347},[2337,8261,3593],{"class":3592},[2337,8263,8264],{"class":2347},": []\"}\"\n",[1640,8266,8267],{},"Let's break down this command:",[1569,8269,8270,8275,8281,8287],{},[1572,8271,8272,8274],{},[1712,8273,8202],{}," - the application we are triggering.",[1572,8276,8277,8280],{},[1712,8278,8279],{},"-X POST"," - the HTTP method to use.",[1572,8282,8283,8286],{},[1712,8284,8285],{},"-h \"Content-Type: application\u002Fjson\""," - the headers to pass along with the request.",[1572,8288,8289,8292,8293,1668],{},[1712,8290,8291],{},"-d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": []\"}"," - the data to send in the request, formatted as per our ",[1942,8294,8296],{"href":8295},"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frequests","trigger guide",[1561,8298,8300],{"id":8299},"examples","Examples",[1566,8302],{},[2249,8304,8306],{"id":8305},"reporting-system-available-memory","Reporting system available memory",[1566,8308],{},[1640,8310,8311,8312,8315],{},"Determining the memory available on the computer your automations are running can be useful to use when running multiple instances of Axiom, here's an example using a ",[1712,8313,8314],{},".bat"," file.",[2329,8317,8321],{"className":8318,"code":8319,"language":8320,"meta":1614,"style":1614},"language-shell shiki shiki-themes github-light-default github-dark-default","@echo off\n\nrem Get the free memory value\nfor \u002Ff \"tokens=2 delims=:\" %%f in ('systeminfo ^| findstr \u002FC:\"Available Physical Memory\"') do set freememory=%%f\n\nrem Remove any commas or extra spaces\nset freememory=%freememory:,=%\nset freememory=%freememory: =%\n\nrem Send free memory to the webhook using curl\ncurl -X POST \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\" -H \"Content-Type: application\u002Fjson\" -d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\":  [[\\\"%freememory%\\\"]]}\"\n\npause\n\n","shell",[1712,8322,8323,8331,8335,8354,8379,8383,8405,8413,8423,8427,8449,8519,8523],{"__ignoreMap":1614},[2337,8324,8325,8328],{"class":2339,"line":2340},[2337,8326,8327],{"class":2343},"@echo",[2337,8329,8330],{"class":2347}," off\n",[2337,8332,8333],{"class":2339,"line":1618},[2337,8334,3504],{"emptyLinePlaceholder":1627},[2337,8336,8337,8340,8343,8345,8348,8351],{"class":2339,"line":1615},[2337,8338,8339],{"class":2343},"rem",[2337,8341,8342],{"class":2347}," Get",[2337,8344,3518],{"class":2347},[2337,8346,8347],{"class":2347}," free",[2337,8349,8350],{"class":2347}," memory",[2337,8352,8353],{"class":2347}," value\n",[2337,8355,8356,8359,8362,8365,8368,8371,8373,8376],{"class":2339,"line":3501},[2337,8357,8358],{"class":3592},"for",[2337,8360,8361],{"class":2378}," \u002Ff ",[2337,8363,8364],{"class":2347},"\"tokens=2 delims=:\"",[2337,8366,8367],{"class":2378}," %%f in (",[2337,8369,8370],{"class":2343},"'systeminfo ^| findstr \u002FC:\"Available Physical Memory\"'",[2337,8372,6617],{"class":2378},[2337,8374,8375],{"class":3592},"do",[2337,8377,8378],{"class":2378}," set freememory=%%f\n",[2337,8380,8381],{"class":2339,"line":3507},[2337,8382,3504],{"emptyLinePlaceholder":1627},[2337,8384,8385,8387,8390,8393,8396,8399,8402],{"class":2339,"line":3579},[2337,8386,8339],{"class":2343},[2337,8388,8389],{"class":2347}," Remove",[2337,8391,8392],{"class":2347}," any",[2337,8394,8395],{"class":2347}," commas",[2337,8397,8398],{"class":2347}," or",[2337,8400,8401],{"class":2347}," extra",[2337,8403,8404],{"class":2347}," spaces\n",[2337,8406,8407,8410],{"class":2339,"line":3658},[2337,8408,8409],{"class":3488},"set",[2337,8411,8412],{"class":2347}," freememory=%freememory:,=%\n",[2337,8414,8415,8417,8420],{"class":2339,"line":3664},[2337,8416,8409],{"class":3488},[2337,8418,8419],{"class":2347}," freememory=%freememory:",[2337,8421,8422],{"class":2347}," =%\n",[2337,8424,8425],{"class":2339,"line":3670},[2337,8426,3504],{"emptyLinePlaceholder":1627},[2337,8428,8429,8431,8433,8435,8437,8439,8441,8444,8446],{"class":2339,"line":3693},[2337,8430,8339],{"class":2343},[2337,8432,3676],{"class":2347},[2337,8434,8347],{"class":2347},[2337,8436,8350],{"class":2347},[2337,8438,3495],{"class":2347},[2337,8440,3518],{"class":2347},[2337,8442,8443],{"class":2347}," webhook",[2337,8445,3687],{"class":2347},[2337,8447,8448],{"class":2347}," curl\n",[2337,8450,8451,8453,8455,8457,8460,8462,8464,8466,8468,8470,8472,8474,8476,8478,8480,8482,8484,8486,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8509,8511,8514,8516],{"class":2339,"line":3746},[2337,8452,8202],{"class":2343},[2337,8454,8205],{"class":3488},[2337,8456,3681],{"class":2347},[2337,8458,8459],{"class":2347}," \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\"",[2337,8461,8213],{"class":3488},[2337,8463,8216],{"class":2347},[2337,8465,8219],{"class":3488},[2337,8467,8222],{"class":2347},[2337,8469,3593],{"class":3592},[2337,8471,3596],{"class":2347},[2337,8473,3593],{"class":3592},[2337,8475,3601],{"class":2347},[2337,8477,3593],{"class":3592},[2337,8479,8235],{"class":2347},[2337,8481,3593],{"class":3592},[2337,8483,3610],{"class":2347},[2337,8485,3593],{"class":3592},[2337,8487,3615],{"class":2347},[2337,8489,3593],{"class":3592},[2337,8491,3601],{"class":2347},[2337,8493,3593],{"class":3592},[2337,8495,3438],{"class":2347},[2337,8497,3593],{"class":3592},[2337,8499,3610],{"class":2347},[2337,8501,3593],{"class":3592},[2337,8503,3444],{"class":2347},[2337,8505,3593],{"class":3592},[2337,8507,8508],{"class":2347},":  [[",[2337,8510,3593],{"class":3592},[2337,8512,8513],{"class":2347},"%freememory%",[2337,8515,3593],{"class":3592},[2337,8517,8518],{"class":2347},"]]}\"\n",[2337,8520,8521],{"class":2339,"line":3760},[2337,8522,3504],{"emptyLinePlaceholder":1627},[2337,8524,8525],{"class":2339,"line":3136},[2337,8526,8527],{"class":2343},"pause\n",[1640,8529,8530,8531,8534],{},"You'll need to add a ",[1942,8532,8533],{"href":1111},"receive data from another app"," step into your axiom.ai automation to be able to use the data within your automation.",[1561,8536,2386],{"id":2385},[1566,8538],{},[1640,8540,8541,8542,8545],{},"To test your workflow, hit ",[1712,8543,8544],{},"ENTER"," on your command. If successful, you will receive a link to open the automation run in your browser, for example",[2329,8547,8549],{"className":3454,"code":8548,"language":3456,"meta":1614,"style":1614},"{\"OPEN LINK IN BROWSER\":\"https:\\\u002F\\\u002Fvnc.axiom.ai\\\u002Fvnc_lite.html?host=c-0027-v4-proxy.axiom.ai&port=443&autoconnect=true&password=xxxxxxxx&scale=local\"}\n",[1712,8550,8551],{"__ignoreMap":1614},[2337,8552,8553,8556,8559,8562,8565],{"class":2339,"line":2340},[2337,8554,8555],{"class":2378},"{",[2337,8557,8558],{"class":2343},"\"OPEN LINK IN BROWSER\"",[2337,8560,8561],{"class":3488},":",[2337,8563,8564],{"class":2343},"\"https:\\\u002F\\\u002Fvnc.axiom.ai\\\u002Fvnc_lite.html?host=c-0027-v4-proxy.axiom.ai&port=443&autoconnect=true&password=xxxxxxxx&scale=local\"",[2337,8566,4242],{"class":2343},[1640,8568,8569,8570,8572],{},"If there are errors returned, follow the error to determine if there is an issue with the command. If the automation has errors, you can find there in the ",[1942,8571,2402],{"href":2401}," of your account.",[1640,8574,8575],{},[2417,8576,8577],{},"Note: the correct format of the data, and the escaping of the quotation marks in your command are important, you may experience errors if you miss these steps.",[1561,8579,2406],{"id":2405},[1566,8581],{},[1640,8583,8584],{},"cURL commands can be a good way of triggering your automations, they can be included in batch files to include them in a much larger workflow.",[2421,8586,8587],{},"html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}",{"title":1614,"searchDepth":1615,"depth":1615,"links":8589},[8590,8591,8592,8595,8596],{"id":2155,"depth":1618,"text":2156},{"id":8181,"depth":1618,"text":8182},{"id":8299,"depth":1618,"text":8300,"children":8593},[8594],{"id":8305,"depth":1615,"text":8306},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to use cURL to trigger your automation. This allows for your automations to be triggered using the command line.",{"type":1712,"format":1701,"intent_type":2128,"intent":2437,"tags":8599,"platfrom":8602},[8202,8600,8601,8320],"endpoint","http",[3363],"\u002Fguides\u002Fcurl",{"title":8147,"description":8597},"guides\u002Fcurl","JUl0WeNAtxxDrIUiK-rsprpK9HT3u3nOOGuvQRJOePQ",{"id":8608,"title":8609,"body":8610,"date":1628,"description":8878,"extension":1621,"meta":8879,"navigation":1627,"order":1628,"path":8884,"seo":8885,"stem":8886,"__hash__":8887},"guides\u002Fguides\u002Fdata-input.md","How to automate data input from a Google sheet into a webform",{"type":1555,"value":8611,"toc":8868},[8612,8614,8621,8628,8656,8660,8662,8665,8704,8708,8710,8725,8729,8731,8734,8769,8772,8776,8779,8789,8793,8795,8798,8811,8815,8817,8820,8833,8837,8839,8845,8847,8849],[1566,8613],{},[1640,8615,8616,8617,8620],{},"This guide shows you how to start creating a simple bot to input data into any web form. It's a great ",[1942,8618,5537],{"href":8619},"\u002Fdocs\u002Ftutorials\u002Fwebforms"," for learning how to automate form filling using bots and a Google Sheet. After adding the initial steps, simply use the [builder](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder and customise the bot to your use case.",[1640,8622,8623,8624,8627],{},"We also have a ",[1942,8625,2664],{"href":8626},"\u002Fguides\u002Fdata-input-from-google-sheet"," template to get you started fast.",[2165,8629,8630,8635,8640,8645,8651],{},[1572,8631,8632],{},[1942,8633,1714],{"href":8634},".\u002Fdata-input#add-a-read-data-from-google-sheets-step",[1572,8636,8637],{},[1942,8638,1043],{"href":8639},".\u002Fdata-input#add-a-go-to-page-step-to-load-the-web-form",[1572,8641,8642],{},[1942,8643,293],{"href":8644},".\u002Fdata-input#add-an-enter-text-step-to-input-data",[1572,8646,8647],{},[1942,8648,8650],{"href":8649},".\u002Fdata-input#continue-adding-your-steps-as-needed","Add steps here",[1572,8652,8653],{},[1942,8654,5230],{"href":8655},".data-input#add-a-click-element-to-click-the-submit-button",[1561,8657,8659],{"id":8658},"prepare-your-google-sheet","Prepare your Google Sheet",[1566,8661],{},[1640,8663,8664],{},"Create a Google sheet with some test data to run your automation with.",[8666,8667,8668,8681],"table",{},[8669,8670,8671],"thead",{},[8672,8673,8674,8678],"tr",{},[8675,8676,8677],"th",{},"Col A",[8675,8679,8680],{},"Col B",[8682,8683,8684,8692,8698],"tbody",{},[8672,8685,8686,8689],{},[8687,8688,4265],"td",{},[8687,8690,8691],{},"Surname",[8672,8693,8694,8696],{},[8687,8695,4265],{},[8687,8697,8691],{},[8672,8699,8700,8702],{},[8687,8701,4265],{},[8687,8703,8691],{},[1561,8705,8707],{"id":8706},"start-from-blank-adding-the-following-steps","Start from blank, adding the following steps",[1566,8709],{},[1640,8711,8712,8713,8716,8717,8720,8721,8724],{},"In the axiom.ai Chrome extension dashboard, click ",[1653,8714,8715],{},"\"New Automation\""," and then select \"",[1653,8718,8719],{},"Add first step\"."," Use the ",[1942,8722,8723],{"href":1361},"step finder"," to add the steps outlined below.",[1561,8726,8728],{"id":8727},"add-a-read-data-from-a-google-sheet-step","Add a ‘Read data from a Google Sheet’ step",[1566,8730],{},[1640,8732,8733],{},"First we want to our test data from the Google Sheet.",[1701,8735,8736],{},[2165,8737,8738,8747,8752,8761],{},[1572,8739,8740,8742,8743,8746],{},[1653,8741,1721],{}," - Search for the Google Sheet you created in the ",[1653,8744,8745],{},"\"Spreadsheet","\" field. Once found, click to select.",[1572,8748,8749,8751],{},[1653,8750,1727],{}," - Choose a sheet tab or leave blank to use the first tab.",[1572,8753,8754,8757,8758,1668],{},[1653,8755,8756],{},"First cell"," - Start from a specified column and row, for example, ",[1653,8759,8760],{},"\"A1\"",[1572,8762,8763,8765,8766,1668],{},[1653,8764,6853],{}," - End at a specified column and row, for example, ",[1653,8767,8768],{},"\"AB1\"",[1640,8770,8771],{},"::tip Tip\n💡 To read a single row of data set a First and Last cell. This can be useful when you want to run a quick test run.\n::",[1561,8773,8775],{"id":8774},"add-a-go-to-page-step-to-load-the-web-form","Add a ‘Go to page’ step to load the web form",[1640,8777,8778],{},"Next we instruct the bot to load our webform in Chrome.",[1701,8780,8781],{},[2165,8782,8783],{},[1572,8784,8785,8788],{},[1653,8786,8787],{},"Enter URL -"," Insert the url to your webform.",[1561,8790,8792],{"id":8791},"add-an-enter-text-step-to-input-data","Add an ‘Enter text’ step to input data",[1566,8794],{},[1640,8796,8797],{},"Next, we use an ‘Enter text’ step to input our data into a field.",[1701,8799,8800],{},[2165,8801,8802],{},[1572,8803,8804,2630,8807,8810],{},[1653,8805,8806],{},"Text -",[1653,8808,8809],{},"‘Insert data’"," select ‘google-sheet-data’ to pass the message from the Sheet. Select column ‘A’ in the preview.",[1561,8812,8814],{"id":8813},"add-a-click-element-to-click-the-submit-button","Add a ‘Click element’ to click the submit button",[1566,8816],{},[1640,8818,8819],{},"Our next step is to set up the click action for the form's 'submit' button.",[1701,8821,8822],{},[2165,8823,8824],{},[1572,8825,8826,8828,8829,8832],{},[1653,8827,1775],{}," - Click ",[1653,8830,8831],{},"\"Select\""," highlight the ‘submit’ button click on it and press complete.",[1561,8834,8836],{"id":8835},"continue-adding-your-steps-as-needed","Continue adding your steps as needed",[1566,8838],{},[1640,8840,8841,8842,8844],{},"Now just use the ",[1942,8843,8723],{"href":1361}," to continue adding steps and complete your data entry bot.",[1561,8846,2406],{"id":2405},[1566,8848],{},[1640,8850,8851,8852,8855,8856,8858,8859,8863,8864,8867],{},"Data can be easily ",[1942,8853,8854],{"href":1373},"passed into steps"," and input into form elements by adding the \"Enter text\" step. A \"Click element\" step can be used to submit the form. However, these steps alone will most likely not be enough to complete data entry into most forms. To do so, use the step finder to add additional steps to build out your automation. You will find that axiom.ai comes with ",[1942,8857,1543],{"href":894}," to automate many different ",[1942,8860,8862],{"href":8861},"\u002Fdocs\u002Ftutorials\u002Fbrowser-actions","web actions"," performed when ",[1942,8865,8866],{"href":8619},"filling in forms",", such as selecting lists, date pickers, and key presses.",{"title":1614,"searchDepth":1615,"depth":1615,"links":8869},[8870,8871,8872,8873,8874,8875,8876,8877],{"id":8658,"depth":1618,"text":8659},{"id":8706,"depth":1618,"text":8707},{"id":8727,"depth":1618,"text":8728},{"id":8774,"depth":1618,"text":8775},{"id":8791,"depth":1618,"text":8792},{"id":8813,"depth":1618,"text":8814},{"id":8835,"depth":1618,"text":8836},{"id":2405,"depth":1618,"text":2406},"Learn how to create a simple bot that inputs data into a webform from a Google sheet in the browser.",{"type":2126,"format":2127,"intent_type":3360,"intent":8880,"tags":8881,"platfrom":8882},"Fill forms and input data",[2664,2665],[8883],"Google","\u002Fguides\u002Fdata-input",{"title":8609,"description":8878},"guides\u002Fdata-input","ccJqSmW5pioPvMgEw6MDy-tswupTYzNkIfRhrBoWSfA",{"id":8889,"title":8890,"body":8891,"date":2652,"description":9096,"extension":1621,"meta":9097,"navigation":1627,"order":1628,"path":8626,"seo":9102,"stem":9103,"__hash__":9104},"guides\u002Fguides\u002Fdata-input-from-google-sheet.md","How to automate data entry from a google sheet",{"type":1555,"value":8892,"toc":9088},[8893,8895,8898,8900,8902,8905,8909,8912,8914,8916,8920,8926,9037,9041,9044,9046,9051,9053,9055,9080],[1566,8894],{},[1640,8896,8897],{},"This data entry bot template automates data input through a web browser, bypassing the need for an API. The bot extracts data from a Google Sheet, launches Chrome, and mimics human actions by entering the data into a web form, followed by clicking the submit button. After each iteration, the processed row is removed from the Google Sheet.",[1558,8899],{},[1561,8901,2463],{"id":2462},[1640,8903,8904],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut 'sheet.new', assuming you already have an account. Name your sheet something like 'Data entry bot’ and set up a tab called 'Data'.",[1561,8906,8908],{"id":8907},"install-the-data-entry-bot","Install the data entry bot",[1640,8910,8911],{},"To install this data entry bot click 'Install template'. If you’re a new user, you’ll have to click 'Install Chrome extension' and create a free axiom.ai account before you can edit the template.",[1640,8913,2486],{},[1640,8915,1692],{},[1561,8917,8919],{"id":8918},"configure-your-data-entry-bot-in-just-a-few-steps","Configure your data entry bot in just a few steps",[1640,8921,8922,8923,8925],{},"We've provided a set of example steps within Step 2.0 - Loop through data. You can further customize this bot by adding additional ",[1942,8924,1543],{"href":1542}," within this loop to suit your specific needs.",[1701,8927,8928],{},[1569,8929,8930,8947],{},[1572,8931,8932,1710,8934,8936],{},[1653,8933,1709],{},[1712,8935,1714],{},[1569,8937,8938,8942],{},[1572,8939,8940,1722],{},[1712,8941,1721],{},[1572,8943,8944,8946],{},[1712,8945,1727],{},": Choose the sheet tab with the data to be input.",[1572,8948,8949,1710,8951,8953],{},[1653,8950,1733],{},[1712,8952,667],{},[1569,8954,8955,8976,8996,9009],{},[1572,8956,8957,1710,8959,8961],{},[1653,8958,1742],{},[1712,8960,293],{},[1569,8962,8963,8968],{},[1572,8964,8965,8967],{},[1712,8966,1775],{},": An input field to enter data into.",[1572,8969,8970,1752,8972,1756,8974,1668],{},[1712,8971,2563],{},[1712,8973,1755],{},[1712,8975,1847],{},[1572,8977,8978,1710,8980,8982],{},[1653,8979,1765],{},[1712,8981,293],{},[1569,8983,8984,8988],{},[1572,8985,8986,8967],{},[1712,8987,1775],{},[1572,8989,8990,1752,8992,1756,8994,1668],{},[1712,8991,2563],{},[1712,8993,1755],{},[1712,8995,1847],{},[1572,8997,8998,1710,9000,9002],{},[1653,8999,1790],{},[1712,9001,5230],{},[1569,9003,9004],{},[1572,9005,9006,9008],{},[1712,9007,1775],{},": The submit form button.",[1572,9010,9011,1710,9013,9015],{},[1653,9012,1833],{},[1712,9014,1901],{},[1569,9016,9017,9021,9025,9031],{},[1572,9018,9019,1722],{},[1712,9020,1721],{},[1572,9022,9023,1912],{},[1712,9024,1727],{},[1572,9026,9027,1782,9029,1668],{},[1712,9028,1917],{},[1712,9030,1785],{},[1572,9032,9033,1782,9035,1668],{},[1712,9034,1924],{},[1712,9036,1785],{},[1561,9038,9040],{"id":9039},"run-your-data-entry-bot","Run your data entry bot",[1640,9042,9043],{},"We suggest running a test first; watch the bot as it inputs data into the form, then stop the bot after a few loops.",[1561,9045,1937],{"id":1936},[1640,9047,9048,9049,1946],{},"Like all axiom.ai ",[1942,9050,1945],{"href":1944},[1561,9052,1398],{"id":1949},[1640,9054,1952],{},[1701,9056,9057],{},[1569,9058,9059,9070],{},[1572,9060,9061,9064,9066,9067,1668],{},[1653,9062,9063],{},"Element not found?",[1963,9065],{},"\nTry reselecting or using ",[1942,9068,9069],{"href":1383},"custom selectors",[1572,9071,9072,9075,9076,9079],{},[1653,9073,9074],{},"Data entered into the wrong input?","\nAdd ",[1942,9077,9078],{"href":1210},"wait steps"," between inputs.",[1640,9081,2101,9082,2906,9084],{},[1942,9083,2104],{"href":82},[1942,9085,9087],{"href":9086},"\u002Fblog\u002Fhow-to-automate-data-entry","data entry from a google sheet.",{"title":1614,"searchDepth":1615,"depth":1615,"links":9089},[9090,9091,9092,9093,9094,9095],{"id":2462,"depth":1618,"text":2463},{"id":8907,"depth":1618,"text":8908},{"id":8918,"depth":1618,"text":8919},{"id":9039,"depth":1618,"text":9040},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide shows how to automate data entry from a Google Sheet using axiom.ai. Learn to fill web forms, submit data, and remove rows after each run.",{"pinned":1627,"application":3363,"read":9098,"level":2123,"video":9099,"templateId":6321,"type":2126,"format":2127,"intent_type":3360,"intent":8880,"tags":9100,"platfrom":9101},"6 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fdl1BVUWix1Q",[2664,2665],[8883],{"title":8890,"description":9096},"guides\u002Fdata-input-from-google-sheet","09AgODg7eakLV1yuO5mi9YekCMNHvHwvG-zuiMX2tPU",{"id":9106,"title":9107,"body":9108,"date":1628,"description":9217,"extension":1621,"meta":9218,"navigation":1627,"order":1628,"path":9222,"seo":9223,"stem":9224,"__hash__":9225},"guides\u002Fguides\u002Fdate-input.md","How to automate date inputs with the Date and time step",{"type":1555,"value":9109,"toc":9212},[9110,9112,9115,9119,9121,9127,9148,9151,9155,9157,9164,9188,9193,9197,9199],[1566,9111],{},[1640,9113,9114],{},"Getting a date and using this within your automation can be helpful when form filling, or when keeping track of when your automation has run.",[1561,9116,9118],{"id":9117},"getting-a-date-and-time","Getting a date and time",[1566,9120],{},[1640,9122,6656,9123,9126],{},[1942,9124,9125],{"href":968},"Date and time"," step can be used to get a date. This has various options to get a timestamp, such as:",[1701,9128,9129],{},[1569,9130,9131,9137,9142],{},[1572,9132,9133,9136],{},[1653,9134,9135],{},"Current"," - the current date and time.",[1572,9138,9139,9141],{},[1653,9140,5242],{}," - various options for the date to return a date relative to the current date, such as in the past or future.",[1572,9143,9144,9147],{},[1653,9145,9146],{},"Reformat existing"," - reformat a date and time passed into the step, useful when using a date from a Google Sheet.",[1640,9149,9150],{},"The \"Date and time\" step generates a timestamp for the exact moment the step is executed in the automation. This timestamp reflects when the \"Date and time\" step runs, not when it is referenced elsewhere. Typically, this difference is just a few milliseconds, though it may increase for larger automations. If consistency across steps is crucial, run the \"Date and time\" step immediately before the step using its output.",[1561,9152,9154],{"id":9153},"using-the-timestamp","Using the timestamp",[1566,9156],{},[1640,9158,9159,9160,9163],{},"The \"Date and time\" step will return a ",[1712,9161,9162],{},"date-and-time"," data token. This can be used in other steps using the \"Insert data\" option within steps that have inputs. Some steps that this can be used in:",[1569,9165,9166,9171,9177,9182],{},[1572,9167,9168,9170],{},[1942,9169,293],{"href":1012}," step - to input into forms.",[1572,9172,9173,9176],{},[1942,9174,9175],{"href":1214},"Write to a Google Sheet"," step - to write to your Google Sheet, to keep track of when the data was created, for example.",[1572,9178,9179,9181],{},[1942,9180,7059],{"href":988}," step - to add the date into your file or folder name.",[1572,9183,9184,9187],{},[1942,9185,9186],{"href":1170},"Send an email"," - to add the date into your email body.",[1640,9189,9190,9191,2838],{},"For automating a date picker, see the ",[1942,9192,289],{"href":964},[1561,9194,9196],{"id":9195},"see-also","See also",[1566,9198],{},[1569,9200,9201,9206],{},[1572,9202,9203],{},[1942,9204,9205],{"href":1373},"Passing data between steps",[1572,9207,9208],{},[1942,9209,9211],{"href":9210},"\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript#get-the-date-and-time-with-javascript","Getting the date and time with JavaScript",{"title":1614,"searchDepth":1615,"depth":1615,"links":9213},[9214,9215,9216],{"id":9117,"depth":1618,"text":9118},{"id":9153,"depth":1618,"text":9154},{"id":9195,"depth":1618,"text":9196},"Learn how to automatically retrieve the date and time, and use this within your automations for form filling, and data output.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":8880,"tags":9219,"platfrom":9221},[9220,8862],"date picker",[8883],"\u002Fguides\u002Fdate-input",{"title":9107,"description":9217},"guides\u002Fdate-input","P3CRi-E4MenQh4EM2RhB0DZb9Tthr_VPrkDewC5QsHw",{"id":9227,"title":9228,"body":9229,"date":1628,"description":9436,"extension":1621,"meta":9437,"navigation":1627,"order":1628,"path":9441,"seo":9442,"stem":9443,"__hash__":9444},"guides\u002Fguides\u002Fdiscord.md","How to automate posting to Discord using an axiom.ai automation",{"type":1555,"value":9230,"toc":9430},[9231,9233,9236,9239,9241,9243,9246,9268,9276,9280,9282,9292,9295,9345,9348,9373,9383,9387,9389,9391,9400,9402,9404,9411,9420,9422,9427],[1566,9232],{},[1640,9234,9235],{},"Discord is a popular communication platform that allows for real-time interactions. It's often used amongst friends to join in activities such as gaming, but can also be used as a resource hub to provide updates and customer services to users of a specific service. You can easily use your axiom.ai automations to post new content to your Discord servers.",[1640,9237,9238],{},"Note, webhooks are only available within channels inside of Discord servers.",[1561,9240,2156],{"id":2155},[1566,9242],{},[1640,9244,9245],{},"To send data to Discord, you'll need the following:",[1701,9247,9248],{},[2165,9249,9250,9256,9262],{},[1572,9251,9252,9255],{},[1653,9253,9254],{},"Server"," - You'll need to have a server set up.",[1572,9257,9258,9261],{},[1653,9259,9260],{},"Channel"," - You'll need to have a channel set up.",[1572,9263,9264,9267],{},[1653,9265,9266],{},"A webhook URL"," - In the sidebar, hit the 'cog' beside the channel name, then head into \"Integrations\", then \"Webhooks\", click \"Create Webhook\", open the newly created webhook and click \"Copy Webhook URL\". Save this for later use.",[1640,9269,9270,9271,1668],{},"If you have any issues obtaining the webhook URL from Discord, contact ",[1942,9272,9275],{"href":9273,"rel":9274},"https:\u002F\u002Fsupport.discord.com\u002Fhc\u002Fen-us",[3850],"Discord support",[1561,9277,9279],{"id":9278},"post-a-discord-message-with-an-axiomai-automation","Post a Discord message with an axiom.ai automation",[1566,9281],{},[1640,9283,9284,9285,9288,9289,9291],{},"To send a message to a channel within your Discord server, you'll need to use the ",[1942,9286,9287],{"href":1614},"Trigger webhook"," step. You'll need the webhook URL from Discord detailed in the ",[1942,9290,8191],{"href":8190}," section.",[1640,9293,9294],{},"The payload that Discord is expecting can be found below and can be modified to your requirements:",[2329,9296,9299],{"className":9297,"code":9298,"language":4188,"meta":1614,"style":1614},"language-json shiki shiki-themes github-light-default github-dark-default","{\n    \"content\": \"\u003CYOUR_MESSAGE>\",\n    \"username\": \"Axiom bot\",\n    \"avatar_url\": \"\u003CURL>\"\n}\n",[1712,9300,9301,9306,9319,9331,9341],{"__ignoreMap":1614},[2337,9302,9303],{"class":2339,"line":2340},[2337,9304,9305],{"class":2378},"{\n",[2337,9307,9308,9312,9314,9317],{"class":2339,"line":1618},[2337,9309,9311],{"class":9310},"sjgCt","    \"content\"",[2337,9313,3601],{"class":2378},[2337,9315,9316],{"class":2347},"\"\u003CYOUR_MESSAGE>\"",[2337,9318,4030],{"class":2378},[2337,9320,9321,9324,9326,9329],{"class":2339,"line":1615},[2337,9322,9323],{"class":9310},"    \"username\"",[2337,9325,3601],{"class":2378},[2337,9327,9328],{"class":2347},"\"Axiom bot\"",[2337,9330,4030],{"class":2378},[2337,9332,9333,9336,9338],{"class":2339,"line":3501},[2337,9334,9335],{"class":9310},"    \"avatar_url\"",[2337,9337,3601],{"class":2378},[2337,9339,9340],{"class":2347},"\"\u003CURL>\"\n",[2337,9342,9343],{"class":2339,"line":3507},[2337,9344,4242],{"class":2378},[1640,9346,9347],{},"Let's break down each part of that payload:",[1701,9349,9350],{},[1569,9351,9352,9362,9367],{},[1572,9353,9354,9357,9358,9361],{},[1653,9355,9356],{},"content"," - this is your message contents that will be posted to the channel. You can insert text manually, or use the \"Insert data\" option to insert a data token. Learn more with our ",[1942,9359,9360],{"href":1373},"passing data between steps"," tutorial.",[1572,9363,9364,9366],{},[1653,9365,5690],{}," - this is optional, give a name to the bot posting your message.",[1572,9368,9369,9372],{},[1653,9370,9371],{},"avatar_url"," - this is optional, display an avatar for the bot posting your message.",[1640,9374,9375,9376,9378,9379,9382],{},"Hit \"Save\" once you are happy with your automation. Below you will find an example of this in action, we've omitted the ",[1712,9377,9371],{}," in this instance and used the ",[1712,9380,9381],{},"[custom-data]"," data token to pass a custom message into the webhook.",[2202,9384],{"src":9385,"alt":9386},"\u002Fdocs\u002Fguides\u002Fdiscord-trigger-webhook.png","use the trigger webhook step to trigger a Discord webhook",[1561,9388,2386],{"id":2385},[1566,9390],{},[1640,9392,9393,9394,9396,9397,9399],{},"Once you have your automation saved, click \"Run\" within the axiom.ai extension to get started. If successful, you should see a message appear in your Discord channel within a few seconds. If this is not successful, review any errors that appear in the builder, or within your ",[1942,9395,129],{"href":2401},". See ",[1942,9398,6474],{"href":1409}," for details on common errors and how to resolve them.",[1561,9401,2406],{"id":2405},[1566,9403],{},[1640,9405,9406,9407,9410],{},"Powering up your teams messaging using Discord and axiom.ai can be help to keep your content fresh - from automating posting using content that has been stored in a Google Sheet, to content that was automatically generated using our ",[1942,9408,1793],{"href":9409},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgenerate-text-with-chatgpt"," step, the possibilities are endless.",[1640,9412,9413,9414,9419],{},"As with all API based tools, it's worth noting the ",[1942,9415,9418],{"href":9416,"rel":9417},"https:\u002F\u002Fdiscord.com\u002Fdeveloper-hub\u002Fdocs\u002Ftopics\u002Frate-limits",[3850],"rate limits"," that Discord applies to their webhooks - if you are having issues with messages not posting correctly, this is often the first culprit.",[1566,9421],{},[1640,9423,9424],{},[2417,9425,9426],{},"Testing was completed on 26 Nov 2024, features in Discord or axiom.ai may change from time to time and updates may need to be made.",[2421,9428,9429],{},"html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sjgCt, html code.shiki .sjgCt{--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":9431},[9432,9433,9434,9435],{"id":2155,"depth":1618,"text":2156},{"id":9278,"depth":1618,"text":9279},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"This guide explains how to post messages to Discord using axiom.ai. Learn to use webhooks, send custom content, and automate updates to your server channels.",{"type":2126,"format":1701,"intent_type":2658,"intent":2659,"tags":9438,"platfrom":9439},[2661,2925],[9440],"Discord","\u002Fguides\u002Fdiscord",{"title":9228,"description":9436},"guides\u002Fdiscord","DtVJ7jyF0A0EMXMCgfnhUTXRejRG8Hijh7IPFbqO9fg",{"id":9446,"title":9447,"body":9448,"date":1628,"description":9671,"extension":1621,"meta":9672,"navigation":1627,"order":1628,"path":9675,"seo":9676,"stem":9677,"__hash__":9678},"guides\u002Fguides\u002Fentering-text-into-search-field.md","How to automate entering text into search and clicking the result",{"type":1555,"value":9449,"toc":9665},[9450,9452,9455,9461,9463,9466,9505,9507,9515,9647,9649,9652,9654],[1566,9451],{},[1640,9453,9454],{},"This guide shows you how to start creating a bot to input text into a search field from a Google Sheet, click return to submit the search then click on the result. After adding the initial steps, simply use the [builder](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder to customise the bot to your use case.",[1640,9456,9457,9458,9460],{},"We also have a great ",[1942,9459,2664],{"href":8626}," template to get you started.",[1561,9462,8659],{"id":8658},[1640,9464,9465],{},"Create a Google sheet with some test text to run your automation with.",[8666,9467,9468,9476],{},[8669,9469,9470],{},[8672,9471,9472,9474],{},[8675,9473,8677],{},[8675,9475,8680],{},[8682,9477,9478,9488,9495],{},[8672,9479,9480,9486],{},[8687,9481,9482],{},[1942,9483,9485],{"href":9484},"mailto:alex@testemail.com","alex@testemail.com",[8687,9487,8691],{},[8672,9489,9490,9493],{},[8687,9491,9492],{},"claretestemail.com",[8687,9494,8691],{},[8672,9496,9497,9503],{},[8687,9498,9499],{},[1942,9500,9502],{"href":9501},"mailto:sam@testemail.com","sam@testemail.com",[8687,9504,8691],{},[1561,9506,8707],{"id":8706},[1640,9508,8712,9509,8716,9511,8720,9513,8724],{},[1653,9510,8715],{},[1653,9512,8719],{},[1942,9514,8723],{"href":1361},[1701,9516,9517],{},[1569,9518,9519,9540],{},[1572,9520,9521,1710,9523,9525],{},[1653,9522,1709],{},[1712,9524,1714],{},[1569,9526,9527,9535],{},[1572,9528,9529,9531,9532,9534],{},[1712,9530,1721],{},": Search for the Google Sheet you created in the ",[1712,9533,1721],{}," field. Once found, click to select.",[1572,9536,9537,9539],{},[1712,9538,1727],{},": Choose a sheet tab or leave blank to use the first tab.",[1572,9541,9542,1710,9544,9546,9556],{},[1653,9543,1733],{},[1712,9545,667],{},[1569,9547,9548],{},[1572,9549,9550,1752,9552,1756,9554,1668],{},[1712,9551,667],{},[1712,9553,1814],{},[1712,9555,1759],{},[1569,9557,9558,9571,9600,9618,9635],{},[1572,9559,9560,1710,9562,9564],{},[1653,9561,1742],{},[1712,9563,1043],{},[1569,9565,9566],{},[1572,9567,9568,9570],{},[1712,9569,1751],{},": Insert the URL of the website.",[1572,9572,9573,1710,9575,9577],{},[1653,9574,1765],{},[1712,9576,293],{},[1569,9578,9579,9588],{},[1572,9580,9581,1752,9583,9585,9586,1668],{},[1712,9582,1775],{},[1712,9584,1775],{},", highlight the search field and click to select, finally press ",[1712,9587,5250],{},[1572,9589,9590,1752,9592,1756,9594,9596,9597,9599],{},[1712,9591,2563],{},[1712,9593,1814],{},[1712,9595,1759],{}," to pass the search term from the sheet. Select column ",[1712,9598,5139],{}," in the preview.",[1572,9601,9602,1710,9604,9606],{},[1653,9603,1790],{},[1712,9605,6931],{},[1569,9607,9608],{},[1572,9609,9610,6939,9612,7068,9614,9617],{},[1712,9611,6938],{},[1712,9613,6942],{},[1712,9615,9616],{},"Return",", to submit the search.",[1572,9619,9620,1710,9622,9624],{},[1653,9621,1833],{},[1712,9623,5230],{},[1569,9625,9626],{},[1572,9627,9628,1752,9630,9632,9633,1668],{},[1712,9629,1775],{},[1712,9631,1775],{},", highlight the search result, and press ",[1712,9634,5250],{},[1572,9636,9637,1710,9639,9642],{},[1653,9638,1861],{},[1712,9640,9641],{},"Delete row from Google Sheet",[1569,9643,9644],{},[1572,9645,9646],{},"Automatically removes the processed row to avoid duplicate scrapes in the next loop.",[1561,9648,8836],{"id":8835},[1640,9650,9651],{},"Now just use the step finder to continue adding steps and complete your search bot as required.",[1561,9653,2406],{"id":2405},[1640,9655,9656,9657,9661,9662,9664],{},"You can quickly scaffold a bot to ",[1942,9658,9660],{"href":9659},"\u002Fdocs\u002Ftutorials\u002Fdata","enter data"," into a search field and click the first result. This can be done with just a few steps. It is then possible to add additional ",[1942,9663,1543],{"href":1361}," to fully customize the bot to the use case",{"title":1614,"searchDepth":1615,"depth":1615,"links":9666},[9667,9668,9669,9670],{"id":8658,"depth":1618,"text":8659},{"id":8706,"depth":1618,"text":8707},{"id":8835,"depth":1618,"text":8836},{"id":2405,"depth":1618,"text":2406},"This guide shows how to automate typing search terms from a Google Sheet into a website and clicking the result using axiom.ai’s No-code tool.",{"pinned":1627,"type":2126,"format":2128,"intent_type":2658,"intent":8880,"tags":9673,"platfrom":9674},[2664],[3363],"\u002Fguides\u002Fentering-text-into-search-field",{"title":9447,"description":9671},"guides\u002Fentering-text-into-search-field","Hv9XgIb5ijdiaflcb9rW80QrUg7Dajvk-hculcMuJ6c",{"id":9680,"title":9681,"body":9682,"date":1628,"description":9688,"extension":1621,"meta":9875,"navigation":1627,"order":1628,"path":9881,"seo":9882,"stem":9883,"__hash__":9884},"guides\u002Fguides\u002Ferror-reporting-via-webhook.md","How to set up custom error reporting with webhooks and enriched context",{"type":1555,"value":9683,"toc":9867},[9684,9686,9689,9692,9696,9700,9703,9764,9767,9771,9774,9777,9784,9823,9826,9830,9833,9839,9843,9846,9850,9853,9856,9859,9862,9864],[1566,9685],{},[1640,9687,9688],{},"When running automations in the cloud, it’s important to understand errors clearly so you can fix them quickly. Standard error messages work well for simple failures, but they lack the detail needed when data is transformed, filtered, or combined across multiple steps.",[1640,9690,9691],{},"In these cases, having more context about what happened to the data during a run makes debugging far easier. You can create custom error messages and enrich them with data from your automation using just a few clicks. Let’s dive in.",[1561,9693,9695],{"id":9694},"how-to-set-up-webhook-or-email-notifications","How to set up webhook or email notifications",[2202,9697],{"src":9698,"alt":9699},"\u002Fguides\u002Fnotificaiton-on-error.webp","Axiom.ai configure notifications",[1640,9701,9702],{},"To configure notifications for your automation:",[1701,9704,9705],{},[2165,9706,9707,9713,9723,9740,9754],{},[1572,9708,9709,9710,1668],{},"Inside the automation editor, click ",[1712,9711,9712],{},"**Settings**",[1572,9714,9715,9716,9719,9720,1668],{},"Under ",[1712,9717,9718],{},"**Run options**",", click ",[1712,9721,9722],{},"**Notifications**",[1572,9724,2311,9725,9728,9729],{},[1712,9726,9727],{},"**When to notify**",", for example:\n",[1569,9730,9731,9734,9737],{},[1572,9732,9733],{},"On error",[1572,9735,9736],{},"On success",[1572,9738,9739],{},"On warnings",[1572,9741,9742,9743,9746,9747],{},"Choose ",[1712,9744,9745],{},"**How to notify**",":\n",[1569,9748,9749,9752],{},[1572,9750,9751],{},"Webhook",[1572,9753,8007],{},[1572,9755,9756,9757,9760,9761,1668],{},"Enter the ",[1712,9758,9759],{},"**webhook URL**"," or one or more ",[1712,9762,9763],{},"**email addresses**",[1640,9765,9766],{},"By default, notifications include the run status and basic error logs. While useful, this information is often too limited when debugging more complex automations.",[1561,9768,9770],{"id":9769},"how-to-enrich-your-error-message-with-data","How to enrich your error message with data",[2202,9772],{"src":9773,"alt":9699},"\u002Fguides\u002Fcustom-error-message.webp",[1640,9775,9776],{},"You can enrich error messages by attaching contextual data from your automation.",[1640,9778,9779,9780,9783],{},"Using the step finder, search for and add the ",[1653,9781,9782],{},"Add error metadata"," step. Place this step immediately after the step you want to monitor.",[1701,9785,9786],{},[2165,9787,9788,9795,9805,9820],{},[1572,9789,9790,9791,9794],{},"Insert the ",[1712,9792,9793],{},"**Add error metadata**"," step into your automation.",[1572,9796,9797,9798,9801,9802,1668],{},"In the ",[1712,9799,9800],{},"**Message**"," field, click ",[1712,9803,9804],{},"**Insert data**",[1572,9806,9807,9808,9810,9811],{},"Select tokens from any step that appears before the ",[1712,9809,9793],{}," step.\n",[1569,9812,9813],{},[1572,9814,9815,9816,9819],{},"For example, if you are manipulating scraped data with a ",[1712,9817,9818],{},"**Split**"," step, you can include the output from that step.",[1572,9821,9822],{},"Combine tokens and text to construct a clear, descriptive error message that explains what data was being processed at the time.",[1640,9824,9825],{},"Any error that occurs after this step will automatically include the enriched message, making it much easier to understand what went wrong during the run.",[1561,9827,9829],{"id":9828},"how-to-handle-runtime-errors-with-different-actions","How to handle runtime errors with different actions",[1640,9831,9832],{},"In some cases, you may want your automation to take a different set of actions when an error occurs instead of failing completely.",[1640,9834,9835,9836,9838],{},"This can be done using the ",[1653,9837,1197],{}," step. Any steps placed inside the catch block will only run if the bot fails. This lets you define an alternative sequence of steps that only execute when an error occurs, instead of stopping the automation.",[1561,9840,9842],{"id":9841},"how-to-ignore-errors-completely","How to ignore errors completely",[1640,9844,9845],{},"If you want your automation to continue running even when certain steps fail, you can configure steps to ignore errors. This is useful when errors are expected or non critical and should not stop the entire run.",[1561,9847,9849],{"id":9848},"major-update-session-recording-and-breakpoints","Major update: session recording and breakpoints",[1640,9851,9852],{},"We’re working on a major update to axiom.ai that introduces session recording and breakpoints.",[1640,9854,9855],{},"Run reports will include visual and text based playback of your automation. The text playback will provide a detailed commentary of what is happening in the browser at each stage of the run.",[1640,9857,9858],{},"After testing this feature internally, it’s clear this is a big step forward for debugging and understanding automation behaviour. It will be useful not only for users, but also for customer support when helping diagnose issues.",[1640,9860,9861],{},"Session recording will be available on higher tier plans and will be optional. For privacy, sensitive data will be automatically blurred in recordings.",[1561,9863,2406],{"id":2405},[1640,9865,9866],{},"Custom error reporting gives you far more visibility into what your automation is doing and why it failed. By combining notifications with enriched error metadata, you can diagnose issues faster and build more resilient automations.",{"title":1614,"searchDepth":1615,"depth":1615,"links":9868},[9869,9870,9871,9872,9873,9874],{"id":9694,"depth":1618,"text":9695},{"id":9769,"depth":1618,"text":9770},{"id":9828,"depth":1618,"text":9829},{"id":9841,"depth":1618,"text":9842},{"id":9848,"depth":1618,"text":9849},{"id":2405,"depth":1618,"text":2406},{"metaTitle":9876,"type":2126,"format":1701,"intent_type":2128,"intent":9877,"tags":9878,"platfrom":9880},"Learn how to create custom error notifications in axiom.ai using webhooks or email, and enrich error messages with automation data for faster debugging.","Generate reports and summaries",[9879],"error handling",[3363],"\u002Fguides\u002Ferror-reporting-via-webhook",{"title":9681,"description":9688},"guides\u002Ferror-reporting-via-webhook","JgQEpKk5x1YtfjjHwavxPvo9sQcmgXpwfsShaEIaSTg",{"id":9886,"title":9887,"body":9888,"date":1628,"description":10303,"extension":1621,"meta":10304,"navigation":1627,"order":1628,"path":10307,"seo":10308,"stem":10309,"__hash__":10310},"guides\u002Fguides\u002Fextract-emails.md","How to extract emails from a webpage",{"type":1555,"value":9889,"toc":10295},[9890,9892,9895,9897,9900,9904,9907,9936,9939,9970,9974,9977,10084,10087,10182,10185,10273,10275,10281,10284,10286,10292],[1566,9891],{},[1640,9893,9894],{},"Extracting a list of email addresses can be useful when attempting to retrieve contact details from multiple websites. Not all websites will have email addresses present within the page as the trend to move to contact forms continues to grow, but the details below will help you get started.",[1561,9896,2156],{"id":2155},[1640,9898,9899],{},"To get started, create an a new automation within axiom.ai.",[1561,9901,9903],{"id":9902},"extracting-email-addresses","Extracting email addresses",[1640,9905,9906],{},"In order to extract email addresses from a single page, follow the steps below:",[1701,9908,9909],{},[2165,9910,9911,9919,9926],{},[1572,9912,9913,9914,9918],{},"Add a ",[1942,9915,9916],{"href":1044},[1712,9917,1043],{}," step to your automation, input the website that you would like to extract email addresses from.",[1572,9920,9913,9921,9925],{},[1942,9922,9923],{"href":1226},[1712,9924,3904],{}," step, include the code below to extract the email addresses. Select the variant that works for your needs.",[1572,9927,9913,9928,9932,9933,9935],{},[1942,9929,9930],{"href":1214},[1712,9931,9175],{}," step and write the ",[1712,9934,4583],{}," data token to your Google Sheet.",[1640,9937,9938],{},"To use this method to extract email addresses from multiple pages, follow the steps below:",[1701,9940,9941],{},[2165,9942,9943,9957,9967],{},[1572,9944,9913,9945,9949,9950,9956],{},[1942,9946,9947],{"href":1091},[1712,9948,1714],{}," step, this sheet should contain a list of URLs to visit. See ",[1942,9951,9953],{"href":9952},".\u002Fextract-links-into-google-sheet",[1712,9954,9955],{},"How to extract links and write to a Google Sheet"," for more details on how to do this.",[1572,9958,9913,9959,9963,9964,9966],{},[1942,9960,9961],{"href":1075},[1712,9962,667],{}," step, use the ",[1712,9965,1759],{}," token to loop through the list of URLs.",[1572,9968,9969],{},"Inside the loop, add the steps from the section above.",[2249,9971,9973],{"id":9972},"scripts","Scripts",[1640,9975,9976],{},"Retrieve all email addresses:",[2329,9978,9980],{"className":2366,"code":9979,"language":2368,"meta":1614,"style":1614},"function getEmails() {\n    var pageHTML = document.body.innerHTML;\n    pageHTMLStr = pageHTML.toString();\n\n    emailAddresses = pageHTMLStr.match(\u002F([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)\u002Fgi);\n    return [emailAddresses];\n}\n",[1712,9981,9982,9993,10006,10021,10025,10072,10080],{"__ignoreMap":1614},[2337,9983,9984,9987,9990],{"class":2339,"line":2340},[2337,9985,9986],{"class":3592},"function",[2337,9988,9989],{"class":3979}," getEmails",[2337,9991,9992],{"class":2378},"() {\n",[2337,9994,9995,9998,10001,10003],{"class":2339,"line":1618},[2337,9996,9997],{"class":3592},"    var",[2337,9999,10000],{"class":2378}," pageHTML ",[2337,10002,6556],{"class":3592},[2337,10004,10005],{"class":2378}," document.body.innerHTML;\n",[2337,10007,10008,10011,10013,10016,10019],{"class":2339,"line":1615},[2337,10009,10010],{"class":2378},"    pageHTMLStr ",[2337,10012,6556],{"class":3592},[2337,10014,10015],{"class":2378}," pageHTML.",[2337,10017,10018],{"class":3979},"toString",[2337,10020,4191],{"class":2378},[2337,10022,10023],{"class":2339,"line":3501},[2337,10024,3504],{"emptyLinePlaceholder":1627},[2337,10026,10027,10030,10032,10035,10038,10040,10043,10046,10049,10052,10054,10056,10060,10062,10064,10067,10070],{"class":2339,"line":3507},[2337,10028,10029],{"class":2378},"    emailAddresses ",[2337,10031,6556],{"class":3592},[2337,10033,10034],{"class":2378}," pageHTMLStr.",[2337,10036,10037],{"class":3979},"match",[2337,10039,4145],{"class":2378},[2337,10041,10042],{"class":2347},"\u002F(",[2337,10044,10045],{"class":3488},"[a-zA-Z0-9._-]",[2337,10047,10048],{"class":3592},"+",[2337,10050,10051],{"class":2347},"@",[2337,10053,10045],{"class":3488},[2337,10055,10048],{"class":3592},[2337,10057,10059],{"class":10058},"sa8KN","\\.",[2337,10061,10045],{"class":3488},[2337,10063,10048],{"class":3592},[2337,10065,10066],{"class":2347},")\u002F",[2337,10068,10069],{"class":3592},"gi",[2337,10071,6591],{"class":2378},[2337,10073,10074,10077],{"class":2339,"line":3579},[2337,10075,10076],{"class":3592},"    return",[2337,10078,10079],{"class":2378}," [emailAddresses];\n",[2337,10081,10082],{"class":2339,"line":3658},[2337,10083,4242],{"class":2378},[1640,10085,10086],{},"Retrieve all email addresses, remove duplicates:",[2329,10088,10090],{"className":2366,"code":10089,"language":2368,"meta":1614,"style":1614},"function getEmails() {\n    var pageHTML = document.body.innerHTML;\n    pageHTMLStr = pageHTML.toString();\n\n    emailAddresses = pageHTMLStr.match(\u002F([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)\u002Fgi);\n    return [[...new Set(emailAddresses)]];\n}\n",[1712,10091,10092,10100,10110,10122,10126,10162,10178],{"__ignoreMap":1614},[2337,10093,10094,10096,10098],{"class":2339,"line":2340},[2337,10095,9986],{"class":3592},[2337,10097,9989],{"class":3979},[2337,10099,9992],{"class":2378},[2337,10101,10102,10104,10106,10108],{"class":2339,"line":1618},[2337,10103,9997],{"class":3592},[2337,10105,10000],{"class":2378},[2337,10107,6556],{"class":3592},[2337,10109,10005],{"class":2378},[2337,10111,10112,10114,10116,10118,10120],{"class":2339,"line":1615},[2337,10113,10010],{"class":2378},[2337,10115,6556],{"class":3592},[2337,10117,10015],{"class":2378},[2337,10119,10018],{"class":3979},[2337,10121,4191],{"class":2378},[2337,10123,10124],{"class":2339,"line":3501},[2337,10125,3504],{"emptyLinePlaceholder":1627},[2337,10127,10128,10130,10132,10134,10136,10138,10140,10142,10144,10146,10148,10150,10152,10154,10156,10158,10160],{"class":2339,"line":3507},[2337,10129,10029],{"class":2378},[2337,10131,6556],{"class":3592},[2337,10133,10034],{"class":2378},[2337,10135,10037],{"class":3979},[2337,10137,4145],{"class":2378},[2337,10139,10042],{"class":2347},[2337,10141,10045],{"class":3488},[2337,10143,10048],{"class":3592},[2337,10145,10051],{"class":2347},[2337,10147,10045],{"class":3488},[2337,10149,10048],{"class":3592},[2337,10151,10059],{"class":10058},[2337,10153,10045],{"class":3488},[2337,10155,10048],{"class":3592},[2337,10157,10066],{"class":2347},[2337,10159,10069],{"class":3592},[2337,10161,6591],{"class":2378},[2337,10163,10164,10166,10169,10172,10175],{"class":2339,"line":3579},[2337,10165,10076],{"class":3592},[2337,10167,10168],{"class":2378}," [[",[2337,10170,10171],{"class":3592},"...new",[2337,10173,10174],{"class":3979}," Set",[2337,10176,10177],{"class":2378},"(emailAddresses)]];\n",[2337,10179,10180],{"class":2339,"line":3658},[2337,10181,4242],{"class":2378},[1640,10183,10184],{},"Retrieve all email addresses that match a domain:",[2329,10186,10188],{"className":2366,"code":10187,"language":2368,"meta":1614,"style":1614},"function getEmails() {\n    var pageHTML = document.body.innerHTML;\n    pageHTMLStr = pageHTML.toString();\n\n    \u002F\u002F Replace \"example.com\" with your domain\n    emailAddresses = pageHTMLStr.match(\u002F([a-zA-Z0-9._-]+@example.com)\u002Fgi);\n    return [emailAddresses]; \u002F\u002F or return [[...new Set(emailAddresses)]];\n}\n",[1712,10189,10190,10198,10208,10220,10224,10229,10259,10269],{"__ignoreMap":1614},[2337,10191,10192,10194,10196],{"class":2339,"line":2340},[2337,10193,9986],{"class":3592},[2337,10195,9989],{"class":3979},[2337,10197,9992],{"class":2378},[2337,10199,10200,10202,10204,10206],{"class":2339,"line":1618},[2337,10201,9997],{"class":3592},[2337,10203,10000],{"class":2378},[2337,10205,6556],{"class":3592},[2337,10207,10005],{"class":2378},[2337,10209,10210,10212,10214,10216,10218],{"class":2339,"line":1615},[2337,10211,10010],{"class":2378},[2337,10213,6556],{"class":3592},[2337,10215,10015],{"class":2378},[2337,10217,10018],{"class":3979},[2337,10219,4191],{"class":2378},[2337,10221,10222],{"class":2339,"line":3501},[2337,10223,3504],{"emptyLinePlaceholder":1627},[2337,10225,10226],{"class":2339,"line":3507},[2337,10227,10228],{"class":4521},"    \u002F\u002F Replace \"example.com\" with your domain\n",[2337,10230,10231,10233,10235,10237,10239,10241,10243,10245,10247,10250,10252,10255,10257],{"class":2339,"line":3579},[2337,10232,10029],{"class":2378},[2337,10234,6556],{"class":3592},[2337,10236,10034],{"class":2378},[2337,10238,10037],{"class":3979},[2337,10240,4145],{"class":2378},[2337,10242,10042],{"class":2347},[2337,10244,10045],{"class":3488},[2337,10246,10048],{"class":3592},[2337,10248,10249],{"class":2347},"@example",[2337,10251,1668],{"class":3488},[2337,10253,10254],{"class":2347},"com)\u002F",[2337,10256,10069],{"class":3592},[2337,10258,6591],{"class":2378},[2337,10260,10261,10263,10266],{"class":2339,"line":3658},[2337,10262,10076],{"class":3592},[2337,10264,10265],{"class":2378}," [emailAddresses]; ",[2337,10267,10268],{"class":4521},"\u002F\u002F or return [[...new Set(emailAddresses)]];\n",[2337,10270,10271],{"class":2339,"line":3664},[2337,10272,4242],{"class":2378},[1561,10274,2386],{"id":2385},[1640,10276,10277,10278,10280],{},"Click \"Run\" on your automation, observe the builder for any errors (see ",[1942,10279,3809],{"href":1409}," for more details) and your Google Sheet for changes.",[1640,10282,10283],{},"Alternatively, if you are a developer, this code can be copied into the Chrome Devtools console for testing outside of your automation.",[1561,10285,2406],{"id":2405},[1640,10287,10288,10289,1668],{},"Extracting email addresses from a page can be helpful from a marketing perspective, but should be used sparingly to avoid spamming potential customers. We are excited to see what you do with this - let us know over in our ",[1942,10290,4921],{"href":4919,"rel":10291},[3850],[2421,10293,10294],{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sa8KN, html code.shiki .sa8KN{--shiki-default:#116329;--shiki-default-font-weight:bold;--shiki-dark:#7EE787;--shiki-dark-font-weight:bold}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}",{"title":1614,"searchDepth":1615,"depth":1615,"links":10296},[10297,10298,10301,10302],{"id":2155,"depth":1618,"text":2156},{"id":9902,"depth":1618,"text":9903,"children":10299},[10300],{"id":9972,"depth":1615,"text":9973},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"This guide explains how to extract email addresses from a webpage using axiom.ai and JavaScript. Learn to scrape emails, remove duplicates, and save results to Google Sheets.",{"type":2126,"format":1701,"intent_type":3360,"intent":5613,"tags":10305,"platfrom":10306},[2132,3139],[3363],"\u002Fguides\u002Fextract-emails",{"title":9887,"description":10303},"guides\u002Fextract-emails","CLejNzPKS-oq-H37YFGLBZ31meHspwQYM6zdMsycnq0",{"id":10312,"title":10313,"body":10314,"date":1628,"description":10502,"extension":1621,"meta":10503,"navigation":1627,"order":1628,"path":10506,"seo":10507,"stem":10508,"__hash__":10509},"guides\u002Fguides\u002Fgithub.md","How to automate Github using an axiom.ai automation",{"type":1555,"value":10315,"toc":10495},[10316,10318,10326,10329,10331,10334,10358,10365,10369,10375,10391,10394,10440,10451,10457,10463,10465,10474,10476,10483,10490],[1566,10317],{},[1640,10319,10320,10325],{},[1942,10321,10324],{"href":10322,"rel":10323},"https:\u002F\u002Fgithub.com",[3850],"Github"," is a cloud-based platform for version control and collaboration, built around Git. It allows developers to store, manage, and track changes to their code, collaborate with others, and automate workflows. Key features include repositories, pull requests, issues, actions (CI\u002FCD), and security tools. It’s widely used for open-source and private projects.",[1640,10327,10328],{},"Github offers many features around the use of their API and webhooks, for this guide, we will be concentrating on webhooks.",[1561,10330,2156],{"id":2155},[1640,10332,10333],{},"To get started you will need to have the following prepared:",[1701,10335,10336],{},[1569,10337,10338,10341,10344,10347,10352],{},[1572,10339,10340],{},"A Github account",[1572,10342,10343],{},"A Github repository",[1572,10345,10346],{},"An axiom.ai account",[1572,10348,10349,10350],{},"An axiom.ai subscription",[4930,10351,1785],{},[1572,10353,10354,10355],{},"Your axiom.ai API - ",[1942,10356,10357],{"href":2175},"API Documentation",[1640,10359,10360],{},[2417,10361,10362,10364],{},[4930,10363,1785],{}," Subscription is required to use the \"Receive data from another app\" step",[1561,10366,10368],{"id":10367},"triggering-an-automated-based-on-github-repository-event","Triggering an automated based on Github repository event",[1640,10370,10371,10372,10374],{},"Github offers the ability to send a webhook when an event occurs within a repository. This defaults to ",[1712,10373,6629],{}," events, but you can configure this to notify you of all events, or specific events. To create a new webhook, follow the steps below:",[1701,10376,10377],{},[2165,10378,10379,10382,10385,10388],{},[1572,10380,10381],{},"Open your repository.",[1572,10383,10384],{},"Navigate to \"Settings\".",[1572,10386,10387],{},"Navigate to \"Webhooks\".",[1572,10389,10390],{},"Click \"Add webhook\".",[1640,10392,10393],{},"To configure your new webhook, use the following settings:",[1701,10395,10396],{},[1569,10397,10398,10411,10422,10432],{},[1572,10399,10400,10403,10405,10406,10408],{},[1653,10401,10402],{},"1. Payload URL",[1963,10404],{},"\nSet to the axiom.ai endpoint. This will include your automation name and API key:",[1963,10407],{},[1712,10409,10410],{},"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger?key=\u003CKEY>&name=\u003CNAME>",[1572,10412,10413,10416,10418,10419,1668],{},[1653,10414,10415],{},"2. Content type",[1963,10417],{},"\nSet to ",[1712,10420,10421],{},"application\u002Fjson",[1572,10423,10424,10427,10429,10430,1668],{},[1653,10425,10426],{},"3. Events",[1963,10428],{},"\nConfigure the webhook events based on your needs. If your repo has high activity, consider axiom.ai's ",[1942,10431,9418],{"href":364},[1572,10433,10434,10437,10439],{},[1653,10435,10436],{},"4. Save your work",[1963,10438],{},"\nMake sure to save the webhook configuration before exiting.",[1640,10441,10442,10445,10446,1668],{},[4930,10443,10444],{},"2"," The automation name should be encoded, for example \"Hello world\" → \"Hello+world\". Learn more at ",[1942,10447,10450],{"href":10448,"rel":10449},"https:\u002F\u002Fwww.w3schools.com\u002Ftags\u002Fref_urlencode.ASP",[3850],"w3schools",[1640,10452,10453,10454,10456],{},"Once the webhook has been set up, you'll need to add a ",[1942,10455,1110],{"href":1111}," step to allow the automation to be triggered by the webhook. The data passed to this step from the webhook will be accessible within your automation.",[10458,10459,10460],"blockquote",{},[1640,10461,10462],{},"💡 Grabbing a sample of the payload would allow you to create 'test data' within this step",[1561,10464,2386],{"id":2385},[1640,10466,10467,10468,10470,10471,10473],{},"To test your workflow, trigger an event on your repository - for example, creating a commit to the repository. Open up your axiom.ai extension and view the ",[1942,10469,129],{"href":2401}," to ensure that the automation has run. Review any errors and make changes as required. If you experience issues, see ",[1942,10472,6474],{"href":1409}," for common resolutions.",[2249,10475,2406],{"id":2405},[1640,10477,10478,10479,10482],{},"Getting notifications of events from your Github repository can be helpful for your team to keep track of changes to the repository. Triggering your automations based on these events can allow you to trigger more complex workflows. See our ",[1942,10480,10481],{"href":1944},"guides"," for more interesting services that you could integrate into your automation, such as using Slack or Discord for notifications, or using Airtable, Supabase, or Tadabase, to create a logging system for your repository events.",[1640,10484,10485,10486],{},"We'd love to hear about what you do with this, let us know over in our ",[1942,10487,4921],{"href":10488,"rel":10489},"https:\u002F\u002Freddit.com\u002Fr\u002Faxiom_ai",[3850],[1640,10491,10492],{},[2417,10493,10494],{},"Testing was completed on 24 February 25, features in Discord or axiom.ai may change from time to time and updates may need to be made.",{"title":1614,"searchDepth":1615,"depth":1615,"links":10496},[10497,10498,10499],{"id":2155,"depth":1618,"text":2156},{"id":10367,"depth":1618,"text":10368},{"id":2385,"depth":1618,"text":2386,"children":10500},[10501],{"id":2405,"depth":1615,"text":2406},"This guide shows how to trigger axiom.ai automations using GitHub webhooks. Learn to connect repository events to workflows with the “Receive data from another app” step.",{"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":10504,"platfrom":10505},[2439,2440],[10324],"\u002Fguides\u002Fgithub",{"title":10313,"description":10502},"guides\u002Fgithub","otmZ9YmlUwp_zhRhrrqg7uv_DzZuKSQsbMjST5ePl0k",{"id":10511,"title":10512,"body":10513,"date":2652,"description":10826,"extension":1621,"meta":10827,"navigation":1627,"order":1628,"path":10832,"seo":10833,"stem":10834,"__hash__":10835},"guides\u002Fguides\u002Fgmail-mail-merge.md","How to mail merge with Gmail using google sheets",{"type":1555,"value":10514,"toc":10818},[10515,10517,10524,10526,10528,10535,10539,10546,10550,10552,10556,10688,10692,10697,10699,10704,10706,10711,10810],[1566,10516],{},[1640,10518,10519,10520,10523],{},"This Gmail bulk sender  automation template uses a bot to send emails in bulk from a Google Sheet through Gmail. The bot retrieves data from the Sheet, opens Gmail in Chrome, fills in the ",[1653,10521,10522],{},"\"Compose\""," form with email, subject, and body, and clicks send. After sending, it deletes the processed row and repeats the process with subsequent rows.",[1558,10525],{},[1561,10527,2463],{"id":2462},[1640,10529,10530,10531,10534],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut 'sheet.new\"**, assuming you already have an account. Name your sheet something like ",[1653,10532,10533],{},"\"Gmail Mailer\"",". Add some content to test with email addresses, name, subject, body etc",[1561,10536,10538],{"id":10537},"install-the-gmail-bulk-sender-bot","Install the Gmail bulk sender bot",[1640,10540,10541,10542,1679,10544,1683],{},"To install this Gmail bot click ",[1653,10543,1678],{},[1653,10545,1682],{},[1640,10547,1686,10548,1668],{},[1653,10549,1689],{},[1640,10551,1692],{},[1561,10553,10555],{"id":10554},"configure-your-gmail-bulk-sender-bot","Configure your Gmail bulk sender bot",[1701,10557,10558,10686],{},[1569,10559,10560,10577,10585],{},[1572,10561,10562,1710,10564,10566],{},[1653,10563,1968],{},[1712,10565,1714],{},[1569,10567,10568,10572],{},[1572,10569,10570,1722],{},[1712,10571,1721],{},[1572,10573,10574,10576],{},[1712,10575,1727],{},": Choose the tab with the email information in it.",[1572,10578,10579,1710,10581,10584],{},[1653,10580,2518],{},[1712,10582,10583],{},"Go to page: mail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox","^",[1572,10586,10587,1710,10590,10592],{},[1653,10588,10589],{},"Step 3.0",[1712,10591,667],{},[1569,10593,10594,10602,10618,10626,10642,10647,10663,10668],{},[1572,10595,10596,1710,10599,10584],{},[1653,10597,10598],{},"Step 3.1",[1712,10600,10601],{},"Wait: For compose to open",[1572,10603,10604,1710,10607,10610],{},[1653,10605,10606],{},"Step 3.2",[1712,10608,10609],{},"Enter text: Email",[1569,10611,10612],{},[1572,10613,10614,2775,10616,1668],{},[1712,10615,2563],{},[1712,10617,1847],{},[1572,10619,10620,1710,10623,10584],{},[1653,10621,10622],{},"Step 3.3",[1712,10624,10625],{},"Press key(s): Tab to Subject",[1572,10627,10628,1710,10631,10634],{},[1653,10629,10630],{},"Step 3.4",[1712,10632,10633],{},"Enter text: Subject",[1569,10635,10636],{},[1572,10637,10638,2775,10640,1668],{},[1712,10639,2563],{},[1712,10641,1847],{},[1572,10643,10644,10584],{},[1653,10645,10646],{},"Step 3.5 – 3.6",[1572,10648,10649,1710,10652,10655],{},[1653,10650,10651],{},"Step 3.7",[1712,10653,10654],{},"Enter text: Body",[1569,10656,10657],{},[1572,10658,10659,2775,10661,1668],{},[1712,10660,2563],{},[1712,10662,1847],{},[1572,10664,10665,10584],{},[1653,10666,10667],{},"Step 3.8 – 3.11",[1572,10669,10670,1710,10673,10675],{},[1653,10671,10672],{},"Step 3.12",[1712,10674,1901],{},[1569,10676,10677,10681],{},[1572,10678,10679,1722],{},[1712,10680,1721],{},[1572,10682,10683,10685],{},[1712,10684,1727],{},": Choose the tab with the emails in it.",[1640,10687,2593],{},[1561,10689,10691],{"id":10690},"run-your-gmail-bulk-sender-bot","Run your Gmail bulk sender bot",[1640,10693,10694,10695,1668],{},"To test the Gmail bot, open Gmail and run the bot using the Desktop app. Monitor its operation to ensure it is configured and functioning correctly. If you wish to schedule the bot ",[1942,10696,2603],{"href":638},[1561,10698,1937],{"id":1936},[1640,10700,1940,10701,10703],{},[1942,10702,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements",[1561,10705,1398],{"id":1949},[1640,10707,10708,10709,1668],{},"We recommend you watch the video to troubleshoot. If you wish to schedule, the bot you will need to share the Cookie in settings or ",[1942,10710,2603],{"href":638},[1701,10712,10713],{},[1569,10714,10715,10726,10743,10759,10774,10785,10796],{},[1572,10716,10717,10720,1965,10722,10725],{},[1653,10718,10719],{},"Email not added?",[1963,10721],{},[1712,10723,10724],{},"Step 3.2 – Enter text: Email",", check the cursor location. By default, it should be in the Email input field.",[1572,10727,10728,10731,1965,10733,10736,10737,10739,10740,10742],{},[1653,10729,10730],{},"Tab not working?",[1963,10732],{},[1712,10734,10735],{},"Step 3.3 – Press Key(s): Tab to Subject",", make sure the step includes pressing ",[1712,10738,9616],{}," to submit the email address, followed by ",[1712,10741,6946],{}," to move to the Subject field.",[1572,10744,10745,10748,1965,10750,10753,10754,10756,10757,1668],{},[1653,10746,10747],{},"Subject text not added?",[1963,10749],{},[1712,10751,10752],{},"Step 3.4 – Enter text: Subject",", confirm that you clicked ",[1712,10755,1814],{}," and selected ",[1712,10758,1847],{},[1572,10760,10761,10764,1965,10766,10769,10770,10773],{},[1653,10762,10763],{},"Body entered into subject?",[1963,10765],{},[1712,10767,10768],{},"Step 3.7 – Enter text: Body",", check ",[1712,10771,10772],{},"Step 3.6"," to ensure the cursor is correctly placed before the body text is entered.",[1572,10775,10776,10779,1965,10781,10784],{},[1653,10777,10778],{},"Send key not clicked?",[1963,10780],{},[1712,10782,10783],{},"Step 3.9 – Press Key(s): Click send",", re-record the keystroke sequence and test again.",[1572,10786,10787,10790,1965,10792,10795],{},[1653,10788,10789],{},"Bot out of sync?",[1963,10791],{},[1712,10793,10794],{},"Step 3.10 – Wait: For email to send",", try extending the wait time to give Gmail more time to process.",[1572,10797,10798,10801,1965,10803,10806,10807,10809],{},[1653,10799,10800],{},"Compose button not found or visible?",[1963,10802],{},[1712,10804,10805],{},"Step 3.11 – Click element: Open new Compose window",", reselect the compose button.",[1963,10808],{},"\nIf it's not visible, check that the Gmail sidebar is toggled open.",[1640,10811,2101,10812,10814,10815],{},[1942,10813,2104],{"href":82},"\nTo learn more read this full in-depth guide on how to send an ",[1942,10816,10817],{"href":3122},"email blast using  Gmail.",{"title":1614,"searchDepth":1615,"depth":1615,"links":10819},[10820,10821,10822,10823,10824,10825],{"id":2462,"depth":1618,"text":2463},{"id":10537,"depth":1618,"text":10538},{"id":10554,"depth":1618,"text":10555},{"id":10690,"depth":1618,"text":10691},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide shows how to mail merge with Gmail using Google Sheets and axiom.ai. Automate sending bulk emails by filling out the compose form and submitting each message.",{"pinned":1627,"read":3134,"level":2123,"video":10828,"templateId":3793,"type":2126,"format":2127,"intent_type":2658,"intent":3137,"tags":10829,"platfrom":10831},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fr8W-S0Oc6QI",[3139,10830],"mail merge",[3141],"\u002Fguides\u002Fgmail-mail-merge",{"title":10512,"description":10826},"guides\u002Fgmail-mail-merge","LwpEB2Du4j0QYMkZbvIGJahErvkOgW3zPs0JMQZM9RQ",{"id":10837,"title":10838,"body":10839,"date":1628,"description":11360,"extension":1621,"meta":11361,"navigation":1627,"order":1628,"path":11365,"seo":11366,"stem":11367,"__hash__":11368},"guides\u002Fguides\u002Fgoogle-apps-script.md","How to use Google Apps Script to trigger an automation",{"type":1555,"value":10840,"toc":11350},[10841,10843,10852,10854,10856,10858,10878,10880,10884,10886,10889,10893,10895,10898,10929,10932,10936,10938,10941,10973,11275,11279,11283,11285,11288,11308,11311,11313,11315,11318,11336,11340,11342,11344,11347],[1566,10842],{},[1640,10844,10845,10846,10848,10849,10851],{},"To send a POST request to your automation using Google Apps Script, follow the steps below. First, ensure that you have the API endpoint and the necessary ",[1942,10847,2171],{"href":2175},". This guide walks you through a basic example of how you can structure your Google Apps Script to send a POST request, fetching all the data from an active Google Sheet. We also have a no-code integration with ",[1942,10850,759],{"href":760}," that can be used to fetch, write, and edit Google Sheets data.",[1561,10853,2156],{"id":2155},[1566,10855],{},[1640,10857,2161],{},[1701,10859,10860],{},[2165,10861,10862,10868,10872],{},[1572,10863,10864,2172,10866,1668],{},[1653,10865,2171],{},[1942,10867,2176],{"href":2175},[1572,10869,10870,2182],{},[1653,10871,2181],{},[1572,10873,10874,2188,10876,1668],{},[1653,10875,2187],{},[1712,10877,2191],{},[1558,10879],{},[1561,10881,10883],{"id":10882},"trigger-an-axiomai-automation-using-google-app-scripts","Trigger an axiom.ai automation using Google App Scripts",[1566,10885],{},[1640,10887,10888],{},"Learn how to get started with triggering your axiom.ai automation with a Google App Script.",[2249,10890,10892],{"id":10891},"set-your-axiomai-automation","Set your axiom.ai automation",[1566,10894],{},[1640,10896,10897],{},"In this basic example, we will trigger the automation from a Google Apps Script, passing the data into our automation from the active Google Sheet. The automation will then open up Google Search and pass the data into the search field. Replicate the design pattern below in the [builder](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder.",[1701,10899,10900],{},[2165,10901,10902,10908,10915],{},[1572,10903,10904],{},[1653,10905,10906],{},[1712,10907,1110],{},[1572,10909,10910,10914],{},[1653,10911,10912],{},[1712,10913,1043],{},": Insert the Google search URL",[1572,10916,10917,10921,10922,5084,10925,10928],{},[1653,10918,10919],{},[1712,10920,293],{},": Select the search field, then click ",[1653,10923,10924],{},"insert data",[1653,10926,10927],{},"webhook-data"," to pass data from the sheet, select column 'A' in the data preview.",[2202,10930],{"src":10931,"alt":2247},"\u002Fdocs\u002Fguides\u002Ftrigger-axiom-from-app-script.jpg",[2249,10933,10935],{"id":10934},"create-an-api-call-using-google-apps-script","Create an API call using Google Apps Script",[1566,10937],{},[1640,10939,10940],{},"First, create a new Google Sheet by entering 'Sheet.new' into a blank browser tab.",[1701,10942,10943],{},[2165,10944,10945,10951,10958,10961,10967],{},[1572,10946,10947,10950],{},[1653,10948,10949],{},"Create a new Google Sheet",", add some text into column A.",[1572,10952,10953,10954,10957],{},"Click on ",[1653,10955,10956],{},"Extensions > Apps Script"," to open the Apps Script window.",[1572,10959,10960],{},"Copy the code example from this page into the Apps Script window.",[1572,10962,10963,10964,1668],{},"Insert your API key in the input noted with ",[1653,10965,10966],{},"\"insert key here\"",[1572,10968,10969,10970,1668],{},"Insert the name of the automation you wish to trigger where the text says ",[1653,10971,10972],{},"\"insert automation name here\"",[2329,10974,10976],{"className":2366,"code":10975,"language":2368,"meta":1614,"style":1614},"function sendDataToAxiomAi() {\n  var url = 'https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger'; \u002F\u002F Replace with your axiom.ai endpoint\n  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();\n  var dataRange = sheet.getDataRange(); \u002F\u002F Get all the data in the sheet\n  var dataValues = dataRange.getValues(); \u002F\u002F Get the values as a 2D array\n\n  \u002F\u002F Create the payload, passing the 2D array directly\n  var payload = {\n    \"key\": \"Insert key here\",\n    \"name\": \"Insert automation name here\",\n    \"data\": dataValues \u002F\u002F Sending the entire sheet data as an array of arrays\n  };\n  \n  var options = {\n    'method': 'post',\n    'contentType': 'application\u002Fjson',\n    'payload': JSON.stringify(payload)\n  };\n  \n  try {\n    var response = UrlFetchApp.fetch(url, options);\n    Logger.log(response.getContentText());\n  } catch (error) {\n    Logger.log('Error: ' + error.toString());\n  }\n}\n",[1712,10977,10978,10987,11006,11029,11050,11070,11074,11079,11090,11102,11114,11125,11130,11134,11145,11157,11169,11187,11191,11195,11202,11220,11236,11245,11266,11271],{"__ignoreMap":1614},[2337,10979,10980,10982,10985],{"class":2339,"line":2340},[2337,10981,9986],{"class":3592},[2337,10983,10984],{"class":3979}," sendDataToAxiomAi",[2337,10986,9992],{"class":2378},[2337,10988,10989,10992,10995,10997,11000,11003],{"class":2339,"line":1618},[2337,10990,10991],{"class":3592},"  var",[2337,10993,10994],{"class":2378}," url ",[2337,10996,6556],{"class":3592},[2337,10998,10999],{"class":2347}," 'https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger'",[2337,11001,11002],{"class":2378},"; ",[2337,11004,11005],{"class":4521},"\u002F\u002F Replace with your axiom.ai endpoint\n",[2337,11007,11008,11010,11013,11015,11018,11021,11024,11027],{"class":2339,"line":1615},[2337,11009,10991],{"class":3592},[2337,11011,11012],{"class":2378}," sheet ",[2337,11014,6556],{"class":3592},[2337,11016,11017],{"class":2378}," SpreadsheetApp.",[2337,11019,11020],{"class":3979},"getActiveSpreadsheet",[2337,11022,11023],{"class":2378},"().",[2337,11025,11026],{"class":3979},"getActiveSheet",[2337,11028,4191],{"class":2378},[2337,11030,11031,11033,11036,11038,11041,11044,11047],{"class":2339,"line":3501},[2337,11032,10991],{"class":3592},[2337,11034,11035],{"class":2378}," dataRange ",[2337,11037,6556],{"class":3592},[2337,11039,11040],{"class":2378}," sheet.",[2337,11042,11043],{"class":3979},"getDataRange",[2337,11045,11046],{"class":2378},"(); ",[2337,11048,11049],{"class":4521},"\u002F\u002F Get all the data in the sheet\n",[2337,11051,11052,11054,11057,11059,11062,11065,11067],{"class":2339,"line":3507},[2337,11053,10991],{"class":3592},[2337,11055,11056],{"class":2378}," dataValues ",[2337,11058,6556],{"class":3592},[2337,11060,11061],{"class":2378}," dataRange.",[2337,11063,11064],{"class":3979},"getValues",[2337,11066,11046],{"class":2378},[2337,11068,11069],{"class":4521},"\u002F\u002F Get the values as a 2D array\n",[2337,11071,11072],{"class":2339,"line":3579},[2337,11073,3504],{"emptyLinePlaceholder":1627},[2337,11075,11076],{"class":2339,"line":3658},[2337,11077,11078],{"class":4521},"  \u002F\u002F Create the payload, passing the 2D array directly\n",[2337,11080,11081,11083,11086,11088],{"class":2339,"line":3664},[2337,11082,10991],{"class":3592},[2337,11084,11085],{"class":2378}," payload ",[2337,11087,6556],{"class":3592},[2337,11089,3994],{"class":2378},[2337,11091,11092,11095,11097,11100],{"class":2339,"line":3670},[2337,11093,11094],{"class":2347},"    \"key\"",[2337,11096,3601],{"class":2378},[2337,11098,11099],{"class":2347},"\"Insert key here\"",[2337,11101,4030],{"class":2378},[2337,11103,11104,11107,11109,11112],{"class":2339,"line":3693},[2337,11105,11106],{"class":2347},"    \"name\"",[2337,11108,3601],{"class":2378},[2337,11110,11111],{"class":2347},"\"Insert automation name here\"",[2337,11113,4030],{"class":2378},[2337,11115,11116,11119,11122],{"class":2339,"line":3746},[2337,11117,11118],{"class":2347},"    \"data\"",[2337,11120,11121],{"class":2378},": dataValues ",[2337,11123,11124],{"class":4521},"\u002F\u002F Sending the entire sheet data as an array of arrays\n",[2337,11126,11127],{"class":2339,"line":3760},[2337,11128,11129],{"class":2378},"  };\n",[2337,11131,11132],{"class":2339,"line":3136},[2337,11133,5145],{"class":2378},[2337,11135,11136,11138,11141,11143],{"class":2339,"line":3784},[2337,11137,10991],{"class":3592},[2337,11139,11140],{"class":2378}," options ",[2337,11142,6556],{"class":3592},[2337,11144,3994],{"class":2378},[2337,11146,11147,11150,11152,11155],{"class":2339,"line":3793},[2337,11148,11149],{"class":2347},"    'method'",[2337,11151,3601],{"class":2378},[2337,11153,11154],{"class":2347},"'post'",[2337,11156,4030],{"class":2378},[2337,11158,11159,11162,11164,11167],{"class":2339,"line":4136},[2337,11160,11161],{"class":2347},"    'contentType'",[2337,11163,3601],{"class":2378},[2337,11165,11166],{"class":2347},"'application\u002Fjson'",[2337,11168,4030],{"class":2378},[2337,11170,11171,11174,11176,11179,11181,11184],{"class":2339,"line":4154},[2337,11172,11173],{"class":2347},"    'payload'",[2337,11175,3601],{"class":2378},[2337,11177,11178],{"class":3488},"JSON",[2337,11180,1668],{"class":2378},[2337,11182,11183],{"class":3979},"stringify",[2337,11185,11186],{"class":2378},"(payload)\n",[2337,11188,11189],{"class":2339,"line":4162},[2337,11190,11129],{"class":2378},[2337,11192,11193],{"class":2339,"line":4168},[2337,11194,5145],{"class":2378},[2337,11196,11197,11200],{"class":2339,"line":4173},[2337,11198,11199],{"class":3592},"  try",[2337,11201,3994],{"class":2378},[2337,11203,11204,11206,11209,11211,11214,11217],{"class":2339,"line":4194},[2337,11205,9997],{"class":3592},[2337,11207,11208],{"class":2378}," response ",[2337,11210,6556],{"class":3592},[2337,11212,11213],{"class":2378}," UrlFetchApp.",[2337,11215,11216],{"class":3979},"fetch",[2337,11218,11219],{"class":2378},"(url, options);\n",[2337,11221,11222,11225,11227,11230,11233],{"class":2339,"line":4206},[2337,11223,11224],{"class":2378},"    Logger.",[2337,11226,4200],{"class":3979},[2337,11228,11229],{"class":2378},"(response.",[2337,11231,11232],{"class":3979},"getContentText",[2337,11234,11235],{"class":2378},"());\n",[2337,11237,11238,11241,11243],{"class":2339,"line":4218},[2337,11239,11240],{"class":2378},"  } ",[2337,11242,4212],{"class":3592},[2337,11244,4215],{"class":2378},[2337,11246,11247,11249,11251,11253,11256,11259,11262,11264],{"class":2339,"line":4233},[2337,11248,11224],{"class":2378},[2337,11250,4200],{"class":3979},[2337,11252,4145],{"class":2378},[2337,11254,11255],{"class":2347},"'Error: '",[2337,11257,11258],{"class":3592}," +",[2337,11260,11261],{"class":2378}," error.",[2337,11263,10018],{"class":3979},[2337,11265,11235],{"class":2378},[2337,11267,11268],{"class":2339,"line":4239},[2337,11269,11270],{"class":2378},"  }\n",[2337,11272,11273],{"class":2339,"line":4245},[2337,11274,4242],{"class":2378},[2202,11276],{"src":11277,"alt":11278},"\u002Fdocs\u002Fguides\u002Fgoogle-app-script-trigger-bot.jpg","Google App Script trigger axiom.ai bot run with API call",[2249,11280,11282],{"id":11281},"trigger-based-on-edits-to-your-sheet","Trigger based on edits to your sheet",[1566,11284],{},[1640,11286,11287],{},"Google Apps Script offers event-driven triggers that can be set up to end data to your axiom.ai automation.",[1701,11289,11290],{},[2165,11291,11292,11295,11298,11305],{},[1572,11293,11294],{},"Click \"Triggers\" in the Google Apps Script sidebar.",[1572,11296,11297],{},"Click \"Add Trigger\" to create a new trigger.",[1572,11299,11300,11301,11304],{},"Set the function to run to ",[1712,11302,11303],{},"sendDataToAxiomAi"," and the event type to \"On edit\".",[1572,11306,11307],{},"Click \"Save\".",[1640,11309,11310],{},"This will send all the sheet data when a cell is changed - you may wish to add additional filters to your code to filter based on specific criteria.",[1561,11312,2386],{"id":2385},[1566,11314],{},[1640,11316,11317],{},"In Google Apps Script, click save and run your automation. If the API POST call works, axiom.ai will return a link you can access to view the run. If not, follow the error messages and fix any issues.",[1701,11319,11320],{},[2165,11321,11322,11329],{},[1572,11323,11324,11325,11328],{},"Click the ",[1653,11326,11327],{},"'disc'"," icon to save your API call script.",[1572,11330,11331,11332,11335],{},"Click on the ",[1653,11333,11334],{},"'play'"," icon to start your script.",[2202,11337],{"src":11338,"alt":11339},"\u002Fdocs\u002Fguides\u002Fapi-call-returns-link.jpg","axiom.ai returns run status to Google Apps Script API call",[1561,11341,2406],{"id":2405},[1566,11343],{},[1640,11345,11346],{},"Using axiom.ai, it's simple to trigger automations and pass data into your bots. In this example, we learned how to use Google Apps Script, but the same principles can be applied to using any webhook or web API to start your bot runs.",[2421,11348,11349],{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":11351},[11352,11353,11358,11359],{"id":2155,"depth":1618,"text":2156},{"id":10882,"depth":1618,"text":10883,"children":11354},[11355,11356,11357],{"id":10891,"depth":1615,"text":10892},{"id":10934,"depth":1615,"text":10935},{"id":11281,"depth":1615,"text":11282},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"This guide shows how to trigger axiom.ai automations using Google Apps Script. Learn to send POST requests from Google Sheets and pass data into your bot.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":11362,"platfrom":11363,"video":11364},[2439,2440],[8883],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FvTvXYe4niJE?rel=0&amp;","\u002Fguides\u002Fgoogle-apps-script",{"title":10838,"description":11360},"guides\u002Fgoogle-apps-script","uzxKnbORaXPdj7RKK875IB59u4f7EeRQoOP6FEzyRaE",{"id":11370,"title":11371,"body":11372,"date":2652,"description":11654,"extension":1621,"meta":11655,"navigation":1627,"order":1628,"path":11661,"seo":11662,"stem":11663,"__hash__":11664},"guides\u002Fguides\u002Fgoogle-sheets-tweeter.md","How to automate posting on X (formerly twitter) using Google Sheets",{"type":1555,"value":11373,"toc":11646},[11374,11376,11383,11385,11387,11398,11402,11415,11420,11422,11426,11556,11560,11563,11565,11569,11571,11573,11635,11639],[1566,11375],{},[1640,11377,11378,11379,11382],{},"This Twitter(x) posting template automates posts on the platform by emulating human interaction, entering your posts directly into the website on the compose page. The bot reads post details from a Google Sheet, opens Twitter (X) on the compose page for each row, and simulates typing the tweet, uploading an image, and clicking ",[1653,11380,11381],{},"\"post\"",". It then deletes the processed post from the sheet, preparing for the next entry.",[1558,11384],{},[1561,11386,1648],{"id":1647},[1640,11388,1651,11389,2694,11391,1660,11394,11397],{},[1653,11390,1655],{},[1653,11392,11393],{},"\"X post\"",[1653,11395,11396],{},"\"Post\"",". Add some post data.",[1561,11399,11401],{"id":11400},"install-the-twitterx-posting-bot","Install the Twitter(x) posting bot",[1640,11403,11404,11405,11408,11409,1679,11412,1683],{},"To install this ",[1653,11406,11407],{},"\"Twitter(x)\""," posting bot click ",[1653,11410,11411],{},"\"Install template'\"",[1653,11413,11414],{},"\"Install Chrome extension'\"",[1640,11416,1686,11417,1668],{},[1653,11418,11419],{},"\"Start'\"",[1640,11421,1692],{},[1561,11423,11425],{"id":11424},"configure-your-twitterx-posting-bot-in-minutes","Configure your Twitter(x) posting bot in minutes",[1701,11427,11428],{},[1569,11429,11430,11449],{},[1572,11431,11432,1710,11434,11436],{},[1653,11433,1968],{},[1712,11435,1714],{},[1569,11437,11438,11442],{},[1572,11439,11440,1722],{},[1712,11441,1721],{},[1572,11443,11444,7494,11446,1668],{},[1712,11445,1727],{},[1712,11447,11448],{},"'Post'",[1572,11450,11451,1710,11453,11455],{},[1653,11452,2518],{},[1712,11454,667],{},[1569,11456,11457,11468,11491,11514,11527],{},[1572,11458,11459,1710,11461,11464],{},[1653,11460,2527],{},[1712,11462,11463],{},"Go to page: Twitter (X) Compose URL",[1569,11465,11466],{},[1572,11467,2593],{},[1572,11469,11470,1710,11472,11475],{},[1653,11471,2545],{},[1712,11473,11474],{},"Enter text: Tweet",[1569,11476,11477,11482],{},[1572,11478,11479,11481],{},[1712,11480,1775],{},": ^ Preconfigured",[1572,11483,11484,1752,11486,1756,11488,11490],{},[1712,11485,2563],{},[1712,11487,1755],{},[1712,11489,1847],{},", and choose the column with the post content.",[1572,11492,11493,1710,11495,11498],{},[1653,11494,2553],{},[1712,11496,11497],{},"Upload a file: Image",[1569,11499,11500,11505],{},[1572,11501,11502,11481],{},[1712,11503,11504],{},"File Input Field",[1572,11506,11507,1752,11509,1756,11511,11513],{},[1712,11508,2798],{},[1712,11510,1755],{},[1712,11512,1847],{},", and choose the column with the image path.",[1572,11515,11516,1710,11518,11521],{},[1653,11517,2569],{},[1712,11519,11520],{},"Click element: Post",[1569,11522,11523],{},[1572,11524,11525,11481],{},[1712,11526,1775],{},[1572,11528,11529,1710,11531,11533],{},[1653,11530,2577],{},[1712,11532,1901],{},[1569,11534,11535,11539,11544,11550],{},[1572,11536,11537,1722],{},[1712,11538,1721],{},[1572,11540,11541,11543],{},[1712,11542,1727],{},": Choose the tab you created for posts.",[1572,11545,11546,1782,11548,1668],{},[1712,11547,1917],{},[1712,11549,1785],{},[1572,11551,11552,1782,11554,1668],{},[1712,11553,1924],{},[1712,11555,1785],{},[1561,11557,11559],{"id":11558},"run-your-twitterx-posting-automation","Run your Twitter(x) posting automation",[1640,11561,11562],{},"We suggest running a test first, disable Step 2.4 to prevent the bot sending a post.",[1561,11564,1937],{"id":1936},[1640,11566,1940,11567,1946],{},[1942,11568,1945],{"href":1944},[1561,11570,1398],{"id":1949},[1640,11572,1952],{},[1701,11574,11575],{},[1569,11576,11577,11591,11602,11613,11624],{},[1572,11578,11579,11582,1965,11584,11587,11588,1668],{},[1653,11580,11581],{},"Loads incorrect page?",[1963,11583],{},[1712,11585,11586],{},"Step 2.1 – Go to page: Twitter (X) Compose URL",", check the URL is set to ",[1712,11589,11590],{},"https:\u002F\u002Ftwitter.com\u002Fcompose\u002Ftweet",[1572,11592,11593,11596,1965,11598,11601],{},[1653,11594,11595],{},"No message input?",[1963,11597],{},[1712,11599,11600],{},"Step 2.2 – Enter text: Tweet",", reselect the input field in the post form.",[1572,11603,11604,11607,1965,11609,11612],{},[1653,11605,11606],{},"File does not upload?",[1963,11608],{},[1712,11610,11611],{},"Step 2.3 – Upload a file: Image",", check your computer folder permissions.",[1572,11614,11615,11618,1965,11620,11623],{},[1653,11616,11617],{},"Post button not clicked?",[1963,11619],{},[1712,11621,11622],{},"Step 2.4 – Click element: Post",", reselect the post button.",[1572,11625,11626,11629,1965,11631,11634],{},[1653,11627,11628],{},"Row not removed?",[1963,11630],{},[1712,11632,11633],{},"Step 2.5 – Delete rows from a Google Sheet",", make sure the correct sheet and row range are selected.",[1640,11636,2101,11637],{},[1942,11638,2104],{"href":82},[1640,11640,11641,11642],{},"Read this if you would like to learn more about ",[1942,11643,11645],{"href":11644},"\u002Fblog\u002Fhow-to-automate-social-media-posts","posting to Social media with a bot.",{"title":1614,"searchDepth":1615,"depth":1615,"links":11647},[11648,11649,11650,11651,11652,11653],{"id":1647,"depth":1618,"text":1648},{"id":11400,"depth":1618,"text":11401},{"id":11424,"depth":1618,"text":11425},{"id":11558,"depth":1618,"text":11559},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide shows how to automate posting on X (Twitter) using Google Sheets and axiom.ai. Learn to schedule tweets, upload images, and remove sent posts from your sheet.",{"read":2921,"level":2123,"video":11656,"templateId":4154,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":11657,"platfrom":11658},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FY_378SXta-c",[2661,2925,2665],[11659,11660],"X","Twitter","\u002Fguides\u002Fgoogle-sheets-tweeter",{"title":11371,"description":11654},"guides\u002Fgoogle-sheets-tweeter","WT7t7Xxt9SeiAFLHV1Km31x4PsGfGZ_Lw1hPXp-t4SY",{"id":11666,"title":11667,"body":11668,"date":1628,"description":11772,"extension":1621,"meta":11773,"navigation":1627,"order":1628,"path":11777,"seo":11778,"stem":11779,"__hash__":11780},"guides\u002Fguides\u002Fhandling-dialogs.md","How to automate dialogs",{"type":1555,"value":11669,"toc":11768},[11670,11672,11675,11679,11681,11688,11734,11738,11740,11743,11750,11755,11765],[1566,11671],{},[1640,11673,11674],{},"Dialogs tend to appear on websites when they wish to grab your attention, these often appear randomly or based on criteria that has been set by the page for marketing reasons.",[1561,11676,11678],{"id":11677},"standard-alerts","Standard alerts",[1566,11680],{},[1640,11682,11683,11684,11687],{},"By default, axiom.ai will automatically dismiss most dialogs that are created using the standard ",[1712,11685,11686],{},"alert()"," method. This was designed to prevent your automation from getting unexpectedly stuck when a dialog appears. This feature makes use of the following puppeteer script:",[2329,11689,11691],{"className":2366,"code":11690,"language":2368,"meta":1614,"style":1614},"page.on('dialog', async dialog => {\n    await dialog.dismiss();\n})\n",[1712,11692,11693,11717,11730],{"__ignoreMap":1614},[2337,11694,11695,11698,11700,11702,11705,11707,11710,11713,11715],{"class":2339,"line":2340},[2337,11696,11697],{"class":2378},"page.",[2337,11699,3463],{"class":3979},[2337,11701,4145],{"class":2378},[2337,11703,11704],{"class":2347},"'dialog'",[2337,11706,3610],{"class":2378},[2337,11708,11709],{"class":3592},"async",[2337,11711,11712],{"class":2343}," dialog",[2337,11714,4807],{"class":3592},[2337,11716,3994],{"class":2378},[2337,11718,11719,11722,11725,11728],{"class":2339,"line":1618},[2337,11720,11721],{"class":3592},"    await",[2337,11723,11724],{"class":2378}," dialog.",[2337,11726,11727],{"class":3979},"dismiss",[2337,11729,4191],{"class":2378},[2337,11731,11732],{"class":2339,"line":1615},[2337,11733,6637],{"class":2378},[1561,11735,11737],{"id":11736},"non-standard-dialogs","Non-standard dialogs",[1566,11739],{},[1640,11741,11742],{},"Non-standard dialogs are not handled automatically - as the code that is used to build and manage these dialogs depends on the developers of the website, this means that the method of dismissing these can be a bit more involved.",[1640,11744,11745,11746,1668],{},"To get started, you'll first need to identify the CSS selector of the 'accept' or 'dismiss' button on the dialog. This can be tricky as you'll need to ensure that you can get the dialog to appear. To learn more about finding the best selector, see our blog on the ",[1942,11747,11749],{"href":11748},"\u002Fblog\u002Fbest-custom-css-selectors-for-web-scraping","Best Custom CSS Selectors for Web Scraping",[10458,11751,11752],{},[1640,11753,11754],{},"💡 If you're struggling to get the dialog to appear, try opening the page in incognito mode. This ensures that any dialogs that may have it's 'dismiss' state stored in memory.",[1640,11756,11757,11758,11760,11761,11764],{},"Once you have this selector, this can be added into a ",[1942,11759,5230],{"href":924}," step. This should be configured with the 'Optional click' option enabled, and the selector used within the step. You can learn more about using custom selectors in steps in the ",[1942,11762,11763],{"href":1383},"Custom CSS selectors"," documentation. This step should be added in the location where you most likely expect the dialog to display.",[2421,11766,11767],{},"html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":11769},[11770,11771],{"id":11677,"depth":1618,"text":11678},{"id":11736,"depth":1618,"text":11737},"This guide explains how to handle standard and custom dialogs in axiom.ai automations. Learn to dismiss alerts and use optional click steps with custom CSS selectors.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2659,"tags":11774,"platfrom":11776},[8862,11775],"dialog",[3363],"\u002Fguides\u002Fhandling-dialogs",{"title":11667,"description":11772},"guides\u002Fhandling-dialogs","EVyhLP8WY1ToJsS23dKu8ILnzLlNcLVZnsCdqsSLuio",{"id":11782,"title":11783,"body":11784,"date":12051,"description":12052,"extension":1621,"meta":12053,"navigation":1627,"order":1628,"path":12058,"seo":12059,"stem":12060,"__hash__":12061},"guides\u002Fguides\u002Fhow-to-automate-apollo-crm.md","How to automate Apollo.io CRM",{"type":1555,"value":11785,"toc":12043},[11786,11788,11802,11804,11808,11811,11815,11822,11826,11828,11832,11890,11894,11901,11905,11909,11911,11915,12039],[1566,11787],{},[1640,11789,11790,11791,11794,11795,11798,11799,11801],{},"This Apollo.io bot automates the process of adding prospects from a search to your saved lists. The bot works by opening Apollo.io on the search page. It then selects all the people on the page (25), clicks ",[1653,11792,11793],{},"\"Save\"",", and then clicks ",[1653,11796,11797],{},"\"Add to Lists.\""," Finally, the bot enters the name of the list and clicks  ",[1653,11800,11793],{}," again. You can configure the bot to loop through as many pages as you want, adding more and more prospects to your lists.",[1558,11803],{},[1561,11805,11807],{"id":11806},"get-started-set-up-you-apolloio-search-page","Get started: Set up you Apollo.io search page",[1640,11809,11810],{},"Before you run your bot, log into Apollo.io and set up the search from which you wish to add contacts. Once you have added your search filters, copy the page URL. This URL stores the search filters, making them ready to use in your Axiom.",[1561,11812,11814],{"id":11813},"install-the-apolloio-bot","Install the Apollo.io bot",[1640,11816,11817,11818,1679,11820,1683],{},"To install this Apollo.io bot click ",[1653,11819,1678],{},[1653,11821,1682],{},[1640,11823,1686,11824,1668],{},[1653,11825,1689],{},[1640,11827,1692],{},[1561,11829,11831],{"id":11830},"configure-your-apolloio-bot-in-three-easy-steps","Configure your Apollo.io bot in three easy steps",[1701,11833,11834,11888],{},[1569,11835,11836,11850,11856,11869,11874],{},[1572,11837,11838,1710,11840,11843],{},[1653,11839,1968],{},[1712,11841,11842],{},"Go to page: Search",[1569,11844,11845],{},[1572,11846,11847,11849],{},[1712,11848,1751],{},": Insert Apollo.io search URL.",[1572,11851,11852,11855],{},[1653,11853,11854],{},"2.0 – 4.0"," ^",[1572,11857,11858,1710,11860,11862],{},[1653,11859,6928],{},[1712,11861,329],{},[1569,11863,11864],{},[1572,11865,11866,11868],{},[1712,11867,2563],{},": Add the list name.",[1572,11870,11871,11855],{},[1653,11872,11873],{},"6.0 – 7.0",[1572,11875,11876,1710,11878,11881],{},[1653,11877,7036],{},[1712,11879,11880],{},"Jump to another step: Repeat",[1569,11882,11883],{},[1572,11884,11885,11887],{},[1712,11886,7215],{},": Set the number of loops you wish to make.",[1640,11889,2593],{},[1561,11891,11893],{"id":11892},"run-your-apolloio-bot","Run your Apollo.io bot",[1640,11895,11896,11897,11900],{},"To test this bot, we recommend limiting the loops to a maximum of 3. This can be done in Step 9.0, ",[1653,11898,11899],{},"\"Maximum Cycles.\""," Please note that Apollo.io does throttle the number of prospects you can add in one session. We recommend shorter runs spread out over time, then gradually increase until the threshold is reached.",[1561,11902,11904],{"id":11903},"customize-your-apolloio-template","Customize your Apollo.io template",[1640,11906,1940,11907,1946],{},[1942,11908,1945],{"href":1944},[1561,11910,1398],{"id":1949},[1640,11912,2618,11913,1668],{},[1942,11914,2603],{"href":638},[1701,11916,11917],{},[1569,11918,11919,11929,11947,11962,11975,11989,12004,12015,12026],{},[1572,11920,11921,11924,11926,11927,2838],{},[1653,11922,11923],{},"Not loading a filtered search?",[1963,11925],{},"\nMake sure filters are set in Apollo, then copy the full search URL into the ",[1712,11928,1043],{},[1572,11930,11931,11934,1965,11936,11939,11940,11943,11944],{},[1653,11932,11933],{},"Not selecting people?",[1963,11935],{},[1712,11937,11938],{},"Step 2.0 – Click element",", try reselecting the button using the custom selector ",[1712,11941,11942],{},".finder-select-multiple-entities-button",". ",[1942,11945,11946],{"href":1383},"See how",[1572,11948,11949,11952,1965,11954,11957,11958,11961],{},[1653,11950,11951],{},"Not clicking \"Select this page\"?",[1963,11953],{},[1712,11955,11956],{},"Step 3.0 – Click element",", use the ",[1942,11959,11960],{"href":1391},"'Element text'"," option to target the exact \"Select this page\" button.",[1572,11963,11964,11967,1965,11969,11972,11973,1668],{},[1653,11965,11966],{},"Save button not working?",[1963,11968],{},[1712,11970,11971],{},"Step 4.0 – Click element",", reselect the \"Save\" button when people are selected, or try using ",[1942,11974,11960],{"href":1391},[1572,11976,11977,11980,1965,11982,11985,11986,1668],{},[1653,11978,11979],{},"Select list not opening?",[1963,11981],{},[1712,11983,11984],{},"Step 5.0 – Select list",", try reselecting the dropdown using this custom selector: ",[1712,11987,11988],{},"div[role=\"dialog\"] .zp-select-indicators",[1572,11990,11991,11994,1965,11996,11999,12000,12003],{},[1653,11992,11993],{},"Not saving to list?",[1963,11995],{},[1712,11997,11998],{},"Step 6.0 – Press key(s)",", re-record the ",[1712,12001,12002],{},"Enter"," keystroke.",[1572,12005,12006,12009,1965,12011,12014],{},[1653,12007,12008],{},"Bot skips before saving is complete?",[1963,12010],{},[1712,12012,12013],{},"Step 7.0 – Wait",", increase the wait time to allow saving to finish.",[1572,12016,12017,12020,1965,12022,12025],{},[1653,12018,12019],{},"Next button not working?",[1963,12021],{},[1712,12023,12024],{},"Step 8.0 – Click element",", reselect the \"Next\" button at the bottom of the table.",[1572,12027,12028,12031,1965,12033,12036,12037,1668],{},[1653,12029,12030],{},"Jumping to wrong step?",[1963,12032],{},[1712,12034,12035],{},"Step 9.0 – Jump to another step",", check that it jumps to ",[1712,12038,2518],{},[1640,12040,2101,12041],{},[1942,12042,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":12044},[12045,12046,12047,12048,12049,12050],{"id":11806,"depth":1618,"text":11807},{"id":11813,"depth":1618,"text":11814},{"id":11830,"depth":1618,"text":11831},{"id":11892,"depth":1618,"text":11893},{"id":11903,"depth":1618,"text":11904},{"id":1949,"depth":1618,"text":1398},"2023-01-19","This guide explains how to automate adding prospects to Apollo.io lists using axiom.ai. Learn to configure search filters, loop through pages, and save contacts to a list.",{"read":3134,"level":2123,"video":12054,"templateId":6331,"type":2126,"format":2127,"intent_type":2658,"intent":2437,"tags":12055,"platfrom":12056},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fu5t_Eq9IKBI",[2664],[12057],"Apollo","\u002Fguides\u002Fhow-to-automate-apollo-crm",{"title":11783,"description":12052},"guides\u002Fhow-to-automate-apollo-crm","rJD2Z0amhNdWU17YHKZjG_tbbJTX5a5GerytGQkYH08",{"id":12063,"title":12064,"body":12065,"date":12217,"description":12218,"extension":1621,"meta":12219,"navigation":1627,"order":1628,"path":12226,"seo":12227,"stem":12228,"__hash__":12229},"guides\u002Fguides\u002Fhow-to-automate-file-downloads.md","How to automate file downloads",{"type":1555,"value":12066,"toc":12210},[12067,12069,12072,12074,12078,12081,12083,12085,12089,12137,12141,12144,12146,12158,12160,12162,12201],[1566,12068],{},[1640,12070,12071],{},"This bot template automates file downloads from different types of webpages such as listings, paginated, scrolling, and feed pages. It mimics human clicking in Chrome to save files to a local drive.",[1558,12073],{},[1561,12075,12077],{"id":12076},"install-the-file-download-bot","Install the File download bot",[1640,12079,12080],{},"To install this File download bot click 'Install template'.  If you’re a new user, you’ll have to click 'Install Chrome extension' and create a free axiom.ai account before you can edit the template.",[1640,12082,2486],{},[1640,12084,1692],{},[1561,12086,12088],{"id":12087},"configure-your-file-download-bot-in-a-minute","Configure your File download bot in a minute",[1701,12090,12091],{},[1569,12092,12093,12110],{},[1572,12094,12095,1710,12097,12099],{},[1653,12096,1968],{},[1712,12098,1043],{},[1569,12100,12101],{},[1572,12102,12103,1752,12105,1756,12107,12109],{},[1712,12104,1751],{},[1712,12106,1755],{},[1712,12108,1759],{},", and choose the column containing the links.",[1572,12111,12112,1710,12114,12117],{},[1653,12113,2518],{},[1712,12115,12116],{},"Download files",[1569,12118,12119,12124,12128,12132],{},[1572,12120,12121,12123],{},[1712,12122,1775],{},": Point and click to select the files you wish to download.",[1572,12125,12126,3245],{},[1712,12127,3244],{},[1572,12129,12130,3251],{},[1712,12131,3250],{},[1572,12133,12134,3251],{},[1712,12135,12136],{},"Force download",[1561,12138,12140],{"id":12139},"run-your-file-download-bot","Run your File download bot",[1640,12142,12143],{},"We suggest running a test first, stopping the bot after a few downloads and checking the files.",[1561,12145,1937],{"id":1936},[1640,12147,1940,12148,12150,12151,12154,12155,1668],{},[1942,12149,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements. We have other download file steps you can use that work in the cloud and on desktop. Take a look at the ",[1942,12152,12153],{"href":996},"download to Google Drive"," step. We also have steps to ",[1942,12156,12157],{"href":1154},"automate screenshots",[1561,12159,1398],{"id":1949},[1640,12161,1952],{},[1701,12163,12164],{},[1569,12165,12166,12175,12183],{},[1572,12167,12168,12170,12172,12173,1668],{},[1653,12169,1982],{},[1963,12171],{},"\nTry re-selecting or using ",[1942,12174,9069],{"href":1383},[1572,12176,12177,12180,12182],{},[1653,12178,12179],{},"Files do not download?",[1963,12181],{},"\nCheck the folder permission on your computer.",[1572,12184,12185,12188,12190,12191,12195,12196,1668],{},[1653,12186,12187],{},"Does the file open in a window?",[1963,12189],{},"\nThis is default browser behavior. You can’t override it, but there is a workaround — ",[1942,12192,12194],{"href":12193},"\u002Fdocs\u002Fadjusting-how-axiom-runs#using-a-custom-chromium-profile","create a Chrome Profile"," and change the default download setting for the ",[1942,12197,12200],{"href":12198,"rel":12199},"https:\u002F\u002Fsupport.google.com\u002Fchrome\u002Fanswer\u002F95759?hl=en-GB&co=GENIE.Platform%3DDesktop",[3850],"profile",[1640,12202,2101,12203,12205,12206],{},[1942,12204,2104],{"href":82},"\nLearn how to create a bot from scratch to download files from a website by ",[1942,12207,12209],{"href":12208},"\u002Fblog\u002Fhow-to-automate-downloadin-a-file-from-a-website","clicking here.",{"title":1614,"searchDepth":1615,"depth":1615,"links":12211},[12212,12213,12214,12215,12216],{"id":12076,"depth":1618,"text":12077},{"id":12087,"depth":1618,"text":12088},{"id":12139,"depth":1618,"text":12140},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2023-01-29","This guide explains how to automate file downloads from websites using axiom.ai. Learn to select files, save them locally, and customize the bot for different page types.",{"pinned":1627,"read":2921,"level":2123,"video":12220,"templateId":6341,"type":2126,"format":2127,"intent_type":3360,"intent":12221,"tags":12222,"platfrom":12225},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FkuMuOQzietM","Upload and download files",[12223,12224],"files","download",[3363],"\u002Fguides\u002Fhow-to-automate-file-downloads",{"title":12064,"description":12218},"guides\u002Fhow-to-automate-file-downloads","vGM8xcIDtAReyTNraHgFD9L4B_nR-LkcUk5QWKKpJQ0",{"id":12231,"title":12232,"body":12233,"date":1628,"description":12356,"extension":1621,"meta":12357,"navigation":1627,"order":1628,"path":12360,"seo":12361,"stem":12362,"__hash__":12363},"guides\u002Fguides\u002Fhow-to-clear-text-from-a-field.md","How to clear text from an Input Field",{"type":1555,"value":12234,"toc":12351},[12235,12237,12244,12254,12258,12264,12268,12274,12322,12330,12337,12339],[1566,12236],{},[1640,12238,12239,12240,12243],{},"When automating form filling, you may encounter input fields that are already populated with default values. The ",[1942,12241,12242],{"href":1012},"\"Enter text\""," step should clear those values automatically. However, if it does not, it can lead to messy results when the bot runs, especially if the existing value isn't cleared using the \"Enter text\" step.",[1640,12245,12246,12247,2068,12250,12253],{},"But don't worry—this guide will show you a simple and effective way to clear those default values. All you need to do is use a combination of the ",[1653,12248,12249],{},"\"Click element\"",[1653,12251,12252],{},"\"Press key(s)\""," steps.",[1561,12255,12257],{"id":12256},"insert-the-following-steps-into-your-automation","Insert the following steps into your automation",[1640,12259,12260,12261,12263],{},"Assuming you have a bot set up in axiom.ai. insert the following steps before the ",[1653,12262,12242],{}," step you wish to enter a value with. Using the step finder add the following steps.",[1561,12265,12267],{"id":12266},"clear-an-input-before-entering-new-text","Clear an input before entering new text",[1640,12269,12270,12271,12273],{},"To clear an input field before using an ",[1653,12272,12242],{}," step, insert the following two steps directly beforehand:",[1701,12275,12276],{},[1569,12277,12278,12295],{},[1572,12279,12280,12283],{},[1653,12281,12282],{},"Step 1.0 - Click element: Focus input",[1569,12284,12285],{},[1572,12286,12287,1752,12289,12291,12292,1668],{},[1712,12288,1775],{},[1653,12290,8831],{},", highlight the input field you wish to clear, then press ",[1653,12293,12294],{},"\"Complete\"",[1572,12296,12297,12300],{},[1653,12298,12299],{},"Step 2.0 - Press key(s): Clear value",[1569,12301,12302],{},[1572,12303,12304,6939,12306,12309,12310,12313,12314,12317,12318,12321],{},[1712,12305,6938],{},[1653,12307,12308],{},"\"Record\"",", tap the right arrow key repeatedly (",[1712,12311,12312],{},"→→→→→→→→→→",") to move the cursor to the end, then press delete (",[1712,12315,12316],{},"⌦⌦⌦⌦⌦⌦⌦⌦⌦","). Click ",[1653,12319,12320],{},"\"Stop recording\""," when done.",[1640,12323,12324,12325,12329],{},"💡 When you run the bot, you will see the cursor move to the right past the value and then back, deleting it. There are other ",[1942,12326,12328],{"href":12327},"\u002Fguides\u002Fkeyboard-short-cuts","useful shortcuts"," to discover.",[1640,12331,12332,12333,12336],{},"That's it! Assuming your ",[1653,12334,12335],{},"\"Enter Text\""," step is next, the input field will now be cleared, and the new data will be entered without any issues.",[1561,12338,2406],{"id":2405},[1640,12340,12341,12342,12344,12345,12350],{},"This is a simple way to clear prepopulated text in form automation. You can empty an input field by employing the \"",[1653,12343,5230],{},"\" and \"",[1653,12346,12347],{},[1942,12348,12349],{"href":1087},"Press keys(s)","\" steps. This method enhances the reliability of your form automation tasks, helping you achieve accurate results with minimal effort.",{"title":1614,"searchDepth":1615,"depth":1615,"links":12352},[12353,12354,12355],{"id":12256,"depth":1618,"text":12257},{"id":12266,"depth":1618,"text":12267},{"id":2405,"depth":1618,"text":2406},"Learn how to clear text from an Input Field using the Press key(s) step.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":8880,"tags":12358,"platfrom":12359},[2664],[3363],"\u002Fguides\u002Fhow-to-clear-text-from-a-field",{"title":12232,"description":12356},"guides\u002Fhow-to-clear-text-from-a-field","pUAqiXl4H3c1QPPm4otHZrEhDcNhP8CIUtNW8Rj0lNQ",{"id":12365,"title":12366,"body":12367,"date":1628,"description":12728,"extension":1621,"meta":12729,"navigation":1627,"order":1628,"path":12732,"seo":12733,"stem":12734,"__hash__":12735},"guides\u002Fguides\u002Fhow-to-combine-variables.md","How to combine Tokens (variables) into one",{"type":1555,"value":12368,"toc":12710},[12369,12371,12374,12377,12381,12384,12388,12394,12398,12402,12444,12448,12454,12458,12462,12474,12480,12484,12556,12560,12563,12566,12573,12577,12581,12588,12591,12595,12638,12642,12666,12669,12680,12684,12687,12705,12708],[1566,12370],{},[1640,12372,12373],{},"When creating bots in axiom.ai, you will often pass data between steps, perhaps to filter it or enter it into an input field. You may wish to combine variables (tokens) from different steps (data sources) into a single variable.",[1640,12375,12376],{},"As ever, there is more than one way! That's why axiom.ai is so powerful.",[1561,12378,12380],{"id":12379},"what-are-tokens-in-axiomai","What are tokens in axiom.ai?",[1640,12382,12383],{},"Tokens (variables) are pieces of data created at each step as your automation runs. Certain steps can output values such as text, numbers, or lists, which you can reuse in later steps. Tokens let you pass data between steps to output, manipulate, or transform.",[1561,12385,12387],{"id":12386},"method-one-the-append-or-merge-data-step","Method one: the Append or merge data step",[1640,12389,6656,12390,12393],{},[1712,12391,12392],{},"Append or merge data"," step allows you to select two data sources and combine them into a single output. This is by far the simplest, no-brainer method for joining data in Axiom.",[2202,12395],{"src":12396,"alt":12397},"\u002Fguides\u002Fcombine-vars-append-data.webp","Axiom.ai Append or merge data step axiom.ai",[2249,12399,12401],{"id":12400},"how-to-use-the-append-or-merge-data-step","How to use the Append or merge data step",[1701,12403,12404],{},[1569,12405,12406],{},[1572,12407,12408,1710,12410,12412],{},[1653,12409,1968],{},[1712,12411,12392],{},[1569,12413,12414,12419,12424],{},[1572,12415,12416,12418],{},[1653,12417,1843],{}," — Select the first data set (e.g., a scraped ticket URL).",[1572,12420,12421,12423],{},[1653,12422,1853],{}," — Select the second data set to combine (e.g., ChatGPT output or a timestamp).",[1572,12425,12426,12429,12430],{},[1653,12427,12428],{},"Append mode"," — Choose how to combine the data:\n",[1569,12431,12432,12438],{},[1572,12433,12434,12437],{},[1712,12435,12436],{},"\"Horizontally\""," joins values side-by-side",[1572,12439,12440,12443],{},[1712,12441,12442],{},"\"Vertically\""," stacks values top-to-bottom",[2249,12445,12447],{"id":12446},"tip","Tip",[1640,12449,12450,12451,12453],{},"💡 You can chain multiple ",[1712,12452,12392],{}," steps if you need to combine more than two values.",[1561,12455,12457],{"id":12456},"method-two-the-loop-step","Method two: The loop step",[2202,12459],{"src":12460,"alt":12461},"\u002Fguides\u002Fjoin-vars-with-loop-step.webp","Join data variables using loop step axiom.ai",[1640,12463,6656,12464,12466,12467,12469,12470,12473],{},[1712,12465,667],{}," step is most commonly used to repeat actions—like scraping a list of URLs.",[1963,12468],{},"\nBut it has a powerful hidden feature: ",[1653,12471,12472],{},"it can be used to combine data from multiple steps"," even when you’re not looping.",[1640,12475,12476,12477,12479],{},"Any steps that output data, when placed inside a ",[1712,12478,667],{}," block, will have their data combined into a single output token.",[2249,12481,12483],{"id":12482},"how-to-use-this-trick","How to use this trick",[1701,12485,12486],{},[1569,12487,12488,12507,12523,12538],{},[1572,12489,12490,1710,12492,12494],{},[1653,12491,1968],{},[1712,12493,667],{},[1569,12495,12496,12501],{},[1572,12497,12498,12500],{},[1653,12499,667],{}," — Leave this empty or toggle it off.",[1572,12502,12503,12506],{},[1653,12504,12505],{},"Purpose"," — You are not looping; you're using the loop as a container to combine outputs.",[1572,12508,12509,1710,12512,12515],{},[1653,12510,12511],{},"Step 1.1",[1712,12513,12514],{},"Step that outputs data",[1569,12516,12517],{},[1572,12518,12519,12520,7567],{},"Add any step that returns data (e.g. ",[1712,12521,12522],{},"Get data from current page",[1572,12524,12525,1710,12528,12531],{},[1653,12526,12527],{},"Step 1.2",[1712,12529,12530],{},"Another step that outputs data",[1569,12532,12533],{},[1572,12534,12535,12536,7567],{},"Add another step that returns data (e.g. ",[1712,12537,9125],{},[1572,12539,12540,12543],{},[1653,12541,12542],{},"Outside the loop",[1569,12544,12545,12550],{},[1572,12546,12547,12548,2838],{},"Use the token from the ",[1712,12549,667],{},[1572,12551,12552,12553,1668],{},"This token contains combined data from all steps inside the loop, appended ",[1653,12554,12555],{},"horizontally",[2249,12557,12559],{"id":12558},"when-to-use-this","When to use this",[1640,12561,12562],{},"This trick is useful when merging data from multiple steps to write into a Google Sheet.",[2249,12564,12447],{"id":12565},"tip-1",[1640,12567,12568,12569,12572],{},"⚠️ The combined data is only available ",[1653,12570,12571],{},"outside"," the loop.",[1561,12574,12576],{"id":12575},"method-three-the-javascript-step","Method three: The JavaScript step",[2202,12578],{"src":12579,"alt":12580},"\u002Fguides\u002Fjoin-vars-javascript.webp","Join data variables using a JavaScript step",[1640,12582,12583,12584,12587],{},"If you're comfortable with code, the ",[1712,12585,12586],{},"JavaScript"," step is a powerful way to manipulate and combine data however you like.",[1640,12589,12590],{},"You can use it to join variables, restructure arrays, clean data, or return a custom output—all inside one step.",[2249,12592,12594],{"id":12593},"how-to-use-it","How to use it",[1701,12596,12597],{},[1569,12598,12599],{},[1572,12600,12601,1710,12603,12605],{},[1653,12602,1968],{},[1712,12604,12586],{},[1569,12606,12607,12614,12623,12629],{},[1572,12608,12609,12611,12612,2838],{},[1653,12610,2220],{}," — Open the step finder and insert the ",[1712,12613,12586],{},[1572,12615,12616,12619,12620,12622],{},[1653,12617,12618],{},"Declare tokens"," — Use the ",[1712,12621,1755],{}," menu to select tokens and assign them to variables.",[1572,12624,12625,12628],{},[1653,12626,12627],{},"Write your logic"," — Combine, transform, or filter the data however you like.",[1572,12630,12631,12634,12635,12637],{},[1653,12632,12633],{},"Return output"," — Use ",[1712,12636,4573],{}," to output a single value or an array of values.",[2249,12639,12641],{"id":12640},"example","Example",[2329,12643,12645],{"className":2366,"code":12644,"language":2368,"meta":1614,"style":1614},"var links = [custom-data].flat();\nvar dates = [custom-data_1].flat();\n\nreturn [[...links, ...dates]];\n",[1712,12646,12647,12652,12657,12661],{"__ignoreMap":1614},[2337,12648,12649],{"class":2339,"line":2340},[2337,12650,12651],{},"var links = [custom-data].flat();\n",[2337,12653,12654],{"class":2339,"line":1618},[2337,12655,12656],{},"var dates = [custom-data_1].flat();\n",[2337,12658,12659],{"class":2339,"line":1615},[2337,12660,3504],{"emptyLinePlaceholder":1627},[2337,12662,12663],{"class":2339,"line":3501},[2337,12664,12665],{},"return [[...links, ...dates]];\n",[2249,12667,12447],{"id":12668},"tip-2",[1569,12670,12671,12674,12677],{},[1572,12672,12673],{},"You can return a single value or an array.",[1572,12675,12676],{},"The result can be used as input for steps like \"Write to a Google Sheet\".",[1572,12678,12679],{},"You don’t need to be an expert—no-coders can still use this step with a bit of help from an LLM like ChatGPT.",[1561,12681,12683],{"id":12682},"wrapping-up-axiomai-is-a-flexible-tool","Wrapping up: axiom.ai is a flexible tool",[1640,12685,12686],{},"We designed axiom.ai to be flexible, which means there is often more than one way to solve a problem.",[1569,12688,12689,12695,12700],{},[1572,12690,12691,12692,12694],{},"If you only need to combine two tokens, use the ",[1712,12693,12392],{}," step",[1572,12696,12697,12698,12694],{},"If you want to output multiple values into a single row, use the ",[1712,12699,667],{},[1572,12701,12702,12703,12694],{},"If you need full control over how data is combined or transformed, use the ",[1712,12704,12586],{},[1640,12706,12707],{},"We have also received feedback from users about creating a dedicated step for handling multiple variables. This is something we are actively exploring for a future release.",[2421,12709,6485],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":12711},[12712,12713,12717,12722,12727],{"id":12379,"depth":1618,"text":12380},{"id":12386,"depth":1618,"text":12387,"children":12714},[12715,12716],{"id":12400,"depth":1615,"text":12401},{"id":12446,"depth":1615,"text":12447},{"id":12456,"depth":1618,"text":12457,"children":12718},[12719,12720,12721],{"id":12482,"depth":1615,"text":12483},{"id":12558,"depth":1615,"text":12559},{"id":12565,"depth":1615,"text":12447},{"id":12575,"depth":1618,"text":12576,"children":12723},[12724,12725,12726],{"id":12593,"depth":1615,"text":12594},{"id":12640,"depth":1615,"text":12641},{"id":12668,"depth":1615,"text":12447},{"id":12682,"depth":1618,"text":12683},"Learn how to combine tokens variables from multiple steps into a single output in axiom.ai using append, loop, or JavaScript steps.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":12730,"platfrom":12731},[3444],[3363],"\u002Fguides\u002Fhow-to-combine-variables",{"title":12366,"description":12728},"guides\u002Fhow-to-combine-variables","rdYvcaI2u72hIerXMiaSCTu-MC9AbT3jD8h4WecCUn0",{"id":12737,"title":12738,"body":12739,"date":1628,"description":13081,"extension":1621,"meta":13082,"navigation":1627,"order":1628,"path":13088,"seo":13089,"stem":13090,"__hash__":13091},"guides\u002Fguides\u002Fhow-to-dm-on-instagram.md","How to automate Instagram DM's",{"type":1555,"value":12740,"toc":13076},[12741,12743,12751],[1566,12742],{},[1640,12744,12745,12746,12750],{},"This guide takes you through the step-by-step process of setting up a bot to send Instagram DMs. However, if you are keen to get started quickly, we have a ",[1942,12747,12749],{"href":12748},"\u002Fguides\u002Finstagram-dm-like","one-click setup"," template you can use instead of this guide.",[12752,12753,12754,12758,12761,12796,12798,12812,13054,13067,13069],"zero-set-up",{},[1561,12755,12757],{"id":12756},"create-a-blank-google-sheet","Create a blank Google Sheet",[1640,12759,12760],{},"Create a Google Sheet, in Col A add links to profiles and in Col B insert your DM.",[8666,12762,12763,12772],{},[8669,12764,12765],{},[8672,12766,12767,12769],{},[8675,12768,5139],{},[8675,12770,12771],{},"B",[8682,12773,12774,12785],{},[8672,12775,12776,12782],{},[8687,12777,12778],{},[1942,12779,12780],{"href":12780,"rel":12781},"https:\u002F\u002Fwww.instagram.com\u002Falfiesmith81\u002F",[3850],[8687,12783,12784],{},"My custom message 1",[8672,12786,12787,12793],{},[8687,12788,12789],{},[1942,12790,12791],{"href":12791,"rel":12792},"https:\u002F\u002Fwww.instagram.com\u002Faxiom.ai\u002F",[3850],[8687,12794,12795],{},"My custom message 2",[1561,12797,8707],{"id":8706},[1640,12799,12800,12801,12805,12806,8716,12808,12811],{},"In the ",[1942,12802,5028],{"href":12803,"rel":12804},"http:\u002F\u002Faxiom.ai",[3850]," Chrome extension, click ",[1653,12807,8715],{},[1653,12809,12810],{},"Start from Blank\"."," Use the step finder to add the steps outlined below.",[1701,12813,12814],{},[1569,12815,12816,12846],{},[1572,12817,12818,1710,12820,12822],{},[1653,12819,1968],{},[1712,12821,1714],{},[1569,12823,12824,12828,12832,12839],{},[1572,12825,12826,1722],{},[1712,12827,1721],{},[1572,12829,12830,9539],{},[1712,12831,1727],{},[1572,12833,12834,12836,12837,1668],{},[1712,12835,8756],{},": Start from a specified column and row, e.g., ",[1712,12838,8760],{},[1572,12840,12841,12843,12844,1668],{},[1712,12842,6853],{},": End at a specified column and row, e.g., ",[1712,12845,8768],{},[1572,12847,12848,1710,12850,12852,12862],{},[1653,12849,2518],{},[1712,12851,667],{},[1569,12853,12854],{},[1572,12855,12856,1752,12858,1756,12860,1668],{},[1712,12857,667],{},[1712,12859,1814],{},[1712,12861,1759],{},[1569,12863,12864,12880,12897,13023],{},[1572,12865,12866,1710,12868,12871],{},[1653,12867,2527],{},[1712,12869,12870],{},"Go to page: Instagram profile",[1569,12872,12873],{},[1572,12874,12875,1752,12877,12879],{},[1712,12876,1751],{},[1712,12878,1814],{},", select the column with Instagram profile links.",[1572,12881,12882,1710,12884,12886],{},[1653,12883,2545],{},[1712,12885,1768],{},[1569,12887,12888],{},[1572,12889,12890,12892,12893,12896],{},[1712,12891,1775],{},": Use the ",[1942,12894,12895],{"href":1377},"Selector Tool"," to select the header containing the Message button.",[1572,12898,12899,1710,12901,12904,12927],{},[1653,12900,2553],{},[1712,12902,12903],{},"If condition: Check for Message button",[1569,12905,12906,12912,12921],{},[1572,12907,12908,1881,12910,1668],{},[1712,12909,7860],{},[1712,12911,1818],{},[1572,12913,12914,12916,12917,12920],{},[1712,12915,7875],{},": Insert text ",[1712,12918,12919],{},"\"Message\""," (localise if needed).",[1572,12922,12923,12926],{},[1712,12924,12925],{},"Reverse condition",": Set to \"Run steps if condition is true\".",[1569,12928,12929,12951,12959,12980,12988,13008],{},[1572,12930,12931,1710,12934,12937],{},[1653,12932,12933],{},"Step 2.3.1",[1712,12935,12936],{},"Click element: Message",[1569,12938,12939,12944],{},[1572,12940,12941,12943],{},[1712,12942,1775],{},": Highlight the Message button.",[1572,12945,12946,1782,12948,12950],{},[1712,12947,269],{},[1712,12949,5242],{},", enable \"Use element text instead of HTML\", click \"Complete\".",[1572,12952,12953,1710,12956,11855],{},[1653,12954,12955],{},"Step 2.3.2",[1712,12957,12958],{},"Wait: For DM dialog to appear",[1572,12960,12961,1710,12964,12967],{},[1653,12962,12963],{},"Step 2.3.3",[1712,12965,12966],{},"Click element: Dismiss dialog",[1569,12968,12969,12974],{},[1572,12970,12971,12973],{},[1712,12972,1775],{},": Highlight the ‘Not now’ button.",[1572,12975,12976,1782,12978,12950],{},[1712,12977,269],{},[1712,12979,5242],{},[1572,12981,12982,1710,12985,11855],{},[1653,12983,12984],{},"Step 2.3.4",[1712,12986,12987],{},"Wait: For dialog to close",[1572,12989,12990,1710,12993,12996],{},[1653,12991,12992],{},"Step 2.3.5",[1712,12994,12995],{},"Enter text: DM message",[1569,12997,12998],{},[1572,12999,13000,1752,13002,13004,13005,13007],{},[1712,13001,2563],{},[1712,13003,1814],{},", select the message column from ",[1712,13006,1759],{}," (usually column B).",[1572,13009,13010,1710,13013,13016],{},[1653,13011,13012],{},"Step 2.3.6",[1712,13014,13015],{},"Press key(s): Send DM",[1569,13017,13018],{},[1572,13019,13020,13022],{},[1712,13021,6942],{},": Press \"Return\", then click \"Stop recording\".",[1572,13024,13025,1710,13027,13029],{},[1653,13026,2569],{},[1712,13028,1901],{},[1569,13030,13031,13035,13039,13047],{},[1572,13032,13033,1722],{},[1712,13034,1721],{},[1572,13036,13037,9539],{},[1712,13038,1727],{},[1572,13040,13041,13044,13045,1668],{},[1712,13042,13043],{},"First row to delete",": Leave set to ",[1712,13046,1785],{},[1572,13048,13049,13044,13052,1668],{},[1712,13050,13051],{},"Last row to delete",[1712,13053,1785],{},[1640,13055,13056,13057,2019,13060,13062,13063,13066],{},"💡 For testing, set ",[1712,13058,13059],{},"\"Last cell\"",[1712,13061,8768],{}," to send a single DM. To send more, increase to ",[1712,13064,13065],{},"\"AB10\""," etc. Instagram has limits — avoid getting blocked.",[1561,13068,2406],{"id":2405},[1640,13070,13071,13072,13075],{},"By following these steps, it's possible to automate sending direct messages on Instagram. Sending too many messages can get your account blocked, but it works well if you stick within Instagram's DM limits. Better still, there is an ",[1942,13073,13074],{"href":12748},"Instagram template"," that can be set up with a single click.",{"title":1614,"searchDepth":1615,"depth":1615,"links":13077},[13078,13079,13080],{"id":12756,"depth":1618,"text":12757},{"id":8706,"depth":1618,"text":8707},{"id":2405,"depth":1618,"text":2406},"A Step by step guide how to contruct a bot to autoamte sending direct messages on Instagram.",{"pinned":1627,"type":2126,"format":1701,"intent_type":13083,"intent":2659,"tags":13084,"platfrom":13086},"usacase",[13085,2662],"social media",[13087],"Instagram","\u002Fguides\u002Fhow-to-dm-on-instagram",{"title":12738,"description":13081},"guides\u002Fhow-to-dm-on-instagram","S7erdMR8rGd28tmr3LFTugvRH_qqYzR7IQLmPCMj0Mw",{"id":13093,"title":13094,"body":13095,"date":1628,"description":13101,"extension":1621,"meta":13372,"navigation":1627,"order":1628,"path":13376,"seo":13377,"stem":13378,"__hash__":13379},"guides\u002Fguides\u002Fhow-to-loop-through-data-in-cells.md","How to loop through data in cells",{"type":1555,"value":13096,"toc":13365},[13097,13099,13102,13105,13108,13112,13115,13118,13122,13126,13129,13140,13144,13151,13160,13168,13176,13183,13187,13191,13194,13328,13331,13333,13336,13339,13359,13362],[1566,13098],{},[1640,13100,13101],{},"When automating web apps, you often need to select more than one option within a dropdown or checkbox group. This is common when entering product data into ecommerce backends, such as assigning colours, size ranges, or other product variants. I recently used this approach while automating workflows for Printful and WooCommerce, where multiple selections are required to correctly configure products.",[1640,13103,13104],{},"In the example below, we will open a dropdown and select multiple checkbox entries. The same approach can be adapted to many other use cases.",[1640,13106,13107],{},"Let’s dive in.",[1561,13109,13111],{"id":13110},"how-to-set-up-your-data","How to set up your data",[1640,13113,13114],{},"In this example, I am using a Google Sheet. To loop through multiple values stored inside a single cell, you must separate them using a delimiter. I typically use a comma, but any consistent delimiter will work as long as it is used consistently across the sheet.",[1640,13116,13117],{},"For example, in column C you might store sizes like this:",[2202,13119],{"src":13120,"alt":13121},"\u002Fguides\u002Fgoogle-cell-data.webp","How to set up you data separated by a delimiter.",[1561,13123,13125],{"id":13124},"when-to-use-this-method","When to use this method",[1640,13127,13128],{},"Use this approach when:",[1569,13130,13131,13134,13137],{},[1572,13132,13133],{},"You need to tick multiple checkboxes.",[1572,13135,13136],{},"You need to select multiple dropdown options.",[1572,13138,13139],{},"You are automating product variants, tags, permissions, or categories.",[1561,13141,13143],{"id":13142},"what-steps-we-will-use","What steps we will use",[1640,13145,13146,13147,13150],{},"First, we import the source data using the ",[1942,13148,13149],{"href":1614},"Read data from Google Sheet"," step. This gives us access to all product values stored in the sheet.",[1640,13152,13153,13154,13159],{},"Next, we use the ",[1942,13155,13158],{"href":13156,"rel":13157},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop",[3850],"Loop through data step"," to process each row individually.",[1640,13161,13162,13163,13167],{},"Within that loop, we add a ",[1942,13164,1181],{"href":13165,"rel":13166},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character",[3850],". This takes a single cell containing multiple values and splits it using a delimiter, turning the values into an array.",[1640,13169,13170,13171,13175],{},"Because the split data is returned horizontally, we then use the ",[1942,13172,1185],{"href":13173,"rel":13174},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns",[3850]," to convert it into a vertical list.",[1640,13177,13178,13179,13182],{},"Finally, we use another ",[1942,13180,1074],{"href":13156,"rel":13181},[3850]," to iterate through the transposed values one by one. This allows each option to be selected individually in the target dropdown or checkbox group.",[2202,13184],{"src":13185,"alt":13186},"\u002Fguides\u002Fnested-cell-loop.webp","steps for nested loop through cell data",[1561,13188,13190],{"id":13189},"how-to-structure-the-steps","How to structure the steps",[1640,13192,13193],{},"Below is a simplified outline of the structure:",[1701,13195,13196],{},[1569,13197,13198,13225],{},[1572,13199,13200,1710,13202,13204],{},[1653,13201,1968],{},[1712,13203,1714],{},[1569,13205,13206,13210,13214,13220],{},[1572,13207,13208,1722],{},[1712,13209,1721],{},[1572,13211,13212,9539],{},[1712,13213,1727],{},[1572,13215,13216,12836,13218,1668],{},[1712,13217,8756],{},[1712,13219,8760],{},[1572,13221,13222,13224],{},[1712,13223,6853],{},": End at a specified column and row, depending on how many rows you want to process.",[1572,13226,13227,1710,13229,13231,13241],{},[1653,13228,2518],{},[1712,13230,667],{},[1569,13232,13233],{},[1572,13234,13235,1752,13237,1756,13239,1668],{},[1712,13236,667],{},[1712,13238,1814],{},[1712,13240,1759],{},[1569,13242,13243,13268,13286],{},[1572,13244,13245,1710,13247,13250],{},[1653,13246,2527],{},[1712,13248,13249],{},"Split by character",[1569,13251,13252,13261],{},[1572,13253,13254,13257,13258,1668],{},[1712,13255,13256],{},"Character",": Enter your chosen delimiter, for example ",[1712,13259,13260],{},",",[1572,13262,13263,1752,13265,13267],{},[1712,13264,2083],{},[1712,13266,1814],{},", select the column that contains your delimited cell values (e.g., sizes column).",[1572,13269,13270,1710,13272,13275],{},[1653,13271,2545],{},[1712,13273,13274],{},"Swap rows and columns",[1569,13276,13277],{},[1572,13278,13279,1752,13281,13283,13284,2838],{},[1712,13280,2083],{},[1712,13282,1814],{},", select the output from the ",[1712,13285,13249],{},[1572,13287,13288,1710,13290,13293,13303],{},[1653,13289,2553],{},[1712,13291,13292],{},"Loop through data (nested loop)",[1569,13294,13295],{},[1572,13296,13297,1752,13299,13283,13301,2838],{},[1712,13298,667],{},[1712,13300,1814],{},[1712,13302,13274],{},[1569,13304,13305],{},[1572,13306,13307,1710,13309,13311],{},[1653,13308,12933],{},[1712,13310,5230],{},[1569,13312,13313,13318],{},[1572,13314,13315,13317],{},[1712,13316,1775],{},": Highlight the size dropdown.",[1572,13319,13320,1782,13322,13324,13325,13327],{},[1712,13321,269],{},[1712,13323,5242],{},", enable \"Use element text instead of HTML\", click \"insert data\" and select the output from the ",[1712,13326,13274],{}," step. Finally click \"Complete\".",[1640,13329,13330],{},"This allows each value in the cell (for example, each size) to be selected individually.",[1561,13332,2406],{"id":2405},[1640,13334,13335],{},"Looping through data inside loops can feel complex at first. The key is setting up your data correctly using a delimiter.",[1640,13337,13338],{},"Once your data is structured properly, you only need a few steps:",[1569,13340,13341,13347,13353],{},[1572,13342,13343],{},[1942,13344,13346],{"href":13165,"rel":13345},[3850],"Split",[1572,13348,13349],{},[1942,13350,13352],{"href":13173,"rel":13351},[3850],"Transpose",[1572,13354,13355],{},[1942,13356,13358],{"href":13156,"rel":13357},[3850],"loop",[1640,13360,13361],{},"From there, you can automate selecting multiple dropdown items, ticking multiple checkboxes, or interacting with repeated UI elements.",[1640,13363,13364],{},"Master nested loops, and you unlock the ability to automate highly dynamic interfaces.",{"title":1614,"searchDepth":1615,"depth":1615,"links":13366},[13367,13368,13369,13370,13371],{"id":13110,"depth":1618,"text":13111},{"id":13124,"depth":1618,"text":13125},{"id":13142,"depth":1618,"text":13143},{"id":13189,"depth":1618,"text":13190},{"id":2405,"depth":1618,"text":2406},{"pinned":1627,"metaTitle":13373,"type":2126,"format":1701,"intent_type":3360,"intent":2437,"tags":13374,"platfrom":13375},"How to loop through data in cells using nested loops and a data source like Google Sheets",[2664],[3363],"\u002Fguides\u002Fhow-to-loop-through-data-in-cells",{"title":13094,"description":13101},"guides\u002Fhow-to-loop-through-data-in-cells","phx8XCoib2bbjF7pVdlaqhsm61REmcK3HabzAgfUBaU",{"id":13381,"title":13382,"body":13383,"date":1628,"description":13665,"extension":1621,"meta":13666,"navigation":1627,"order":1628,"path":13670,"seo":13671,"stem":13672,"__hash__":13673},"guides\u002Fguides\u002Fhubspot-sequence-add-contacts.md","How to automate adding contacts to your Hubspot sequences",{"type":1555,"value":13384,"toc":13660},[13385,13387,13391,13415,13417,13419,13422,13455,13457,13459,13469,13644,13650,13652,13654],[1566,13386],{},[2202,13388],{"src":13389,"alt":13390},"\u002Fdocs\u002Fguides\u002Fhubspot-sequences.jpg","Automate hubspot sequences in the browser with axiom.ai",[1640,13392,13393,13394,5484,13397,1815,13400,13403,13404,13407,13408,13411,13412,13414],{},"This guide shows you how to make a bot that reads contact information from a Google Sheet, opens a HubSpot email sequence, and then ",[1942,13395,13396],{"href":525},"clicks",[1653,13398,13399],{},"\"Email Contacts\"",[1653,13401,13402],{},"\"Enroll Contacts.\""," It then enters the email into the ",[1653,13405,13406],{},"\"Search for Contacts\""," input. The bot then selects \"Next\" and finally ",[1653,13409,13410],{},"\"Start Sequence\""," before repeating the process in a ",[1942,13413,13358],{"href":668}," for the next contact. Better still, the bot can be easily adapted to your use case by adding and removing steps.",[1561,13416,12757],{"id":12756},[1566,13418],{},[1640,13420,13421],{},"Create a Google Sheet add some contact emails to the sheet. See example below.",[8666,13423,13424,13432],{},[8669,13425,13426],{},[8672,13427,13428,13430],{},[8675,13429,5139],{},[8675,13431,12771],{},[8682,13433,13434,13445],{},[8672,13435,13436,13442],{},[8687,13437,13438],{},[1942,13439,13441],{"href":13440},"mailto:dummycontact@mywork.com","dummycontact@mywork.com",[8687,13443,13444],{},"---",[8672,13446,13447,13453],{},[8687,13448,13449],{},[1942,13450,13452],{"href":13451},"mailto:dummycontact1@mywork.com","dummycontact1@mywork.com",[8687,13454,13444],{},[1561,13456,8707],{"id":8706},[1566,13458],{},[1640,13460,12800,13461,12805,13465,8716,13467,12811],{},[1942,13462,5028],{"href":13463,"rel":13464},"http:\u002F\u002Faxiom.ai\u002F",[3850],[1653,13466,8715],{},[1653,13468,12810],{},[1701,13470,13471],{},[1569,13472,13473,13503,13517],{},[1572,13474,13475,1710,13477,13479],{},[1653,13476,1968],{},[1712,13478,1714],{},[1569,13480,13481,13485,13489,13496],{},[1572,13482,13483,1722],{},[1712,13484,1721],{},[1572,13486,13487,9539],{},[1712,13488,1727],{},[1572,13490,13491,13493,13494,1668],{},[1712,13492,8756],{},": Start from ",[1712,13495,8760],{},[1572,13497,13498,13500,13501,1668],{},[1712,13499,6853],{},": End at ",[1712,13502,8768],{},[1572,13504,13505,1710,13507,13510],{},[1653,13506,2518],{},[1712,13508,13509],{},"Go to page: Hubspot Sequence",[1569,13511,13512],{},[1572,13513,13514,13516],{},[1712,13515,1751],{},": Insert the sequence URL you wish to add contacts into.",[1572,13518,13519,1710,13521,13523,13533],{},[1653,13520,10589],{},[1712,13522,667],{},[1569,13524,13525],{},[1572,13526,13527,1752,13529,1756,13531,1668],{},[1712,13528,667],{},[1712,13530,1814],{},[1712,13532,1759],{},[1569,13534,13535,13557,13573,13587,13601,13616],{},[1572,13536,13537,1710,13539,13542],{},[1653,13538,10598],{},[1712,13540,13541],{},"Select list: Enroll contacts",[1569,13543,13544,13549],{},[1572,13545,13546,13548],{},[1712,13547,1775],{},": Highlight the “Enroll contacts” dropdown.",[1572,13550,13551,13553,13554,1668],{},[1712,13552,2563],{},": Add the text ",[1712,13555,13556],{},"\"Email contacts\"",[1572,13558,13559,1710,13561,13564],{},[1653,13560,10606],{},[1712,13562,13563],{},"Enter text: Search for contact",[1569,13565,13566],{},[1572,13567,13568,1752,13570,13572],{},[1712,13569,2563],{},[1712,13571,1814],{},", select the email column from the Google Sheet (column A).",[1572,13574,13575,1710,13577,13580],{},[1653,13576,10622],{},[1712,13578,13579],{},"Click element: Tick contact",[1569,13581,13582],{},[1572,13583,13584,13586],{},[1712,13585,1775],{},": Highlight and select the checkbox for the top result.",[1572,13588,13589,1710,13591,13594],{},[1653,13590,10630],{},[1712,13592,13593],{},"Click element: Next",[1569,13595,13596],{},[1572,13597,13598,13600],{},[1712,13599,1775],{},": Highlight the “Next” button and click Complete.",[1572,13602,13603,1710,13606,13609],{},[1653,13604,13605],{},"Step 3.5",[1712,13607,13608],{},"Click element: Start sequence",[1569,13610,13611],{},[1572,13612,13613,13615],{},[1712,13614,1775],{},": Highlight the “Start sequence” button and click Complete.",[1572,13617,13618,1710,13620,13622],{},[1653,13619,10772],{},[1712,13621,1901],{},[1569,13623,13624,13628,13632,13638],{},[1572,13625,13626,1722],{},[1712,13627,1721],{},[1572,13629,13630,9539],{},[1712,13631,1727],{},[1572,13633,13634,1782,13636,1668],{},[1712,13635,13043],{},[1712,13637,1785],{},[1572,13639,13640,1782,13642,1668],{},[1712,13641,13051],{},[1712,13643,1785],{},[1640,13645,13646,13647,13649],{},"💡 Adjust the ",[1712,13648,6853],{}," value in Step 1.0 (e.g. \"AB50\") to loop through multiple contacts.",[1561,13651,2406],{"id":2405},[1566,13653],{},[1640,13655,13656,13657,1668],{},"In just a few steps, anyone can create automation that reads contacts from a Google Sheet, opens a HubSpot sequence, and adds a contact. In fact, what you have learned is how to automate virtually any action in HubSpot. Take what you have learned and apply it to marketing, commerce, CRM, content, and even reporting to fully automate HubSpot in the ",[1942,13658,13659],{"href":8861},"browser",{"title":1614,"searchDepth":1615,"depth":1615,"links":13661},[13662,13663,13664],{"id":12756,"depth":1618,"text":12757},{"id":8706,"depth":1618,"text":8707},{"id":2405,"depth":1618,"text":2406},"Learn how to automate adding contacts to your HubSpot sequences using data from Google Sheets. This step-by-step guide walks you through building a browser bot with axiom.ai.",{"type":2126,"format":1701,"intent_type":2658,"intent":2437,"tags":13667,"platfrom":13668},[2664],[13669],"Hubspot","\u002Fguides\u002Fhubspot-sequence-add-contacts",{"title":13382,"description":13665},"guides\u002Fhubspot-sequence-add-contacts","7fkmEqDGbiJAtWBKfOvxQ_u6hVopVfLhafbwt9GON9Y",{"id":13675,"title":13676,"body":13677,"date":1628,"description":14235,"extension":1621,"meta":14236,"navigation":1627,"order":1628,"path":14239,"seo":14240,"stem":14241,"__hash__":14242},"guides\u002Fguides\u002Fifttt.md","How to trigger axiom.ai automations using IFTTT",{"type":1555,"value":13678,"toc":14224},[13679,13681,13689,13699,13701,13703,13726,13730,13733,13765,13768,13801,13805,13809,13812,13839,13842,13864,13867,13914,13916,13924,13930,13932,13935,13939,13948,13978,13981,13988,13992,13995,14041,14044,14160,14171,14211,14213,14216,14221],[1566,13680],{},[1640,13682,13683,13688],{},[1942,13684,13687],{"href":13685,"rel":13686},"https:\u002F\u002Fifttt.com",[3850],"IFTTT"," offers a wide range of connections to various services, learn how to start using IFTTT automations to trigger your axiom.ai automations and power-up your workflow with access to new services.",[1640,13690,13691,13692,13694,13695,13698],{},"This guide assumes that you already have an automation set up, want to create a trigger using IFTTT, and have an axiom.ai plan that supports webhooks (see ",[1942,13693,1535],{"href":1534},"). Some features of ",[1942,13696,13687],{"href":13685,"rel":13697},[3850]," may require a subscription.",[1561,13700,2156],{"id":2155},[1640,13702,2161],{},[1701,13704,13705],{},[2165,13706,13707,13714,13719],{},[1572,13708,13709,13711,13712,1668],{},[1653,13710,2171],{},": Your personal API key can be found in the extension ",[1942,13713,2176],{"href":2175},[1572,13715,13716,13718],{},[1653,13717,2181],{},": The name of the automation you wish to trigger.",[1572,13720,13721,13723,13724,1668],{},[1653,13722,2187],{},": The current axiom.ai endpoint is ",[1712,13725,2191],{},[1561,13727,13729],{"id":13728},"trigger-an-axiomai-automation-with-ifttt","Trigger an axiom.ai automation with IFTTT",[1640,13731,13732],{},"Learn how to trigger an axiom.ai automation from IFTTT by making use of webhooks.",[1701,13734,13735],{},[2165,13736,13737,13748,13754,13760],{},[1572,13738,13739,13742,13743,13747],{},[1653,13740,13741],{},"Create IFTTT applet",": Head to ",[1942,13744,13746],{"href":13685,"rel":13745},[3850],"ifttt.com"," and click \"create\".",[1572,13749,13750,13753],{},[1653,13751,13752],{},"Trigger",": IFTTT offer a wide range of triggers for your automations. For this guide we will use \"Date & Time\" for simplicity.",[1572,13755,13756,13759],{},[1653,13757,13758],{},"Action(s)",": To trigger your axiom.ai automation, select \"Webhooks\" as an action.",[1572,13761,13762,13764],{},[1653,13763,2230],{},": Configure the \"webhooks\" action.",[1640,13766,13767],{},"Configure the \"webhooks\" action:",[1701,13769,13770],{},[1569,13771,13772,13778,13785,13792],{},[1572,13773,13774,2188,13776,1668],{},[1653,13775,5513],{},[1712,13777,2191],{},[1572,13779,13780,1782,13783,1668],{},[1653,13781,13782],{},"Method",[1712,13784,2237],{},[1572,13786,13787,1782,13790,1668],{},[1653,13788,13789],{},"Content Type",[1712,13791,10421],{},[1572,13793,13794,13796,13797,13800],{},[1653,13795,2242],{},": This should be set per our ",[1942,13798,13799],{"href":8295},"API | Triggering an automation"," documentation.",[2202,13802],{"src":13803,"alt":13804},"\u002Fdocs\u002Fguides\u002Fifttt-create-datetime-trigger.jpg","create ifttt with date time trigger to trigger axiom.ai automation",[1561,13806,13808],{"id":13807},"trigger-an-ifttt-applet-with-an-axiomai-automation","Trigger an IFTTT applet with an axiom.ai automation",[1640,13810,13811],{},"Learn how to trigger an IFTTT applet from an axiom.ai automation.",[1701,13813,13814],{},[2165,13815,13816,13823,13828,13833],{},[1572,13817,13818,13742,13820,13747],{},[1653,13819,13741],{},[1942,13821,13746],{"href":13685,"rel":13822},[3850],[1572,13824,13825,13827],{},[1653,13826,13752],{},": Select the \"receive a web request with a JSON payload\" trigger, and set an event name.",[1572,13829,13830,13832],{},[1653,13831,13758],{},": Select the action(s) that you would like your IFTTT flow to take.",[1572,13834,13835,13838],{},[1653,13836,13837],{},"Save",": Once saved, you will then be given a webhook URL, save this for later.",[1640,13840,13841],{},"Now head over to your axiom.ai automation:",[1701,13843,13844],{},[2165,13845,13846,13852,13858],{"start":3507},[1572,13847,13848,13851],{},[1653,13849,13850],{},"Trigger a webhook",": Add the \"trigger a webhook\" step to your automation, towards the end of your automation is often best.",[1572,13853,13854,13857],{},[1653,13855,13856],{},"Set Endpoint",": In the \"endpoint\" field, insert the URL from step 4.",[1572,13859,13860,13863],{},[1653,13861,13862],{},"Define payload",": (Optional) If you're sending data to IFTTT, define a JSON payload in the \"payload\" field.",[1640,13865,13866],{},"Example payload:",[2329,13868,13870],{"className":9297,"code":13869,"language":4188,"meta":1614,"style":1614},"{\n  \"organisation\": \"axiom.ai\",\n  \"address\": \"123 Coast Road\",\n  \"phone\": \"xxx-xxx-xxxx\"\n}\n",[1712,13871,13872,13876,13888,13900,13910],{"__ignoreMap":1614},[2337,13873,13874],{"class":2339,"line":2340},[2337,13875,9305],{"class":2378},[2337,13877,13878,13881,13883,13886],{"class":2339,"line":1618},[2337,13879,13880],{"class":9310},"  \"organisation\"",[2337,13882,3601],{"class":2378},[2337,13884,13885],{"class":2347},"\"axiom.ai\"",[2337,13887,4030],{"class":2378},[2337,13889,13890,13893,13895,13898],{"class":2339,"line":1615},[2337,13891,13892],{"class":9310},"  \"address\"",[2337,13894,3601],{"class":2378},[2337,13896,13897],{"class":2347},"\"123 Coast Road\"",[2337,13899,4030],{"class":2378},[2337,13901,13902,13905,13907],{"class":2339,"line":3501},[2337,13903,13904],{"class":9310},"  \"phone\"",[2337,13906,3601],{"class":2378},[2337,13908,13909],{"class":2347},"\"xxx-xxx-xxxx\"\n",[2337,13911,13912],{"class":2339,"line":3507},[2337,13913,4242],{"class":2378},[1561,13915,2386],{"id":2385},[1640,13917,13918,13919,13923],{},"To test the triggering of your axiom.ai automation from an IFTTT applet, simply run the flow from IFTTT and then check the ",[1653,13920,13921],{},[1942,13922,2402],{"href":2401}," in axiom.ai to confirm that the automation has run. If there is no run report present, this could either mean that there was an error in IFTTT, or the automation has yet to run.",[1640,13925,13926,13927,13929],{},"To test the triggering of your IFTTT applet, simply click ",[1653,13928,2394],{}," within your axiom.ai automation and then observe the actions that the IFTTT applet makes - for example, if it writes to a Google Sheet, check the Google Sheet that is connected.",[1561,13931,8300],{"id":8299},[1640,13933,13934],{},"There are plenty of use cases that this can be applied to, below are some examples.",[2249,13936,13938],{"id":13937},"trigger-axiomai-automation-when-an-airtable-database-is-updated","Trigger axiom.ai automation when an Airtable database is updated",[1640,13940,13941,13942,13947],{},"To get started, you'll need to ensure that you have your Airtable account connected to IFTTT. To do so, add the Airtable action\u002Ftrigger to an automation and follow the instructions. See IFTTTs documentation: ",[1942,13943,13946],{"href":13944,"rel":13945},"https:\u002F\u002Fifttt.com\u002Fairtable",[3850],"Airtable Integrations"," for more information.",[1701,13949,13950],{},[2165,13951,13952,13959,13964,13972],{},[1572,13953,13954,13742,13956,13747],{},[1653,13955,13741],{},[1942,13957,13746],{"href":13685,"rel":13958},[3850],[1572,13960,13961,13963],{},[1653,13962,13752],{},": Select the \"Airtable\" trigger.",[1572,13965,13966,13968,13969,1668],{},[1653,13967,13758],{},": Add the \"Webhooks\" action. To configure this action, see ",[1942,13970,13729],{"href":13971},"#trigger-an-axiomai-automation-with-ifttt",[1572,13973,13974,13977],{},[1653,13975,13976],{},"Test",": Add a new entry to your Airtable table, give it a moment, and then check \"run reports\" in your axiom.ai extension.",[2202,13979],{"src":13980,"alt":13804},"\u002Fdocs\u002Fguides\u002Fifttt-create-airtable-trigger.jpg",[1640,13982,13983,13984,1668],{},"Need to post data to Airtable using Axiom? Check out our guide on ",[1942,13985,13987],{"href":13986},"\u002Fguides\u002Fpost-data-to-airtable","how to post data to airtable",[2249,13989,13991],{"id":13990},"automatically-create-a-new-notion-page-with-ifttt-and-axiomai","Automatically create a new Notion page with IFTTT and axiom.ai",[1640,13993,13994],{},"To get started, you'll need to ensure that you have your Notion account connected to IFTTT. To do so, add the Notion action\u002Ftrigger to an automation and follow the instructions. For this example, we are going to be making a company directory with an axiom.ai automation that sends company data to IFTTT to be filed in Notion.so.",[1701,13996,13997],{},[2165,13998,13999,14006,14010,14015,14020,14030,14036],{},[1572,14000,14001,13742,14003,13747],{},[1653,14002,13741],{},[1942,14004,13746],{"href":13685,"rel":14005},[3850],[1572,14007,14008,13827],{},[1653,14009,13752],{},[1572,14011,14012,14014],{},[1653,14013,13758],{},": Search \"Notion\" and select \"create a page\".",[1572,14016,14017,14019],{},[1653,14018,2230],{},": Configure the action(s) as required, you'll need to set values for the page title and content - this can be dummy content for the time being.",[1572,14021,14022,14025,14026,14029],{},[1653,14023,14024],{},"Add a filter code",":  To make use of the ",[1712,14027,14028],{},"JsonPayload"," object that is created by the webhook trigger, a filter code will need to be added. See the code below for more details. This can be modified for use with other services.",[1572,14031,14032,14035],{},[1653,14033,14034],{},"Set up your Axiom",": Add a \"Trigger webhook\" step to your automation to use when sending data to IFTTT.",[1572,14037,14038,14040],{},[1653,14039,13976],{},": Click \"run\" on your automation with some test data then check the activity within your IFTTT applet to confirm it ran as expected.",[1640,14042,14043],{},"To set up a filter code that changes the Notion.so page name and inserts data into the page, follow the code below. You'll need to switch out with the data that you are sending to the webhook.",[2329,14045,14049],{"className":14046,"code":14047,"language":14048,"meta":1614,"style":1614},"language-ts shiki shiki-themes github-light-default github-dark-default","\u002F\u002F Parse the payload to be able to be used within your applet.\nlet payload = JSON.parse(MakerWebhooks.jsonEvent.JsonPayload)\n\n\u002F\u002F Set the title based on the first value within the payload\nNotionSo.createNewPage.setPageTitle(payload.organisation)\n\n\u002F\u002F Set the page content\nNotionSo.createNewPage.setPageBody(`Organisation: ${payload.organisation}\\nAddress: ${payload.address}\\nPhone: ${payload.phone}`)\n","ts",[1712,14050,14051,14056,14076,14080,14085,14096,14100,14105],{"__ignoreMap":1614},[2337,14052,14053],{"class":2339,"line":2340},[2337,14054,14055],{"class":4521},"\u002F\u002F Parse the payload to be able to be used within your applet.\n",[2337,14057,14058,14061,14063,14065,14068,14070,14073],{"class":2339,"line":1618},[2337,14059,14060],{"class":3592},"let",[2337,14062,11085],{"class":2378},[2337,14064,6556],{"class":3592},[2337,14066,14067],{"class":3488}," JSON",[2337,14069,1668],{"class":2378},[2337,14071,14072],{"class":3979},"parse",[2337,14074,14075],{"class":2378},"(MakerWebhooks.jsonEvent.JsonPayload)\n",[2337,14077,14078],{"class":2339,"line":1615},[2337,14079,3504],{"emptyLinePlaceholder":1627},[2337,14081,14082],{"class":2339,"line":3501},[2337,14083,14084],{"class":4521},"\u002F\u002F Set the title based on the first value within the payload\n",[2337,14086,14087,14090,14093],{"class":2339,"line":3507},[2337,14088,14089],{"class":2378},"NotionSo.createNewPage.",[2337,14091,14092],{"class":3979},"setPageTitle",[2337,14094,14095],{"class":2378},"(payload.organisation)\n",[2337,14097,14098],{"class":2339,"line":3579},[2337,14099,3504],{"emptyLinePlaceholder":1627},[2337,14101,14102],{"class":2339,"line":3658},[2337,14103,14104],{"class":4521},"\u002F\u002F Set the page content\n",[2337,14106,14107,14109,14112,14114,14117,14120,14122,14125,14128,14131,14134,14136,14138,14141,14143,14145,14148,14150,14152,14155,14157],{"class":2339,"line":3664},[2337,14108,14089],{"class":2378},[2337,14110,14111],{"class":3979},"setPageBody",[2337,14113,4145],{"class":2378},[2337,14115,14116],{"class":2347},"`Organisation: ${",[2337,14118,14119],{"class":2378},"payload",[2337,14121,1668],{"class":2347},[2337,14123,14124],{"class":2378},"organisation",[2337,14126,14127],{"class":2347},"}",[2337,14129,14130],{"class":3592},"\\n",[2337,14132,14133],{"class":2347},"Address: ${",[2337,14135,14119],{"class":2378},[2337,14137,1668],{"class":2347},[2337,14139,14140],{"class":2378},"address",[2337,14142,14127],{"class":2347},[2337,14144,14130],{"class":3592},[2337,14146,14147],{"class":2347},"Phone: ${",[2337,14149,14119],{"class":2378},[2337,14151,1668],{"class":2347},[2337,14153,14154],{"class":2378},"phone",[2337,14156,4051],{"class":2347},[2337,14158,14159],{"class":2378},")\n",[1640,14161,14162,14163,14166,14167,14170],{},"To set up your axiom.ai automation, you'll need to add a ",[1653,14164,14165],{},"trigger webhook"," step. You'll need to save your IFTTT applet and grab the webhook URL. It should have the following format: ",[1712,14168,14169],{},"https:\u002F\u002Fmaker.ifttt.com\u002Ftrigger\u002F\u003CEVENT_NAME>\u002Fjson\u002Fwith\u002Fkey\u002F\u003CID>",". You'll need to then format your payload as JSON, in our example, we used the following:",[2329,14172,14173],{"className":9297,"code":13869,"language":4188,"meta":1614,"style":1614},[1712,14174,14175,14179,14189,14199,14207],{"__ignoreMap":1614},[2337,14176,14177],{"class":2339,"line":2340},[2337,14178,9305],{"class":2378},[2337,14180,14181,14183,14185,14187],{"class":2339,"line":1618},[2337,14182,13880],{"class":9310},[2337,14184,3601],{"class":2378},[2337,14186,13885],{"class":2347},[2337,14188,4030],{"class":2378},[2337,14190,14191,14193,14195,14197],{"class":2339,"line":1615},[2337,14192,13892],{"class":9310},[2337,14194,3601],{"class":2378},[2337,14196,13897],{"class":2347},[2337,14198,4030],{"class":2378},[2337,14200,14201,14203,14205],{"class":2339,"line":3501},[2337,14202,13904],{"class":9310},[2337,14204,3601],{"class":2378},[2337,14206,13909],{"class":2347},[2337,14208,14209],{"class":2339,"line":3507},[2337,14210,4242],{"class":2378},[1561,14212,2406],{"id":2405},[1640,14214,14215],{},"Being able to trigger your IFTTT applets with an axiom.ai automation, or vice verse, can be super powerful. IFTTT offers a wide range of connections that can be used to power up your axiom.ai automations. IFTTT also offers mobile applications that could be used to trigger your axiom.ai automations, making your automations much more portable.",[1640,14217,14218],{},[2417,14219,14220],{},"Information correct as of October 2024. Updated to any platform mentioned my change or render this process obsolete.",[2421,14222,14223],{},"html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sjgCt, html code.shiki .sjgCt{--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}",{"title":1614,"searchDepth":1615,"depth":1615,"links":14225},[14226,14227,14228,14229,14230,14234],{"id":2155,"depth":1618,"text":2156},{"id":13728,"depth":1618,"text":13729},{"id":13807,"depth":1618,"text":13808},{"id":2385,"depth":1618,"text":2386},{"id":8299,"depth":1618,"text":8300,"children":14231},[14232,14233],{"id":13937,"depth":1615,"text":13938},{"id":13990,"depth":1615,"text":13991},{"id":2405,"depth":1618,"text":2406},"Learn how to get started with triggering axiom.ai automations from IFTTT, and trigger IFTTT applets from axiom.ai. Automate Notion, Airtable, X, Twitter, TikTok any many more with axiom.ai and IFTTT.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":14237,"platfrom":14238},[2439,2440],[13687],"\u002Fguides\u002Fifttt",{"title":13676,"description":14235},"guides\u002Fifttt","1cLqZpgYwTB-1PjUZI02YloaxNdFHO1JzIImGmzYrtg",{"id":14244,"title":14245,"body":14246,"date":1628,"description":14308,"extension":1621,"meta":14309,"navigation":1627,"order":1628,"path":1944,"seo":14310,"stem":14311,"__hash__":14312},"guides\u002Fguides\u002Findex.md","Guides",{"type":1555,"value":14247,"toc":14306},[14248,14253,14256,14283,14286,14296,14302],[14249,14250],"page-header-centered-text",{"description":14251,"headline":14252},"Go beyond basics with hands-on guides for browser automation.","Browser automation guides.",[14254,14255],"blog-filters",{},[14257,14258,14259,14268,14276],"three-col",{},[2127,14260,14261],{"v-slot:ColOne":1614},[14262,14263],"docs-image-card",{"link":14264,"shape":14265,"text":14266,"title":14267},"\u002Fguides\u002Fworkflow","pyramid","Step by step guides for common automation tasks.","Workflows",[2127,14269,14270],{"v-slot:ColTwo":1614},[14262,14271],{"link":14272,"shape":14273,"text":14274,"title":14275},"\u002Fguides\u002Fpattern","cube","Techniques you can reuse across different workflows.","Patterns",[2127,14277,14278],{"v-slot:ColThree":1614},[14262,14279],{"link":14280,"shape":14273,"text":14281,"title":14282},"\u002Fguides\u002Fusecase","Real world examples of complete automations.","Use cases",[14284,14285],"guide-index-list",{},[14287,14288,14291],"grid-fade-wrap",{"bg":14289,"color":14290},"gray-to-white","default",[14292,14293],"customer-quote",{"author":14294,"quote":14295},"Nathan Heidemann","Very useful tool, saved a ton of time.",[14297,14298],"chrome-reviews",{"className":14299},[14300,14301],"gray","iso-grid-gray-100",[14303,14304],"call-to-action",{"className":14305},[14300,14301],{"title":1614,"searchDepth":1615,"depth":1615,"links":14307},[],"Explore our collection of browser automation guides. Whether you're scraping data, filling out forms, or triggering automations with APIs, these step-by-step tutorials help no-coders and developers get started fast.",{},{"title":14245,"description":14308},"guides\u002Findex","HfRoBxOIausBy3YNY1npRNevRuZtFl6t2tu7XiFkL_0",{"id":14314,"title":14315,"body":14316,"date":2652,"description":14569,"extension":1621,"meta":14570,"navigation":1627,"order":1628,"path":14576,"seo":14577,"stem":14578,"__hash__":14579},"guides\u002Fguides\u002Finstagram-post.md","How to automate Instagram posts using Google Sheets",{"type":1555,"value":14317,"toc":14561},[14318,14320,14331,14333,14335,14342,14346,14354,14356,14358,14362,14505,14509,14516,14518,14522,14524,14528,14553],[1566,14319],{},[1640,14321,14322,14323,14326,14327,14330],{},"This ",[1653,14324,14325],{},"\"Instagram automation\""," template posts content from a Google Sheet to your Instagram without requiring an API. The bot retrieves data from the Sheet, opens Instagram in Chrome, click ",[1653,14328,14329],{},"\"create\""," and inputs the data into the Instagram post web form, your human actions. After clicking confirm the bot removes the processed row from the Sheet.",[1558,14332],{},[1561,14334,2463],{"id":2462},[1640,14336,1651,14337,2694,14339,1668],{},[1653,14338,1655],{},[1653,14340,14341],{},"\"Instagram posts\"",[1561,14343,14345],{"id":14344},"install-the-instagram-post-bot","Install the Instagram post bot",[1640,14347,14348,14349,1679,14351,1683],{},"To install this Insta data entry bot, click ",[1653,14350,1678],{},[1653,14352,14353],{},"\"\"Install Chrome extension\"\"",[1640,14355,2486],{},[1640,14357,1692],{},[1561,14359,14361],{"id":14360},"configure-your-instagram-post-bot-in-four-easy-steps","Configure your Instagram post bot in four easy steps",[1701,14363,14364],{},[1569,14365,14366,14383],{},[1572,14367,14368,1710,14370,14372],{},[1653,14369,1709],{},[1712,14371,1714],{},[1569,14373,14374,14378],{},[1572,14375,14376,1722],{},[1712,14377,1721],{},[1572,14379,14380,14382],{},[1712,14381,1727],{},": Choose the tab with the posts in it.",[1572,14384,14385,1710,14387,14389,14503,2593],{},[1653,14386,1733],{},[1712,14388,667],{},[1569,14390,14391,14398,14404,14417,14424,14430,14447,14453,14460,14478,14486],{},[1572,14392,14393,1710,14395,11855],{},[1653,14394,1742],{},[1712,14396,14397],{},"Go to page: www.instagram.com",[1572,14399,14400,1710,14402,11855],{},[1653,14401,1765],{},[1712,14403,349],{},[1572,14405,14406,1710,14408,14411,14412],{},[1653,14407,1790],{},[1712,14409,14410],{},"Click element: Not Now"," ^\n",[1569,14413,14414],{},[1572,14415,14416],{},"Closes pop-up that may appear.",[1572,14418,14419,1710,14421,11855],{},[1653,14420,1833],{},[1712,14422,14423],{},"Click element: Create",[1572,14425,14426,1710,14428,11855],{},[1653,14427,1861],{},[1712,14429,11520],{},[1572,14431,14432,1710,14434,14437],{},[1653,14433,1898],{},[1712,14435,14436],{},"Upload a file: Select from computer",[1569,14438,14439],{},[1572,14440,14441,1752,14443,1756,14445,1668],{},[1712,14442,2798],{},[1712,14444,1814],{},[1712,14446,1847],{},[1572,14448,14449,1710,14451,11855],{},[1653,14450,2812],{},[1712,14452,13593],{},[1572,14454,14455,1710,14458,11855],{},[1653,14456,14457],{},"2.8",[1712,14459,13593],{},[1572,14461,14462,1710,14465,14468],{},[1653,14463,14464],{},"2.9",[1712,14466,14467],{},"Enter text: Write a caption",[1569,14469,14470],{},[1572,14471,14472,1752,14474,1756,14476,1668],{},[1712,14473,2563],{},[1712,14475,1814],{},[1712,14477,1847],{},[1572,14479,14480,1710,14483,11855],{},[1653,14481,14482],{},"2.10",[1712,14484,14485],{},"Click element: Share",[1572,14487,14488,1710,14491,14493],{},[1653,14489,14490],{},"2.11",[1712,14492,1901],{},[1569,14494,14495,14499],{},[1572,14496,14497,1722],{},[1712,14498,1721],{},[1572,14500,14501,14382],{},[1712,14502,1727],{},[1963,14504],{},[1561,14506,14508],{"id":14507},"run-your-instagram-post-bot","Run your Instagram post bot",[1640,14510,14511,14512,2834,14514,2838],{},"To test the Instagram bot, you should first disable step 2.9 or delete the test post on Instagram. It's necessary to run the bot while being logged into Instagram, as this will allow the sharing of cookies and enable Axiom to open Instagram in a logged-in state. If you wish to schedule the bot ",[1942,14513,2603],{"href":638},[1942,14515,2837],{"href":1206},[1561,14517,1937],{"id":1936},[1640,14519,1940,14520,1946],{},[1942,14521,1945],{"href":1944},[1561,14523,1398],{"id":1949},[1640,14525,2618,14526,1668],{},[1942,14527,2603],{"href":638},[1701,14529,14530],{},[1569,14531,14532,14542],{},[1572,14533,14534,14536,14538,14539,1668],{},[1653,14535,9063],{},[1963,14537],{},"\nReselect the element in ",[1712,14540,14541],{},"Steps 2.3, 2.4, 2.5, 2.6, 2.7, 2.9 – Click element",[1572,14543,14544,14547,1965,14549,14552],{},[1653,14545,14546],{},"Image does not upload?",[1963,14548],{},[1712,14550,14551],{},"Step 2.6 – Upload a file: Select from computer",", check your folder permissions and the file size.",[1640,14554,2101,14555,2906,14557],{},[1942,14556,2104],{"href":82},[1942,14558,14560],{"href":14559},"\u002Fblog\u002Fautomate-instagram-post","posting to Instagram.",{"title":1614,"searchDepth":1615,"depth":1615,"links":14562},[14563,14564,14565,14566,14567,14568],{"id":2462,"depth":1618,"text":2463},{"id":14344,"depth":1618,"text":14345},{"id":14360,"depth":1618,"text":14361},{"id":14507,"depth":1618,"text":14508},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to automate posting to Instagram using a Google Sheet and axiom.ai’s No-code tool. This step-by-step guide shows how to create a bot that fills in Instagram’s post form in the browser, uploads an image, adds a caption, and clicks Share—no API required.",{"logoFile":14571,"read":14572,"video":14573,"type":2126,"format":2127,"intent_type":13083,"intent":2659,"tags":14574,"platfrom":14575,"templateId":6249},"\u002Ftemplates\u002Finstag-logo.png","8 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F92qIT5U_LWg",[13085,2925],[13087],"\u002Fguides\u002Finstagram-post",{"title":14315,"description":14569},"guides\u002Finstagram-post","Lb9LtZb3_BXc3pC_HFUfFjXQHWqKEbKEPFKmUhjagLE",{"id":14581,"title":14582,"body":14583,"date":2652,"description":14835,"extension":1621,"meta":14836,"navigation":1627,"order":1628,"path":14841,"seo":14842,"stem":14843,"__hash__":14844},"guides\u002Fguides\u002Finstagram-scrape-post-links.md","How to scrape Instagram search for post links",{"type":1555,"value":14584,"toc":14827},[14585,14587,14594,14596,14598,14606,14610,14615,14619,14621,14625,14750,14754,14759,14761,14766,14768,14772,14823],[1566,14586],{},[1640,14588,14589,14590,14593],{},"This template automates ",[1653,14591,14592],{},"\"Instagram search scraping\"",": it takes search terms from a Google Sheet, appends them to Instagram's search URL, loads the search pages in Chrome, scrapes post links, saves them to a Sheet, deletes processed rows, and repeats with new search terms.",[1558,14595],{},[1561,14597,2463],{"id":2462},[1640,14599,1651,14600,2694,14602,14605],{},[1653,14601,1655],{},[1653,14603,14604],{},"\"Instagram search scraper\"",". Set up two tabs in Google Sheets: one for search terms and another for scraped data.",[1561,14607,14609],{"id":14608},"install-the-instagram-search-scraper-bot","Install the Instagram search scraper bot",[1640,14611,14612,14613,1683],{},"To install this Instagram search scraper entry bot click **\"Install template'. If you’re a new user, you’ll have to click ",[1653,14614,1682],{},[1640,14616,1686,14617,1668],{},[1653,14618,1689],{},[1640,14620,1692],{},[1561,14622,14624],{"id":14623},"configure-your-instagram-search-scraper-in-five-easy-steps","Configure your Instagram search scraper in five easy steps",[1701,14626,14627],{},[1569,14628,14629,14645],{},[1572,14630,14631,1710,14633,14635],{},[1653,14632,1709],{},[1712,14634,1714],{},[1569,14636,14637,14641],{},[1572,14638,14639,1722],{},[1712,14640,1721],{},[1572,14642,14643,14382],{},[1712,14644,1727],{},[1572,14646,14647,1710,14649,14651],{},[1653,14648,1733],{},[1712,14650,667],{},[1569,14652,14653,14675,14693,14718,14734],{},[1572,14654,14655,1710,14657,14659],{},[1653,14656,1742],{},[1712,14658,1043],{},[1569,14660,14661],{},[1572,14662,14663,1752,14665,1756,14667,14669,14670,14672],{},[1712,14664,1751],{},[1712,14666,1814],{},[1712,14668,1847],{},", and append to the end of the URL:",[1963,14671],{},[1712,14673,14674],{},"https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=",[1572,14676,14677,1710,14679,14681],{},[1653,14678,1765],{},[1712,14680,1768],{},[1569,14682,14683],{},[1572,14684,14685,14686,8561,14688,14690],{},"Preconfigured with ",[1942,14687,1999],{"href":1383},[1963,14689],{},[1712,14691,14692],{},"main a[role=\"link\"]",[1572,14694,14695,1710,14697,14699],{},[1653,14696,1790],{},[1712,14698,1836],{},[1569,14700,14701,14710],{},[1572,14702,14703,1752,14705,14707,14708],{},[1712,14704,1843],{},[1712,14706,1814],{},", select post URL in ",[1712,14709,7867],{},[1572,14711,14712,1752,14714,1756,14716],{},[1712,14713,1853],{},[1712,14715,1814],{},[1712,14717,1818],{},[1572,14719,14720,1710,14722,14724],{},[1653,14721,1833],{},[1712,14723,4900],{},[1569,14725,14726,14730],{},[1572,14727,14728,1722],{},[1712,14729,1721],{},[1572,14731,14732,14382],{},[1712,14733,1727],{},[1572,14735,14736,1710,14738,14740],{},[1653,14737,1861],{},[1712,14739,1901],{},[1569,14741,14742,14746],{},[1572,14743,14744,1722],{},[1712,14745,1721],{},[1572,14747,14748,14382],{},[1712,14749,1727],{},[1561,14751,14753],{"id":14752},"run-your-instagram-search-scraper","Run your Instagram search scraper",[1640,14755,14756,14757,1668],{},"To test this Instagram scraper, initiate the bot with the desktop runner and let it run a few loops. Then, stop the bot and review the data in the linked Google Sheet for accuracy and completeness. If you wish to schedule the bot ",[1942,14758,2603],{"href":638},[1561,14760,1937],{"id":1936},[1640,14762,1940,14763,1946],{},[1942,14764,1945],{"href":14765},"recipes",[1561,14767,1398],{"id":1949},[1640,14769,2618,14770,1668],{},[1942,14771,2603],{"href":638},[1701,14773,14774],{},[1569,14775,14776,14792,14809],{},[1572,14777,14778,14781,1965,14783,14786,14787,14789],{},[1653,14779,14780],{},"Page not loading?",[1963,14782],{},[1712,14784,14785],{},"Step 2.1 – Go to page",", check if the token is inserted. The URL should look like:",[1963,14788],{},[1712,14790,14791],{},"https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=[google-sheet-data]",[1572,14793,14794,14797,1965,14799,14801,14802,14804,14805,14807],{},[1653,14795,14796],{},"No data?",[1963,14798],{},[1712,14800,1987],{},", check the ",[1942,14803,1999],{"href":1383}," works:",[1963,14806],{},[1712,14808,14692],{},[1572,14810,14811,14814,1965,14816,14819,14820,14822],{},[1653,14812,14813],{},"No data being written?",[1963,14815],{},[1712,14817,14818],{},"Step 2.4 – Write data to a Google Sheet",", ensure ",[1712,14821,1884],{}," is selected under \"Data\".",[1640,14824,2101,14825],{},[1942,14826,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":14828},[14829,14830,14831,14832,14833,14834],{"id":2462,"depth":1618,"text":2463},{"id":14608,"depth":1618,"text":14609},{"id":14623,"depth":1618,"text":14624},{"id":14752,"depth":1618,"text":14753},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide shows how to automate scraping post links from Instagram search pages using Google Sheets and axiom.ai. It loops through search terms, loads results in Chrome, scrapes post links with a custom selector, writes them to a Sheet, and removes processed rows—no API required.",{"logoFile":14571,"read":14572,"video":14837,"templateId":6370,"type":2126,"format":2127,"intent_type":13083,"intent":5613,"tags":14838,"platfrom":14840},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FHkhXv-wUvKE",[13085,14839,2132],"posts",[13087],"\u002Fguides\u002Finstagram-scrape-post-links",{"title":14582,"description":14835},"guides\u002Finstagram-scrape-post-links","_sweMlt46VfRn-OGfgBVsxRDImdaLBUdpB11JHixe0Y",{"id":14846,"title":14847,"body":14848,"date":2652,"description":15083,"extension":1621,"meta":15084,"navigation":1627,"order":1628,"path":15090,"seo":15091,"stem":15092,"__hash__":15093},"guides\u002Fguides\u002Finstagram-scrape-users-from-hashtag.md","How to scrape Instagram hashtag pages for handles and post links",{"type":1555,"value":14849,"toc":15075},[14850,14852,14859,14861,14863,14869,14873,14880,14884,14886,14890,14974,14978,14991,14993,14997,14999,15003,15071],[1566,14851],{},[1640,14853,14854,14855,14858],{},"This template scrapes ",[1653,14856,14857],{},"\"Instagram hashtag pages using a bot\"",". The bot opens a hashtag page in Chrome, collects links to all posts, and then extracts each user's handle and profile link. It records the post URLs, handles, and profile URLs into a Google Sheet",[1558,14860],{},[1561,14862,2463],{"id":2462},[1640,14864,14865,14866,1668],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut **\"sheet.new', assuming you already have an account. Name your sheet something like ",[1653,14867,14868],{},"\"Instagram hashtag data\"",[1561,14870,14872],{"id":14871},"install-the-instagram-hashtag-bot","Install the Instagram hashtag bot",[1640,14874,14875,14876,1679,14878,1683],{},"To install this Instagram handle scraper entry bot click ",[1653,14877,1678],{},[1653,14879,1682],{},[1640,14881,1686,14882,1668],{},[1653,14883,1689],{},[1640,14885,1692],{},[1561,14887,14889],{"id":14888},"configure-your-instagram-hashtag-bot-in-two-easy-steps","Configure your Instagram hashtag bot in two easy steps",[1701,14891,14892,14972],{},[1569,14893,14894,14917],{},[1572,14895,14896,1710,14898,14901],{},[1653,14897,1709],{},[1712,14899,14900],{},"Get a list of links to pages from a URL",[1569,14902,14903,14911],{},[1572,14904,14905,14907,14908],{},[1712,14906,5513],{},": Insert an Instagram hashtag URL, e.g. ",[1712,14909,14910],{},"instagram.com\u002Fexplore\u002Ftags\u002Fbeach\u002F",[1572,14912,14913,14916],{},[1712,14914,14915],{},"Max results",": Set the number of posts to scrape",[1572,14918,14919,1710,14921,14923],{},[1653,14920,1733],{},[1712,14922,667],{},[1569,14924,14925,14931,14955],{},[1572,14926,14927,1710,14929,11855],{},[1653,14928,1742],{},[1712,14930,1043],{},[1572,14932,14933,1710,14935,14937],{},[1653,14934,1765],{},[1712,14936,667],{},[1569,14938,14939,14947],{},[1572,14940,14941,1710,14944,11855],{},[1653,14942,14943],{},"2.2.1",[1712,14945,14946],{},"Current URL",[1572,14948,14949,1710,14952,11855],{},[1653,14950,14951],{},"2.2.2",[1712,14953,14954],{},"Get a list of links to pages from bot's current page",[1572,14956,14957,1710,14959,14961],{},[1653,14958,1861],{},[1712,14960,4900],{},[1569,14962,14963,14967],{},[1572,14964,14965,2734],{},[1712,14966,1721],{},[1572,14968,14969,14971],{},[1712,14970,1727],{},": Set the sheet name",[1640,14973,2593],{},[1561,14975,14977],{"id":14976},"run-your-instagram-hashtag-bot","Run your Instagram hashtag bot",[1640,14979,14980,14981,14984,14985,14988,14989,1668],{},"To test the Instagram hashtag bot in ",[1653,14982,14983],{},"\"Step 1\""," adjust the ",[1653,14986,14987],{},"\"max results\""," to a low number, initiate the bot with the desktop runner and let it run a few loops. Then, stop the bot and review the data in the linked Google Sheet. If you wish to schedule the bot ",[1942,14990,2603],{"href":638},[1561,14992,1937],{"id":1936},[1640,14994,1940,14995,1946],{},[1942,14996,1945],{"href":1944},[1561,14998,1398],{"id":1949},[1640,15000,2618,15001,1668],{},[1942,15002,2603],{"href":638},[1701,15004,15005],{},[1569,15006,15007,15018,15029,15043,15057],{},[1572,15008,15009,15012,15014,15015,1668],{},[1653,15010,15011],{},"Not loading Instagram?",[1963,15013],{},"\nMake sure you have added an Instagram hashtag URL in ",[1712,15016,15017],{},"Step 1.0 – Get a list of links to pages from a URL",[1572,15019,15020,15023,15025,15026,15028],{},[1653,15021,15022],{},"Not scraping all posts?",[1963,15024],{},"\nIn the same step, check the ",[1712,15027,14915],{}," setting.",[1572,15030,15031,15034,1965,15036,3089,15038,2084,15040,1668],{},[1653,15032,15033],{},"Not looping through scraped links?",[1963,15035],{},[1712,15037,14785],{},[1712,15039,2083],{},[1712,15041,15042],{},"[scraped-link-data]",[1572,15044,15045,15048,1965,15050,15053,15054,15056],{},[1653,15046,15047],{},"Selectors not working?",[1963,15049],{},[1712,15051,15052],{},"Step 2.2.2 – Get a list of links to pages from bot's current page",", try reselecting or use ",[1942,15055,9069],{"href":1383}," if needed.",[1572,15058,15059,15061,1965,15063,14819,15066,2084,15068,1668],{},[1653,15060,2077],{},[1963,15062],{},[1712,15064,15065],{},"Step 2.5 – Write data to a Google Sheet",[1712,15067,2083],{},[1712,15069,15070],{},"[all-interaction-data_1]",[1640,15072,2101,15073],{},[1942,15074,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":15076},[15077,15078,15079,15080,15081,15082],{"id":2462,"depth":1618,"text":2463},{"id":14871,"depth":1618,"text":14872},{"id":14888,"depth":1618,"text":14889},{"id":14976,"depth":1618,"text":14977},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"This guide explains how to scrape Instagram hashtag pages using axiom.ai. Learn how to collect post links, extract handles and profile URLs, and write the data to a Google Sheet—no API needed, all done in Chrome using a point-and-click bot.",{"logoFile":14571,"read":14572,"video":15085,"templateId":6289,"type":2126,"format":2127,"intent_type":13083,"intent":5613,"tags":15086,"platfrom":15089},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FhNeBSKoEaGo",[13085,15087,15088,2132],"users","hashtags",[13087],"\u002Fguides\u002Finstagram-scrape-users-from-hashtag",{"title":14847,"description":15083},"guides\u002Finstagram-scrape-users-from-hashtag","eRDON-ATQSu5ah1b3SZ78L5IdCy_T8ZVHm6QCsmAi0M",{"id":15095,"title":15096,"body":15097,"date":15288,"description":15103,"extension":1621,"meta":15289,"navigation":1627,"order":1628,"path":15294,"seo":15295,"stem":15296,"__hash__":15297},"guides\u002Fguides\u002Finteracting-with-button-list.md","How to loop through a list of buttons",{"type":1555,"value":15098,"toc":15279},[15099,15101,15104,15107,15111,15113,15121,15124,15128,15130,15137,15141,15151,15176,15180,15190,15213,15217,15219,15222,15244,15248,15250,15261,15268],[1566,15100],{},[1640,15102,15103],{},"Learn how to loop through buttons on the same web page using custom CSS selectors.",[1640,15105,15106],{},"This is best used if you have a list that contains buttons, such as downloading invoices from a list.",[1561,15108,15110],{"id":15109},"finding-the-right-selector","Finding the right selector",[1566,15112],{},[1640,15114,15115,15116,15120],{},"Finding the right selector is important to get started. Start by using our blog ",[1942,15117,15119],{"href":15118},"..\u002Fblog\u002Fbest-custom-css-selectors-for-web-scraping","The Best Custom CSS Selectors to Use for Automations"," to identify a suitable selector for the button.",[1640,15122,15123],{},"Once you have a selector selected, you’ll need to add them into a Google Sheet.",[1561,15125,15127],{"id":15126},"building-the-selectors","Building the selectors",[1566,15129],{},[1640,15131,15132,15133,15136],{},"For this example, we are going to use the following button selector, this is the same selector for all buttons within the list: ",[1712,15134,15135],{},"button.download",". When querying this selector this will return a list of elements that match this CSS selector.",[2249,15138,15140],{"id":15139},"method-1-nth-child","Method 1: nth-child()",[1640,15142,6656,15143,15146,15147,15150],{},[1712,15144,15145],{},"nth-child()"," method exists within CSS to allow you to select an element based on it’s position within the list of elements matching that selector. For example, ",[1712,15148,15149],{},"button.download:nth-child(1)"," will select the element at position 1. Your list would look something like this:",[8666,15152,15153,15160],{},[8669,15154,15155],{},[8672,15156,15157],{},[8675,15158,15159],{},"Selector",[8682,15161,15162,15167,15171],{},[8672,15163,15164],{},[8687,15165,15166],{},"button.download:nth-child(0)",[8672,15168,15169],{},[8687,15170,15149],{},[8672,15172,15173],{},[8687,15174,15175],{},"etc...",[2249,15177,15179],{"id":15178},"method-2-unique-selectors","Method 2: unique selectors",[1640,15181,15182,15183,3610,15186,15189],{},"Some buttons will have similar but unique selectors, for example, ",[1712,15184,15185],{},"button.download-1",[1712,15187,15188],{},"button.download–2"," and so on. This is the easiest method of identifying the elements on the page. Your list would look something like this:",[8666,15191,15192,15198],{},[8669,15193,15194],{},[8672,15195,15196],{},[8675,15197,15159],{},[8682,15199,15200,15204,15209],{},[8672,15201,15202],{},[8687,15203,15185],{},[8672,15205,15206],{},[8687,15207,15208],{},"button.download-2",[8672,15210,15211],{},[8687,15212,15175],{},[1561,15214,15216],{"id":15215},"set-up-your-google-sheet-or-excel-sheet","Set up your Google Sheet or Excel Sheet",[1566,15218],{},[1640,15220,15221],{},"The selectors will need to be entered into a Google Sheet\u002FExcel Sheet manually - this will allow the selectors to be read into your automation and then be looped through. To do this, add the selectors to a single row within within your sheet, for example:",[8666,15223,15224,15230],{},[8669,15225,15226],{},[8672,15227,15228],{},[8675,15229,15159],{},[8682,15231,15232,15236,15240],{},[8672,15233,15234],{},[8687,15235,15166],{},[8672,15237,15238],{},[8687,15239,15149],{},[8672,15241,15242],{},[8687,15243,15175],{},[1561,15245,15247],{"id":15246},"set-up-your-automation","Set up your automation",[1566,15249],{},[1640,15251,15252,15253,4888,15256,15260],{},"Insert a ",[1942,15254,1714],{"href":15255},"..\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-a-google-sheet-step",[1942,15257,15259],{"href":15258},"..\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-excel","Read data from Excel"," step into your automation and follow the instructions to set this to read the data from the sheet you set up above.",[1640,15262,15263,15264,15267],{},"Next, insert a ",[1942,15265,667],{"href":15266},"..\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop"," step and set the data that you read into the automation using the read step above as the data to loop through. Any steps included in this step will have access to each row of data as it iterates through the data from your spreadsheet.",[1640,15269,15270,15271,15274,15275,13800],{},"Once you are ready to click the button, add a ",[1942,15272,5230],{"href":15273},"..\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-element"," step. Click \"Select\", then “Custom” and then “Set selector from data” - select the data from the loop that includes your selector. Learn more in our ",[1942,15276,15278],{"href":15277},"..\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors","Custom selector",{"title":1614,"searchDepth":1615,"depth":1615,"links":15280},[15281,15282,15286,15287],{"id":15109,"depth":1618,"text":15110},{"id":15126,"depth":1618,"text":15127,"children":15283},[15284,15285],{"id":15139,"depth":1615,"text":15140},{"id":15178,"depth":1615,"text":15179},{"id":15215,"depth":1618,"text":15216},{"id":15246,"depth":1618,"text":15247},"2025-08-28",{"pinned":1627,"read":2655,"level":2123,"templateId":1618,"type":2126,"format":1701,"intent_type":2128,"intent":2659,"tags":15290,"platfrom":15293},[8862,15291,15292],"click","multi click",[3363],"\u002Fguides\u002Finteracting-with-button-list",{"title":15096,"description":15103},"guides\u002Finteracting-with-button-list","TTpB56u80zcEVwpSWyrYwTBAnv14ThaFSDfEFuzF4ek",{"id":15299,"title":15300,"body":15301,"date":1628,"description":15784,"extension":1621,"meta":15785,"navigation":1627,"order":1628,"path":15792,"seo":15793,"stem":15794,"__hash__":15795},"guides\u002Fguides\u002Fjira-ticket-triage.md","How to automate Jira ticket triage with AI (Updated 2026)",{"type":1555,"value":15302,"toc":15776},[15303,15305,15308,15311,15314,15321,15325,15327,15339,15342,15346,15348,15360,15363,15374,15377,15381,15383,15400,15403,15407,15409,15412,15739,15743,15747,15749,15752,15755,15769,15771,15773],[1566,15304],{},[1640,15306,15307],{},"At axiom.ai, as support volume grew, opening and reviewing each ticket just to check whether it belonged in our queue quickly became a bottleneck. From time to time, we’d also see requests from customers trying to reach a completely different company — tickets that were never meant for us at all.",[1640,15309,15310],{},"To keep our time focused on helping customers, rather than sorting, filtering, and closing irrelevant tickets, we built this automation. In this guide, we’ll show how it works and how you can apply the same approach to your own support workflow.",[1640,15312,15313],{},"This guide walks through a straightforward Axiom automation that reviews Jira tickets, classifies them, and performs actions depending on the category.",[1640,15315,15316,15317,15320],{},"As an example, we’ll keep the classification simple: ",[1653,15318,15319],{},"spam vs. everything else",". You can extend the same pattern to classify by any other criteria which works for your team.",[1561,15322,15324],{"id":15323},"install-axiom-in-your-chrome-browser","Install Axiom in your Chrome browser",[1566,15326],{},[1640,15328,15329,15330,15332,1668],{},"If you haven’t already installed Axiom or created an account, go to the Chrome Web Store and",[1963,15331],{},[1653,15333,15334],{},[1942,15335,15338],{"href":15336,"rel":15337},"https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb?hl=en-GB",[3850],"install Axiom",[1640,15340,15341],{},"New accounts include 2 hours of free runtime, which is enough to build and test this automation a few times.",[1561,15343,15345],{"id":15344},"set-up-your-google-sheet","Set up your Google Sheet",[1566,15347],{},[1640,15349,15350,15351,15354,15355,2068,15357,1668],{},"Create a new Google Sheet and name it ",[1653,15352,15353],{},"Triage"," and add two sheets within it ",[2417,15356,15353],{},[2417,15358,15359],{},"Closed",[1640,15361,15362],{},"This sheet will be used to:",[1569,15364,15365,15368,15371],{},[1572,15366,15367],{},"temporarily store Jira ticket links",[1572,15369,15370],{},"log classification results",[1572,15372,15373],{},"keep a record of which tickets were processed",[1640,15375,15376],{},"You don’t need to add any data manually as Axiom will populate the sheet during the run.",[1561,15378,15380],{"id":15379},"open-jira-and-create-a-new-automation","Open Jira and create a new automation",[1566,15382],{},[1701,15384,15385],{},[2165,15386,15387,15390,15393],{},[1572,15388,15389],{},"Open Chrome and log in to your Jira support portal (the page that lists incoming tickets).",[1572,15391,15392],{},"Open Axiom.",[1572,15394,15395,15396,15399],{},"Click ",[1653,15397,15398],{},"+ New Automation"," to start building from scratch.",[1640,15401,15402],{},"You’ll now begin adding steps using the Step Finder.",[1561,15404,15406],{"id":15405},"lets-build-the-jira-ticket-triage-automation","Let’s build the Jira ticket triage automation",[1566,15408],{},[1640,15410,15411],{},"This section walks through how to build the automation step by step in Axiom. Follow along below to understand exactly how each step works and how the pieces fit together.",[1701,15413,15414],{},[1569,15415,15416,15437,15450,15473,15498,15518,15544],{},[1572,15417,15418,1710,15420,15423],{},[1653,15419,1968],{},[1712,15421,15422],{},"Clear data from a Google Sheet",[1569,15424,15425,15432],{},[1572,15426,15427,15429,15430,11040],{},[1653,15428,1721],{}," — Select the ",[1712,15431,15353],{},[1572,15433,15434,15436],{},[1653,15435,12505],{}," — Clears old results to ensure each run starts fresh.",[1572,15438,15439,1710,15441,15443],{},[1653,15440,2518],{},[1712,15442,9125],{},[1569,15444,15445],{},[1572,15446,15447,15449],{},[1653,15448,12505],{}," — Creates a timestamp to log when each run occurred.",[1572,15451,15452,1710,15454,15456],{},[1653,15453,10589],{},[1712,15455,14900],{},[1569,15457,15458,15463,15468],{},[1572,15459,15460,15462],{},[1653,15461,5513],{}," — Set to your internal Jira support portal page.",[1572,15464,15465,15467],{},[1653,15466,1775],{}," — Point and click the column with ticket\u002Fwork numbers.",[1572,15469,15470,15472],{},[1653,15471,12505],{}," — Scrapes individual ticket links for triage.",[1572,15474,15475,1710,15478,15480],{},[1653,15476,15477],{},"Step 4.0",[1712,15479,4900],{},[1569,15481,15482,15488,15493],{},[1572,15483,15484,15429,15486,11040],{},[1653,15485,1721],{},[1712,15487,15353],{},[1572,15489,15490,15492],{},[1653,15491,1880],{}," — Output from step 3.0.",[1572,15494,15495,15497],{},[1653,15496,12505],{}," — Stores ticket links for staging and review.",[1572,15499,15500,1710,15503,15505],{},[1653,15501,15502],{},"Step 5.0",[1712,15504,1714],{},[1569,15506,15507,15513],{},[1572,15508,15509,15429,15511,11040],{},[1653,15510,1721],{},[1712,15512,15353],{},[1572,15514,15515,15517],{},[1653,15516,12505],{}," — Loads ticket links back into the bot to loop through.",[1572,15519,15520,1710,15523,15526],{},[1653,15521,15522],{},"Step 6.0",[1712,15524,15525],{},"Remove results that contain certain words",[1569,15527,15528,15533,15539],{},[1572,15529,15530,15532],{},[1653,15531,2083],{}," — Select the output from step 5.0.",[1572,15534,15535,15538],{},[1653,15536,15537],{},"Words to match"," — Add terms to exclude non-ticket URLs.",[1572,15540,15541,15543],{},[1653,15542,12505],{}," — Filters out irrelevant links.",[1572,15545,15546,1710,15549,15551,15564],{},[1653,15547,15548],{},"Step 7.0",[1712,15550,667],{},[1569,15552,15553,15558],{},[1572,15554,15555,15557],{},[1653,15556,2083],{}," — Select the output from step 6.0.",[1572,15559,15560,15563],{},[1653,15561,15562],{},"Loop through all"," — Enable this to process every ticket.",[1569,15565,15566,15585,15605,15636],{},[1572,15567,15568,1710,15571,15573],{},[1653,15569,15570],{},"Step 7.1",[1712,15572,1043],{},[1569,15574,15575,15580],{},[1572,15576,15577,15579],{},[1653,15578,1751],{}," — Insert ticket link from loop data.",[1572,15581,15582,15584],{},[1653,15583,12505],{}," — Opens each Jira ticket one by one.",[1572,15586,15587,1710,15590,15593],{},[1653,15588,15589],{},"Step 7.2",[1712,15591,15592],{},"Get data from bot’s current page",[1569,15594,15595,15600],{},[1572,15596,15597,15599],{},[1653,15598,1775],{}," — Point and click content like description or request.",[1572,15601,15602,15604],{},[1653,15603,12505],{}," — Extracts the content to classify.",[1572,15606,15607,1710,15610,15612],{},[1653,15608,15609],{},"Step 7.3",[1712,15611,1793],{},[1569,15613,15614,15620,15631],{},[1572,15615,15616,15619],{},[1653,15617,15618],{},"Input"," — Use scraped content from step 7.2.",[1572,15621,15622,15624,15625,4888,15628,1668],{},[1653,15623,1806],{}," — Classify as simple output like ",[1712,15626,15627],{},"SPAM",[1712,15629,15630],{},"VALID",[1572,15632,15633,15635],{},[1653,15634,12505],{}," — Generates a tag or label for each ticket.",[1572,15637,15638,1710,15641,15644,15669],{},[1653,15639,15640],{},"Step 7.4",[1712,15642,15643],{},"If condition",[1569,15645,15646,15654,15664],{},[1572,15647,15648,15650,15651],{},[1653,15649,7860],{}," — ",[1712,15652,15653],{},"chatgpt-output",[1572,15655,15656,15659,15660,15663],{},[1653,15657,15658],{},"Condition"," — When any of ",[1712,15661,15662],{},"\"SPAM\""," is present",[1572,15665,15666,15668],{},[1653,15667,12505],{}," — Filters specific tickets for further action.",[1569,15670,15671,15695,15712],{},[1572,15672,15673,1710,15676,15678],{},[1653,15674,15675],{},"Step 7.4.1",[1712,15677,12392],{},[1569,15679,15680,15685,15690],{},[1572,15681,15682,15684],{},[1653,15683,1843],{}," — Ticket URL",[1572,15686,15687,15689],{},[1653,15688,1853],{}," — Classification result, timestamp",[1572,15691,15692,15694],{},[1653,15693,12505],{}," — Combines key info for writing.",[1572,15696,15697,1710,15700,1710,15702,15705],{},[1653,15698,15699],{},"Step 7.4.2",[1712,15701,12392],{},[2417,15703,15704],{},"(optional)",[1569,15706,15707],{},[1572,15708,15709,15711],{},[1653,15710,12505],{}," — Combine extra fields or restructure output if needed.",[1572,15713,15714,1710,15717,15719],{},[1653,15715,15716],{},"Step 7.4.3",[1712,15718,4900],{},[1569,15720,15721,15727,15732],{},[1572,15722,15723,15429,15725,11040],{},[1653,15724,1721],{},[1712,15726,15359],{},[1572,15728,15729,15731],{},[1653,15730,1880],{}," — Combined output.",[1572,15733,15734,15736,15737,1668],{},[1653,15735,12505],{}," — Logs all tickets classified as ",[1712,15738,15662],{},[2202,15740],{"src":15741,"alt":15742},"\u002Fguides\u002Ftriage_bot.png","Jira triage axiom.ai bot",[1561,15744,15746],{"id":15745},"testing-the-automation","Testing the automation",[1566,15748],{},[1640,15750,15751],{},"Before running the automation at scale, it’s a good idea to test it with a small number of tickets.",[1640,15753,15754],{},"Run the automation and confirm that:",[1569,15756,15757,15760,15763,15766],{},[1572,15758,15759],{},"Tickets are opened correctly",[1572,15761,15762],{},"Content is extracted as expected",[1572,15764,15765],{},"ChatGPT returns the intended labels",[1572,15767,15768],{},"Results are written back to the sheet",[1561,15770,2406],{"id":2405},[1566,15772],{},[1640,15774,15775],{},"This automation provides a clear and maintainable way to triage Jira tickets automatically. While the example focuses on identifying spam-related tickets, the same structure can be extended to handle more detailed classifications, prioritisation, or routing logic as your needs evolve.",{"title":1614,"searchDepth":1615,"depth":1615,"links":15777},[15778,15779,15780,15781,15782,15783],{"id":15323,"depth":1618,"text":15324},{"id":15344,"depth":1618,"text":15345},{"id":15379,"depth":1618,"text":15380},{"id":15405,"depth":1618,"text":15406},{"id":15745,"depth":1618,"text":15746},{"id":2405,"depth":1618,"text":2406},"Learn how to automate Jira ticket triage with AI by classifying and processing support tickets automatically using a simple no code browser automation.",{"pinned":1627,"type":2126,"format":1701,"intent_type":13083,"intent":15786,"tags":15787,"platfrom":15790},"Classify or filter data",[2131,15788,15789,2132,2664,2665],"classification","tickets",[15791],"Jira","\u002Fguides\u002Fjira-ticket-triage",{"title":15300,"description":15784},"guides\u002Fjira-ticket-triage","MBeU-mNj1xNknlCgg1uggvsBFhjxc-zcFV5_v6ByUbk",{"id":15797,"title":15798,"body":15799,"date":1628,"description":15932,"extension":1621,"meta":15933,"navigation":1627,"order":1628,"path":12327,"seo":15940,"stem":15941,"__hash__":15942},"guides\u002Fguides\u002Fkeyboard-short-cuts.md","How to use keystrokes as workarounds",{"type":1555,"value":15800,"toc":15926},[15801,15803,15806,15812,15816,15820,15826,15830,15834,15914,15918,15921,15923],[1566,15802],{},[1640,15804,15805],{},"When automating a browser, you may need to use workarounds for issues like being unable to select an element. One category of these workarounds includes keyboard shortcuts or hotkeys. These provide alternative methods for actions typically performed with a mouse, such as cutting, copying, and pasting, commonly executed via keyboard.",[1640,15807,15808,15809,15811],{},"To utilize the power of keyboard shortcuts, you can use the ",[1653,15810,12252],{}," step to record and reuse combinations of hotkeys.",[2202,15813],{"src":15814,"alt":15815},"\u002Fdocs\u002Fguides\u002Fpress-key-guide.jpg","adding a Press key(s) step in axiom.ai builder",[1561,15817,15819],{"id":15818},"how-to-record-keyboard-shortcuts-with-the-keypress-step","How to record keyboard shortcuts with the keypress step",[1640,15821,15822,15823,15825],{},"In the axiom.ai builder, open your automation and navigate to the point where you wish to add a new step. Then, open the step finder, search for, and add the ",[1653,15824,12252],{}," step. Inside the step, Click record, then press the keys you want the bot to press. You can record a sequence of keys. The bot will enter these one by one, except for Ctrl, Alt, or Shift, which will be held down until the end of the sequence.",[2202,15827],{"src":15828,"alt":15829},"\u002Fdocs\u002Fguides\u002Fpress-keys-step.jpg","recording key presses in axiom.ai's builder",[1561,15831,15833],{"id":15832},"examples-of-keyboard-workarounds","Examples of keyboard workarounds",[8666,15835,15836,15845],{},[8669,15837,15838],{},[8672,15839,15840,15843],{},[8675,15841,15842],{},"Keyboard shortcut \u002F hotkey",[8675,15844,8300],{},[8682,15846,15847,15855,15863,15870,15877,15884,15891,15898,15906],{},[8672,15848,15849,15852],{},[8687,15850,15851],{},"Up\u002Fdown arrows",[8687,15853,15854],{},"Scroll a page or a box with scrollbars",[8672,15856,15857,15860],{},[8687,15858,15859],{},"Left\u002Fright arrows",[8687,15861,15862],{},"Move the cursor left or right in an input field",[8672,15864,15865,15867],{},[8687,15866,6946],{},[8687,15868,15869],{},"Tab to move cursor on the page",[8672,15871,15872,15874],{},[8687,15873,6946],{},[8687,15875,15876],{},"Tab between fields in a form",[8672,15878,15879,15881],{},[8687,15880,6946],{},[8687,15882,15883],{},"In pop up windows tab to select elements",[8672,15885,15886,15888],{},[8687,15887,9616],{},[8687,15889,15890],{},"Submit message in a chat interface",[8672,15892,15893,15895],{},[8687,15894,9616],{},[8687,15896,15897],{},"Press a button",[8672,15899,15900,15903],{},[8687,15901,15902],{},"CV+P",[8687,15904,15905],{},"Copy and paste just like a human",[8672,15907,15908,15911],{},[8687,15909,15910],{},"Delete",[8687,15912,15913],{},"Delete values in a text field",[1561,15915,15917],{"id":15916},"ensuring-the-cursor-is-correctly-placed","Ensuring the cursor is correctly placed",[1640,15919,15920],{},"Sometimes, you must position the mouse cursor so the shortcut works effectively. For instance, to scroll within a box with up\u002Fdown arrows, you would use a \"Click element\" step to activate it. Similarly, for an input field, you must ensure the cursor is inside the field by using a \"Click element\" step.",[1561,15922,2406],{"id":2405},[1640,15924,15925],{},"Recording keyboard shortcuts is a valuable workaround in browser automation, helping bypass issues. Correct cursor placement is crucial to ensure correct execution of the recorded shortcuts.",{"title":1614,"searchDepth":1615,"depth":1615,"links":15927},[15928,15929,15930,15931],{"id":15818,"depth":1618,"text":15819},{"id":15832,"depth":1618,"text":15833},{"id":15916,"depth":1618,"text":15917},{"id":2405,"depth":1618,"text":2406},"Learn how to use keyboard shortcuts as workarounds when browser automation gets stuck. This guide shows how to record keystrokes with the “Press key(s)” step and explains where and when to use them to mimic human interaction in tricky scenarios.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2659,"tags":15934,"platfrom":15939},[8862,15935,2344,15936,15937,15938],"keyboard","workaround","interaction","navigation",[3363],{"title":15798,"description":15932},"guides\u002Fkeyboard-short-cuts","8rNWhOiTy3YrVXsDEMADZckn91IjZ-pwaOWkHtqkKtQ",{"id":15944,"title":15945,"body":15946,"date":1628,"description":16109,"extension":1621,"meta":16110,"navigation":1627,"order":1628,"path":16113,"seo":16114,"stem":16115,"__hash__":16116},"guides\u002Fguides\u002Flangflow.md","How to automate Langflow using an axiom.ai automation",{"type":1555,"value":15947,"toc":16103},[15948,15950,15958,15960,15962,15965,15968,15989,15993,15995,15998,16001,16060,16063,16082,16084,16086,16089,16094,16096,16098,16101],[1566,15949],{},[1640,15951,15952,15957],{},[1942,15953,15956],{"href":15954,"rel":15955},"https:\u002F\u002Flangflow.org",[3850],"Langflow"," is a powerful tool that can be used to bring agents into your workflows. Triggering your workflows using your axiom.ai automations gives you the opportunity to pass additional data in to use within your workflow - such as scrape data or data from Google Sheets.",[1561,15959,2156],{"id":2155},[1566,15961],{},[1640,15963,15964],{},"To get started, we will assume that you have an axiom.ai account, and a Langflow account.",[1640,15966,15967],{},"From axiom.ai, you'll need the following information",[1701,15969,15970],{},[2165,15971,15972,15978,15983],{},[1572,15973,15974,2172,15976,1668],{},[1653,15975,2171],{},[1942,15977,2176],{"href":2175},[1572,15979,15980,15982],{},[1653,15981,2181],{},": The name of the automation to trigger.",[1572,15984,15985,2188,15987,1668],{},[1653,15986,2187],{},[1712,15988,2191],{},[1561,15990,15992],{"id":15991},"triggering-an-axiomai-automation-using-langflow","Triggering an axiom.ai automation using Langflow",[1566,15994],{},[1640,15996,15997],{},"In order to trigger your axiom.ai automation from your workflow, complete your workflow as usual, when you're ready to trigger your automation, continue this guide.",[1640,15999,16000],{},"Within your workflow, search for and add an \"API Request\" component to your workflow. You'll need to configure it as such:",[1701,16002,16003,16027,16050],{},[1569,16004,16005,16014,16021],{},[1572,16006,16007,16010,16011,16013],{},[1653,16008,16009],{},"URLs",": This should be the ",[1653,16012,8600],{}," from above.",[1572,16015,16016,16018,16019,1668],{},[1653,16017,13782],{},": Change to ",[1712,16020,2237],{},[1572,16022,16023,16026],{},[1653,16024,16025],{},"Headers",": Click \"Edit Headers\", click the \"+\" icon and add one property, as follows:",[2329,16028,16030],{"className":9297,"code":16029,"language":4188,"meta":1614,"style":1614},"{\n    \"Content-Type\": \"application\u002Fjson\"\n}\n",[1712,16031,16032,16036,16046],{"__ignoreMap":1614},[2337,16033,16034],{"class":2339,"line":2340},[2337,16035,9305],{"class":2378},[2337,16037,16038,16041,16043],{"class":2339,"line":1618},[2337,16039,16040],{"class":9310},"    \"Content-Type\"",[2337,16042,3601],{"class":2378},[2337,16044,16045],{"class":2347},"\"application\u002Fjson\"\n",[2337,16047,16048],{"class":2339,"line":1615},[2337,16049,4242],{"class":2378},[1569,16051,16052],{},[1572,16053,16054,16057,16058,1668],{},[1653,16055,16056],{},"Body"," - The data that you would like to send your automation, this should consist of a JSON payload. This should be formatted as per our ",[1942,16059,8296],{"href":8295},[1640,16061,16062],{},"To accept this data within your axiom.ai automation, follow the steps below:",[1701,16064,16065],{},[2165,16066,16067,16074],{},[1572,16068,16069,2221,16071,16073],{},[1653,16070,1110],{},[1942,16072,1110],{"href":1111}," step to your automation.",[1572,16075,16076,16078,16079,16081],{},[1653,16077,2230],{},": The \"Test data\" field should be used to replicate the data within the ",[1712,16080,3444],{}," portion of the payload.",[1561,16083,2386],{"id":2385},[1566,16085],{},[1640,16087,16088],{},"Run your workflow to begin testing - a chat window should open to run your workflow. Observe any errors that you see within your work and consult their documentation for more details on resolving the errors.",[1640,16090,16091,16092,4935],{},"If there are any errors on axiom.ai's side, follow the instructions provided or see ",[1942,16093,6474],{"href":1409},[1561,16095,2406],{"id":2405},[1566,16097],{},[1640,16099,16100],{},"Langflow can be a great method of adding additional AI features into your workflows, including connecting data from services from the integration library that Langflow offers. We look forward to hearing about what you create with this!",[2421,16102,9429],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":16104},[16105,16106,16107,16108],{"id":2155,"depth":1618,"text":2156},{"id":15991,"depth":1618,"text":15992},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to trigger your Langflow workflows using an axiom.ai automation. This guide walks through how to pass data—like scrape results or values from Google Sheets—into Langflow using API calls.",{"type":2126,"format":1701,"intent_type":2128,"intent":2129,"tags":16111,"platfrom":16112},[2439,2440,2131],[15956],"\u002Fguides\u002Flangflow",{"title":15945,"description":16109},"guides\u002Flangflow","573ouRWJNlUZFbhEfRZVBuQFaXqev58eLhiYe4OnCso",{"id":16118,"title":16119,"body":16120,"date":1628,"description":16197,"extension":1621,"meta":16198,"navigation":1627,"order":1628,"path":16202,"seo":16203,"stem":16204,"__hash__":16205},"guides\u002Fguides\u002Fline-breaks.md","How to insert line breaks in your Insta DM's",{"type":1555,"value":16121,"toc":16193},[16122,16124,16127],[1566,16123],{},[1640,16125,16126],{},"When automating DMs, you cannot simply press \"Return\" in the 'Enter Text' step, as it will trigger the message to send instead of adding a line break. It's the default behaviour of browser and web forms - not an issue with axiom.ai. However, there is a workaround: in the 'Enter Text' step, you can configure a custom line break. This guide will show you how to enable and use this setting in the 'Enter text' step. The guide will assume you have a bot build or use the template to send Insta DMs.",[12752,16128,16129,16133,16139,16185,16188,16190],{},[1561,16130,16132],{"id":16131},"how-to-insert-line-breaks-into-your-dms","How to insert line breaks into your DMs",[1640,16134,16135,16136,16138],{},"To insert the line breaks you need to configure the setting inside the ",[1712,16137,8004],{}," step being used to input your direct message.",[1701,16140,16141],{},[2165,16142,16143,16148,16167],{},[1572,16144,16145,16147],{},[1712,16146,293],{},": Click on the step to expand it.",[1572,16149,16150,16153,16154,15028,16156],{},[1712,16151,16152],{},"Custom line break",": At the bottom of the step, click on the ",[1712,16155,16152],{},[1569,16157,16158],{},[1572,16159,16160,16163,16164,1668],{},[1712,16161,16162],{},"Click \"Record\"",": Record a sequence of characters to use instead of Enter for line breaks. Use something like ",[1712,16165,16166],{},"Shift + Return",[1572,16168,16169,16171,16172],{},[1712,16170,2563],{},": Scroll back to the text input.",[1569,16173,16174,16179],{},[1572,16175,16176,16177,1668],{},"Make sure the text is a single paragraph with no line breaks from hitting ",[1712,16178,9616],{},[1572,16180,16181,16182,16184],{},"Place the cursor where you want your line breaks, then press the recorded key combination (e.g., ",[1712,16183,16166],{},") to insert them.",[1640,16186,16187],{},"Thats it, however I would suggest doing a short test run.",[1561,16189,2406],{"id":2405},[1640,16191,16192],{},"Normal line breaks cannot be used as the defualt browser behaviour \"Return\" submits the DM, so a work around has to be used. Its simple enough and can be found in the Enter text step. The same method will also work for other browser automations that require text entry.",{"title":1614,"searchDepth":1615,"depth":1615,"links":16194},[16195,16196],{"id":16131,"depth":1618,"text":16132},{"id":2405,"depth":1618,"text":2406},"Learn how to insert line breaks in Instagram DMs when using axiom.ai automation. Follow this step-by-step guide to customize the Enter Text step and avoid messages being sent too early. Ideal for no-code users automating Instagram messaging.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2659,"tags":16199,"platfrom":16201},[8862,16200,2664],"line break",[3363],"\u002Fguides\u002Fline-breaks",{"title":16119,"description":16197},"guides\u002Fline-breaks","0NziLHd2kRss2wNMuUDPXCV08o5uN-qGuPHswGjNXls",{"id":16207,"title":16208,"body":16209,"date":2652,"description":16491,"extension":1621,"meta":16492,"navigation":1627,"order":1628,"path":16499,"seo":16500,"stem":16501,"__hash__":16502},"guides\u002Fguides\u002Flinkedin-sales-navigator-message-leads.md","How to automate messaging leads in LinkedIn Sales Navigator",{"type":1555,"value":16210,"toc":16484},[16211,16213,16220,16222,16226,16229,16233,16240,16244,16246,16250,16395,16399,16402,16404,16408,16480],[1566,16212],{},[1640,16214,16215,16216,16219],{},"The template scrapes a ",[1653,16217,16218],{},"\"Saved list of leads\"",", extracting their profile links and names. It then opens each profile link in Chrome, clicks on the messaging option, and enters a customized message for each lead using their name. This process ensures that a personalized message is sent iteratively to each lead.",[1558,16221],{},[1561,16223,16225],{"id":16224},"get-started-set-up-your-lead-lists-on-sales-navigator","Get started: Set up your Lead lists on Sales Navigator",[1640,16227,16228],{},"Begin by creating and saving your lead list in Sales Navigator.",[1561,16230,16232],{"id":16231},"install-the-linkedin-sales-navigator-messenger-bot","Install the LinkedIn Sales Navigator Messenger bot",[1640,16234,16235,16236,16239],{},"If you're a new user, first click ",[1653,16237,16238],{},"\"Install Chrome Extension\"",", then create a free axiom.ai account to be able to edit the template.",[1640,16241,1686,16242,1668],{},[1653,16243,1689],{},[1640,16245,1692],{},[1561,16247,16249],{"id":16248},"configure-your-linkedin-sales-navigator-messenger-bot-in-four-easy-steps","Configure your LinkedIn Sales Navigator Messenger bot in four easy steps",[1701,16251,16252,16393],{},[1569,16253,16254,16272],{},[1572,16255,16256,1710,16258,16260],{},[1653,16257,1709],{},[1712,16259,14900],{},[1569,16261,16262,16267],{},[1572,16263,16264,16266],{},[1712,16265,5513],{},": Insert your \"Saved list of leads\" URL.",[1572,16268,16269,16271],{},[1712,16270,1781],{},": Controls how many leads you message.",[1572,16273,16274,1710,16276,16278],{},[1653,16275,1733],{},[1712,16277,667],{},[1569,16279,16280,16286,16298,16310,16321,16328,16356,16370,16382],{},[1572,16281,16282,1710,16284,11855],{},[1653,16283,1742],{},[1712,16285,1043],{},[1572,16287,16288,1710,16290,11855,16293],{},[1653,16289,1765],{},[1712,16291,16292],{},"Split a name into columns",[1569,16294,16295],{},[1572,16296,16297],{},"Extracts first name.",[1572,16299,16300,1710,16302,11855,16305],{},[1653,16301,1790],{},[1712,16303,16304],{},"Click Element: Message",[1569,16306,16307],{},[1572,16308,16309],{},"Clicks message button.",[1572,16311,16312,1710,16314,11855,16316],{},[1653,16313,1833],{},[1712,16315,1768],{},[1569,16317,16318],{},[1572,16319,16320],{},"Scrapes to see if \"Subject\" is present in the message form.",[1572,16322,16323,1710,16325,11855],{},[1653,16324,1861],{},[1712,16326,16327],{},"Remove HTML code",[1572,16329,16330,1710,16332,16334,16339],{},[1653,16331,1898],{},[1712,16333,15643],{},[1569,16335,16336],{},[1572,16337,16338],{},"Checks if subject is present. If true, a subject line is entered.",[1569,16340,16341],{},[1572,16342,16343,1710,16346,16349],{},[1653,16344,16345],{},"2.6.1",[1712,16347,16348],{},"Enter Text: Subject (required)",[1569,16350,16351],{},[1572,16352,16353,16355],{},[1712,16354,2563],{},": Enter a subject for your message. This field is required for messages to 2nd degree leads.",[1572,16357,16358,1710,16360,16363],{},[1653,16359,2812],{},[1712,16361,16362],{},"Enter Text: Type your message",[1569,16364,16365],{},[1572,16366,16367,16369],{},[1712,16368,2563],{},": Enter the message to be sent.",[1572,16371,16372,1710,16374,11855,16377],{},[1653,16373,14457],{},[1712,16375,16376],{},"Press Key(s)",[1569,16378,16379],{},[1572,16380,16381],{},"Presses return key to send the message.",[1572,16383,16384,1710,16386,11855,16388],{},[1653,16385,14464],{},[1712,16387,349],{},[1569,16389,16390],{},[1572,16391,16392],{},"Waits for message to send.",[1640,16394,2593],{},[1561,16396,16398],{"id":16397},"run-your-sales-navigator-messenger-bot","Run your Sales Navigator Messenger bot",[1640,16400,16401],{},"To test the Sales Navigator Messenger bot, disable 'Step 2.8: Press Key(s)' to prevent sending messages.",[1561,16403,1398],{"id":1949},[1640,16405,2618,16406,1668],{},[1942,16407,2603],{"href":638},[1701,16409,16410],{},[1569,16411,16412,16426,16436,16448,16458,16469],{},[1572,16413,16414,16417,16419,16420,16423,16424,2838],{},[1653,16415,16416],{},"Not loading the correct page?",[1963,16418],{},"\nCheck that your ",[1653,16421,16422],{},"\"Saved List of Leads\""," URL is correctly inserted in the ",[1712,16425,14900],{},[1572,16427,16428,16431,16433,16434,1668],{},[1653,16429,16430],{},"Want to change how many people you connect with?",[1963,16432],{},"\nIn the same step, adjust ",[1712,16435,14915],{},[1572,16437,16438,16441,2094,16443,16445,16446,2838],{},[1653,16439,16440],{},"Not looping through profiles?",[1963,16442],{},[1712,16444,15042],{}," is inserted and points to the correct column in the ",[1712,16447,1043],{},[1572,16449,16450,16453,16455,16456,2838],{},[1653,16451,16452],{},"Not clicking the Message button?",[1963,16454],{},"\nReselect the element in the ",[1712,16457,8027],{},[1572,16459,16460,16463,1965,16465,16468],{},[1653,16461,16462],{},"Subject line not added during run?",[1963,16464],{},[1712,16466,16467],{},"Step 2.6.1 – Enter Text: Subject",", make sure text is inserted.",[1572,16470,16471,16474,1965,16476,16479],{},[1653,16472,16473],{},"Message not added during run?",[1963,16475],{},[1712,16477,16478],{},"Step 2.7 – Enter Text: Type your message",", check that text is inserted.",[1640,16481,2101,16482],{},[1942,16483,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":16485},[16486,16487,16488,16489,16490],{"id":16224,"depth":1618,"text":16225},{"id":16231,"depth":1618,"text":16232},{"id":16248,"depth":1618,"text":16249},{"id":16397,"depth":1618,"text":16398},{"id":1949,"depth":1618,"text":1398},"The template scrapes a \"Saved list of leads\", extracting their profile links and names. It then opens each profile link in Chrome, clicks on the messaging option, and enters a customized message for each lead using their name. This process ensures that a personalized message is sent iteratively to each lead.",{"desciription":16493,"logoFile":16494,"read":3134,"video":16495,"templateId":4162,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":16496,"platfrom":16497},"Learn how to automate sending personalized messages to leads in LinkedIn Sales Navigator using a bot. This guide walks through scraping a lead list, opening profiles, and sending messages with custom text using names from the list.","\u002Ftemplates\u002Flinkedin-logo.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FSTb1lViIToM",[13085,2663,2662],[16498],"LinkedIn","\u002Fguides\u002Flinkedin-sales-navigator-message-leads",{"title":16208,"description":16491},"guides\u002Flinkedin-sales-navigator-message-leads","uRHRaNvSnfSwOrRB4byxhzP56v_BRTIJkK4ISwCQ8T0",{"id":16504,"title":16505,"body":16506,"date":1628,"description":16790,"extension":1621,"meta":16791,"navigation":1627,"order":1628,"path":16795,"seo":16796,"stem":16797,"__hash__":16798},"guides\u002Fguides\u002Floop-through-links-and-scrape-data.md","Scrape data from a list of links",{"type":1555,"value":16507,"toc":16783},[16508,16510,16519,16525,16531,16535,16538,16567,16571,16574,16606,16612,16616,16773,16775,16777],[1566,16509],{},[1640,16511,16512,16513,16515,16516,16518],{},"Learn how to build an automation that allows you to loop through a list of links from a spreadsheet using our ",[1942,16514,759],{"href":760}," integration and then extract data from each page. Get started by adding steps from the [Builder](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder and selecting the links using the ",[1942,16517,12895],{"href":1377},".\n::",[1640,16520,16521,16524],{},[2417,16522,16523],{},"Tip:"," We recommend using websites that have an identical structure to ensure that the Selector Tool does not throw any errors, for example, a list of LinkedIn profiles.",[1640,16526,16527,16528,1668],{},"To get started quickly, see our ",[1942,16529,2127],{"href":16530},"\u002Fguides\u002Fweb-scraping-looping-through-pages",[1561,16532,16534],{"id":16533},"building-the-automation","Building the automation",[1640,16536,16537],{},"There are multiple steps used within the automation:",[1701,16539,16540],{},[1569,16541,16542,16546,16550,16554,16558,16562],{},[1572,16543,16544,2838],{},[1942,16545,1714],{"href":1091},[1572,16547,16548,2838],{},[1942,16549,667],{"href":1075},[1572,16551,16552,2838],{},[1942,16553,1043],{"href":1044},[1572,16555,16556,2838],{},[1942,16557,1768],{"href":1040},[1572,16559,16560,2838],{},[1942,16561,4900],{"href":1214},[1572,16563,16564,2838],{},[1942,16565,16566],{"href":976},"Delete row from a Google Sheet",[2249,16568,16570],{"id":16569},"setup","Setup",[1640,16572,16573],{},"Prepare your Google Sheets spreadsheet. Add a single link per row.",[8666,16575,16576,16582],{},[8669,16577,16578],{},[8672,16579,16580],{},[8675,16581,8677],{},[8682,16583,16584,16592,16599],{},[8672,16585,16586],{},[8687,16587,16588],{},[1942,16589,16590],{"href":16590,"rel":16591},"https:\u002F\u002Fexample.com",[3850],[8672,16593,16594],{},[8687,16595,16596],{},[1942,16597,16590],{"href":16590,"rel":16598},[3850],[8672,16600,16601],{},[8687,16602,16603],{},[1942,16604,16590],{"href":16590,"rel":16605},[3850],[1640,16607,16608,16609,16611],{},"Create a new axiom.ai automation by opening the extension and clicking \"+ New automation\". Use the ",[1942,16610,7765],{"href":1361}," to add new steps to your automation.",[2249,16613,16615],{"id":16614},"start-from-blank","Start from blank",[1701,16617,16618],{},[1569,16619,16620,16653],{},[1572,16621,16622,1710,16624,16626],{},[1653,16623,1709],{},[1712,16625,1714],{},[1569,16627,16628,16633,16638,16645],{},[1572,16629,16630,16632],{},[1712,16631,1721],{},": Select the spreadsheet containing your list of links.",[1572,16634,16635,16637],{},[1712,16636,1727],{},": (Optional) Select the sheet within the spreadsheet.",[1572,16639,16640,16642,16643,1668],{},[1712,16641,8756],{},": (Optional) Start cell, e.g. ",[1712,16644,8760],{},[1572,16646,16647,16649,16650,1668],{},[1712,16648,6853],{},": (Optional) End cell, e.g. ",[1712,16651,16652],{},"\"A21\"",[1572,16654,16655,1710,16657,16659,16669],{},[1653,16656,1733],{},[1712,16658,667],{},[1569,16660,16661],{},[1572,16662,16663,1752,16665,1756,16667,1668],{},[1712,16664,2083],{},[1712,16666,1814],{},[1712,16668,1759],{},[1569,16670,16671,16692,16705,16743],{},[1572,16672,16673,1710,16675,16677],{},[1653,16674,1742],{},[1712,16676,1043],{},[1569,16678,16679,16689],{},[1572,16680,16681,1752,16683,16685,16686,16688],{},[1712,16682,1751],{},[1712,16684,1814],{},", select the column in ",[1712,16687,1759],{}," with the links.",[1572,16690,16691],{},"Tip: Click \"Clear all\" to ensure only one column is selected.",[1572,16693,16694,1710,16696,16698],{},[1653,16695,1765],{},[1712,16697,1768],{},[1569,16699,16700],{},[1572,16701,16702,16704],{},[1712,16703,1775],{},": Use the selector tool to select the data to scrape from the page.",[1572,16706,16707,1710,16709,16711],{},[1653,16708,1790],{},[1712,16710,4900],{},[1569,16712,16713,16718,16723,16730],{},[1572,16714,16715,16717],{},[1712,16716,1721],{},": Select the spreadsheet to write to.",[1572,16719,16720,16722],{},[1712,16721,1727],{},": (Optional) Select the sheet.",[1572,16724,16725,1881,16727,1668],{},[1712,16726,1880],{},[1712,16728,16729],{},"scraped-data",[1572,16731,16732,16735,16736,16738,16739,16742],{},[1712,16733,16734],{},"Write options",": Choose ",[1712,16737,7597],{}," to append, or ",[1712,16740,16741],{},"\"Clear data before writing\""," to overwrite.",[1572,16744,16745,1710,16747,16749,16750],{},[1653,16746,1833],{},[1712,16748,1901],{}," (optional)",[1569,16751,16752,16757,16761,16767],{},[1572,16753,16754,16756],{},[1712,16755,1721],{},": Select the spreadsheet.",[1572,16758,16759,16722],{},[1712,16760,1727],{},[1572,16762,16763,1782,16765,1668],{},[1712,16764,13043],{},[1712,16766,1785],{},[1572,16768,16769,1782,16771,1668],{},[1712,16770,13051],{},[1712,16772,1785],{},[1561,16774,2406],{"id":2405},[1566,16776],{},[1640,16778,16779,16780,16782],{},"This design pattern is best suited to web pages that share an identical structure, an ecommerce product listing or social media profile page, for example. Combine with the ",[1942,16781,9955],{"href":9952}," guide to quickly get started.",{"title":1614,"searchDepth":1615,"depth":1615,"links":16784},[16785,16789],{"id":16533,"depth":1618,"text":16534,"children":16786},[16787,16788],{"id":16569,"depth":1615,"text":16570},{"id":16614,"depth":1615,"text":16615},{"id":2405,"depth":1618,"text":2406},"Learn how to build a no-code web scraper with axiom.ai that loops through a list of links from a Google Sheet, visits each page, extracts data, and writes the results back to your spreadsheet. Ideal for automating data collection from structured pages.",{"type":2126,"format":1701,"intent_type":3360,"intent":5613,"tags":16792,"platfrom":16794},[2132,16793,2665],"links",[3363],"\u002Fguides\u002Floop-through-links-and-scrape-data",{"title":16505,"description":16790},"guides\u002Floop-through-links-and-scrape-data","ZH_UpSwiGa2aHsFuSyXc8sYL56FFthH-l4_qHqELU3E",{"id":16800,"title":16801,"body":16802,"date":1628,"description":17376,"extension":1621,"meta":17377,"navigation":1627,"order":1628,"path":17380,"seo":17381,"stem":17382,"__hash__":17383},"guides\u002Fguides\u002Fmagnet.md","How to download keyword data from Magnet into a Google Sheet",{"type":1555,"value":16803,"toc":17367},[16804,16806,16809,16814,16817,16820,16826,16828,16830,16841,16865,16869,16871,16879,16887,17214,17217,17221,17225,17227,17241,17245,17249,17275,17277,17279,17287,17316,17320,17326,17328,17330,17347,17355,17357],[1566,16805],{},[1640,16807,16808],{},"Magnet is a keyword research tool from Helium10, specifically designed for Amazon sellers. It helps users find high-traffic, relevant keywords to optimize product listings, PPC campaigns, and overall Amazon SEO strategy.",[2202,16810],{"src":16811,"className":16812,"alt":16813},"\u002Fdocs\u002Fguides\u002Fmagnet-screen-shot.webp",[4977],"Atuomate data entry into the Magnet search field.",[1640,16815,16816],{},"In this guide, you'll learn how to use a bot to load the Magnet homepage, automate the entry of search terms to find keyword suggestions, and click \"Get Keywords.\" The bot will then scrape the results and extract them into a Google Sheet.",[1640,16818,16819],{},"For this guide, we'll focus on Simple Search Mode, but the same principles apply to automating an Advanced Search.",[1640,16821,6759,16822,4888,16824],{},[1942,16823,4988],{"href":4987},[1942,16825,5552],{"href":4991},[1561,16827,4995],{"id":2155},[1566,16829],{},[1640,16831,6772,16832,6775,16834,16837,16838,1668],{},[1653,16833,5504],{},[1653,16835,16836],{},"search terms"," and another to store ",[1653,16839,16840],{},"extracted data",[1701,16842,16843],{},[2165,16844,16845,16851,16858],{},[1572,16846,16847,6788,16849,6792],{},[1653,16848,5005],{},[1712,16850,6791],{},[1572,16852,16853,5529,16855,16857],{},[1653,16854,5011],{},[1653,16856,16836],{}," into the first tab.",[1572,16859,16860,6807,16862,6811],{},[1653,16861,5017],{},[1653,16863,16864],{},"\"data\"",[1561,16866,16868],{"id":16867},"how-to-automate-extracting-keywords-from-magnet","How to automate extracting keywords from Magnet",[1566,16870],{},[1640,16872,5025,16873,5029,16875,5033,16877,5037],{},[1653,16874,5028],{},[1653,16876,5032],{},[1653,16878,5036],{},[1640,16880,5040,16881,16884,16885],{},[1942,16882,2127],{"href":16883,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_magent.json"," we created for this keyword scraper. Click to learn how to ",[1942,16886,5047],{"href":849},[1701,16888,16889],{},[2165,16890,16891,16911,16930,16952,16985,17013,17050,17072,17133,17177],{},[1572,16892,9913,16893,16896,16897],{},[1653,16894,16895],{},"'Read data from a Google Sheet'"," step and configure.",[2165,16898,16899,16905],{},[1572,16900,16901,16904],{},[1653,16902,16903],{},"Spreadsheet:"," Search for and add the Google Sheet you created.",[1572,16906,16907,16910],{},[1653,16908,16909],{},"Sheet name:"," Choose the tab containing the search terms.",[1572,16912,9913,16913,2838,16916],{},[1653,16914,16915],{},"'Loop through data'",[2165,16917,16918],{},[1572,16919,16920,2630,16923,5084,16926,16929],{},[1653,16921,16922],{},"Loop through data:",[1653,16924,16925],{},"'Insert Data'",[2417,16927,16928],{},"'google-sheet-data'",". The loop step will now iterate through the search terms in the Google Sheet.",[1572,16931,9913,16932,16935,16936,16938,16939],{},[1653,16933,16934],{},"'Go to page'"," sub-step to load the ",[1653,16937,6765],{}," landing page with the search field.",[2165,16940,16941],{},[1572,16942,16943,16946,16947,16949],{},[1653,16944,16945],{},"Enter URL:"," The URL will look something like this:",[1963,16948],{},[1712,16950,16951],{},"\"https:\u002F\u002Fmembers.helium10.com\u002Fmagnet\u002Fproducts?accountId=xxxxxxx\"",[1572,16953,16954,16955,16958,16959],{},"Add an ",[1653,16956,16957],{},"'Enter text'"," sub-step.",[2165,16960,16961,16971],{},[1572,16962,16963,2630,16966,5084,16968,16970],{},[1653,16964,16965],{},"Text:",[1653,16967,16925],{},[1653,16969,16928],{}," to pass the search terms from the sheet.",[1572,16972,16973,16976,16977,16980,16981,5145],{},[1653,16974,16975],{},"Select column:"," Choose column ",[1653,16978,16979],{},"‘A’"," in the preview.\n ",[2202,16982],{"src":16983,"alt":16984},"\u002Fdocs\u002Fguides\u002Fmagnet-enter-text.webp","axiom.ai using the enter text step to input search terms in Magnet",[1572,16986,9913,16987,16990,16991,16993],{},[1653,16988,16989],{},"'Click element'"," sub-step to click ",[1653,16992,6752],{},[2165,16994,16995],{},[1572,16996,16997,2630,17000,5239,17003,5243,17006,17009,17010],{},[1653,16998,16999],{},"Select:",[1653,17001,17002],{},"'Select'",[1653,17004,17005],{},"\"Custom\"",[1653,17007,17008],{},"\"Use element text.\""," Finally, click ",[1653,17011,17012],{},"\"Complete.\"",[1572,17014,17015,17016,17018,17019,4888,17022,17025],{},"To close the pop-up, add a ",[1653,17017,16989],{}," step to click ",[1653,17020,17021],{},"\"Run new search\"",[1653,17023,17024],{},"\"Load from history.\"",[2165,17026,17027,17041],{},[1572,17028,17029,2630,17031,5239,17033,6997,17035,4888,17038,1668],{},[1653,17030,16999],{},[1653,17032,17002],{},[1653,17034,17005],{},[1712,17036,17037],{},"\"[data-testid=\"runnewsearch\"]\"",[1712,17039,17040],{},"\"[data-testid=\"loadfromhistory\"]\"",[1572,17042,17043,17046,17047,5145],{},[1653,17044,17045],{},"Optional Click:"," Tick this option, as the pop-up does not always appear.\n ",[2202,17048],{"src":7012,"alt":17049},"axiom.ai interacting with a dialog in Magnet during bot run",[1572,17051,9913,17052,17055,17056],{},[1653,17053,17054],{},"'Wait'"," step to pause the bot and allow the data to load.",[2165,17057,17058],{},[1572,17059,17060,17063,17064,17067,17068,17071],{},[1653,17061,17062],{},"Wait time:"," Insert ",[1653,17065,17066],{},"\"7000\""," to make the bot wait ",[1653,17069,17070],{},"7 seconds."," You may need to experiment with wait time.",[1572,17073,9913,17074,17077,17078,17080,17081],{},[1653,17075,17076],{},"‘Get data from bot's current page’"," sub-step. With search results displayed on the ",[1653,17079,6765],{}," page, select the data you wish to extract.",[2165,17082,17083,17094,17103,17116,17125],{},[1572,17084,17085,2630,17087,17090,17091,1668],{},[1653,17086,16999],{},[1653,17088,17089],{},"‘Select’"," to open the ",[1653,17092,17093],{},"multi-selector tool",[1572,17095,17096,7656,17099,17102],{},[1653,17097,17098],{},"Select the first keyword",[1653,17100,17101],{},"\"Keyword Phrase\""," column, then repeat the selection for rows below to make a repeating selection.",[1572,17104,5286,17105,5290,17108,17111,17112,5145],{},[1653,17106,17107],{},"\"Shift + N\"",[1653,17109,17110],{},"CPR"," column in the first row, then repeat the selection in the second row.\n ",[2202,17113],{"src":17114,"alt":17115},"\u002Fdocs\u002Fguides\u002Fmagnet-select-data.png","axiom.ai selecting keyword data from Magnet",[1572,17117,17118,17121,17122,1668],{},[1653,17119,17120],{},"Select the 'Next' button"," for pagination using the ",[1653,17123,17124],{},"right arrow key",[1572,17126,17127,17130,17131,5346],{},[1653,17128,17129],{},"Set a maximum number of results"," you wish to scrape. I chose ",[1653,17132,5345],{},[1572,17134,9913,17135,2838,17138],{},[1653,17136,17137],{},"'Write data to a Google Sheet'",[2165,17139,17140,17148,17157,17167],{},[1572,17141,17142,17144,17145],{},[1653,17143,16903],{}," Select your ",[1653,17146,17147],{},"Google Sheet.",[1572,17149,17150,17153,17154,1668],{},[1653,17151,17152],{},"Sheet Name:"," Choose the tab where you want to write the ",[1653,17155,17156],{},"Amazon keyword data",[1572,17158,17159,2630,17162,5373,17164,1668],{},[1653,17160,17161],{},"Data:",[1653,17163,16925],{},[1653,17165,17166],{},"\"scraped-data-\"",[1572,17168,17169,17172,17173,17176],{},[1653,17170,17171],{},"Write Options:"," Select ",[1653,17174,17175],{},"'Add to Existing Data'"," to append the new data without deleting the existing data.",[1572,17178,9913,17179,17182,17183],{},[1653,17180,17181],{},"'Delete rows from a Google Sheet'"," step to remove the processed search term.",[2165,17184,17185,17191,17198,17206],{},[1572,17186,17187,17144,17189],{},[1653,17188,16903],{},[1653,17190,17147],{},[1572,17192,17193,17195,17196,1668],{},[1653,17194,17152],{}," Choose the tab containing the ",[1653,17197,5569],{},[1572,17199,17200,17203,17204,1668],{},[1653,17201,17202],{},"First Row to Delete:"," Leave this set to ",[1653,17205,1785],{},[1572,17207,17208,17211,17212,1668],{},[1653,17209,17210],{},"Last Row to Delete:"," Set to ",[1653,17213,5418],{},[1640,17215,17216],{},"The Magnet automation, when completed, should resemble the diagram below.",[2202,17218],{"src":17219,"className":17220,"alt":7224},"\u002Fdocs\u002Fguides\u002Fmagnet-axiom-design-pattern-steps.webp",[5426],[1561,17222,17224],{"id":17223},"testing-your-magnet-automation","Testing your Magnet automation",[1566,17226],{},[1640,17228,17229,17230,17233,17234,5442,17236,7239,17238,1668],{},"Once you have saved your **",[1942,17231,17232],{"href":4970},"Helium10 Magnet"," ** automation, click ",[1653,17235,5441],{},[1653,17237,5028],{},[1653,17239,17240],{},"keyword data",[2202,17242],{"src":17243,"alt":17244},"\u002Fdocs\u002Fguides\u002Fmagnet-write-data.webp","axiom.ai writing data to a Google Sheet from Magnet",[2249,17246,17247],{"id":7245},[1653,17248,7248],{},[2165,17250,17251,17263],{},[1572,17252,17253,17256,17257,17259,17260,1668],{},[1653,17254,17255],{},"Element not found:"," You may need to reselect elements. Changing ",[1653,17258,7259],{}," can sometimes affect ",[1653,17261,17262],{},"selectors",[1572,17264,17265,1710,17267,17269,17270,7272,17272,1668],{},[1653,17266,7265],{},[1653,17268,6765],{}," can sometimes be slow to load data, so you may need to adjust the ",[1653,17271,7271],{},[1653,17273,17274],{},"Step 7",[1561,17276,5478],{"id":5477},[1566,17278],{},[1640,17280,5481,17281,5484,17283,5488,17285,5491],{},[1653,17282,5028],{},[1653,17284,6765],{},[1653,17286,2127],{},[2165,17288,17289,17295,17304,17310],{},[1572,17290,17291,5501,17293,1668],{},[1653,17292,5500],{},[1653,17294,5504],{},[1572,17296,17297,5510,17299,7305,17301,17303],{},[1653,17298,5509],{},[1653,17300,5513],{},[1653,17302,6765],{}," page while logged in.",[1572,17305,17306,5520,17308,5523],{},[1653,17307,5519],{},[1653,17309,3444],{},[1572,17311,17312,5501,17314,1668],{},[1653,17313,5528],{},[1653,17315,5504],{},[1640,17317,5534,17318,5538],{},[1653,17319,5537],{},[1640,17321,5541,17322],{},[1942,17323,17325],{"href":17324,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_magnet.json","Magnet template.",[1561,17327,2406],{"id":2405},[1566,17329],{},[1640,17331,17332,17333,17335,17336,17338,17339,17342,17343,17346],{},"Extracting ",[1653,17334,17240],{}," from ",[1653,17337,6765],{}," is straightforward. You can simply ",[1653,17340,17341],{},"point and select"," the data you want. This template can be ",[1653,17344,17345],{},"modified"," and used as a starting point.",[1640,17348,7378,17349,5582,17351,7385],{},[1653,17350,4971],{},[1653,17352,17353],{},[1942,17354,5588],{"href":5587},[1566,17356],{},[1640,17358,17359],{},[2417,17360,5593,17361,5597,17363,4888,17365,5602],{},[1653,17362,5596],{},[1653,17364,4971],{},[1653,17366,5028],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":17368},[17369,17370,17371,17374,17375],{"id":2155,"depth":1618,"text":4995},{"id":16867,"depth":1618,"text":16868},{"id":17223,"depth":1618,"text":17224,"children":17372},[17373],{"id":7245,"depth":1615,"text":7248},{"id":5477,"depth":1618,"text":5478},{"id":2405,"depth":1618,"text":2406},"Learn how to use axiom.ai to automate the input of search terms into Magnet, a Helium10 tool, then click \"Get Keywords.\" Once the keyword search is complete, axiom.ai will crape the datat into a Google Sheet.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2658,"intent":5613,"tags":17378,"platfrom":17379},[2132,2665],[4971],"\u002Fguides\u002Fmagnet",{"title":16801,"description":17376},"guides\u002Fmagnet","7CmhjEBjM97K98IAwVqTsD9YUhaKtjvjHqUV0Gu86FE",{"id":17385,"title":17386,"body":17387,"date":2652,"description":17685,"extension":1621,"meta":17686,"navigation":1627,"order":1628,"path":17695,"seo":17696,"stem":17697,"__hash__":17698},"guides\u002Fguides\u002Fmonitor-web-page-and-send-message.md","How to monitor a web page and send email",{"type":1555,"value":17388,"toc":17677},[17389,17391,17394,17397,17399,17402,17409,17413,17421,17425,17428,17432,17435,17439,17651,17655,17658,17662,17665],[1566,17390],{},[1640,17392,17393],{},"Monitor a website for new products, this bot is a simple and effective way to achieve your goal. You will need to use this bot on a listing or search page.",[1640,17395,17396],{},"The bot scrapes a list of content, such as titles or prices comparing them against a previous scrape to monitor for changes.",[1558,17398],{},[1640,17400,17401],{},"This template is simple and adaptable to different websites, from products to stock listings. A Google Sheet is required to store data for comparison.",[1640,17403,17404,17405],{},"To use this template, you will first need to scrape a list of data into your sheet to compare against. We suggest you adpat this ",[1942,17406,17408],{"href":17407},"\u002Fguides\u002Fscrape-links-from-a-website","template.",[1561,17410,17412],{"id":17411},"advantages-to-using-this-web-monitoring-design-pattern","Advantages to using this web monitoring design pattern",[2165,17414,17415,17418],{},[1572,17416,17417],{},"Adaptable to different types of website",[1572,17419,17420],{},"Monitoring can be scheduled at regular intervals",[1561,17422,17424],{"id":17423},"install-the-monitor-bot-template","Install the Monitor bot template",[1640,17426,17427],{},"On this page click 'Install template'. If you are a new user you will be required to create an axiom.ai account before you can edit the template.",[1561,17429,17431],{"id":17430},"prepare-a-google-sheet","Prepare a Google Sheet",[1640,17433,17434],{},"A Google sheet is required with a list of data to compare against.",[1561,17436,17438],{"id":17437},"configure-the-bot","Configure the bot",[1701,17440,17441],{},[1569,17442,17443,17472,17501,17546,17590,17619],{},[1572,17444,17445,1710,17447,17449],{},[1653,17446,1709],{},[1712,17448,1768],{},[1569,17450,17451,17456,17461,17467],{},[1572,17452,17453,17455],{},[1712,17454,5513],{},": Insert the link of the page you wish to monitor.",[1572,17457,17458,17460],{},[1712,17459,1775],{},": Point and click to select the content to monitor.",[1572,17462,17463,17466],{},[1712,17464,17465],{},"Find pager"," (optional): Select the “Next” button if the page is paginated.",[1572,17468,17469,17471],{},[1712,17470,1781],{},": When testing, set to 10–20.",[1572,17473,17474,1710,17476,17478],{},[1653,17475,1733],{},[1712,17477,1714],{},[1569,17479,17480,17485,17490,17498],{},[1572,17481,17482,17484],{},[1712,17483,1721],{},": Search for the Google Sheet you created.",[1572,17486,17487,17489],{},[1712,17488,1727],{},": Choose the sheet with the comparison data.",[1572,17491,17492,17494,17495,17497],{},[1712,17493,8756],{}," \u002F ",[1712,17496,6853],{},": Leave as default.",[1572,17499,17500],{},"A preview of the data should now display.",[1572,17502,17503,1710,17505,17508],{},[1653,17504,5351],{},[1712,17506,17507],{},"Remove results that do not contain certain words",[1569,17509,17510,17518,17527,17535,17541],{},[1572,17511,17512,1752,17514,1756,17516,1668],{},[1712,17513,2083],{},[1712,17515,1814],{},[1712,17517,7559],{},[1572,17519,17520,1752,17523,1756,17525,1668],{},[1712,17521,17522],{},"Words",[1712,17524,1814],{},[1712,17526,1759],{},[1572,17528,17529,13044,17532,1668],{},[1712,17530,17531],{},"Word matching mode",[1712,17533,17534],{},"\"Any\"",[1572,17536,17537,17540],{},[1712,17538,17539],{},"Match on word boundary",": Leave unticked.",[1572,17542,17543,17497],{},[1712,17544,17545],{},"Columns (optional)",[1572,17547,17548,1710,17550,17553],{},[1653,17549,5390],{},[1712,17551,17552],{},"If condition: Continue only if new content found",[1569,17554,17555,17564,17570,17576,17580,17586],{},[1572,17556,17557,1752,17559,1756,17561,1668],{},[1712,17558,7860],{},[1712,17560,1814],{},[1712,17562,17563],{},"[matching-word-data]",[1572,17565,17566,17569],{},[1712,17567,17568],{},"Words to check",": Use default (a–z, 0–9).",[1572,17571,17572,3601,17574,1668],{},[1712,17573,17531],{},[1712,17575,17534],{},[1572,17577,17578,17540],{},[1712,17579,17539],{},[1572,17581,17582,17585],{},[1712,17583,17584],{},"Fail if condition not met",": Tick this box.",[1572,17587,17588,17540],{},[1712,17589,12925],{},[1572,17591,17592,1710,17594,17596],{},[1653,17593,6928],{},[1712,17595,4900],{},[1569,17597,17598,17602,17607,17613],{},[1572,17599,17600,17484],{},[1712,17601,1721],{},[1572,17603,17604,17606],{},[1712,17605,1727],{},": Choose the sheet with existing content.",[1572,17608,17609,1881,17611,1668],{},[1712,17610,1880],{},[1712,17612,17563],{},[1572,17614,17615,1782,17617,1668],{},[1712,17616,1889],{},[1712,17618,7597],{},[1572,17620,17621,1710,17623,17626],{},[1653,17622,6951],{},[1712,17624,17625],{},"Send email",[1569,17627,17628,17634,17640],{},[1572,17629,17630,17633],{},[1712,17631,17632],{},"Email addresses",": Enter email addresses, one per line.",[1572,17635,17636,17639],{},[1712,17637,17638],{},"Email subject",": Add your subject.",[1572,17641,17642,17645,17646,17648,17649,1668],{},[1712,17643,17644],{},"Email body",": Add your message. Use ",[1712,17647,1814],{}," to include ",[1712,17650,17563],{},[1561,17652,17654],{"id":17653},"test-run","Test run",[1640,17656,17657],{},"We always recommed doing a test run - click run then check the output from the scraper. In this case in the sheet.",[1561,17659,17661],{"id":17660},"troubleshooting-the-monitoring-axiom","Troubleshooting the monitoring Axiom",[1640,17663,17664],{},"As mentioned at the top of the page, you will need to scrape data to compare against before running this bot.",[1569,17666,17667,17674],{},[1572,17668,17669,17670,17673],{},"All results write to the Google Sheet, check the 'Write' Step is set to '",[2337,17671,17672],{},"word-matching-data","'.",[1572,17675,17676],{},"No message sent - perhaps no change has been detected.",{"title":1614,"searchDepth":1615,"depth":1615,"links":17678},[17679,17680,17681,17682,17683,17684],{"id":17411,"depth":1618,"text":17412},{"id":17423,"depth":1618,"text":17424},{"id":17430,"depth":1618,"text":17431},{"id":17437,"depth":1618,"text":17438},{"id":17653,"depth":1618,"text":17654},{"id":17660,"depth":1618,"text":17661},"Learn how to monitor a web page for changes and automatically send an email notification using axiom.ai. This guide covers scraping, comparing data, and notifying you of updates.",{"logoFile":3357,"read":17687,"level":17688,"video":17689,"templateId":6316,"type":2126,"format":1701,"intent_type":3360,"intent":17690,"tags":17691,"platfrom":17694},"16 minutes","Intermediate","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FoUk5xPV-eDQ","Monitor websites for changes",[17692,17693],"monitoring","scrpaing",[3363],"\u002Fguides\u002Fmonitor-web-page-and-send-message",{"title":17386,"description":17685},"guides\u002Fmonitor-web-page-and-send-message","QjcvKkN3dFlZjwXOMNL8Zx1PQ0qZAn-EFA5kh1cq0bE",{"id":17700,"title":17701,"body":17702,"date":2652,"description":17975,"extension":1621,"meta":17976,"navigation":1627,"order":1628,"path":17981,"seo":17982,"stem":17983,"__hash__":17984},"guides\u002Fguides\u002Fmonitoring-send-webhook.md","How to monitor a web page and trigger webhook",{"type":1555,"value":17703,"toc":17967},[17704,17706,17709,17711,17713,17715,17719,17721,17729,17731,17733,17735,17737,17742,17746,17938,17941,17949,17951,17954,17956,17958],[1566,17705],{},[1640,17707,17708],{},"Monitor a website for new products then send a notification via a webhook, this bot is a simple and effective way to achieve your goal. You will need to use this bot on a listing or search page.",[1558,17710],{},[1640,17712,17396],{},[1640,17714,17401],{},[1640,17716,17404,17717],{},[1942,17718,17408],{"href":17407},[1561,17720,17412],{"id":17411},[1701,17722,17723],{},[2165,17724,17725,17727],{},[1572,17726,17417],{},[1572,17728,17420],{},[1561,17730,17424],{"id":17423},[1640,17732,17427],{},[1561,17734,17431],{"id":17430},[1640,17736,17434],{},[1640,17738,17739,17740],{},"We suggest you adpat this ",[1942,17741,17408],{"href":17407},[1561,17743,17745],{"id":17744},"get-started-open-the-bot-for-editing","Get started open the bot for editing",[1701,17747,17748],{},[1569,17749,17750,17776,17805,17846,17889,17919],{},[1572,17751,17752,1710,17754,17756],{},[1653,17753,1709],{},[1712,17755,1768],{},[1569,17757,17758,17762,17766,17771],{},[1572,17759,17760,17455],{},[1712,17761,5513],{},[1572,17763,17764,17460],{},[1712,17765,1775],{},[1572,17767,17768,17770],{},[1712,17769,17465],{}," (optional): Select the “Next” button if the page has pagination. If the page scrolls, leave this blank.",[1572,17772,17773,17775],{},[1712,17774,1781],{},": For testing, set to 10–20.",[1572,17777,17778,1710,17780,17782],{},[1653,17779,1733],{},[1712,17781,1714],{},[1569,17783,17784,17789,17794,17798,17802],{},[1572,17785,17786,17788],{},[1712,17787,1721],{},": Search for and select the Google Sheet you created.",[1572,17790,17791,17793],{},[1712,17792,1727],{},": Choose the sheet containing the comparison data.",[1572,17795,17796,17497],{},[1712,17797,8756],{},[1572,17799,17800,17497],{},[1712,17801,6853],{},[1572,17803,17804],{},"A preview of the data should now appear.",[1572,17806,17807,1710,17809,17812],{},[1653,17808,5351],{},[1712,17810,17811],{},"Remove results which do not contain certain words",[1569,17813,17814,17822,17831,17837,17841],{},[1572,17815,17816,1752,17818,1756,17820,1668],{},[1712,17817,2083],{},[1712,17819,1814],{},[1712,17821,7559],{},[1572,17823,17824,1752,17827,1756,17829,1668],{},[1712,17825,17826],{},"Words (comma separated)",[1712,17828,1814],{},[1712,17830,1759],{},[1572,17832,17833,1782,17835,1668],{},[1712,17834,17531],{},[1712,17836,17534],{},[1572,17838,17839,17540],{},[1712,17840,17539],{},[1572,17842,17843,17845],{},[1712,17844,17545],{},": Leave default.",[1572,17847,17848,1710,17850,17853],{},[1653,17849,5390],{},[1712,17851,17852],{},"If condition: Continue only if new content is found",[1569,17854,17855,17863,17871,17877,17881,17885],{},[1572,17856,17857,1752,17859,1756,17861,1668],{},[1712,17858,7860],{},[1712,17860,1814],{},[1712,17862,17563],{},[1572,17864,17865,17867,17868,1668],{},[1712,17866,17568],{},": Leave as ",[1712,17869,17870],{},"(a,b,c,...,z,0–9)",[1572,17872,17873,3601,17875,1668],{},[1712,17874,17531],{},[1712,17876,17534],{},[1572,17878,17879,17540],{},[1712,17880,17539],{},[1572,17882,17883,17585],{},[1712,17884,17584],{},[1572,17886,17887,17540],{},[1712,17888,12925],{},[1572,17890,17891,1710,17893,17895],{},[1653,17892,6928],{},[1712,17894,4900],{},[1569,17896,17897,17901,17906,17913],{},[1572,17898,17899,17788],{},[1712,17900,1721],{},[1572,17902,17903,17905],{},[1712,17904,1727],{},": Choose the sheet you’re appending to.",[1572,17907,17908,1881,17910,1668],{},[1712,17909,1880],{},[1712,17911,17912],{},"[word-matching-data]",[1572,17914,17915,1782,17917,1668],{},[1712,17916,16734],{},[1712,17918,7597],{},[1572,17920,17921,1710,17923,17925],{},[1653,17922,6951],{},[1712,17924,13850],{},[1569,17926,17927,17932],{},[1572,17928,17929,17931],{},[1712,17930,2187],{},": Insert the webhook endpoint.",[1572,17933,17934,17937],{},[1712,17935,17936],{},"Payload",": Enter your payload in JSON format.",[1640,17939,17940],{},"Webhook trigger example:",[2329,17942,17947],{"className":17943,"code":17945,"language":17946},[17944],"language-text","{\n  \"name\": \"test webhook\",\n  \"type\": 1,\n  \"channel_id\": \"199737254929760256\",\n  \"token\": \"3d89bb7572e0fb30d8128367b3b1b44fecd1726de135cbe28a41f8b2f777c372ba2939e72279b94526ff5d1bd4358d65cf11\",\n  \"avatar\": null,\n  \"guild_id\": \"199737254929760256\",\n  \"id\": \"223704706495545344\",\n  \"application_id\": null,\n  \"user\": {\n    \"username\": \"test\",\n    \"discriminator\": \"7479\",\n    \"id\": \"190320984123768832\",\n    \"avatar\": \"b004ec1740a63ca06ae2e14c5cee11f3\",\n    \"public_flags\": 131328\n  }\n","text",[1712,17948,17945],{"__ignoreMap":1614},[1561,17950,17654],{"id":17653},[1640,17952,17953],{},"We always recommend doing a test run - You should test the filter and conditional. Do the first scrape, then delete some rows to test the full bot. You can also test if the webhook is triggered.",[1561,17955,17661],{"id":17660},[1640,17957,17664],{},[1569,17959,17960,17964],{},[1572,17961,17669,17962,17673],{},[2337,17963,17672],{},[1572,17965,17966],{},"No message sent - Check your JSON",{"title":1614,"searchDepth":1615,"depth":1615,"links":17968},[17969,17970,17971,17972,17973,17974],{"id":17411,"depth":1618,"text":17412},{"id":17423,"depth":1618,"text":17424},{"id":17430,"depth":1618,"text":17431},{"id":17744,"depth":1618,"text":17745},{"id":17653,"depth":1618,"text":17654},{"id":17660,"depth":1618,"text":17661},"Learn how to monitor a web page for changes and trigger a webhook notification using axiom.ai. This guide covers scraping, comparing data, and sending webhook notifications for updates.",{"pinned":1627,"read":17977,"type":2126,"format":1701,"intent_type":3360,"intent":17690,"tags":17978,"platfrom":17979,"video":17980,"templateId":6311},"15 minutes",[17692],[3363],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFUj68AKN5Cs","\u002Fguides\u002Fmonitoring-send-webhook",{"title":17701,"description":17975},"guides\u002Fmonitoring-send-webhook","3vrBE-Bwnp66uZlxpfHtm67D3tNnkmNqxTFl0YedlfA",{"id":17986,"title":17987,"body":17988,"date":1628,"description":17998,"extension":1621,"meta":17999,"navigation":1627,"order":1628,"path":14272,"seo":18001,"stem":18002,"__hash__":18003},"guides\u002Fguides\u002Fpattern.md","Pattern guides",{"type":1555,"value":17989,"toc":17996},[17990,17993],[1640,17991,17992],{},"Reusable techniques for the No-code tool: logins, dialogs, forms, keyboard shortcuts, APIs, and moving data between steps. Use these guides to solve recurring problems and combine them in larger automations.",[17994,17995],"guides-intent-hub",{"intent":2128},{"title":1614,"searchDepth":1615,"depth":1615,"links":17997},[],"Reusable techniques for the No-code tool—logins, dialogs, forms, keyboard shortcuts, APIs, and moving data between steps.",{"layout":18000},"guides-intent",{"title":17987,"description":17998},"guides\u002Fpattern","Pu2EeFHS8UD2Lmjfg34vNMZ2WPGp7Pke7bLFNBOS-Z8",{"id":18005,"title":18006,"body":18007,"date":1628,"description":19708,"extension":1621,"meta":19709,"navigation":1627,"order":1628,"path":13986,"seo":19715,"stem":19716,"__hash__":19717},"guides\u002Fguides\u002Fpost-data-to-airtable.md","How to post data to Airtable using an axiom.ai automation",{"type":1555,"value":18008,"toc":19697},[18009,18011,18014,18016,18019,18021,18023,18043,18046,18076,18079,18130,18134,18138,18140,18143,18147,18149,18158,18162,18164,18178,18215,18625,18629,18631,18641,18668,19092,19096,19098,19101,19126,19673,19675,19678,19689,19691,19694],[1566,18010],{},[1640,18012,18013],{},"Follow these steps to post data from axiom.ai to Airtable using a webhook. axiom.ai allows you to use webhooks to send data to external APIs, including Airtable's API. To make the integration work, you will need to configure your credentials in Airtable, and in axiom.ai, you will need to create your post request using JavaScript.",[1558,18015],{},[1640,18017,18018],{},"This guide assumes you are familiar with both axiom.ai and Airtable and have a basic understanding of JavaScript.",[1561,18020,2156],{"id":2155},[1640,18022,2161],{},[1701,18024,18025],{},[2165,18026,18027,18033,18037],{},[1572,18028,18029,2172,18031,1668],{},[1653,18030,2171],{},[1942,18032,2176],{"href":2175},[1572,18034,18035,2182],{},[1653,18036,2181],{},[1572,18038,18039,3403,18041,1668],{},[1653,18040,2187],{},[1712,18042,2191],{},[1640,18044,18045],{},"You'll also need information from Airtable:",[1701,18047,18048],{},[2165,18049,18050,18070],{},[1572,18051,18052,18055,18056,18061,18062,18065,18066,18069],{},[1653,18053,18054],{},"Base ID",": Head to the ",[1942,18057,18060],{"href":18058,"rel":18059},"https:\u002F\u002Fairtable.com\u002Fdeveloper-hub\u002Fweb\u002Fapi\u002F",[3850],"Airtable API page"," to grab your ",[1653,18063,18064],{},"\"Base ID\"",". Your ID will look something like ",[1653,18067,18068],{},"\"appFrf1jmiyIq5nuJ\"",". You can also find this in the URL of your base.",[1572,18071,18072,18075],{},[1653,18073,18074],{},"Table name",": Open your Airtable base, the tab names will be the table name that you need to use.",[1640,18077,18078],{},"Create a personal access token via the Airtable Developer Hub.",[1701,18080,18081],{},[2165,18082,18083,18095,18104,18109,18118,18124],{},[1572,18084,18085,18088,18089,18094],{},[1653,18086,18087],{},"Personal access token",": Open the ",[1942,18090,18093],{"href":18091,"rel":18092},"https:\u002F\u002Fairtable.com\u002Fcreate\u002Ftokens",[3850],"personal access token"," page.",[1572,18096,18097,18100,18101],{},[1653,18098,18099],{},"Create new token",": Click on the button ",[1653,18102,18103],{},"\"create a new token.\"",[1572,18105,18106,18108],{},[1653,18107,4265],{},": Name your new token.",[1572,18110,18111,18114,18115,1668],{},[1653,18112,18113],{},"Scopes",": Set the scope to ",[1653,18116,18117],{},"\"data.records:write\"",[1572,18119,18120,18123],{},[1653,18121,18122],{},"Access",": Select the Base you wish to add records to.",[1572,18125,18126,18129],{},[1653,18127,18128],{},"Create token",": Create the token, copy it for later.",[2202,18131],{"src":18132,"alt":18133},"\u002Fdocs\u002Fguides\u002Fpersonnel-access-token-airtable.jpg","Airtable create access token",[1561,18135,18137],{"id":18136},"sending-data-to-airtable-using-an-axiomai-automation","Sending data to Airtable using an axiom.ai automation",[1566,18139],{},[1640,18141,18142],{},"Learn how to get started with sending data from your axiom.ai automation to Airtable.",[2249,18144,18146],{"id":18145},"set-up-your-axiomai-automation","Set up your axiom.ai automation",[1566,18148],{},[1640,18150,18151,18152,18157],{},"Create your automation as per usual. When you need to send data to Airtable, add a ",[1653,18153,18154],{},[1942,18155,18156],{"href":1226},"write JavaScript"," to your automation. Follow the guides below to determine which script you'll need to send along your data to Airtable.",[2249,18159,18161],{"id":18160},"create-a-single-record","Create a single record",[1566,18163],{},[1640,18165,18166,18167,18169,18170,18173,18174,18177],{},"The following code will create a single record in Airtable. You'll need your credentials from the ",[1942,18168,4995],{"href":8190}," section to begin. You'll need to modify the attributes in the ",[1712,18171,18172],{},"recordData"," array with this data. When scraping, ensure that the ",[1653,18175,18176],{},"max results"," option is set to 1.",[1701,18179,18180],{},[2165,18181,18182,18197,18206],{},[1572,18183,18184,1844,18187,3610,18190,18193,18194,18196],{},[1653,18185,18186],{},"Add credentials",[1653,18188,18189],{},"base ID",[1653,18191,18192],{},"table name",", and ",[1653,18195,18093],{}," into the script.",[1572,18198,18199,18202,18203,18205],{},[1653,18200,18201],{},"Field names",": Edit the field names in ",[1712,18204,18172],{}," to match your table.",[1572,18207,18208,18211,18212],{},[1653,18209,18210],{},"Field values",": Insert axiom.ai data tokens for the value of each field, replacing the examples. ",[2417,18213,18214],{},"Tip: use the 'insert data' button to do this step.",[2329,18216,18218],{"className":2366,"code":18217,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Airtable API endpoint URL\nconst AirtableBaseId = '*******'; \u002F\u002F Add Base ID \nconst AirtableTableName = '************'; \u002F\u002F Add table name\nconst AirtableAccessToken = '**********'; \u002F\u002F Add personal access token\nconst AirtableUrl = `https:\u002F\u002Fapi.Airtable.com\u002Fv0\u002F${AirtableBaseId}\u002F${AirtableTableName}`;\n\n\u002F\u002F Data you want to send (adjust according to your Airtable fields)\nconst recordData = {\n  fields: {\n    \"Customer Name\": '[scrape-data?all&0]',  \u002F\u002F Replace field and token \n    \"Email Address\": '[scrape-data?all&1]',  \u002F\u002F Replace field and token\n    \"Phone Number\": '[scrape-data?all&2]',   \u002F\u002F Replace field and token\n    \"Customer ID\": '[scrape-data?all&3]'     \u002F\u002F Replace field and token\n  }\n};\n\n\u002F\u002F Send data to create a single record in Airtable.\nasync function sendToAirtable(data) {\n  try {\n    const response = await fetch(AirtableUrl, {\n      method: 'POST',\n      headers: {\n        'Authorization': `Bearer ${AirtableAccessToken}`,\n        'Content-Type': 'application\u002Fjson'\n      },\n      body: JSON.stringify(data)\n    });\n\n    if (response.ok) {\n      const jsonResponse = await response.json();\n      console.log('Record added successfully:', jsonResponse);\n    } else {\n      console.error('Error adding record:', response.statusText);\n    }\n  } catch (error) {\n    console.error('Error with request:', error);\n  }\n}\n\n\u002F\u002F Call the function to send the record to Airtable\nsendToAirtable(recordData);\n",[1712,18219,18220,18225,18242,18259,18276,18300,18304,18309,18320,18325,18341,18356,18371,18384,18388,18393,18397,18402,18419,18425,18441,18450,18455,18472,18482,18487,18501,18506,18510,18518,18536,18551,18560,18574,18578,18586,18600,18604,18608,18612,18617],{"__ignoreMap":1614},[2337,18221,18222],{"class":2339,"line":2340},[2337,18223,18224],{"class":4521},"\u002F\u002F Airtable API endpoint URL\n",[2337,18226,18227,18229,18232,18234,18237,18239],{"class":2339,"line":1618},[2337,18228,3918],{"class":3592},[2337,18230,18231],{"class":3488}," AirtableBaseId",[2337,18233,3924],{"class":3592},[2337,18235,18236],{"class":2347}," '*******'",[2337,18238,11002],{"class":2378},[2337,18240,18241],{"class":4521},"\u002F\u002F Add Base ID \n",[2337,18243,18244,18246,18249,18251,18254,18256],{"class":2339,"line":1615},[2337,18245,3918],{"class":3592},[2337,18247,18248],{"class":3488}," AirtableTableName",[2337,18250,3924],{"class":3592},[2337,18252,18253],{"class":2347}," '************'",[2337,18255,11002],{"class":2378},[2337,18257,18258],{"class":4521},"\u002F\u002F Add table name\n",[2337,18260,18261,18263,18266,18268,18271,18273],{"class":2339,"line":3501},[2337,18262,3918],{"class":3592},[2337,18264,18265],{"class":3488}," AirtableAccessToken",[2337,18267,3924],{"class":3592},[2337,18269,18270],{"class":2347}," '**********'",[2337,18272,11002],{"class":2378},[2337,18274,18275],{"class":4521},"\u002F\u002F Add personal access token\n",[2337,18277,18278,18280,18283,18285,18288,18291,18293,18296,18298],{"class":2339,"line":3507},[2337,18279,3918],{"class":3592},[2337,18281,18282],{"class":3488}," AirtableUrl",[2337,18284,3924],{"class":3592},[2337,18286,18287],{"class":2347}," `https:\u002F\u002Fapi.Airtable.com\u002Fv0\u002F${",[2337,18289,18290],{"class":2378},"AirtableBaseId",[2337,18292,4365],{"class":2347},[2337,18294,18295],{"class":2378},"AirtableTableName",[2337,18297,4051],{"class":2347},[2337,18299,3930],{"class":2378},[2337,18301,18302],{"class":2339,"line":3579},[2337,18303,3504],{"emptyLinePlaceholder":1627},[2337,18305,18306],{"class":2339,"line":3658},[2337,18307,18308],{"class":4521},"\u002F\u002F Data you want to send (adjust according to your Airtable fields)\n",[2337,18310,18311,18313,18316,18318],{"class":2339,"line":3664},[2337,18312,3918],{"class":3592},[2337,18314,18315],{"class":3488}," recordData",[2337,18317,3924],{"class":3592},[2337,18319,3994],{"class":2378},[2337,18321,18322],{"class":2339,"line":3670},[2337,18323,18324],{"class":2378},"  fields: {\n",[2337,18326,18327,18330,18332,18335,18338],{"class":2339,"line":3693},[2337,18328,18329],{"class":2347},"    \"Customer Name\"",[2337,18331,3601],{"class":2378},[2337,18333,18334],{"class":2347},"'[scrape-data?all&0]'",[2337,18336,18337],{"class":2378},",  ",[2337,18339,18340],{"class":4521},"\u002F\u002F Replace field and token \n",[2337,18342,18343,18346,18348,18351,18353],{"class":2339,"line":3746},[2337,18344,18345],{"class":2347},"    \"Email Address\"",[2337,18347,3601],{"class":2378},[2337,18349,18350],{"class":2347},"'[scrape-data?all&1]'",[2337,18352,18337],{"class":2378},[2337,18354,18355],{"class":4521},"\u002F\u002F Replace field and token\n",[2337,18357,18358,18361,18363,18366,18369],{"class":2339,"line":3760},[2337,18359,18360],{"class":2347},"    \"Phone Number\"",[2337,18362,3601],{"class":2378},[2337,18364,18365],{"class":2347},"'[scrape-data?all&2]'",[2337,18367,18368],{"class":2378},",   ",[2337,18370,18355],{"class":4521},[2337,18372,18373,18376,18378,18381],{"class":2339,"line":3136},[2337,18374,18375],{"class":2347},"    \"Customer ID\"",[2337,18377,3601],{"class":2378},[2337,18379,18380],{"class":2347},"'[scrape-data?all&3]'",[2337,18382,18383],{"class":4521},"     \u002F\u002F Replace field and token\n",[2337,18385,18386],{"class":2339,"line":3784},[2337,18387,11270],{"class":2378},[2337,18389,18390],{"class":2339,"line":3793},[2337,18391,18392],{"class":2378},"};\n",[2337,18394,18395],{"class":2339,"line":4136},[2337,18396,3504],{"emptyLinePlaceholder":1627},[2337,18398,18399],{"class":2339,"line":4154},[2337,18400,18401],{"class":4521},"\u002F\u002F Send data to create a single record in Airtable.\n",[2337,18403,18404,18406,18409,18412,18414,18416],{"class":2339,"line":4162},[2337,18405,11709],{"class":3592},[2337,18407,18408],{"class":3592}," function",[2337,18410,18411],{"class":3979}," sendToAirtable",[2337,18413,4145],{"class":2378},[2337,18415,3444],{"class":2343},[2337,18417,18418],{"class":2378},") {\n",[2337,18420,18421,18423],{"class":2339,"line":4168},[2337,18422,11199],{"class":3592},[2337,18424,3994],{"class":2378},[2337,18426,18427,18430,18432,18434,18436,18438],{"class":2339,"line":4173},[2337,18428,18429],{"class":3592},"    const",[2337,18431,3699],{"class":3488},[2337,18433,3924],{"class":3592},[2337,18435,4013],{"class":3592},[2337,18437,4016],{"class":3979},[2337,18439,18440],{"class":2378},"(AirtableUrl, {\n",[2337,18442,18443,18446,18448],{"class":2339,"line":4194},[2337,18444,18445],{"class":2378},"      method: ",[2337,18447,4027],{"class":2347},[2337,18449,4030],{"class":2378},[2337,18451,18452],{"class":2339,"line":4206},[2337,18453,18454],{"class":2378},"      headers: {\n",[2337,18456,18457,18460,18462,18465,18468,18470],{"class":2339,"line":4218},[2337,18458,18459],{"class":2347},"        'Authorization'",[2337,18461,3601],{"class":2378},[2337,18463,18464],{"class":2347},"`Bearer ${",[2337,18466,18467],{"class":2378},"AirtableAccessToken",[2337,18469,4051],{"class":2347},[2337,18471,4030],{"class":2378},[2337,18473,18474,18477,18479],{"class":2339,"line":4233},[2337,18475,18476],{"class":2347},"        'Content-Type'",[2337,18478,3601],{"class":2378},[2337,18480,18481],{"class":2347},"'application\u002Fjson'\n",[2337,18483,18484],{"class":2339,"line":4239},[2337,18485,18486],{"class":2378},"      },\n",[2337,18488,18489,18492,18494,18496,18498],{"class":2339,"line":4245},[2337,18490,18491],{"class":2378},"      body: ",[2337,18493,11178],{"class":3488},[2337,18495,1668],{"class":2378},[2337,18497,11183],{"class":3979},[2337,18499,18500],{"class":2378},"(data)\n",[2337,18502,18503],{"class":2339,"line":4250},[2337,18504,18505],{"class":2378},"    });\n",[2337,18507,18508],{"class":2339,"line":6244},[2337,18509,3504],{"emptyLinePlaceholder":1627},[2337,18511,18512,18515],{"class":2339,"line":6249},[2337,18513,18514],{"class":3592},"    if",[2337,18516,18517],{"class":2378}," (response.ok) {\n",[2337,18519,18520,18523,18526,18528,18530,18532,18534],{"class":2339,"line":2923},[2337,18521,18522],{"class":3592},"      const",[2337,18524,18525],{"class":3488}," jsonResponse",[2337,18527,3924],{"class":3592},[2337,18529,4013],{"class":3592},[2337,18531,4185],{"class":2378},[2337,18533,4188],{"class":3979},[2337,18535,4191],{"class":2378},[2337,18537,18538,18541,18543,18545,18548],{"class":2339,"line":6258},[2337,18539,18540],{"class":2378},"      console.",[2337,18542,4200],{"class":3979},[2337,18544,4145],{"class":2378},[2337,18546,18547],{"class":2347},"'Record added successfully:'",[2337,18549,18550],{"class":2378},", jsonResponse);\n",[2337,18552,18553,18555,18558],{"class":2339,"line":6263},[2337,18554,4209],{"class":2378},[2337,18556,18557],{"class":3592},"else",[2337,18559,3994],{"class":2378},[2337,18561,18562,18564,18566,18568,18571],{"class":2339,"line":6268},[2337,18563,18540],{"class":2378},[2337,18565,4142],{"class":3979},[2337,18567,4145],{"class":2378},[2337,18569,18570],{"class":2347},"'Error adding record:'",[2337,18572,18573],{"class":2378},", response.statusText);\n",[2337,18575,18576],{"class":2339,"line":6273},[2337,18577,4236],{"class":2378},[2337,18579,18580,18582,18584],{"class":2339,"line":6278},[2337,18581,11240],{"class":2378},[2337,18583,4212],{"class":3592},[2337,18585,4215],{"class":2378},[2337,18587,18588,18591,18593,18595,18598],{"class":2339,"line":6283},[2337,18589,18590],{"class":2378},"    console.",[2337,18592,4142],{"class":3979},[2337,18594,4145],{"class":2378},[2337,18596,18597],{"class":2347},"'Error with request:'",[2337,18599,4230],{"class":2378},[2337,18601,18602],{"class":2339,"line":6289},[2337,18603,11270],{"class":2378},[2337,18605,18606],{"class":2339,"line":6295},[2337,18607,4242],{"class":2378},[2337,18609,18610],{"class":2339,"line":6301},[2337,18611,3504],{"emptyLinePlaceholder":1627},[2337,18613,18614],{"class":2339,"line":6306},[2337,18615,18616],{"class":4521},"\u002F\u002F Call the function to send the record to Airtable\n",[2337,18618,18619,18622],{"class":2339,"line":6311},[2337,18620,18621],{"class":3979},"sendToAirtable",[2337,18623,18624],{"class":2378},"(recordData);\n",[2249,18626,18628],{"id":18627},"create-multiple-records-up-to-10","Create multiple records (up to 10)",[1566,18630],{},[1640,18632,18633,18634,18169,18636,18173,18638,18640],{},"The following code will create multiple records in Airtable. You'll need your credentials from the ",[1942,18635,4995],{"href":8190},[1712,18637,18172],{},[1653,18639,18176],{}," option is set to 10. Airtable's API limits records created per call to 10.",[1701,18642,18643],{},[2165,18644,18645,18655,18663],{},[1572,18646,18647,1844,18649,3610,18651,18193,18653,18196],{},[1653,18648,18186],{},[1653,18650,18189],{},[1653,18652,18192],{},[1653,18654,18093],{},[1572,18656,18657,18660,18661],{},[1653,18658,18659],{},"axiomData",": Remove example token and insert your own. ",[2417,18662,18214],{},[1572,18664,18665,18667],{},[1653,18666,18201],{},": Edit the field names in \"recordsToSend\", to match your table.",[2329,18669,18671],{"className":2366,"code":18670,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Airtable API endpoint URL\nconst AirtableBaseId = '*******'; \u002F\u002F Add base ID\nconst AirtableTableName = '************'; \u002F\u002F Add table name\nconst AirtableAccessToken = '**********'; \u002F\u002F Add personal access token\nconst AirtableUrl = `https:\u002F\u002Fapi.Airtable.com\u002Fv0\u002F${AirtableBaseId}\u002F${AirtableTableName}`;\n\n\u002F\u002F Replace the token used in this variable\nconst axiomData = [scrape-data];\n\n\u002F\u002F Data you want to send (adjust according to your Airtable fields)\nconst recordsToSend = axiomData.map((row) => {\n  return {\n    fields: {\n      \"Customer Name\": row[0],\n      \"Email Address\": row[1],\n      \"Phone Number\": row[2],\n      \"Customer ID\": row[3]\n    }\n  };\n});\n\n\u002F\u002F Send data to create multiple records in Airtable.\nasync function sendToAirtable(records) {\n  try {\n    const response = await fetch(AirtableUrl, {\n      method: 'POST',\n      headers: {\n        'Authorization': `Bearer ${AirtableAccessToken}`,\n        'Content-Type': 'application\u002Fjson'\n      },\n      body: JSON.stringify({\n        records: records \u002F\u002F Send multiple records in one request\n      })\n    });\n\n    if (response.ok) {\n      const jsonResponse = await response.json();\n      console.log('Records added successfully:', jsonResponse);\n    } else {\n      console.error('Error adding records:', response.statusText);\n    }\n  } catch (error) {\n    console.error('Error with request:', error);\n  }\n}\n\n\u002F\u002F Call the function to send the records to Airtable\nsendToAirtable(recordsToSend);\n\n",[1712,18672,18673,18677,18692,18706,18720,18740,18744,18749,18767,18771,18775,18799,18806,18811,18825,18836,18847,18860,18864,18868,18873,18877,18882,18897,18903,18917,18925,18929,18943,18951,18955,18967,18975,18980,18984,18988,18994,19010,19023,19031,19044,19048,19056,19068,19072,19076,19080,19085],{"__ignoreMap":1614},[2337,18674,18675],{"class":2339,"line":2340},[2337,18676,18224],{"class":4521},[2337,18678,18679,18681,18683,18685,18687,18689],{"class":2339,"line":1618},[2337,18680,3918],{"class":3592},[2337,18682,18231],{"class":3488},[2337,18684,3924],{"class":3592},[2337,18686,18236],{"class":2347},[2337,18688,11002],{"class":2378},[2337,18690,18691],{"class":4521},"\u002F\u002F Add base ID\n",[2337,18693,18694,18696,18698,18700,18702,18704],{"class":2339,"line":1615},[2337,18695,3918],{"class":3592},[2337,18697,18248],{"class":3488},[2337,18699,3924],{"class":3592},[2337,18701,18253],{"class":2347},[2337,18703,11002],{"class":2378},[2337,18705,18258],{"class":4521},[2337,18707,18708,18710,18712,18714,18716,18718],{"class":2339,"line":3501},[2337,18709,3918],{"class":3592},[2337,18711,18265],{"class":3488},[2337,18713,3924],{"class":3592},[2337,18715,18270],{"class":2347},[2337,18717,11002],{"class":2378},[2337,18719,18275],{"class":4521},[2337,18721,18722,18724,18726,18728,18730,18732,18734,18736,18738],{"class":2339,"line":3507},[2337,18723,3918],{"class":3592},[2337,18725,18282],{"class":3488},[2337,18727,3924],{"class":3592},[2337,18729,18287],{"class":2347},[2337,18731,18290],{"class":2378},[2337,18733,4365],{"class":2347},[2337,18735,18295],{"class":2378},[2337,18737,4051],{"class":2347},[2337,18739,3930],{"class":2378},[2337,18741,18742],{"class":2339,"line":3579},[2337,18743,3504],{"emptyLinePlaceholder":1627},[2337,18745,18746],{"class":2339,"line":3658},[2337,18747,18748],{"class":4521},"\u002F\u002F Replace the token used in this variable\n",[2337,18750,18751,18753,18756,18758,18761,18764],{"class":2339,"line":3664},[2337,18752,3918],{"class":3592},[2337,18754,18755],{"class":3488}," axiomData",[2337,18757,3924],{"class":3592},[2337,18759,18760],{"class":2378}," [scrape",[2337,18762,18763],{"class":3592},"-",[2337,18765,18766],{"class":2378},"data];\n",[2337,18768,18769],{"class":2339,"line":3670},[2337,18770,3504],{"emptyLinePlaceholder":1627},[2337,18772,18773],{"class":2339,"line":3693},[2337,18774,18308],{"class":4521},[2337,18776,18777,18779,18782,18784,18787,18789,18791,18793,18795,18797],{"class":2339,"line":3746},[2337,18778,3918],{"class":3592},[2337,18780,18781],{"class":3488}," recordsToSend",[2337,18783,3924],{"class":3592},[2337,18785,18786],{"class":2378}," axiomData.",[2337,18788,4799],{"class":3979},[2337,18790,6611],{"class":2378},[2337,18792,4804],{"class":2343},[2337,18794,6617],{"class":2378},[2337,18796,3991],{"class":3592},[2337,18798,3994],{"class":2378},[2337,18800,18801,18804],{"class":2339,"line":3760},[2337,18802,18803],{"class":3592},"  return",[2337,18805,3994],{"class":2378},[2337,18807,18808],{"class":2339,"line":3136},[2337,18809,18810],{"class":2378},"    fields: {\n",[2337,18812,18813,18816,18819,18822],{"class":2339,"line":3784},[2337,18814,18815],{"class":2347},"      \"Customer Name\"",[2337,18817,18818],{"class":2378},": row[",[2337,18820,18821],{"class":3488},"0",[2337,18823,18824],{"class":2378},"],\n",[2337,18826,18827,18830,18832,18834],{"class":2339,"line":3793},[2337,18828,18829],{"class":2347},"      \"Email Address\"",[2337,18831,18818],{"class":2378},[2337,18833,1785],{"class":3488},[2337,18835,18824],{"class":2378},[2337,18837,18838,18841,18843,18845],{"class":2339,"line":4136},[2337,18839,18840],{"class":2347},"      \"Phone Number\"",[2337,18842,18818],{"class":2378},[2337,18844,10444],{"class":3488},[2337,18846,18824],{"class":2378},[2337,18848,18849,18852,18854,18857],{"class":2339,"line":4154},[2337,18850,18851],{"class":2347},"      \"Customer ID\"",[2337,18853,18818],{"class":2378},[2337,18855,18856],{"class":3488},"3",[2337,18858,18859],{"class":2378},"]\n",[2337,18861,18862],{"class":2339,"line":4162},[2337,18863,4236],{"class":2378},[2337,18865,18866],{"class":2339,"line":4168},[2337,18867,11129],{"class":2378},[2337,18869,18870],{"class":2339,"line":4173},[2337,18871,18872],{"class":2378},"});\n",[2337,18874,18875],{"class":2339,"line":4194},[2337,18876,3504],{"emptyLinePlaceholder":1627},[2337,18878,18879],{"class":2339,"line":4206},[2337,18880,18881],{"class":4521},"\u002F\u002F Send data to create multiple records in Airtable.\n",[2337,18883,18884,18886,18888,18890,18892,18895],{"class":2339,"line":4218},[2337,18885,11709],{"class":3592},[2337,18887,18408],{"class":3592},[2337,18889,18411],{"class":3979},[2337,18891,4145],{"class":2378},[2337,18893,18894],{"class":2343},"records",[2337,18896,18418],{"class":2378},[2337,18898,18899,18901],{"class":2339,"line":4233},[2337,18900,11199],{"class":3592},[2337,18902,3994],{"class":2378},[2337,18904,18905,18907,18909,18911,18913,18915],{"class":2339,"line":4239},[2337,18906,18429],{"class":3592},[2337,18908,3699],{"class":3488},[2337,18910,3924],{"class":3592},[2337,18912,4013],{"class":3592},[2337,18914,4016],{"class":3979},[2337,18916,18440],{"class":2378},[2337,18918,18919,18921,18923],{"class":2339,"line":4245},[2337,18920,18445],{"class":2378},[2337,18922,4027],{"class":2347},[2337,18924,4030],{"class":2378},[2337,18926,18927],{"class":2339,"line":4250},[2337,18928,18454],{"class":2378},[2337,18930,18931,18933,18935,18937,18939,18941],{"class":2339,"line":6244},[2337,18932,18459],{"class":2347},[2337,18934,3601],{"class":2378},[2337,18936,18464],{"class":2347},[2337,18938,18467],{"class":2378},[2337,18940,4051],{"class":2347},[2337,18942,4030],{"class":2378},[2337,18944,18945,18947,18949],{"class":2339,"line":6249},[2337,18946,18476],{"class":2347},[2337,18948,3601],{"class":2378},[2337,18950,18481],{"class":2347},[2337,18952,18953],{"class":2339,"line":2923},[2337,18954,18486],{"class":2378},[2337,18956,18957,18959,18961,18963,18965],{"class":2339,"line":6258},[2337,18958,18491],{"class":2378},[2337,18960,11178],{"class":3488},[2337,18962,1668],{"class":2378},[2337,18964,11183],{"class":3979},[2337,18966,4082],{"class":2378},[2337,18968,18969,18972],{"class":2339,"line":6263},[2337,18970,18971],{"class":2378},"        records: records ",[2337,18973,18974],{"class":4521},"\u002F\u002F Send multiple records in one request\n",[2337,18976,18977],{"class":2339,"line":6268},[2337,18978,18979],{"class":2378},"      })\n",[2337,18981,18982],{"class":2339,"line":6273},[2337,18983,18505],{"class":2378},[2337,18985,18986],{"class":2339,"line":6278},[2337,18987,3504],{"emptyLinePlaceholder":1627},[2337,18989,18990,18992],{"class":2339,"line":6283},[2337,18991,18514],{"class":3592},[2337,18993,18517],{"class":2378},[2337,18995,18996,18998,19000,19002,19004,19006,19008],{"class":2339,"line":6289},[2337,18997,18522],{"class":3592},[2337,18999,18525],{"class":3488},[2337,19001,3924],{"class":3592},[2337,19003,4013],{"class":3592},[2337,19005,4185],{"class":2378},[2337,19007,4188],{"class":3979},[2337,19009,4191],{"class":2378},[2337,19011,19012,19014,19016,19018,19021],{"class":2339,"line":6295},[2337,19013,18540],{"class":2378},[2337,19015,4200],{"class":3979},[2337,19017,4145],{"class":2378},[2337,19019,19020],{"class":2347},"'Records added successfully:'",[2337,19022,18550],{"class":2378},[2337,19024,19025,19027,19029],{"class":2339,"line":6301},[2337,19026,4209],{"class":2378},[2337,19028,18557],{"class":3592},[2337,19030,3994],{"class":2378},[2337,19032,19033,19035,19037,19039,19042],{"class":2339,"line":6306},[2337,19034,18540],{"class":2378},[2337,19036,4142],{"class":3979},[2337,19038,4145],{"class":2378},[2337,19040,19041],{"class":2347},"'Error adding records:'",[2337,19043,18573],{"class":2378},[2337,19045,19046],{"class":2339,"line":6311},[2337,19047,4236],{"class":2378},[2337,19049,19050,19052,19054],{"class":2339,"line":6316},[2337,19051,11240],{"class":2378},[2337,19053,4212],{"class":3592},[2337,19055,4215],{"class":2378},[2337,19057,19058,19060,19062,19064,19066],{"class":2339,"line":6321},[2337,19059,18590],{"class":2378},[2337,19061,4142],{"class":3979},[2337,19063,4145],{"class":2378},[2337,19065,18597],{"class":2347},[2337,19067,4230],{"class":2378},[2337,19069,19070],{"class":2339,"line":6326},[2337,19071,11270],{"class":2378},[2337,19073,19074],{"class":2339,"line":6331},[2337,19075,4242],{"class":2378},[2337,19077,19078],{"class":2339,"line":6336},[2337,19079,3504],{"emptyLinePlaceholder":1627},[2337,19081,19082],{"class":2339,"line":6341},[2337,19083,19084],{"class":4521},"\u002F\u002F Call the function to send the records to Airtable\n",[2337,19086,19087,19089],{"class":2339,"line":3359},[2337,19088,18621],{"class":3979},[2337,19090,19091],{"class":2378},"(recordsToSend);\n",[2249,19093,19095],{"id":19094},"create-multiple-records-more-than-10","Create multiple records (more than 10)",[1566,19097],{},[1640,19099,19100],{},"To get around Airtable's API limit of 10 records per API call, you can batch your requests. Let's review how we can do this.",[1701,19102,19103],{},[2165,19104,19105,19115,19120],{},[1572,19106,19107,1844,19109,3610,19111,18193,19113,18196],{},[1653,19108,18186],{},[1653,19110,18189],{},[1653,19112,18192],{},[1653,19114,18093],{},[1572,19116,19117,19119],{},[1653,19118,18659],{},": Remove example token and insert your own.",[1572,19121,19122,19125],{},[1653,19123,19124],{},"Fields",": Edit the fields in \"recordsToSend\", to match your table.",[2329,19127,19129],{"className":2366,"code":19128,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Airtable API endpoint URL\nconst AirtableBaseId = '*******'; \u002F\u002F Add Base ID \nconst AirtableTableName = '************'; \u002F\u002F Add Table Name \nconst AirtableAccessToken = '**********'; \u002F\u002F Add Personal Access Token\nconst AirtableUrl = `https:\u002F\u002Fapi.Airtable.com\u002Fv0\u002F${AirtableBaseId}\u002F${AirtableTableName}`;\n\n\u002F\u002F Replace the token used in this variable\nconst axiomData = [scrape-data];\n\n\u002F\u002F Data you want to send (adjust according to your Airtable fields)\nconst recordsToSend = axiomData.map((row) => {\n  return {\n    fields: {\n      \"Customer Name\": row[0],\n      \"Email Address\": row[1],\n      \"Phone Number\": row[2],\n      \"Customer ID\": row[3]\n    }\n  };\n});\n\n\u002F\u002F Send data to create multiple records in Airtable.\nasync function sendToAirtable(records) {\n  try {\n    const response = await fetch(AirtableUrl, {\n      method: 'POST',\n      headers: {\n        'Authorization': `Bearer ${AirtableAccessToken}`,\n        'Content-Type': 'application\u002Fjson'\n      },\n      body: JSON.stringify({ records }) \n    });\n\n    if (response.ok) {\n      const jsonResponse = await response.json();\n      console.log('Records added successfully:', jsonResponse);\n    } else {\n      console.error('Error adding records:', response.statusText);\n    }\n  } catch (error) {\n    console.error('Error with request:', error);\n  }\n}\n\n\u002F\u002F Function to batch and send records in chunks of 10\nasync function sendInBatches(records, batchSize = 10) {\n  for (let i = 0; i \u003C records.length; i += batchSize) {\n    const batch = records.slice(i, i + batchSize); \u002F\u002F Get a batch of up to 10 records\n    console.log(`Sending batch ${Math.floor(i \u002F batchSize) + 1}`);\n    await sendToAirtable(batch); \u002F\u002F Send the batch to Airtable\n  }\n}\n\n\u002F\u002F Call the function to send the records to Airtable in batches\nsendInBatches(recordsToSend);\n",[1712,19130,19131,19135,19149,19164,19179,19199,19203,19207,19221,19225,19229,19251,19257,19261,19271,19281,19291,19301,19305,19309,19313,19317,19321,19335,19341,19355,19363,19367,19381,19389,19393,19406,19410,19414,19420,19436,19448,19456,19468,19472,19480,19492,19496,19500,19504,19509,19534,19571,19596,19637,19649,19653,19657,19661,19666],{"__ignoreMap":1614},[2337,19132,19133],{"class":2339,"line":2340},[2337,19134,18224],{"class":4521},[2337,19136,19137,19139,19141,19143,19145,19147],{"class":2339,"line":1618},[2337,19138,3918],{"class":3592},[2337,19140,18231],{"class":3488},[2337,19142,3924],{"class":3592},[2337,19144,18236],{"class":2347},[2337,19146,11002],{"class":2378},[2337,19148,18241],{"class":4521},[2337,19150,19151,19153,19155,19157,19159,19161],{"class":2339,"line":1615},[2337,19152,3918],{"class":3592},[2337,19154,18248],{"class":3488},[2337,19156,3924],{"class":3592},[2337,19158,18253],{"class":2347},[2337,19160,11002],{"class":2378},[2337,19162,19163],{"class":4521},"\u002F\u002F Add Table Name \n",[2337,19165,19166,19168,19170,19172,19174,19176],{"class":2339,"line":3501},[2337,19167,3918],{"class":3592},[2337,19169,18265],{"class":3488},[2337,19171,3924],{"class":3592},[2337,19173,18270],{"class":2347},[2337,19175,11002],{"class":2378},[2337,19177,19178],{"class":4521},"\u002F\u002F Add Personal Access Token\n",[2337,19180,19181,19183,19185,19187,19189,19191,19193,19195,19197],{"class":2339,"line":3507},[2337,19182,3918],{"class":3592},[2337,19184,18282],{"class":3488},[2337,19186,3924],{"class":3592},[2337,19188,18287],{"class":2347},[2337,19190,18290],{"class":2378},[2337,19192,4365],{"class":2347},[2337,19194,18295],{"class":2378},[2337,19196,4051],{"class":2347},[2337,19198,3930],{"class":2378},[2337,19200,19201],{"class":2339,"line":3579},[2337,19202,3504],{"emptyLinePlaceholder":1627},[2337,19204,19205],{"class":2339,"line":3658},[2337,19206,18748],{"class":4521},[2337,19208,19209,19211,19213,19215,19217,19219],{"class":2339,"line":3664},[2337,19210,3918],{"class":3592},[2337,19212,18755],{"class":3488},[2337,19214,3924],{"class":3592},[2337,19216,18760],{"class":2378},[2337,19218,18763],{"class":3592},[2337,19220,18766],{"class":2378},[2337,19222,19223],{"class":2339,"line":3670},[2337,19224,3504],{"emptyLinePlaceholder":1627},[2337,19226,19227],{"class":2339,"line":3693},[2337,19228,18308],{"class":4521},[2337,19230,19231,19233,19235,19237,19239,19241,19243,19245,19247,19249],{"class":2339,"line":3746},[2337,19232,3918],{"class":3592},[2337,19234,18781],{"class":3488},[2337,19236,3924],{"class":3592},[2337,19238,18786],{"class":2378},[2337,19240,4799],{"class":3979},[2337,19242,6611],{"class":2378},[2337,19244,4804],{"class":2343},[2337,19246,6617],{"class":2378},[2337,19248,3991],{"class":3592},[2337,19250,3994],{"class":2378},[2337,19252,19253,19255],{"class":2339,"line":3760},[2337,19254,18803],{"class":3592},[2337,19256,3994],{"class":2378},[2337,19258,19259],{"class":2339,"line":3136},[2337,19260,18810],{"class":2378},[2337,19262,19263,19265,19267,19269],{"class":2339,"line":3784},[2337,19264,18815],{"class":2347},[2337,19266,18818],{"class":2378},[2337,19268,18821],{"class":3488},[2337,19270,18824],{"class":2378},[2337,19272,19273,19275,19277,19279],{"class":2339,"line":3793},[2337,19274,18829],{"class":2347},[2337,19276,18818],{"class":2378},[2337,19278,1785],{"class":3488},[2337,19280,18824],{"class":2378},[2337,19282,19283,19285,19287,19289],{"class":2339,"line":4136},[2337,19284,18840],{"class":2347},[2337,19286,18818],{"class":2378},[2337,19288,10444],{"class":3488},[2337,19290,18824],{"class":2378},[2337,19292,19293,19295,19297,19299],{"class":2339,"line":4154},[2337,19294,18851],{"class":2347},[2337,19296,18818],{"class":2378},[2337,19298,18856],{"class":3488},[2337,19300,18859],{"class":2378},[2337,19302,19303],{"class":2339,"line":4162},[2337,19304,4236],{"class":2378},[2337,19306,19307],{"class":2339,"line":4168},[2337,19308,11129],{"class":2378},[2337,19310,19311],{"class":2339,"line":4173},[2337,19312,18872],{"class":2378},[2337,19314,19315],{"class":2339,"line":4194},[2337,19316,3504],{"emptyLinePlaceholder":1627},[2337,19318,19319],{"class":2339,"line":4206},[2337,19320,18881],{"class":4521},[2337,19322,19323,19325,19327,19329,19331,19333],{"class":2339,"line":4218},[2337,19324,11709],{"class":3592},[2337,19326,18408],{"class":3592},[2337,19328,18411],{"class":3979},[2337,19330,4145],{"class":2378},[2337,19332,18894],{"class":2343},[2337,19334,18418],{"class":2378},[2337,19336,19337,19339],{"class":2339,"line":4233},[2337,19338,11199],{"class":3592},[2337,19340,3994],{"class":2378},[2337,19342,19343,19345,19347,19349,19351,19353],{"class":2339,"line":4239},[2337,19344,18429],{"class":3592},[2337,19346,3699],{"class":3488},[2337,19348,3924],{"class":3592},[2337,19350,4013],{"class":3592},[2337,19352,4016],{"class":3979},[2337,19354,18440],{"class":2378},[2337,19356,19357,19359,19361],{"class":2339,"line":4245},[2337,19358,18445],{"class":2378},[2337,19360,4027],{"class":2347},[2337,19362,4030],{"class":2378},[2337,19364,19365],{"class":2339,"line":4250},[2337,19366,18454],{"class":2378},[2337,19368,19369,19371,19373,19375,19377,19379],{"class":2339,"line":6244},[2337,19370,18459],{"class":2347},[2337,19372,3601],{"class":2378},[2337,19374,18464],{"class":2347},[2337,19376,18467],{"class":2378},[2337,19378,4051],{"class":2347},[2337,19380,4030],{"class":2378},[2337,19382,19383,19385,19387],{"class":2339,"line":6249},[2337,19384,18476],{"class":2347},[2337,19386,3601],{"class":2378},[2337,19388,18481],{"class":2347},[2337,19390,19391],{"class":2339,"line":2923},[2337,19392,18486],{"class":2378},[2337,19394,19395,19397,19399,19401,19403],{"class":2339,"line":6258},[2337,19396,18491],{"class":2378},[2337,19398,11178],{"class":3488},[2337,19400,1668],{"class":2378},[2337,19402,11183],{"class":3979},[2337,19404,19405],{"class":2378},"({ records }) \n",[2337,19407,19408],{"class":2339,"line":6263},[2337,19409,18505],{"class":2378},[2337,19411,19412],{"class":2339,"line":6268},[2337,19413,3504],{"emptyLinePlaceholder":1627},[2337,19415,19416,19418],{"class":2339,"line":6273},[2337,19417,18514],{"class":3592},[2337,19419,18517],{"class":2378},[2337,19421,19422,19424,19426,19428,19430,19432,19434],{"class":2339,"line":6278},[2337,19423,18522],{"class":3592},[2337,19425,18525],{"class":3488},[2337,19427,3924],{"class":3592},[2337,19429,4013],{"class":3592},[2337,19431,4185],{"class":2378},[2337,19433,4188],{"class":3979},[2337,19435,4191],{"class":2378},[2337,19437,19438,19440,19442,19444,19446],{"class":2339,"line":6283},[2337,19439,18540],{"class":2378},[2337,19441,4200],{"class":3979},[2337,19443,4145],{"class":2378},[2337,19445,19020],{"class":2347},[2337,19447,18550],{"class":2378},[2337,19449,19450,19452,19454],{"class":2339,"line":6289},[2337,19451,4209],{"class":2378},[2337,19453,18557],{"class":3592},[2337,19455,3994],{"class":2378},[2337,19457,19458,19460,19462,19464,19466],{"class":2339,"line":6295},[2337,19459,18540],{"class":2378},[2337,19461,4142],{"class":3979},[2337,19463,4145],{"class":2378},[2337,19465,19041],{"class":2347},[2337,19467,18573],{"class":2378},[2337,19469,19470],{"class":2339,"line":6301},[2337,19471,4236],{"class":2378},[2337,19473,19474,19476,19478],{"class":2339,"line":6306},[2337,19475,11240],{"class":2378},[2337,19477,4212],{"class":3592},[2337,19479,4215],{"class":2378},[2337,19481,19482,19484,19486,19488,19490],{"class":2339,"line":6311},[2337,19483,18590],{"class":2378},[2337,19485,4142],{"class":3979},[2337,19487,4145],{"class":2378},[2337,19489,18597],{"class":2347},[2337,19491,4230],{"class":2378},[2337,19493,19494],{"class":2339,"line":6316},[2337,19495,11270],{"class":2378},[2337,19497,19498],{"class":2339,"line":6321},[2337,19499,4242],{"class":2378},[2337,19501,19502],{"class":2339,"line":6326},[2337,19503,3504],{"emptyLinePlaceholder":1627},[2337,19505,19506],{"class":2339,"line":6331},[2337,19507,19508],{"class":4521},"\u002F\u002F Function to batch and send records in chunks of 10\n",[2337,19510,19511,19513,19515,19518,19520,19522,19524,19527,19529,19532],{"class":2339,"line":6336},[2337,19512,11709],{"class":3592},[2337,19514,18408],{"class":3592},[2337,19516,19517],{"class":3979}," sendInBatches",[2337,19519,4145],{"class":2378},[2337,19521,18894],{"class":2343},[2337,19523,3610],{"class":2378},[2337,19525,19526],{"class":2343},"batchSize",[2337,19528,3924],{"class":3592},[2337,19530,19531],{"class":3488}," 10",[2337,19533,18418],{"class":2378},[2337,19535,19536,19539,19541,19543,19546,19548,19551,19554,19557,19560,19563,19565,19568],{"class":2339,"line":6341},[2337,19537,19538],{"class":3592},"  for",[2337,19540,4127],{"class":2378},[2337,19542,14060],{"class":3592},[2337,19544,19545],{"class":2378}," i ",[2337,19547,6556],{"class":3592},[2337,19549,19550],{"class":3488}," 0",[2337,19552,19553],{"class":2378},"; i ",[2337,19555,19556],{"class":3592},"\u003C",[2337,19558,19559],{"class":2378}," records.",[2337,19561,19562],{"class":3488},"length",[2337,19564,19553],{"class":2378},[2337,19566,19567],{"class":3592},"+=",[2337,19569,19570],{"class":2378}," batchSize) {\n",[2337,19572,19573,19575,19578,19580,19582,19585,19588,19590,19593],{"class":2339,"line":3359},[2337,19574,18429],{"class":3592},[2337,19576,19577],{"class":3488}," batch",[2337,19579,3924],{"class":3592},[2337,19581,19559],{"class":2378},[2337,19583,19584],{"class":3979},"slice",[2337,19586,19587],{"class":2378},"(i, i ",[2337,19589,10048],{"class":3592},[2337,19591,19592],{"class":2378}," batchSize); ",[2337,19594,19595],{"class":4521},"\u002F\u002F Get a batch of up to 10 records\n",[2337,19597,19598,19600,19602,19604,19607,19610,19612,19615,19617,19620,19623,19626,19628,19630,19633,19635],{"class":2339,"line":6350},[2337,19599,18590],{"class":2378},[2337,19601,4200],{"class":3979},[2337,19603,4145],{"class":2378},[2337,19605,19606],{"class":2347},"`Sending batch ${",[2337,19608,19609],{"class":2378},"Math",[2337,19611,1668],{"class":2347},[2337,19613,19614],{"class":3979},"floor",[2337,19616,4145],{"class":2347},[2337,19618,19619],{"class":2378},"i",[2337,19621,19622],{"class":3592}," \u002F",[2337,19624,19625],{"class":2378}," batchSize",[2337,19627,6617],{"class":2347},[2337,19629,10048],{"class":3592},[2337,19631,19632],{"class":3488}," 1",[2337,19634,4051],{"class":2347},[2337,19636,6591],{"class":2378},[2337,19638,19639,19641,19643,19646],{"class":2339,"line":6355},[2337,19640,11721],{"class":3592},[2337,19642,18411],{"class":3979},[2337,19644,19645],{"class":2378},"(batch); ",[2337,19647,19648],{"class":4521},"\u002F\u002F Send the batch to Airtable\n",[2337,19650,19651],{"class":2339,"line":6360},[2337,19652,11270],{"class":2378},[2337,19654,19655],{"class":2339,"line":6365},[2337,19656,4242],{"class":2378},[2337,19658,19659],{"class":2339,"line":6370},[2337,19660,3504],{"emptyLinePlaceholder":1627},[2337,19662,19663],{"class":2339,"line":6375},[2337,19664,19665],{"class":4521},"\u002F\u002F Call the function to send the records to Airtable in batches\n",[2337,19667,19668,19671],{"class":2339,"line":2657},[2337,19669,19670],{"class":3979},"sendInBatches",[2337,19672,19091],{"class":2378},[1561,19674,2386],{"id":2385},[1640,19676,19677],{},"If you encounter problems, check the console log in the runtime browser to view the error message. It may also be worth checking that the credentials have been added correctly.",[2165,19679,19680,19683,19686],{},[1572,19681,19682],{},"Check for console logs in the runtime browser.",[1572,19684,19685],{},"Ensure your credentials are correct.",[1572,19687,19688],{},"Make sure all field names match exactly with your Airtable table.",[1561,19690,2406],{"id":2405},[1640,19692,19693],{},"You can easily send a single record from axiom.ai to Airtable using javascript and Airtable's rest api. Adjust the data format to match the fields in your Airtable table, and the bot will automatically push the collected data. To send multiple records, you will need a different format for the post request. Airtable also limits records being added to 10 rows only; to get around that, you can use the batching method found in the guide.",[2421,19695,19696],{},"html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":19698},[19699,19700,19706,19707],{"id":2155,"depth":1618,"text":2156},{"id":18136,"depth":1618,"text":18137,"children":19701},[19702,19703,19704,19705],{"id":18145,"depth":1615,"text":18146},{"id":18160,"depth":1615,"text":18161},{"id":18627,"depth":1615,"text":18628},{"id":19094,"depth":1615,"text":19095},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to post scraped data to Airtable and create new records, using axiom.ai's write JavaScript step and webhooks.",{"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":19710,"platfrom":19712,"video":19714},[2439,2440,19711],"intergration",[19713],"Airtable","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FM_OVeykbYro?rel=0&amp;",{"title":18006,"description":19708},"guides\u002Fpost-data-to-airtable","0XXXlDEEgXk3aSaUN6tndhALgeN-loYvo4xUMfvE5V4",{"id":19719,"title":19720,"body":19721,"date":1628,"description":19900,"extension":1621,"meta":19901,"navigation":1627,"order":1628,"path":19905,"seo":19906,"stem":19907,"__hash__":19908},"guides\u002Fguides\u002Fpost-data-to-make.md","How to trigger and post data to Make with an axiom.ai automation",{"type":1555,"value":19722,"toc":19891},[19723,19725,19728,19734,19736,19738,19740,19760,19764,19767,19771,19793,19797,19816,19820,19826,19843,19847,19850,19853,19857,19864,19866,19872,19882,19886,19888],[1566,19724],{},[1640,19726,19727],{},"You can connect your browser automation to Make and pass data, including scraped data, to any of your scenarios. Connecting the browser to your API couldn’t be simpler. This guide will walk you through using axiom.ai's \"Trigger webhook\" step to post data to Make and setting up a scenario to receive the data.",[1640,19729,19730,19731,13800],{},"This guide assumes you have a Make account and have created your axiom.ai automation. To learn more about our Make integration, see our ",[1942,19732,19733],{"href":764},"working with Make",[1558,19735],{},[1561,19737,2156],{"id":2155},[1640,19739,2161],{},[1701,19741,19742],{},[2165,19743,19744,19750,19754],{},[1572,19745,19746,2172,19748,1668],{},[1653,19747,2171],{},[1942,19749,2176],{"href":2175},[1572,19751,19752,2182],{},[1653,19753,2181],{},[1572,19755,19756,2188,19758,1668],{},[1653,19757,2187],{},[1712,19759,2191],{},[1561,19761,19763],{"id":19762},"trigger-and-send-data-to-make-with-an-axiomai-automation","Trigger and send data to Make with an axiom.ai automation",[1640,19765,19766],{},"Open Make, and either edit or create a new scenario to get started, then follow the steps below.",[2202,19768],{"src":19769,"alt":19770},"\u002Fdocs\u002Fguides\u002Fmake-find-webhooks.jpg","find the webhook app in Make",[1701,19772,19773],{},[2165,19774,19775,19781,19787],{},[1572,19776,19777,19780],{},[1653,19778,19779],{},"Log into Make",": Click on \"Scenarios\", and open an existing or create a new scenario.",[1572,19782,19783,19786],{},[1653,19784,19785],{},"If the App selector is open",": Click \"Webhooks\", or click the plus button to open the app selector.",[1572,19788,19789,19792],{},[1653,19790,19791],{},"\"Triggers\"",": Select \"Custom webhook\".",[2202,19794],{"src":19795,"alt":19796},"\u002Fdocs\u002Fguides\u002Fmake-custom-webhook.jpg","select custom webhook in Make",[1701,19798,19799],{},[2165,19800,19801,19806,19811],{},[1572,19802,19803,19805],{},[1653,19804,9751],{},": Give your webhook a name or choose an existing one, then click \"Save\".",[1572,19807,19808,19810],{},[1653,19809,269],{},": \"Copy my address\" to get the webhook endpoint to add into your browser automation.",[1572,19812,19813,19815],{},[1653,19814,763],{},": Is now listening for the data and will determine the data structure automatically from the incoming data. It's time for a test run of the axiom.ai automation you created.",[2202,19817],{"src":19818,"alt":19819},"\u002Fdocs\u002Fguides\u002Fmake-copy-webhook.jpg","Listening for data webhook in Make",[1640,19821,19822,19823,19825],{},"Switching to axiom.ai, use the step finder to add the ",[1942,19824,9287],{"href":1194}," step and configure it.",[1701,19827,19828],{},[2165,19829,19830,19835],{},[1572,19831,19832,19834],{},[1653,19833,2187],{},": Paste the endpoint from Make into this field.",[1572,19836,19837,19839,19840,19842],{},[1653,19838,269],{},":  \"Insert data\" and select ",[1712,19841,1818],{}," or any data you wish to send to Make.",[2202,19844],{"src":19845,"alt":19846},"\u002Fdocs\u002Fguides\u002Faxiom-webhook-set-up.jpg","Configure the trigger webhook step and post scraped data to Make",[1561,19848,14282],{"id":19849},"use-cases",[1640,19851,19852],{},"Using Make with axiom.ai can unlock a lot of opportunities, let's drive into some use cases that you can use them for.",[2249,19854,19856],{"id":19855},"post-data-to-excel","Post data to Excel",[1640,19858,19859,19860,19863],{},"To send data to Excel, set up your automation and Make scenario as normal - follow the ",[1942,19861,19763],{"href":19862},"#trigger-and-send-data-to-make-with-an-axiomai-automation"," instructions for more information. You can make use of the \"Microsoft 365 Excel\" integration in Make.com to pass your axiom.ai data to your Excel sheet.",[1561,19865,2386],{"id":2385},[1640,19867,19868,19869,19871],{},"Now click ",[1653,19870,5441],{}," in axiom.ai and switch back to Make.",[1701,19873,19874],{},[2165,19875,19876,19879],{},[1572,19877,19878],{},"Once the axiom.ai automation has run, check in Make for the message \"successfully determined\".",[1572,19880,19881],{},"This means the data has been successfully sent.",[2202,19883],{"src":19884,"alt":19885},"\u002Fdocs\u002Fguides\u002Fmake-successfuly-determined.jpg","Successfully determined data format in Make",[1561,19887,2406],{"id":2405},[1640,19889,19890],{},"Using axiom.ai and Make allows you to connect your browser to thousands of apps via API connections. With just three steps, you can set up a basic browser scraper to send data to Scenarios in Make within minutes. This setup can be easily adapted to more complex use cases.",{"title":1614,"searchDepth":1615,"depth":1615,"links":19892},[19893,19894,19895,19898,19899],{"id":2155,"depth":1618,"text":2156},{"id":19762,"depth":1618,"text":19763},{"id":19849,"depth":1618,"text":14282,"children":19896},[19897],{"id":19855,"depth":1615,"text":19856},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to post data from axiom.ai to Make using webhooks. Follow simple, step-by-step instructions to automate workflows and connect your APIs to the browser.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":19902,"platfrom":19903,"video":19904},[2439,2440,19711],[763],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FaGyCO50Gl3s?rel=0&amp;","\u002Fguides\u002Fpost-data-to-make",{"title":19720,"description":19900},"guides\u002Fpost-data-to-make","gO96h9fAt9NsVI7JB5KYTEbaoBRrPfLKCDw7RBwsiDs",{"id":19910,"title":19911,"body":19912,"date":1628,"description":20186,"extension":1621,"meta":20187,"navigation":1627,"order":1628,"path":20192,"seo":20193,"stem":20194,"__hash__":20195},"guides\u002Fguides\u002Fpost-on-threads.md","How to automate posting on Meta’s new text message app Threads",{"type":1555,"value":19913,"toc":20181},[19914,19916,19927,19929,19932,19959,19961,19971,20171,20173],[1566,19915],{},[1640,19917,19918,19919,19923,19924,1668],{},"Threads is an app for sharing short messages, developed by the Instagram team and owned by Meta. This guide shows how to build a bot that automates posting on Threads. The bot reads a message from a Google Sheet, opens Threads in a web browser, clicks \"Create Post\", enters the message, ",[1942,19920,19922],{"href":19921},"\u002Fdocs\u002Ftutorials\u002Ffiles","uploads"," an image and posts it. This Threads automation takes only a few minutes to make using our ",[1942,19925,19926],{"href":1361},"builder",[1561,19928,12757],{"id":12756},[1640,19930,19931],{},"Create a Google Sheet add some Post to the sheet. See example below.",[8666,19933,19934,19942],{},[8669,19935,19936],{},[8672,19937,19938,19940],{},[8675,19939,5139],{},[8675,19941,12771],{},[8682,19943,19944,19952],{},[8672,19945,19946,19949],{},[8687,19947,19948],{},"Axiom can automate Instagram",[8687,19950,19951],{},"\u002FUsers\u002Fthudercloudone\u002FDesktop\u002FScreenshot 2024-04-05 at 12.20.24.png",[8672,19953,19954,19957],{},[8687,19955,19956],{},"Axiom can automate anything in the browser",[8687,19958,19951],{},[1561,19960,8707],{"id":8706},[1640,19962,12800,19963,12805,19967,8716,19969,12811],{},[1942,19964,5028],{"href":19965,"rel":19966},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb?hl=en-GB",[3850],[1653,19968,8715],{},[1653,19970,12810],{},[1701,19972,19973],{},[1569,19974,19975,20003],{},[1572,19976,19977,1710,19979,19981],{},[1653,19978,1709],{},[1712,19980,1714],{},[1569,19982,19983,19987,19991,19997],{},[1572,19984,19985,17788],{},[1712,19986,1721],{},[1572,19988,19989,9539],{},[1712,19990,1727],{},[1572,19992,19993,1782,19995,1668],{},[1712,19994,8756],{},[1712,19996,8760],{},[1572,19998,19999,1782,20001,1668],{},[1712,20000,6853],{},[1712,20002,8768],{},[1572,20004,20005,1710,20007,20009,20019],{},[1653,20006,1733],{},[1712,20008,667],{},[1569,20010,20011],{},[1572,20012,20013,1752,20015,1756,20017,1668],{},[1712,20014,2083],{},[1712,20016,1814],{},[1712,20018,1759],{},[1569,20020,20021,20037,20068,20088,20116,20141],{},[1572,20022,20023,1710,20025,20028],{},[1653,20024,1742],{},[1712,20026,20027],{},"Go to page: Threads",[1569,20029,20030],{},[1572,20031,20032,1844,20034,1668],{},[1712,20033,1751],{},[1712,20035,20036],{},"https:\u002F\u002Fwww.threads.net",[1572,20038,20039,1710,20041,20044],{},[1653,20040,1765],{},[1712,20042,20043],{},"Click element: Open post modal",[1569,20045,20046,20059],{},[1572,20047,20048,1752,20050,20052,20053,20056,20057,1668],{},[1712,20049,1775],{},[1712,20051,1775],{},", highlight the ",[1712,20054,20055],{},"Post"," button and press ",[1712,20058,5250],{},[1572,20060,20061,1782,20063,5243,20065,1668],{},[1712,20062,269],{},[1712,20064,17005],{},[1712,20066,20067],{},"\"Use element text instead of HTML\"",[1572,20069,20070,1710,20072,20075],{},[1653,20071,1790],{},[1712,20073,20074],{},"Enter text: Message",[1569,20076,20077],{},[1572,20078,20079,1752,20081,20083,20084,17335,20086,1668],{},[1712,20080,2563],{},[1712,20082,1814],{},", select column ",[1712,20085,5139],{},[1712,20087,1759],{},[1572,20089,20090,1710,20092,20095],{},[1653,20091,1833],{},[1712,20093,20094],{},"Upload a file: Add image",[1569,20096,20097,20106],{},[1572,20098,20099,1752,20101,20103,20104,1668],{},[1712,20100,1775],{},[1712,20102,1775],{},", highlight the image upload icon, click, then press ",[1712,20105,5250],{},[1572,20107,20108,1752,20110,20083,20112,17335,20114,1668],{},[1712,20109,2798],{},[1712,20111,1814],{},[1712,20113,12771],{},[1712,20115,1759],{},[1572,20117,20118,1710,20120,20122],{},[1653,20119,1861],{},[1712,20121,11520],{},[1569,20123,20124,20133],{},[1572,20125,20126,1752,20128,20052,20130,20132],{},[1712,20127,1775],{},[1712,20129,1775],{},[1712,20131,20055],{}," button again and click.",[1572,20134,20135,1782,20137,5243,20139,1668],{},[1712,20136,269],{},[1712,20138,17005],{},[1712,20140,20067],{},[1572,20142,20143,1710,20145,20147],{},[1653,20144,1898],{},[1712,20146,1901],{},[1569,20148,20149,20154,20159,20165],{},[1572,20150,20151,20153],{},[1712,20152,1721],{},": Search for and select the same Google Sheet.",[1572,20155,20156,20158],{},[1712,20157,1727],{},": Choose the same tab or leave blank.",[1572,20160,20161,1782,20163,1668],{},[1712,20162,13043],{},[1712,20164,1785],{},[1572,20166,20167,1782,20169,1668],{},[1712,20168,13051],{},[1712,20170,1785],{},[1561,20172,2406],{"id":2405},[1640,20174,20175,20176,20180],{},"In just a few steps, anyone can create an automation that reads data from a Google Sheet, opens a webpage, and inputs a message into Meta's Threads app without writing any code. This template works on the desktop automation runner, We can swap the \"Upload a file\" step for the ",[1942,20177,20179],{"href":20178},"\u002Fdocs\u002Ftutorials\u002Ffiles\u002Fupload-cloud","‘Upload a file from Google Drive’"," to run in the cloud.",{"title":1614,"searchDepth":1615,"depth":1615,"links":20182},[20183,20184,20185],{"id":12756,"depth":1618,"text":12757},{"id":8706,"depth":1618,"text":8707},{"id":2405,"depth":1618,"text":2406},"Learn how to automate sending posts on threads with this step by step guide for creating a browser bot.",{"type":2126,"format":1701,"intent_type":2658,"intent":2659,"tags":20188,"platfrom":20189},[2925,13085],[20190,20191],"Threads","Meta","\u002Fguides\u002Fpost-on-threads",{"title":19911,"description":20186},"guides\u002Fpost-on-threads","h95_A5cQ2vTqdpbD2T-NNzBJDndx4ucPTjtaIoeALPU",{"id":20197,"title":20198,"body":20199,"date":1628,"description":20503,"extension":1621,"meta":20504,"navigation":1627,"order":1628,"path":20509,"seo":20510,"stem":20511,"__hash__":20512},"guides\u002Fguides\u002Fpower-automate.md","How to trigger axiom.ai automations using Power Automate",{"type":1555,"value":20200,"toc":20493},[20201,20203,20206,20209,20211,20213,20233,20237,20240,20244,20253,20274,20281,20323,20327,20331,20339,20369,20373,20402,20406,20413,20455,20459,20461,20464,20480,20483,20485,20488],[1566,20202],{},[1640,20204,20205],{},"Power Automate offers a powerful Windows experience to build out automations for your desktop applications. When paired with axiom.ai automations there is nothing that you can't automate in order to power up your workflows.",[1640,20207,20208],{},"This guide assumes that you already have an automation set up, want to create a trigger using Power Automate, and have an axiom.ai plan that supports webhooks.",[1561,20210,2156],{"id":2155},[1640,20212,2161],{},[1701,20214,20215],{},[2165,20216,20217,20223,20227],{},[1572,20218,20219,2172,20221,1668],{},[1653,20220,2171],{},[1942,20222,2176],{"href":2175},[1572,20224,20225,2182],{},[1653,20226,2181],{},[1572,20228,20229,2188,20231,1668],{},[1653,20230,2187],{},[1712,20232,2191],{},[1561,20234,20236],{"id":20235},"trigger-an-axiomai-automation-with-power-automate","Trigger an axiom.ai automation with Power Automate",[1640,20238,20239],{},"Learn how to trigger your axiom.ai automations with Power Automate. The methods vary depending on if you are using desktop or web so be sure to select the right instructions before continuing.",[2249,20241,20243],{"id":20242},"triggering-with-the-power-automate-desktop-app","Triggering with the Power Automate desktop app",[1640,20245,20246,20247,20252],{},"You will first need to ensure you have installed ",[1942,20248,20251],{"href":20249,"rel":20250},"https:\u002F\u002Fwww.microsoft.com\u002Fstore\u002FproductId\u002F9NFTCH6J7FHV?ocid=pdpshare",[3850],"Power Automate"," from the Microsoft Store.",[1701,20254,20255],{},[2165,20256,20257,20263,20268],{},[1572,20258,20259,20262],{},[1653,20260,20261],{},"New flow",": Open Power Automate, tap \"+ New flow\" to create a new flow.",[1572,20264,20265,20267],{},[1653,20266,2230],{},": You can add any number of steps to your flow, or use an existing flow to trigger your axiom.ai automation.",[1572,20269,20270,20273],{},[1653,20271,20272],{},"Invoke web service",": Search for the \"invoke web service\" action, add this to your flow.",[1640,20275,20276,20277,20280],{},"To configure the ",[2417,20278,20279],{},"invoke web service"," action, you'll need to enable the following:",[1701,20282,20283],{},[2165,20284,20285,20291,20297,20304,20310,20317],{},[1572,20286,20287,2188,20289,1668],{},[1653,20288,5513],{},[1712,20290,2191],{},[1572,20292,20293,1782,20295,1668],{},[1653,20294,13782],{},[1712,20296,2237],{},[1572,20298,20299,1782,20302,1668],{},[1653,20300,20301],{},"Accept",[1712,20303,10421],{},[1572,20305,20306,1782,20308,1668],{},[1653,20307,13789],{},[1712,20309,10421],{},[1572,20311,20312,20314,20315,13800],{},[1653,20313,2242],{},": This should be set to the per our ",[1942,20316,13799],{"href":8295},[1572,20318,20319,20322],{},[1653,20320,20321],{},"Encode request body",": This should be disabled.",[2202,20324],{"src":20325,"alt":20326},"\u002Fdocs\u002Fguides\u002Fpower-automate-trigger-desktop.png","set up invoke web service action in power automate",[2249,20328,20330],{"id":20329},"triggering-with-the-power-automate-web-app","Triggering with the Power Automate web app",[1640,20332,20333,20334,20338],{},"You can access ",[1942,20335,20251],{"href":20336,"rel":20337},"https:\u002F\u002Fmake.powerautomate.com\u002F",[3850]," on the web. This requires a paid subscription with Power Automate.",[1701,20340,20341],{},[2165,20342,20343,20353,20359],{},[1572,20344,20345,20348,20349,20352],{},[1653,20346,20347],{},"Create a new flow",": Open ",[1942,20350,20251],{"href":20336,"rel":20351},[3850]," on the web, create a new \"instant-\" or \"scheduled cloud flow\".",[1572,20354,20355,20358],{},[1653,20356,20357],{},"Select trigger",": Set to your desired trigger: this guide will focus on the \"manually trigger a flow\" option.",[1572,20360,20361,20364,20365,20368],{},[1653,20362,20363],{},"Add HTTP action",": Click \"new step\" and search for the ",[2417,20366,20367],{},"HTTP"," action.",[1640,20370,20276,20371,20280],{},[2417,20372,20367],{},[1701,20374,20375],{},[2165,20376,20377,20383,20389,20396],{},[1572,20378,20379,2188,20381,1668],{},[1653,20380,5513],{},[1712,20382,2191],{},[1572,20384,20385,1782,20387,1668],{},[1653,20386,13782],{},[1712,20388,2237],{},[1572,20390,20391,1782,20393,1668],{},[1653,20392,16025],{},[1712,20394,20395],{},"Content-Type: application\u002Fjson",[1572,20397,20398,20314,20400,13800],{},[1653,20399,2242],{},[1942,20401,13799],{"href":8295},[1561,20403,20405],{"id":20404},"trigger-a-power-automate-flow-with-an-axiomai-automation","Trigger a Power Automate flow with an axiom.ai automation",[1640,20407,20408,20409,20412],{},"This guide is only applicable to ",[1942,20410,20251],{"href":20336,"rel":20411},[3850]," on the web. Power Automate's desktop app currently does not support triggers via webhook.",[1701,20414,20415],{},[2165,20416,20417,20424,20429,20438,20444,20450],{},[1572,20418,20419,20348,20421,20352],{},[1653,20420,20347],{},[1942,20422,20251],{"href":20336,"rel":20423},[3850],[1572,20425,20426,20428],{},[1653,20427,20357],{},": Set your trigger to \"when a HTTP request is received\".",[1572,20430,20431,20433,20434,20437],{},[1653,20432,2230],{},": Set the \"when a HTTP request is received\" action to allow for triggering from \"anyone\". ",[2417,20435,20436],{},"Note: consider your organisations security needs before enabling this",". Optionally, you can set a \"request body JSON schema\".",[1572,20439,20440,20443],{},[1653,20441,20442],{},"Save & get URL",": Save your flow to generate the webhook URL, save this for later: this will be unique for your flow.",[1572,20445,20446,20449],{},[1653,20447,20448],{},"Open your axiom.ai automation",": Head back into axiom.ai and open the automation you'd like to use to trigger your Power Automate flow from.",[1572,20451,20452,20454],{},[1653,20453,13850],{},": Add a \"trigger a webhook\" step to your automation, using the webhook URL provided by Power Automate. You can also send a payload based on the payload schema set up in Power Automate.",[2202,20456],{"src":20457,"alt":20458},"\u002Fdocs\u002Fguides\u002Fpower-automate-trigger-a-webhook.jpg","set up trigger a wehook step in axiom.ai",[1561,20460,2386],{"id":2385},[1640,20462,20463],{},"Now that you've built out your entire workflow, you can test it!",[1701,20465,20466],{},[2165,20467,20468,20474],{},[1572,20469,20470,20473],{},[1653,20471,20472],{},"Trigger axiom.ai automation",": Open the Power Automate flow you have created to trigger your automation. Hit \"Run\".",[1572,20475,20476,20479],{},[1653,20477,20478],{},"Open axiom.ai",": Head into your axiom.ai extension - you may already see that your automation is running. If this has completed, you'll find the run report in the \"run reports\" section of the dashboard.",[1640,20481,20482],{},"If you find that the automation has not run, and is not present in the \"run reports\", this would mean that the automation has failed to start. Review your Power Automation flow for any error messages that may have been raised.",[1561,20484,2406],{"id":2405},[1640,20486,20487],{},"Being able to trigger axiom.ai automations with Power Automate flows, and being able to trigger Power Automate flows with axiom.ai automations, offers a huge range of possiblilities for organisations to power up their workflows.",[1640,20489,20490],{},[2417,20491,20492],{},"Information valid as of 22nd October 2024..",{"title":1614,"searchDepth":1615,"depth":1615,"links":20494},[20495,20496,20500,20501,20502],{"id":2155,"depth":1618,"text":2156},{"id":20235,"depth":1618,"text":20236,"children":20497},[20498,20499],{"id":20242,"depth":1615,"text":20243},{"id":20329,"depth":1615,"text":20330},{"id":20404,"depth":1618,"text":20405},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Use Power Automate to trigger your axiom.ai automations and use axiom.ai automations to trigger your flows.",{"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":20505,"platfrom":20506},[2439,2440,19711],[20507,20508],"power automate","microsoft","\u002Fguides\u002Fpower-automate",{"title":20198,"description":20503},"guides\u002Fpower-automate","QNsoS6BeB0dqhrICsXZWn0mm4ZpjhILTcIgP61Pup0c",{"id":20514,"title":20515,"body":20516,"date":20797,"description":20798,"extension":1621,"meta":20799,"navigation":1627,"order":1628,"path":20805,"seo":20806,"stem":20807,"__hash__":20808},"guides\u002Fguides\u002Fsales-navigator-connect.md","How to automate your lead connections on LinkedIn Sales Navigator",{"type":1555,"value":20517,"toc":20790},[20518,20520,20534,20536,20538,20540,20544,20549,20554,20556,20560,20658,20662,20669,20671,20675,20786],[1566,20519],{},[1640,20521,16215,20522,20525,20526,20529,20530,20533],{},[1653,20523,20524],{},"Saved list of leads",", extracting their profile links and names. It then opens each profile link in Chrome, clicks on the menu option, clicks  ",[1653,20527,20528],{},"Connect"," and enters a customized message for each lead using their name. Finally, it clicks  ",[1653,20531,20532],{},"Send invitation",". This process ensures that a personalized message is sent iteratively to each lead when connecting.",[1558,20535],{},[1561,20537,16225],{"id":16224},[1640,20539,16228],{},[1561,20541,20543],{"id":20542},"install-the-sales-navigator-messenger-connection-bot","Install the Sales Navigator Messenger Connection bot",[1640,20545,16235,20546,16239],{},[1653,20547,20548],{},"Install Chrome Extension",[1640,20550,1686,20551,1668],{},[1653,20552,20553],{},"Start",[1640,20555,1692],{},[1561,20557,20559],{"id":20558},"configure-your-sales-navigator-messenger-connection-steps","Configure your Sales Navigator Messenger Connection steps",[1701,20561,20562,20656],{},[1569,20563,20564,20582],{},[1572,20565,20566,1710,20568,20570],{},[1653,20567,1709],{},[1712,20569,14900],{},[1569,20571,20572,20577],{},[1572,20573,20574,20576],{},[1712,20575,5513],{},": Paste your \"Saved list of leads\" URL.",[1572,20578,20579,20581],{},[1712,20580,1781],{},": Set how many leads to connect and message.",[1572,20583,20584,1710,20586,20588],{},[1653,20585,1733],{},[1712,20587,667],{},[1569,20589,20590,20598,20606,20614,20621,20629,20642,20649],{},[1572,20591,20592,1710,20594,20597],{},[1653,20593,1742],{},[1712,20595,20596],{},"Go to page^",": Navigates to each lead’s profile.",[1572,20599,20600,1710,20602,20605],{},[1653,20601,1765],{},[1712,20603,20604],{},"Split name into columns^",": Extracts first name.",[1572,20607,20608,1710,20610,20613],{},[1653,20609,1790],{},[1712,20611,20612],{},"Click Element^",": Clicks menu button.",[1572,20615,20616,1710,20618,20620],{},[1653,20617,1833],{},[1712,20619,20612],{},": Clicks \"Connect\" button.",[1572,20622,20623,1710,20625,20628],{},[1653,20624,1861],{},[1712,20626,20627],{},"Wait^",": Pauses before next step.",[1572,20630,20631,1710,20633,20635],{},[1653,20632,1898],{},[1712,20634,8004],{},[1569,20636,20637],{},[1572,20638,20639,20641],{},[1712,20640,2563],{},": Enter the message to send.",[1572,20643,20644,1710,20646,20648],{},[1653,20645,2812],{},[1712,20647,20612],{},": Clicks \"Send invitation\" button.",[1572,20650,20651,1710,20653,20655],{},[1653,20652,14464],{},[1712,20654,20627],{},": Waits for the request to be sent.",[1640,20657,2593],{},[1561,20659,20661],{"id":20660},"run-your-sales-navigator-messenger-connection-bot","Run your Sales Navigator Messenger Connection bot",[1640,20663,20664,20665,20668],{},"To test the Sales Navigator Messenger Connection bot, disable ",[1712,20666,20667],{},"Step 2.8: Press Key(s)"," to prevent sending messages.",[1561,20670,1398],{"id":1949},[1640,20672,2618,20673,1668],{},[1942,20674,2603],{"href":638},[1701,20676,20677],{},[1569,20678,20679,20688,20704,20715,20728,20742,20755,20766,20773],{},[1572,20680,20681,20683,20685,20686,2838],{},[1653,20682,11923],{},[1963,20684],{},"\nEnsure you have set filters in Apollo, then copy the full filtered search URL into the ",[1712,20687,1043],{},[1572,20689,20690,20693,20695,20696,20698,20699,11943,20701,1668],{},[1653,20691,20692],{},"Select button not working?",[1963,20694],{},"\nIn the ",[1712,20697,5230],{}," step, use the custom selector ",[1712,20700,11942],{},[1942,20702,20703],{"href":1383},"Learn more",[1572,20705,20706,20709,20711,20712,20714],{},[1653,20707,20708],{},"'Select this page' not clicked?",[1963,20710],{},"\nUse the ",[1712,20713,11960],{}," option in the selector tool to target \"Select this page\".",[1572,20716,20717,20720,20722,20723,20725,20726,1668],{},[1653,20718,20719],{},"Save People button not working?",[1963,20721],{},"\nReselect the 'Save' button in the ",[1712,20724,5230],{}," step or try using ",[1712,20727,11960],{},[1572,20729,20730,20732,20734,20735,20737,20738,11943,20740,1668],{},[1653,20731,11979],{},[1963,20733],{},"\nUse this custom selector in the ",[1712,20736,5230],{}," step: ",[1712,20739,11988],{},[1942,20741,20703],{"href":1391},[1572,20743,20744,20747,20749,20750,20752,20753,2838],{},[1653,20745,20746],{},"Save keystroke not working?",[1963,20748],{},"\nRe-record the ",[1712,20751,12002],{}," keystroke in the ",[1712,20754,6931],{},[1572,20756,20757,20760,20762,20763,20765],{},[1653,20758,20759],{},"Save happens too fast?",[1963,20761],{},"\nIncrease the wait time in the ",[1712,20764,349],{}," step to ensure save completes.",[1572,20767,20768,20770,20772],{},[1653,20769,12019],{},[1963,20771],{},"\nReselect the \"Next\" button at the bottom of the table.",[1572,20774,20775,20778,20780,20781,20783,20784,1668],{},[1653,20776,20777],{},"Jump goes to the wrong step?",[1963,20779],{},"\nSet the ",[1712,20782,1070],{}," to return to ",[1712,20785,2518],{},[1640,20787,2101,20788],{},[1942,20789,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":20791},[20792,20793,20794,20795,20796],{"id":16224,"depth":1618,"text":16225},{"id":20542,"depth":1618,"text":20543},{"id":20558,"depth":1618,"text":20559},{"id":20660,"depth":1618,"text":20661},{"id":1949,"depth":1618,"text":1398},"2024-01-07","Learn how to automate LinkedIn Sales Navigator lead connections and personalized messaging using axiom.ai. This guide covers scraping leads, configuring connection steps, and sending custom messages at scale.",{"read":3134,"level":2123,"video":20800,"templateId":4168,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":20801,"platfrom":20803},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FOK6te1y9biM",[13085,20802,2662,2663],"connect",[16498,20804],"Sale Navigator","\u002Fguides\u002Fsales-navigator-connect",{"title":20515,"description":20798},"guides\u002Fsales-navigator-connect","mgHNdbRiUVSON9pSGTXlf-OscbCyDHS8q0WoGSdy_0I",{"id":20810,"title":20811,"body":20812,"date":21109,"description":21110,"extension":1621,"meta":21111,"navigation":1627,"order":1628,"path":21117,"seo":21118,"stem":21119,"__hash__":21120},"guides\u002Fguides\u002Fscrape-amazon.md","How to Scrape Amazon for Product Data (Fast and Easy)",{"type":1555,"value":20813,"toc":21101},[20814,20816,20819,20821,20823,20832,20836,20843,20847,20849,20853,20987,20991,20993,20995,20999,21001,21003,21079],[1566,20815],{},[1640,20817,20818],{},"This Amazon scraper template pulls data from Amazon to a Google Sheet. It cycles through Amazon product links in the sheet, extracts data, and updates the sheet. After processing, it deletes each link. Configurartion takes minutes.",[1558,20820],{},[1561,20822,1648],{"id":1647},[1640,20824,1651,20825,20827,20828,20831],{},[1653,20826,1655],{},", presuming you already have an account. Name your sheet something like ",[1653,20829,20830],{},"\"Amazon Scraper\""," and set up a tab called 'Amazon product links\"**. Add another tab called 'Data'.",[1561,20833,20835],{"id":20834},"install-the-amazon-scraper","Install the Amazon Scraper",[1640,20837,20838,20839,1679,20841,1683],{},"To install this Amazon scraper click ",[1653,20840,1678],{},[1653,20842,1682],{},[1640,20844,1686,20845,1668],{},[1653,20846,1689],{},[1640,20848,1692],{},[1561,20850,20852],{"id":20851},"configure-your-amazon-scraper-in-minutes","Configure your Amazon scraper in minutes",[1701,20854,20855],{},[1569,20856,20857,20875],{},[1572,20858,20859,1710,20861,20863],{},[1653,20860,1968],{},[1712,20862,1714],{},[1569,20864,20865,20869],{},[1572,20866,20867,1722],{},[1712,20868,1721],{},[1572,20870,20871,7494,20873,1668],{},[1712,20872,1727],{},[1712,20874,7497],{},[1572,20876,20877,1710,20879,20881],{},[1653,20878,2518],{},[1712,20880,667],{},[1569,20882,20883,20899,20910,20931,20959],{},[1572,20884,20885,1710,20887,20889],{},[1653,20886,2527],{},[1712,20888,1043],{},[1569,20890,20891],{},[1572,20892,20893,1752,20895,1756,20897,7520],{},[1712,20894,1751],{},[1712,20896,1755],{},[1712,20898,1759],{},[1572,20900,20901,1710,20903,20905],{},[1653,20902,2545],{},[1712,20904,14946],{},[1569,20906,20907],{},[1572,20908,20909],{},"No change required.",[1572,20911,20912,1710,20914,20916],{},[1653,20913,2553],{},[1712,20915,1768],{},[1569,20917,20918,20926],{},[1572,20919,20920,3601,20922,20925],{},[1712,20921,1775],{},[1942,20923,20924],{"href":1387},"Point and click"," to select the data you wish to scrape.",[1572,20927,20928,20930],{},[1712,20929,1781],{},": Set to match the number of columns of data you selected to scrape.",[1572,20932,20933,1710,20935,20937],{},[1653,20934,2569],{},[1712,20936,4900],{},[1569,20938,20939,20943,20947,20953],{},[1572,20940,20941,1722],{},[1712,20942,1721],{},[1572,20944,20945,1875],{},[1712,20946,1727],{},[1572,20948,20949,1881,20951,1668],{},[1712,20950,1880],{},[1712,20952,1818],{},[1572,20954,20955,1782,20957,1668],{},[1712,20956,1889],{},[1712,20958,7597],{},[1572,20960,20961,1710,20963,20965],{},[1653,20962,2577],{},[1712,20964,1901],{},[1569,20966,20967,20971,20975,20981],{},[1572,20968,20969,1722],{},[1712,20970,1721],{},[1572,20972,20973,1912],{},[1712,20974,1727],{},[1572,20976,20977,1782,20979,1668],{},[1712,20978,1917],{},[1712,20980,1785],{},[1572,20982,20983,1782,20985,1668],{},[1712,20984,1924],{},[1712,20986,1785],{},[1561,20988,20990],{"id":20989},"run-your-amazon-scraper","Run your Amazon scraper",[1640,20992,1933],{},[1561,20994,1937],{"id":1936},[1640,20996,1940,20997,1946],{},[1942,20998,1945],{"href":1944},[1561,21000,1398],{"id":1949},[1640,21002,1952],{},[1701,21004,21005],{},[1569,21006,21007,21022,21034,21047,21058,21071],{},[1572,21008,21009,21011,1965,21013,1969,21016,21018,21019,21021],{},[1653,21010,1961],{},[1963,21012],{},[1712,21014,21015],{},"Step 1.0 – Read data from a Google Sheet",[1712,21017,1972],{},". For example, ",[1712,21020,3329],{}," will scrape 100 rows.",[1572,21023,21024,21026,1965,21028,21031,21032,1668],{},[1653,21025,1982],{},[1963,21027],{},[1712,21029,21030],{},"Step 2.3 – Get data from bot's current page",", try reselecting or using ",[1942,21033,9069],{"href":1383},[1572,21035,21036,21039,2011,21041,2015,21043,2019,21045,1668],{},[1653,21037,21038],{},"Slow running scraper?",[1963,21040],{},[1712,21042,2014],{},[1712,21044,2018],{},[1712,21046,1785],{},[1572,21048,21049,21052,21054,21055,21057],{},[1653,21050,21051],{},"Want to speed the scraper up?",[1963,21053],{},"\nSet ",[1712,21056,1781],{}," to match the number of columns you selected to scrape.",[1572,21059,21060,21062,1965,21064,2062,21067,2084,21069,1668],{},[1653,21061,2077],{},[1963,21063],{},[1712,21065,21066],{},"Step 2.4 – Write Data to a Google Sheet",[1712,21068,2083],{},[1712,21070,1818],{},[1572,21072,21073,21075,2094,21077,2098],{},[1653,21074,2091],{},[1963,21076],{},[1712,21078,2097],{},[1640,21080,2101,21081,21083,21084,4888,21088,21092,21093,21096,21097],{},[1942,21082,2104],{"href":82},"\nLooking to ",[1942,21085,21087],{"href":21086},"\u002Fblog\u002Fscrape-amazon-asins","scrape ASINs",[1942,21089,21091],{"href":21090},"\u002Fblog\u002Famazon-posts","automate Amazon posts"," follow these ",[1942,21094,10481],{"href":21095},"\u002Fblog",". Read this link If you want to ",[1942,21098,21100],{"href":21099},"\u002Fblog\u002Fhow-to-scrape-product-details-from-amazon-books","scrape Amazon books.",{"title":1614,"searchDepth":1615,"depth":1615,"links":21102},[21103,21104,21105,21106,21107,21108],{"id":1647,"depth":1618,"text":1648},{"id":20834,"depth":1618,"text":20835},{"id":20851,"depth":1618,"text":20852},{"id":20989,"depth":1618,"text":20990},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2023-01-20","Learn how to scrape Amazon product data into Google Sheets using axiom.ai's no-code automation tool. This guide covers setting up, configuring, and running an Amazon scraper for efficient data extraction.",{"pinned":1627,"read":9098,"level":2123,"video":21112,"templateId":6350,"type":2126,"format":2127,"intent_type":2658,"intent":5613,"tags":21113,"platfrom":21115},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FqDFksZ4GLG0",[2132,21114],"google sheet",[21116],"Amazon","\u002Fguides\u002Fscrape-amazon",{"title":20811,"description":21110},"guides\u002Fscrape-amazon","VdVhD1jorL94z-t9X2ZmOBybBKbpeflNOxF6cesCxIo",{"id":21122,"title":21123,"body":21124,"date":1628,"description":21385,"extension":1621,"meta":21386,"navigation":1627,"order":1628,"path":21390,"seo":21391,"stem":21392,"__hash__":21393},"guides\u002Fguides\u002Fscrape-html-extract-data-with-ai.md","How to extract data from HTML with an AI",{"type":1555,"value":21125,"toc":21379},[21126,21128,21142,21144,21150,21152,21155,21186,21190,21369,21371,21373],[1566,21127],{},[1640,21129,21130,21131,21133,21134,21137,21138,21141],{},"Learn how simple it is to create a web scraper that loops through URLs in a Google Sheets, scrapes the HTML, and then uses ",[1942,21132,739],{"href":740}," to extract data—all by combining just a few steps and completely bypassing the need for CSS selectors. get started quickly with this ",[1942,21135,21136],{"href":7726},"ChatGPT web scraper template."," Visit these pages to learn more about getting started with ",[1942,21139,21140],{"href":619},"extracting data"," and using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder A ChatGPT subscription is required to run this bot.",[1561,21143,8707],{"id":8706},[1640,21145,8712,21146,8716,21148,12811],{},[1653,21147,8715],{},[1653,21149,8719],{},[1561,21151,8659],{"id":8658},[1640,21153,21154],{},"Separate your URLs row by row in the same column.",[8666,21156,21157,21165],{},[8669,21158,21159],{},[8672,21160,21161,21163],{},[8675,21162,8677],{},[8675,21164,8680],{},[8682,21166,21167,21174,21180],{},[8672,21168,21169,21172],{},[8687,21170,21171],{},"Insert your URLs like this",[8687,21173,13444],{},[8672,21175,21176,21178],{},[8687,21177,21171],{},[8687,21179,13444],{},[8672,21181,21182,21184],{},[8687,21183,21171],{},[8687,21185,13444],{},[1561,21187,21189],{"id":21188},"create-your-bot","Create your bot",[1701,21191,21192],{},[1569,21193,21194,21222,21240,21256,21281,21307,21340],{},[1572,21195,21196,1710,21198,21200],{},[1653,21197,1709],{},[1712,21199,1714],{},[1569,21201,21202,21206,21210,21216],{},[1572,21203,21204,1722],{},[1712,21205,1721],{},[1572,21207,21208,9539],{},[1712,21209,1727],{},[1572,21211,21212,1782,21214,1668],{},[1712,21213,8756],{},[1712,21215,8760],{},[1572,21217,21218,1782,21220,1668],{},[1712,21219,6853],{},[1712,21221,8768],{},[1572,21223,21224,1710,21226,21228],{},[1653,21225,1733],{},[1712,21227,667],{},[1569,21229,21230],{},[1572,21231,21232,1752,21235,21237,21238,1668],{},[1712,21233,21234],{},"Loop source",[1712,21236,2613],{},", then select ",[1712,21239,1759],{},[1572,21241,21242,1710,21244,21246],{},[1653,21243,1742],{},[1712,21245,1043],{},[1569,21247,21248],{},[1572,21249,21250,1752,21252,1756,21254,1668],{},[1712,21251,1751],{},[1712,21253,2613],{},[1712,21255,1759],{},[1572,21257,21258,1710,21260,21262],{},[1653,21259,1765],{},[1712,21261,1768],{},[1569,21263,21264,21269],{},[1572,21265,21266,21268],{},[1712,21267,1775],{},": Click and choose the outermost HTML element to scrape.",[1572,21270,21271,1782,21274,21277,21278,1668],{},[1712,21272,21273],{},"Data type",[1712,21275,21276],{},"\"Select HTML\"",". See how ",[1942,21279,21280],{"href":1387},"here",[1572,21282,21283,1710,21285,21287],{},[1653,21284,1790],{},[1712,21286,7546],{},[1569,21288,21289,21293,21299],{},[1572,21290,21291,1801],{},[1712,21292,1800],{},[1572,21294,21295,1844,21297,1668],{},[1712,21296,2083],{},[1712,21298,1818],{},[1572,21300,21301,21303,21304,1668],{},[1712,21302,1824],{},": Enter the fields you want to extract, e.g. ",[1712,21305,21306],{},"\"name, email, job title\"",[1572,21308,21309,1710,21311,21313],{},[1653,21310,1833],{},[1712,21312,4900],{},[1569,21314,21315,21320,21325,21334],{},[1572,21316,21317,21319],{},[1712,21318,1721],{},": Select your Google Sheet or paste the URL.",[1572,21321,21322,21324],{},[1712,21323,1727],{},": Choose a sheet tab or leave blank for the first tab.",[1572,21326,21327,1752,21329,5084,21331,1668],{},[1712,21328,2083],{},[1712,21330,2613],{},[1712,21332,21333],{},"scraped-link-data",[1572,21335,21336,1782,21338,1668],{},[1712,21337,16734],{},[1712,21339,7597],{},[1572,21341,21342,1710,21344,21346],{},[1653,21343,1861],{},[1712,21345,1901],{},[1569,21347,21348,21353,21357,21363],{},[1572,21349,21350,21352],{},[1712,21351,1721],{},": Select the same Google Sheet.",[1572,21354,21355,20158],{},[1712,21356,1727],{},[1572,21358,21359,1782,21361,1668],{},[1712,21360,13043],{},[1712,21362,1785],{},[1572,21364,21365,1782,21367,1668],{},[1712,21366,13051],{},[1712,21368,1785],{},[1561,21370,2406],{"id":2405},[1566,21372],{},[1640,21374,21375,21376,21378],{},"In just seven steps you can create a simple web scraper to extract data from any website with ",[1942,21377,739],{"href":740}," and write it to a Google Sheet. The super cool thing is that this scraper does not rely on CSS selectors to extract data that can change, because it uses AI to extract the data. So this design pattern will work on any website.",{"title":1614,"searchDepth":1615,"depth":1615,"links":21380},[21381,21382,21383,21384],{"id":8706,"depth":1618,"text":8707},{"id":8658,"depth":1618,"text":8659},{"id":21188,"depth":1618,"text":21189},{"id":2405,"depth":1618,"text":2406},"Learn how to extract data from HTML using AI (ChatGPT) and axiom.ai. This guide covers looping through URLs in Google Sheets and automating data extraction without CSS selectors.",{"pinned":1627,"type":2126,"format":2127,"intent_type":3360,"intent":2129,"tags":21387,"platfrom":21389},[2132,2131,21388],"llm",[3363,739],"\u002Fguides\u002Fscrape-html-extract-data-with-ai",{"title":21123,"description":21385},"guides\u002Fscrape-html-extract-data-with-ai","rj8l-FN_hxQKJ2B_uZy_AxnJvFoaoTbJpMTF8Tb2THE",{"id":21395,"title":21396,"body":21397,"date":2652,"description":21652,"extension":1621,"meta":21653,"navigation":1627,"order":1628,"path":21657,"seo":21658,"stem":21659,"__hash__":21660},"guides\u002Fguides\u002Fscrape-likes-from-instagram-posts.md","How to scrape users from likes on Instagram posts",{"type":1555,"value":21398,"toc":21644},[21399,21401,21404,21406,21408,21418,21422,21430,21434,21436,21440,21566,21570,21575,21577,21581,21583,21587,21637],[1566,21400],{},[1640,21402,21403],{},"This Instagram bot scrapes post likes for user handles and profile links, limited to 100 per post by Instagram. It reads a post link from Google Sheets, opens it in Chrome, likes the post, and scrapes the user data. Afterward, it deletes the row from Google Sheets and moves on to the next post.",[1558,21405],{},[1561,21407,2463],{"id":2462},[1640,21409,21410,21411,21413,21414,21417],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut  ",[1653,21412,1655],{},", presuming you already have an account. Name your sheet something like  ",[1653,21415,21416],{},"\"Instagram likes\"",", create two tabs links and data.",[1561,21419,21421],{"id":21420},"install-the-instagram-like-scraper","Install the Instagram like scraper",[1640,21423,21424,21425,21427,21428,1683],{},"To install this Insta scraper click  ",[1653,21426,1678],{},". If you’re a new user, you’ll have to click  ",[1653,21429,1682],{},[1640,21431,1686,21432,1668],{},[1653,21433,1689],{},[1640,21435,1692],{},[1561,21437,21439],{"id":21438},"configure-your-instagram-like-scraper-in-5-easy-steps","Configure your Instagram Like scraper in 5 easy steps",[1701,21441,21442],{},[1569,21443,21444,21461],{},[1572,21445,21446,1710,21448,21450],{},[1653,21447,1709],{},[1712,21449,1714],{},[1569,21451,21452,21456],{},[1572,21453,21454,1722],{},[1712,21455,1721],{},[1572,21457,21458,21460],{},[1712,21459,1727],{},": Choose the tab with the post links in it.",[1572,21462,21463,1710,21465,21467],{},[1653,21464,1733],{},[1712,21466,667],{},[1569,21468,21469,21486,21498,21509,21534,21550],{},[1572,21470,21471,1710,21473,21475],{},[1653,21472,1742],{},[1712,21474,14397],{},[1569,21476,21477],{},[1572,21478,21479,1752,21481,1756,21483,21485],{},[1712,21480,1751],{},[1712,21482,2613],{},[1712,21484,1847],{},", then choose the column with the post links.",[1572,21487,21488,1710,21490,21493],{},[1653,21489,1765],{},[1712,21491,21492],{},"Click element: Click on like",[1569,21494,21495],{},[1572,21496,21497],{},"Preconfigured.",[1572,21499,21500,1710,21502,21505],{},[1653,21501,1790],{},[1712,21503,21504],{},"Get data from bot's current page: Scrape likes",[1569,21506,21507],{},[1572,21508,21497],{},[1572,21510,21511,1710,21513,21516],{},[1653,21512,1833],{},[1712,21514,21515],{},"Append or merge data: Post link + likes",[1569,21517,21518,21526],{},[1572,21519,21520,1752,21522,14707,21524,1668],{},[1712,21521,1843],{},[1712,21523,2613],{},[1712,21525,1847],{},[1572,21527,21528,1752,21530,1756,21532,1668],{},[1712,21529,1853],{},[1712,21531,2613],{},[1712,21533,1818],{},[1572,21535,21536,1710,21538,21540],{},[1653,21537,1861],{},[1712,21539,4900],{},[1569,21541,21542,21546],{},[1572,21543,21544,1722],{},[1712,21545,1721],{},[1572,21547,21548,14382],{},[1712,21549,1727],{},[1572,21551,21552,1710,21554,21556],{},[1653,21553,1898],{},[1712,21555,1901],{},[1569,21557,21558,21562],{},[1572,21559,21560,1722],{},[1712,21561,1721],{},[1572,21563,21564,14382],{},[1712,21565,1727],{},[1561,21567,21569],{"id":21568},"run-your-instagram-like-scraper","Run your Instagram like scraper",[1640,21571,21572,21573,1668],{},"To test the Instagram bot, execute it on the Desktop, monitor its operation, and then verify the scraped data in the Google Sheet. If you wish to schedule the bot ",[1942,21574,2603],{"href":638},[1561,21576,1937],{"id":1936},[1640,21578,1940,21579,1946],{},[1942,21580,1945],{"href":1944},[1561,21582,1398],{"id":1949},[1640,21584,2618,21585,1668],{},[1942,21586,2603],{"href":638},[1701,21588,21589],{},[1569,21590,21591,21602,21625],{},[1572,21592,21593,21596,1965,21598,21601],{},[1653,21594,21595],{},"Like button not clicked?",[1963,21597],{},[1712,21599,21600],{},"Step 2.2 – Click element: Click on like",", reselect the like button on a post.",[1572,21603,21604,21607,1965,21609,21612,21613,21616,21617,21619,2068,21622,1668],{},[1653,21605,21606],{},"No results scraped?",[1963,21608],{},[1712,21610,21611],{},"Step 2.3 – Get data from bot's current page: Scrape likes",", check that the ",[1942,21614,9069],{"href":21615},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors\u002F"," used are correct:",[1963,21618],{},[1712,21620,21621],{},"'[role=\"dialog\"] span div'",[1712,21623,21624],{},"'[role=\"dialog\"] [role=\"link\"]'",[1572,21626,21627,21629,1965,21631,3089,21633,2084,21635,1668],{},[1653,21628,2077],{},[1963,21630],{},[1712,21632,15065],{},[1712,21634,2083],{},[1712,21636,1884],{},[1640,21638,2101,21639,21641,21642],{},[1942,21640,2104],{"href":82},"\nIntrested in automating Instagram posting, learn more read this full in-depth guide on automating ",[1942,21643,14560],{"href":14559},{"title":1614,"searchDepth":1615,"depth":1615,"links":21645},[21646,21647,21648,21649,21650,21651],{"id":2462,"depth":1618,"text":2463},{"id":21420,"depth":1618,"text":21421},{"id":21438,"depth":1618,"text":21439},{"id":21568,"depth":1618,"text":21569},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to scrape users from Instagram post likes and export the data to Google Sheets using axiom.ai. This guide covers setting up, configuring, and running an Instagram likes scraper for user data extraction.",{"read":2655,"level":2123,"video":21654,"templateId":6295,"type":2126,"format":2127,"intent_type":13083,"intent":5613,"tags":21655,"platfrom":21656},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FYhChBarQcuo",[13085,15087,15088,2132],[13087],"\u002Fguides\u002Fscrape-likes-from-instagram-posts",{"title":21396,"description":21652},"guides\u002Fscrape-likes-from-instagram-posts","tjOPu4FmD472dfYRFDLBeOS_YGIRlrCE6eRQefPFQqQ",{"id":21662,"title":21663,"body":21664,"date":1628,"description":21756,"extension":1621,"meta":21757,"navigation":1627,"order":1628,"path":21761,"seo":21762,"stem":21763,"__hash__":21764},"guides\u002Fguides\u002Fscrape-links-export-to-csv.md","How to extract links and write to a CSV",{"type":1555,"value":21665,"toc":21752},[21666,21668,21675,21677,21679,21687,21745,21747,21749],[1566,21667],{},[1640,21669,21670,21671,21674],{},"Learn how to scrape links from a webpage into a ",[1942,21672,21673],{"href":1016},"CSV"," saved to your downloads folder by combing a few steps using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder",[1561,21676,8707],{"id":8706},[1566,21678],{},[1640,21680,8712,21681,21683,21684,12811],{},[1653,21682,8715],{}," and then select ",[1653,21685,21686],{},"\"Add first step\".",[1701,21688,21689],{},[1569,21690,21691,21723],{},[1572,21692,21693,1710,21695,21697],{},[1653,21694,1968],{},[1712,21696,14900],{},[1569,21698,21699,21704,21709,21718],{},[1572,21700,21701,21703],{},[1712,21702,5513],{},": Enter the URL of the page from which to scrape links.",[1572,21705,21706,21708],{},[1712,21707,1775],{},": Choose the links you wish to scrape.",[1572,21710,21711,21713,21714,21717],{},[1712,21712,17465],{}," (optional): Select the ",[1653,21715,21716],{},"\"Next\""," button for pagination if present.",[1572,21719,21720,21722],{},[1712,21721,14915],{},": Set the maximum number of links to scrape.",[1572,21724,21725,1710,21727,21730],{},[1653,21726,2518],{},[1712,21728,21729],{},"Export to CSV",[1569,21731,21732,21740],{},[1572,21733,21734,1752,21736,21237,21738,1668],{},[1712,21735,21729],{},[1653,21737,1814],{},[1653,21739,21333],{},[1572,21741,21742,21744],{},[1712,21743,3250],{},": Name your CSV file.",[1561,21746,2406],{"id":2405},[1566,21748],{},[1640,21750,21751],{},"Create an automation with just two steps that extract links from any website. In the first step, simply select the links, and then, in the second step, write the scraped data to a CSV.",{"title":1614,"searchDepth":1615,"depth":1615,"links":21753},[21754,21755],{"id":8706,"depth":1618,"text":8707},{"id":2405,"depth":1618,"text":2406},"Learn how to make a bot that will scrape links from a webpage then export them into a CSV.",{"pinned":1627,"type":2126,"format":1701,"intent_type":3360,"intent":5613,"tags":21758,"platfrom":21760},[2132,21759],"csv",[3363],"\u002Fguides\u002Fscrape-links-export-to-csv",{"title":21663,"description":21756},"guides\u002Fscrape-links-export-to-csv","1sTMACaO_dDCy4SEf_ZaM48BBE6A94X-Ji62cXEaPlU",{"id":21766,"title":21767,"body":21768,"date":2652,"description":21963,"extension":1621,"meta":21964,"navigation":1627,"order":1628,"path":17407,"seo":21968,"stem":21969,"__hash__":21970},"guides\u002Fguides\u002Fscrape-links-from-a-website.md","How to scrape links from a website into a Google Sheet",{"type":1555,"value":21769,"toc":21955},[21770,21772,21775,21777,21783,21785,21792,21796,21804,21809,21811,21815,21877,21881,21884,21886,21890,21892,21894,21951],[1566,21771],{},[1640,21773,21774],{},"This Link Scraper template extracts links from different webpages like listings, paginated, scrolling, and feed pages, and write them into a Google Sheet. It takes only a minute to set up.",[1558,21776],{},[1640,21778,21779,21780],{},"We recommend scraping links with one Axiom then scraping the pages with another ",[1942,21781,21782],{"href":16530},"see this template.",[1561,21784,1648],{"id":1647},[1640,21786,1651,21787,21789,21790,1668],{},[1653,21788,1655],{},", presuming you already have an account. Name your sheet something like 'Link Scraper’ and set up a tab called ",[1653,21791,1663],{},[1561,21793,21795],{"id":21794},"install-the-link-scraper","Install the link scraper",[1640,21797,21798,21799,21801,21802,1683],{},"To install this Web scraper template click  ",[1653,21800,1678],{},".  If you’re a new user, you’ll have to click  ",[1653,21803,1682],{},[1640,21805,21806,21807,1668],{},"Once installed, click  ",[1653,21808,1689],{},[1640,21810,1692],{},[1561,21812,21814],{"id":21813},"configure-your-link-scraper-in-a-minute","Configure your Link scraper in a minute",[1701,21816,21817],{},[1569,21818,21819,21849],{},[1572,21820,21821,1710,21823,21825],{},[1653,21822,1968],{},[1712,21824,14900],{},[1569,21826,21827,21832,21839,21844],{},[1572,21828,21829,21831],{},[1712,21830,5513],{},": Enter the URL of the page you want to scrape.",[1572,21833,21834,3601,21836,21838],{},[1712,21835,1775],{},[1942,21837,20924],{"href":1387}," to select the links you wish to scrape.",[1572,21840,21841,21843],{},[1712,21842,17465],{}," (if any): Select the \"Next\" button if the page is paginated.",[1572,21845,21846,21848],{},[1712,21847,1781],{},": Set the number of links you wish to scrape.",[1572,21850,21851,1710,21853,21855],{},[1653,21852,2518],{},[1712,21854,4900],{},[1569,21856,21857,21861,21865,21871],{},[1572,21858,21859,1722],{},[1712,21860,1721],{},[1572,21862,21863,1875],{},[1712,21864,1727],{},[1572,21866,21867,1881,21869,1668],{},[1712,21868,1880],{},[1712,21870,15042],{},[1572,21872,21873,1782,21875,1668],{},[1712,21874,16734],{},[1712,21876,7597],{},[1561,21878,21880],{"id":21879},"run-your-link-scraper","Run your link scraper",[1640,21882,21883],{},"We suggest running a test first, setting max-results to 10, and reviewing the data.",[1561,21885,1937],{"id":1936},[1640,21887,1940,21888,1946],{},[1942,21889,1945],{"href":1944},[1561,21891,1398],{"id":1949},[1640,21893,1952],{},[1701,21895,21896],{},[1569,21897,21898,21910,21922,21930,21943],{},[1572,21899,21900,21902,1965,21904,21907,21908,1668],{},[1653,21901,1982],{},[1963,21903],{},[1712,21905,21906],{},"Step 1.0 – Get data from bot's current page",", try re-selecting or use ",[1942,21909,9069],{"href":1383},[1572,21911,21912,21914,2011,21916,2015,21918,2019,21920,1668],{},[1653,21913,21038],{},[1963,21915],{},[1712,21917,2014],{},[1712,21919,2018],{},[1712,21921,18821],{},[1572,21923,21924,21926,21054,21928,21057],{},[1653,21925,21051],{},[1963,21927],{},[1712,21929,1781],{},[1572,21931,21932,21934,1965,21936,2062,21939,2084,21941,1668],{},[1653,21933,2077],{},[1963,21935],{},[1712,21937,21938],{},"Step 2.0 – Write Data to a Google Sheet",[1712,21940,2083],{},[1712,21942,15042],{},[1572,21944,21945,21947,2094,21949,2098],{},[1653,21946,2091],{},[1963,21948],{},[1712,21950,2097],{},[1640,21952,2101,21953],{},[1942,21954,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":21956},[21957,21958,21959,21960,21961,21962],{"id":1647,"depth":1618,"text":1648},{"id":21794,"depth":1618,"text":21795},{"id":21813,"depth":1618,"text":21814},{"id":21879,"depth":1618,"text":21880},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to scrape links from a website and export them to Google Sheets using axiom.ai's no-code automation tool. This guide covers setting up, configuring, and running a link scraper for efficient data extraction.",{"read":3134,"level":2123,"video":21965,"templateId":6258,"type":2126,"format":2127,"intent_type":3360,"intent":5613,"tags":21966,"platfrom":21967},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FzUHHWz6Ycgk",[2132,16793,21114],[3363],{"title":21767,"description":21963},"guides\u002Fscrape-links-from-a-website","8HHW7YgcBmNnyHuxefIHcgELrxoYKr5LKyQLWNrVV8U",{"id":21972,"title":21973,"body":21974,"date":21109,"description":22238,"extension":1621,"meta":22239,"navigation":1627,"order":1628,"path":22244,"seo":22245,"stem":22246,"__hash__":22247},"guides\u002Fguides\u002Fscrape-spotify-webplayer.md","How to Scrape Spotify Discography: Step-by-Step",{"type":1555,"value":21975,"toc":22231},[21976,21978,21981,21983,21985,21993,21997,22002,22006,22008,22114,22118,22123,22125,22130,22132,22136,22227],[1566,21977],{},[1640,21979,21980],{},"This Spotify Discography Scraper operates by reading artist profile links from a Google Sheet, opening them in Chrome, and navigating to the discography section to scrape album links. It collects data such as album title, copyright, and release date, saving this information into another Google Sheet. After processing each entry, the bot deletes it from the initial sheet and continues to the next.",[1558,21982],{},[1561,21984,2463],{"id":2462},[1640,21986,1651,21987,2694,21989,21992],{},[1653,21988,1655],{},[1653,21990,21991],{},"\"Spotify scraper\"",". Set up two tabs in Google Sheets: one for artist profile links and another for scraped data.",[1561,21994,21996],{"id":21995},"install-the-spotify-discography-scraper","Install the Spotify discography scraper",[1640,21998,21999,22000,1683],{},"To install this Spotify Discography Scraper click '**\"Install template'. If you’re a new user, you’ll have to click ",[1653,22001,1682],{},[1640,22003,1686,22004,1668],{},[1653,22005,1689],{},[1640,22007,1692],{},[1701,22009,22010,22112],{},[1569,22011,22012,22029],{},[1572,22013,22014,1710,22016,22018],{},[1653,22015,1709],{},[1712,22017,1714],{},[1569,22019,22020,22024],{},[1572,22021,22022,1722],{},[1712,22023,1721],{},[1572,22025,22026,22028],{},[1712,22027,1727],{},": Choose the tab with the artist profile links.",[1572,22030,22031,1710,22033,22035],{},[1653,22032,1733],{},[1712,22034,667],{},[1569,22036,22037,22059,22064,22095],{},[1572,22038,22039,1710,22041,22044],{},[1653,22040,1742],{},[1712,22042,22043],{},"Go to page: Artist page",[1569,22045,22046],{},[1572,22047,22048,1752,22050,1756,22052,22054,22055,22058],{},[1712,22049,1751],{},[1712,22051,1814],{},[1712,22053,1847],{},", then append ",[1712,22056,22057],{},"\u002Fdiscography\u002Fall"," after the token.",[1572,22060,22061,11855],{},[1653,22062,22063],{},"2.2 – 2.3",[1572,22065,22066,1710,22068,22071],{},[1653,22067,1833],{},[1712,22069,22070],{},"Loop through data: Album links",[1569,22072,22073,22078],{},[1572,22074,22075,11855],{},[1653,22076,22077],{},"2.4.1 – 2.4.2",[1572,22079,22080,1710,22083,22085],{},[1653,22081,22082],{},"2.4.3",[1712,22084,4900],{},[1569,22086,22087],{},[1572,22088,22089,22091,22092,1668],{},[1712,22090,1880],{},": Ensure this is set to ",[1712,22093,22094],{},"[scraped-data]",[1572,22096,22097,1710,22099,22101],{},[1653,22098,1861],{},[1712,22100,1901],{},[1569,22102,22103,22107],{},[1572,22104,22105,1722],{},[1712,22106,1721],{},[1572,22108,22109,22111],{},[1712,22110,1727],{},": Choose the tab with artist links.",[1640,22113,2593],{},[1561,22115,22117],{"id":22116},"run-your-spotify-discography-scraper","Run your Spotify discography scraper",[1640,22119,22120,22121,1668],{},"To test this Spotify scraper, initiate the bot with the cloud lo runner and let it run a few loops. Then, stop the bot and review the data in the linked Google Sheet for accuracy and completeness. If you wish to schedule the bot ",[1942,22122,2603],{"href":638},[1561,22124,1937],{"id":1936},[1640,22126,1940,22127,22129],{},[1942,22128,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements. For example simply click 'Select' in Step 2.4.2 and point and click to chose different data to scrape.",[1561,22131,1398],{"id":1949},[1640,22133,2618,22134,1668],{},[1942,22135,2603],{"href":638},[1701,22137,22138],{},[1569,22139,22140,22157,22168,22178,22195,22206,22217],{},[1572,22141,22142,22145,1965,22147,22150,22151,22153,22154,22156],{},[1653,22143,22144],{},"Artist page not loading?",[1963,22146],{},[1712,22148,22149],{},"Step 2.1 – Go to page: Artist page",", check that the URL ends with ",[1712,22152,22057],{}," after the ",[1712,22155,1847],{}," token.",[1572,22158,22159,22162,1965,22164,22167],{},[1653,22160,22161],{},"Display not being changed to grid format?",[1963,22163],{},[1712,22165,22166],{},"Step 2.2 – Click element: Grid layout",", reselect the grid icon from the artist page.",[1572,22169,22170,22172,1965,22174,22177],{},[1653,22171,9063],{},[1963,22173],{},[1712,22175,22176],{},"Step 2.3 – Get a list of links to pages from bot's current page: Album links",", reselect album links on the artist's discography page.",[1572,22179,22180,22183,1965,22185,22188,22189,22191,22192,1668],{},[1653,22181,22182],{},"Album links not loading?",[1963,22184],{},[1712,22186,22187],{},"Step 2.4.1 – Go to page: Album",", confirm that ",[1712,22190,1751],{}," is set with ",[1712,22193,22194],{},"[link-data?*&0]",[1572,22196,22197,22200,1965,22202,22205],{},[1653,22198,22199],{},"No elements found?",[1963,22201],{},[1712,22203,22204],{},"Step 2.4.2 – Get data from bot's current page: Scrape Album",", reselect data from within an album page.",[1572,22207,22208,22211,1965,22213,22216],{},[1653,22209,22210],{},"Scraped data not writing?",[1963,22212],{},[1712,22214,22215],{},"Step 2.4.3 – Write data to a Google Sheet",", check that the correct sheet and tab are selected.",[1572,22218,22219,22222,1965,22224,22226],{},[1653,22220,22221],{},"Bot scrapes same artist every loop?",[1963,22223],{},[1712,22225,11633],{},", confirm the correct sheet tab (with artist links) is selected.",[1640,22228,2101,22229],{},[1942,22230,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":22232},[22233,22234,22235,22236,22237],{"id":2462,"depth":1618,"text":2463},{"id":21995,"depth":1618,"text":21996},{"id":22116,"depth":1618,"text":22117},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to scrape Spotify discography data and export it to Google Sheets using axiom.ai's no-code automation tool. This guide covers setting up, configuring, and running a Spotify scraper for album and artist data extraction.",{"pinned":1627,"read":2655,"level":17688,"video":22240,"templateId":6355,"type":2126,"format":2127,"intent_type":2658,"intent":5613,"tags":22241,"platfrom":22242},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FRL55fL4HOGk",[2132,21114],[22243],"Spotify","\u002Fguides\u002Fscrape-spotify-webplayer",{"title":21973,"description":22238},"guides\u002Fscrape-spotify-webplayer","pb388OX_wCAK_EDtYlyA-m8N48rEE1eZLTplX_fmuUg",{"id":22249,"title":22250,"body":22251,"date":1628,"description":22630,"extension":1621,"meta":22631,"navigation":1627,"order":1628,"path":22635,"seo":22636,"stem":22637,"__hash__":22638},"guides\u002Fguides\u002Fslack.md","How to automate Slack with axiom.ai",{"type":1555,"value":22252,"toc":22619},[22253,22255,22263,22265,22267,22280,22284,22286,22289,22334,22338,22341,22382,22386,22390,22392,22395,22398,22440,22450,22462,22468,22470,22472,22479,22482,22484,22486,22489,22493,22495,22498,22556,22559,22608,22612,22614,22616],[1566,22254],{},[1640,22256,22257,22262],{},[1942,22258,22261],{"href":22259,"rel":22260},"https:\u002F\u002Fslack.com\u002Fintl\u002Fen-gb\u002Ffeatures\u002Fworkflow-automation",[3850],"Slack Workflow Builder"," allows you to automate various actions within your Slack workflow. Using a webhook to trigger these workflows can enhance these workflows. Even better - you can pass data from your axiom.ai automation into your Slack workflow. Let's dive in.",[1561,22264,2156],{"id":2155},[1566,22266],{},[1640,22268,22269,22270,22275,22276,22279],{},"To get started, you'll need to have a ",[1942,22271,22274],{"href":22272,"rel":22273},"https:\u002F\u002Fslack.com",[3850],"Slack"," account that has access to ",[1942,22277,22261],{"href":22259,"rel":22278},[3850],". You'll also need to have the axiom.ai extension installed and be logged in.",[1561,22281,22283],{"id":22282},"trigger-a-slack-workflow-with-an-axiomai-automation","Trigger a Slack workflow with an axiom.ai automation",[1566,22285],{},[1640,22287,22288],{},"Learn how to trigger a Slack workflow from an axiom.ai automation.",[1701,22290,22291],{},[2165,22292,22293,22299,22305,22311,22317,22323,22328],{},[1572,22294,22295,22298],{},[1653,22296,22297],{},"Create Slack workflow",": Head to the Slack app and open the Workflow Builder.",[1572,22300,22301,22304],{},[1653,22302,22303],{},"Create workflow",": Click \"+ New workflow\" to get started.",[1572,22306,22307,22310],{},[1653,22308,22309],{},"Start the workflow",": Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".",[1572,22312,22313,22316],{},[1653,22314,22315],{},"Variables",": To set up variables, click \"Set up variables\" – this is required to be able to send data to your workflow and allows the data to be used later.",[1572,22318,22319,22322],{},[1653,22320,22321],{},"Add steps",": Add steps that meet your requirements – you can use the variables above in certain steps by clicking \"{} Insert a variable\" in the step setup window.",[1572,22324,22325,22327],{},[1653,22326,13837],{},": Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.",[1572,22329,22330,22333],{},[1653,22331,22332],{},"Web request URL",": After saving, re-open your workflow and click on the \"Starts with a webhook\" trigger, copy the \"Web request URL\" and save this for later use.",[2202,22335],{"src":22336,"alt":22337},"\u002Fdocs\u002Fguides\u002Ftrigger-slack-workflow-example.png","set up a slack workflow in slack",[1640,22339,22340],{},"Now, let's head over to the axiom.ai extension. We are going to assume that you already have an automation created to capture the data that you wish to pass into your Slack workflow.",[1701,22342,22343],{},[1569,22344,22345],{},[1572,22346,22347,2221,22349,22351,22352],{},[1712,22348,9287],{},[1942,22350,9287],{"href":1194}," step to your automation.\n",[1569,22353,22354,22363],{},[1572,22355,22356,22358,22359,22362],{},[1712,22357,2187],{},": Paste the ",[1653,22360,22361],{},"\"Web request URL\""," you copied from Slack.",[1572,22364,22365,22367,22368],{},[1712,22366,17936],{},": Match the format shown in your Slack workflow.\n",[1569,22369,22370,22376],{},[1572,22371,22372,22373,1668],{},"To check the structure, open your workflow and click on ",[1653,22374,22375],{},"\"Starts with a webhook\"",[1572,22377,7792,22378,22381],{},[1653,22379,22380],{},"\"Insert Data\""," option in Axiom to add tokens from your automation into the payload.",[2202,22383],{"src":22384,"alt":22385},"\u002Fdocs\u002Fguides\u002Ftrigger-slack-workflow-trigger-webhook.png","set up 'trigger webhook' step in axiom.ai to trigger a slack workflow using the slack workflow payload format",[2249,22387,22389],{"id":22388},"triggering-a-slack-workflow-with-run-notifications","Triggering a Slack Workflow with Run Notifications",[1566,22391],{},[1640,22393,22394],{},"Setting up run notifications when an automation run completes can be a helpful way of keeping on top of your automations when they are running unattended. To do this, follow the instructions above to set up your Slack Workflow. The only change that is required is that your Slack Workflow has two variables set up as \"text\" variables: \"status\" and \"log\", see step 4 above for more details.",[1640,22396,22397],{},"Then, head into your axiom.ai automation and follow the steps below:",[1701,22399,22400],{},[2165,22401,22402,22408,22417,22423,22432],{},[1572,22403,22404,22407],{},[1653,22405,22406],{},"Open your automation",": Open the Axiom automation you want to configure.",[1572,22409,22410,22413,22414,1668],{},[1653,22411,22412],{},"Go to settings",": Navigate to ",[1653,22415,22416],{},"Settings → Set up notifications",[1572,22418,22419,22422],{},[1653,22420,22421],{},"Enable notification types",": Toggle on the options you'd like to be notified of — when a run fails, when it succeeds with warnings, or when it fully succeeds.",[1572,22424,22425,22428,22429,1668],{},[1653,22426,22427],{},"Enable webhook notifications",": Turn on ",[1653,22430,22431],{},"Notify by webhook",[1572,22433,22434,22358,22437,22439],{},[1653,22435,22436],{},"Enter webhook URL",[1653,22438,22332],{}," from the Slack workflow setup.",[1640,22441,22442,22444,22445,22447,22448,1668],{},[2417,22443,16523],{}," Using the ",[1942,22446,9782],{"href":900}," step before a step allows you to add metadata to the error message produced by that step. This metadata will appear in the \"log\" that is sent if the automation fails - adding more context to your error messages. For more tips on debugging, see ",[1942,22449,4909],{"href":1487},[1640,22451,22452,22453,22455,22456,22461],{},"To pass custom data to your Slack Workflow, we would still recommend using the ",[1942,22454,9287],{"href":1194}," step method described in the section above. These can be used together but we recommend referring to Slack's ",[1942,22457,22460],{"href":22458,"rel":22459},"https:\u002F\u002Fapi.slack.com\u002Fapis\u002Frate-limits",[3850],"Rate Limit"," documentation for their API rate limits.",[1640,22463,22464,22465,13800],{},"To learn more about Run Notifications, see the ",[1942,22466,22467],{"href":875},"Run Notifications",[1561,22469,2386],{"id":2385},[1566,22471],{},[1640,22473,22474,22475,22478],{},"Ensure that your workflow has been published and then hit \"Run\" in your axiom.ai automation. If there are error messages, review these error messages for next steps. ",[1942,22476,22477],{"href":82},"Contact us"," if you are unsure of the errors that you are experiencing.",[1640,22480,22481],{},"If successful, your workflow steps will be performed. For example, if this is set to send a message in a channel, check the channel that you have set within the workflow.",[1561,22483,8300],{"id":8299},[1566,22485],{},[1640,22487,22488],{},"Let's dive into some example use cases.",[2249,22490,22492],{"id":22491},"automate-the-creation-of-a-daily-spreadsheet","Automate the creation of a daily spreadsheet",[1566,22494],{},[1640,22496,22497],{},"Automating the creation of a new spreadsheet on a daily basis and sending this to your team can be a useful way of tracking information within your teams. To get started, create a new Slack workflow:",[1701,22499,22500],{},[2165,22501,22502,22508,22514,22520,22526,22532,22538,22544,22550],{},[1572,22503,22504,22507],{},[1653,22505,22506],{},"Create Slack workflow:"," Head to the Slack app and open the Workflow Builder.",[1572,22509,22510,22513],{},[1653,22511,22512],{},"Create workflow:"," Click \"+ New workflow\" to get started.",[1572,22515,22516,22519],{},[1653,22517,22518],{},"Start the workflow:"," Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".",[1572,22521,22522,22525],{},[1653,22523,22524],{},"Variables:"," To set up variables, click \"Set up variables\" - add two \"test\" variables, one called \"date\" and another called \"url\".",[1572,22527,22528,22531],{},[1653,22529,22530],{},"Add steps:"," Add a \"Send a message to a channel\" from the \"Messages\" section of the steps. Select the channel you wish to use in the \"Select a channel\" dropdown.",[1572,22533,22534,22537],{},[1653,22535,22536],{},"Construct message:"," Create a message you'd like to send to the team, use the \"{} Insert a variable\" button to insert variables.",[1572,22539,22540,22543],{},[1653,22541,22542],{},"Add a button:"," Click \"+ Add button\", add a \"Button label\", change the \"Behaviour\" to \"Open Link\" and use the \"{}\" button to input the \"url\". This will allow the spreadsheet to be opened with a click.",[1572,22545,22546,22549],{},[1653,22547,22548],{},"Save:"," Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.",[1572,22551,22552,22555],{},[1653,22553,22554],{},"Web request URL:"," After saving, re-open your workflow and click on the \"Starts with a webhook\" trigger, copy the \"Web request URL\" and save this for later use.",[1640,22557,22558],{},"Now, open your axiom.ai extension and follow the steps below:",[1701,22560,22561],{},[2165,22562,22563,22569,22578,22587,22596,22602],{},[1572,22564,22565,22568],{},[1653,22566,22567],{},"Create a new automation:"," Open the extension and click \"+ New Automation\" to get started.",[1572,22570,22571,22574,22575,22577],{},[1653,22572,22573],{},"Get date:"," To get the current date use the ",[1942,22576,9125],{"href":968}," step. Select the format from in the step.",[1572,22579,22580,22583,22584,22586],{},[1653,22581,22582],{},"Create Google Sheet:"," Use the ",[1942,22585,10949],{"href":952}," step to create a new spreadsheet, use the output from the \"Date and time\" step to construct your \"Sheet name\".",[1572,22588,22589,22592,22593,22595],{},[1653,22590,22591],{},"Trigger webhook:"," Add a ",[1942,22594,9287],{"href":1194}," step to your automation, add the \"Web request URL\" from Slack to the \"Endpoint\" input.",[1572,22597,22598,22601],{},[1653,22599,22600],{},"Payload:"," To construct the \"Payload\" in the \"Trigger webhook\" step, follow the format that is set out within the Slack workflow. Use the \"Insert Data\" option within Axiom to input data from your automation.",[1572,22603,22604,22607],{},[1653,22605,22606],{},"Schedule:"," If your plan supports it, navigate to \"Settings\", then \"Schedule\" to set up a schedule to run daily, or more frequently.",[2202,22609],{"src":22610,"alt":22611},"\u002Fdocs\u002Fguides\u002Ftrigger-slack-workflow-example-gsheets.png","axiom.ai builder showing automation to automatically create new google sheet",[1561,22613,2406],{"id":2405},[1566,22615],{},[1640,22617,22618],{},"Automating the triggering of Slack workflows from axiom.ai allows you to send data to your Slack workflows. This can offer a wide range of automation opportunities, from automatically generating Google Sheets to notifying your team of data that has been scraped from a website, there are many options that you can use.",{"title":1614,"searchDepth":1615,"depth":1615,"links":22620},[22621,22622,22625,22626,22629],{"id":2155,"depth":1618,"text":2156},{"id":22282,"depth":1618,"text":22283,"children":22623},[22624],{"id":22388,"depth":1615,"text":22389},{"id":2385,"depth":1618,"text":2386},{"id":8299,"depth":1618,"text":8300,"children":22627},[22628],{"id":22491,"depth":1615,"text":22492},{"id":2405,"depth":1618,"text":2406},"Learn how to trigger a Slack Workflow using an axiom.ai automation to send messages or automatically perform tasks within your automations",{"type":2126,"format":2127,"intent_type":2128,"intent":2437,"tags":22632,"platfrom":22634},[2439,2440,22633],"integration",[22274],"\u002Fguides\u002Fslack",{"title":22250,"description":22630},"guides\u002Fslack","x5--DXeHbXDxGgORit0jXg9IGbMabiuQAQbFmpBiT6s",{"id":22640,"title":22641,"body":22642,"date":1628,"description":23917,"extension":1621,"meta":23918,"navigation":1627,"order":1628,"path":23922,"seo":23923,"stem":23924,"__hash__":23925},"guides\u002Fguides\u002Fsupabase.md","How to automate Supabase with axiom.ai",{"type":1555,"value":22643,"toc":23907},[22644,22646,22654,22656,22658,22661,22697,22700,22704,22706,22709,22713,22715,22718,22724,22783,22786,22917,22924,23131,23138,23149,23155,23432,23437,23447,23451,23453,23458,23461,23495,23502,23518,23521,23712,23717,23820,23833,23837,23839,23844,23851,23854,23878,23881,23883,23885,23890,23892,23894,23896,23899,23901,23904],[1566,22645],{},[1640,22647,22648,22653],{},[1942,22649,22652],{"href":22650,"rel":22651},"https:\u002F\u002Fsupabase.com",[3850],"Supabase"," is an open source Firebase alternative offering Postgres databases, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings. Combining Supabase with axiom.ai can be a powerful way of levelling up your automations. From storing the data that you scrape from webpages, to retrieving data to be used in your automation, there is a lot you can achieve.",[1561,22655,2156],{"id":2155},[1566,22657],{},[1640,22659,22660],{},"To get started, you will need to have the following steps completed:",[1701,22662,22663],{},[2165,22664,22665,22670,22680,22689],{},[1572,22666,22667],{},[1653,22668,22669],{},"Sign up to Supabase",[1572,22671,22672,3601,22675],{},[1653,22673,22674],{},"Create a database and a table",[1942,22676,22679],{"href":22677,"rel":22678},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdatabase\u002Ftables",[3850],"Supabase | Tables and Data",[1572,22681,22682,22685,22686],{},[1653,22683,22684],{},"Retrieve your project URL",": Go to ",[1653,22687,22688],{},"Project settings → API → Project URL",[1572,22690,22691,22685,22694],{},[1653,22692,22693],{},"Retrieve your API key",[1653,22695,22696],{},"Project settings → API → Project API Keys",[1640,22698,22699],{},"Throughout this guide we will be using a \"Customers\" table, any code provided will need to be modified to your specific use case.",[1561,22701,22703],{"id":22702},"working-with-supabase-data-in-axiomai","Working with Supabase data in axiom.ai",[1566,22705],{},[1640,22707,22708],{},"There are various actions that you can perform with the Supabase API and axiom.ai. To learn more about the Supabase API, and see examples specific to your table, head into your Supabase dashboard, click \"API docs\" and find your table in the sidebar. Let's dive into some use cases.",[2249,22710,22712],{"id":22711},"write-data-to-a-supabase-table","Write data to a Supabase table",[1566,22714],{},[1640,22716,22717],{},"To write data to your Supabase database, set up your axiom.ai automation as normal. When you are ready to send your data, continue this guide.",[1640,22719,22720,22721,22723],{},"To get started, add a ",[1942,22722,3904],{"href":1226}," step to your automation, we will then create variables to store key information used throughout the script. We will break down this script into sections, but this should all be combined into a single script in a single \"Write Javascript\" step.",[2329,22725,22727],{"className":2366,"code":22726,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Change the [google-sheet-data] token to the token that stores your data and replace any item in \u003C> with your data.\nconst ogData = [google-sheet-data];\nconst supabase_url = \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>\";\nconst api_key = \"\u003CAPI_KEY>\";\n",[1712,22728,22729,22734,22755,22769],{"__ignoreMap":1614},[2337,22730,22731],{"class":2339,"line":2340},[2337,22732,22733],{"class":4521},"\u002F\u002F Change the [google-sheet-data] token to the token that stores your data and replace any item in \u003C> with your data.\n",[2337,22735,22736,22738,22741,22743,22746,22748,22751,22753],{"class":2339,"line":1618},[2337,22737,3918],{"class":3592},[2337,22739,22740],{"class":3488}," ogData",[2337,22742,3924],{"class":3592},[2337,22744,22745],{"class":2378}," [google",[2337,22747,18763],{"class":3592},[2337,22749,22750],{"class":2378},"sheet",[2337,22752,18763],{"class":3592},[2337,22754,18766],{"class":2378},[2337,22756,22757,22759,22762,22764,22767],{"class":2339,"line":1615},[2337,22758,3918],{"class":3592},[2337,22760,22761],{"class":3488}," supabase_url",[2337,22763,3924],{"class":3592},[2337,22765,22766],{"class":2347}," \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>\"",[2337,22768,3930],{"class":2378},[2337,22770,22771,22773,22776,22778,22781],{"class":2339,"line":3501},[2337,22772,3918],{"class":3592},[2337,22774,22775],{"class":3488}," api_key",[2337,22777,3924],{"class":3592},[2337,22779,22780],{"class":2347}," \"\u003CAPI_KEY>\"",[2337,22782,3930],{"class":2378},[1640,22784,22785],{},"Next, we will add a helper function that ensures that your data is formatted in a way that Supabase expects:",[2329,22787,22789],{"className":2366,"code":22788,"language":2368,"meta":1614,"style":1614},"const format = (data) => {\n    const formatted_data = [];\n    for (var i = 0; i \u003C data.length; i++) {\n        \u002F\u002F Follow the format and add your own column names, incrementing the value in the second [] for each new piece of data.\n        formatted_data.push({\"first_name\": data[i][0], \"last_name\": data[i][1], \"email\": data[i][2]});\n    }\n  \n  return formatted_data;\n}\n",[1712,22790,22791,22810,22821,22853,22858,22898,22902,22906,22913],{"__ignoreMap":1614},[2337,22792,22793,22795,22798,22800,22802,22804,22806,22808],{"class":2339,"line":2340},[2337,22794,3918],{"class":3592},[2337,22796,22797],{"class":3979}," format",[2337,22799,3924],{"class":3592},[2337,22801,4127],{"class":2378},[2337,22803,3444],{"class":2343},[2337,22805,6617],{"class":2378},[2337,22807,3991],{"class":3592},[2337,22809,3994],{"class":2378},[2337,22811,22812,22814,22817,22819],{"class":2339,"line":1618},[2337,22813,18429],{"class":3592},[2337,22815,22816],{"class":3488}," formatted_data",[2337,22818,3924],{"class":3592},[2337,22820,6559],{"class":2378},[2337,22822,22823,22826,22828,22830,22832,22834,22836,22838,22840,22843,22845,22848,22851],{"class":2339,"line":1615},[2337,22824,22825],{"class":3592},"    for",[2337,22827,4127],{"class":2378},[2337,22829,6550],{"class":3592},[2337,22831,19545],{"class":2378},[2337,22833,6556],{"class":3592},[2337,22835,19550],{"class":3488},[2337,22837,19553],{"class":2378},[2337,22839,19556],{"class":3592},[2337,22841,22842],{"class":2378}," data.",[2337,22844,19562],{"class":3488},[2337,22846,22847],{"class":2378},"; i",[2337,22849,22850],{"class":3592},"++",[2337,22852,18418],{"class":2378},[2337,22854,22855],{"class":2339,"line":3501},[2337,22856,22857],{"class":4521},"        \u002F\u002F Follow the format and add your own column names, incrementing the value in the second [] for each new piece of data.\n",[2337,22859,22860,22863,22865,22868,22871,22874,22876,22879,22882,22884,22886,22888,22891,22893,22895],{"class":2339,"line":3507},[2337,22861,22862],{"class":2378},"        formatted_data.",[2337,22864,6629],{"class":3979},[2337,22866,22867],{"class":2378},"({",[2337,22869,22870],{"class":2347},"\"first_name\"",[2337,22872,22873],{"class":2378},": data[i][",[2337,22875,18821],{"class":3488},[2337,22877,22878],{"class":2378},"], ",[2337,22880,22881],{"class":2347},"\"last_name\"",[2337,22883,22873],{"class":2378},[2337,22885,1785],{"class":3488},[2337,22887,22878],{"class":2378},[2337,22889,22890],{"class":2347},"\"email\"",[2337,22892,22873],{"class":2378},[2337,22894,10444],{"class":3488},[2337,22896,22897],{"class":2378},"]});\n",[2337,22899,22900],{"class":2339,"line":3579},[2337,22901,4236],{"class":2378},[2337,22903,22904],{"class":2339,"line":3658},[2337,22905,5145],{"class":2378},[2337,22907,22908,22910],{"class":2339,"line":3664},[2337,22909,18803],{"class":3592},[2337,22911,22912],{"class":2378}," formatted_data;\n",[2337,22914,22915],{"class":2339,"line":3670},[2337,22916,4242],{"class":2378},[1640,22918,22919,22920,22923],{},"Finally, we want to send the data to Supabase. There isn't anything that needs to be changed here, but you may want to use the ",[1712,22921,22922],{},"result"," in later steps of your automation, you'll need to return this value.",[2329,22925,22927],{"className":2366,"code":22926,"language":2368,"meta":1614,"style":1614},"const sendToSupabase = async () => {\n    try {\n        const response = await fetch(supabase_url, {\n            method: 'POST',\n            headers: {\n                'apikey': api_key,\n              'Authorization': `Bearer ${api_key}`,\n              'Content-Type': 'application\u002Fjson'\n            },\n            body: JSON.stringify(format(ogData))\n        });\n                               \n        if (!response.ok) {\n            console.error(\"Something went wrong with response\", response); \n            return;\n        }\n      \n        const result = await response.json();\n        console.log(result);\n    } catch (error) {\n        console.error(\"Something went wrong\", error);\n    }\n}\n",[1712,22928,22929,22946,22952,22967,22975,22979,22987,23003,23012,23016,23034,23038,23043,23053,23065,23071,23075,23079,23095,23103,23111,23123,23127],{"__ignoreMap":1614},[2337,22930,22931,22933,22936,22938,22940,22942,22944],{"class":2339,"line":2340},[2337,22932,3918],{"class":3592},[2337,22934,22935],{"class":3979}," sendToSupabase",[2337,22937,3924],{"class":3592},[2337,22939,3985],{"class":3592},[2337,22941,3988],{"class":2378},[2337,22943,3991],{"class":3592},[2337,22945,3994],{"class":2378},[2337,22947,22948,22950],{"class":2339,"line":1618},[2337,22949,3999],{"class":3592},[2337,22951,3994],{"class":2378},[2337,22953,22954,22956,22958,22960,22962,22964],{"class":2339,"line":1615},[2337,22955,4006],{"class":3592},[2337,22957,3699],{"class":3488},[2337,22959,3924],{"class":3592},[2337,22961,4013],{"class":3592},[2337,22963,4016],{"class":3979},[2337,22965,22966],{"class":2378},"(supabase_url, {\n",[2337,22968,22969,22971,22973],{"class":2339,"line":3501},[2337,22970,4024],{"class":2378},[2337,22972,4027],{"class":2347},[2337,22974,4030],{"class":2378},[2337,22976,22977],{"class":2339,"line":3507},[2337,22978,4035],{"class":2378},[2337,22980,22981,22984],{"class":2339,"line":3579},[2337,22982,22983],{"class":2347},"                'apikey'",[2337,22985,22986],{"class":2378},": api_key,\n",[2337,22988,22989,22992,22994,22996,22999,23001],{"class":2339,"line":3658},[2337,22990,22991],{"class":2347},"              'Authorization'",[2337,22993,3601],{"class":2378},[2337,22995,18464],{"class":2347},[2337,22997,22998],{"class":2378},"api_key",[2337,23000,4051],{"class":2347},[2337,23002,4030],{"class":2378},[2337,23004,23005,23008,23010],{"class":2339,"line":3664},[2337,23006,23007],{"class":2347},"              'Content-Type'",[2337,23009,3601],{"class":2378},[2337,23011,18481],{"class":2347},[2337,23013,23014],{"class":2339,"line":3670},[2337,23015,4068],{"class":2378},[2337,23017,23018,23020,23022,23024,23026,23028,23031],{"class":2339,"line":3693},[2337,23019,4073],{"class":2378},[2337,23021,11178],{"class":3488},[2337,23023,1668],{"class":2378},[2337,23025,11183],{"class":3979},[2337,23027,4145],{"class":2378},[2337,23029,23030],{"class":3979},"format",[2337,23032,23033],{"class":2378},"(ogData))\n",[2337,23035,23036],{"class":2339,"line":3746},[2337,23037,4114],{"class":2378},[2337,23039,23040],{"class":2339,"line":3760},[2337,23041,23042],{"class":2378},"                               \n",[2337,23044,23045,23047,23049,23051],{"class":2339,"line":3136},[2337,23046,4124],{"class":3592},[2337,23048,4127],{"class":2378},[2337,23050,4130],{"class":3592},[2337,23052,4133],{"class":2378},[2337,23054,23055,23057,23059,23061,23063],{"class":2339,"line":3784},[2337,23056,4139],{"class":2378},[2337,23058,4142],{"class":3979},[2337,23060,4145],{"class":2378},[2337,23062,4148],{"class":2347},[2337,23064,4488],{"class":2378},[2337,23066,23067,23069],{"class":2339,"line":3793},[2337,23068,4157],{"class":3592},[2337,23070,3930],{"class":2378},[2337,23072,23073],{"class":2339,"line":4136},[2337,23074,4165],{"class":2378},[2337,23076,23077],{"class":2339,"line":4154},[2337,23078,4119],{"class":2378},[2337,23080,23081,23083,23085,23087,23089,23091,23093],{"class":2339,"line":4162},[2337,23082,4006],{"class":3592},[2337,23084,4178],{"class":3488},[2337,23086,3924],{"class":3592},[2337,23088,4013],{"class":3592},[2337,23090,4185],{"class":2378},[2337,23092,4188],{"class":3979},[2337,23094,4191],{"class":2378},[2337,23096,23097,23099,23101],{"class":2339,"line":4168},[2337,23098,4197],{"class":2378},[2337,23100,4200],{"class":3979},[2337,23102,4203],{"class":2378},[2337,23104,23105,23107,23109],{"class":2339,"line":4173},[2337,23106,4209],{"class":2378},[2337,23108,4212],{"class":3592},[2337,23110,4215],{"class":2378},[2337,23112,23113,23115,23117,23119,23121],{"class":2339,"line":4194},[2337,23114,4197],{"class":2378},[2337,23116,4142],{"class":3979},[2337,23118,4145],{"class":2378},[2337,23120,4227],{"class":2347},[2337,23122,4230],{"class":2378},[2337,23124,23125],{"class":2339,"line":4206},[2337,23126,4236],{"class":2378},[2337,23128,23129],{"class":2339,"line":4218},[2337,23130,4242],{"class":2378},[1640,23132,23133,23134,23137],{},"To use this as is, call the ",[1712,23135,23136],{},"sendToSupabase"," function at the end of your script.",[2329,23139,23141],{"className":2366,"code":23140,"language":2368,"meta":1614,"style":1614},"sendToSupabase();\n",[1712,23142,23143],{"__ignoreMap":1614},[2337,23144,23145,23147],{"class":2339,"line":2340},[2337,23146,23136],{"class":3979},[2337,23148,4191],{"class":2378},[1640,23150,23151,23152,23154],{},"If you are using a large amount of data and you are struggling to pass it all in a single call, you may require the use of batching - breaking down the data and sending it as smaller chunks. This can also help work around the possibility of Supabase not writing rows due to an issue with a single row of data. We will need to use a slightly modified ",[1712,23153,23136],{}," function:",[2329,23156,23158],{"className":2366,"code":23157,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Change this to meet your requirements.\nconst batchSize = 10;\n\nconst sendToSupabase = async () => {\n    for (var i = 0; i \u003C ogData.length; i += batchSize) {\n        try {\n            const response = await fetch(supabase_url, {\n                method: 'POST',\n                headers: {\n                    'apikey': api_key,\n                    'Authorization': `Bearer ${api_key}`,\n                    'Content-Type': 'application\u002Fjson'\n                },\n                body: JSON.stringify(format(ogData.slice(i, i + batchSize)))\n            });\n                               \n            if (!response.ok) {\n                console.error(\"Something went wrong with response\", response); \n                return;\n            }\n      \n            const result = await response.json();\n            console.log(result);\n        } catch (e) {\n            console.log(\"Something went wrong\", e);\n        }\n    }\n}\n",[1712,23159,23160,23165,23177,23181,23197,23226,23233,23248,23257,23262,23269,23284,23293,23298,23325,23330,23334,23345,23358,23365,23369,23373,23389,23397,23407,23420,23424,23428],{"__ignoreMap":1614},[2337,23161,23162],{"class":2339,"line":2340},[2337,23163,23164],{"class":4521},"\u002F\u002F Change this to meet your requirements.\n",[2337,23166,23167,23169,23171,23173,23175],{"class":2339,"line":1618},[2337,23168,3918],{"class":3592},[2337,23170,19625],{"class":3488},[2337,23172,3924],{"class":3592},[2337,23174,19531],{"class":3488},[2337,23176,3930],{"class":2378},[2337,23178,23179],{"class":2339,"line":1615},[2337,23180,3504],{"emptyLinePlaceholder":1627},[2337,23182,23183,23185,23187,23189,23191,23193,23195],{"class":2339,"line":3501},[2337,23184,3918],{"class":3592},[2337,23186,22935],{"class":3979},[2337,23188,3924],{"class":3592},[2337,23190,3985],{"class":3592},[2337,23192,3988],{"class":2378},[2337,23194,3991],{"class":3592},[2337,23196,3994],{"class":2378},[2337,23198,23199,23201,23203,23205,23207,23209,23211,23213,23215,23218,23220,23222,23224],{"class":2339,"line":3507},[2337,23200,22825],{"class":3592},[2337,23202,4127],{"class":2378},[2337,23204,6550],{"class":3592},[2337,23206,19545],{"class":2378},[2337,23208,6556],{"class":3592},[2337,23210,19550],{"class":3488},[2337,23212,19553],{"class":2378},[2337,23214,19556],{"class":3592},[2337,23216,23217],{"class":2378}," ogData.",[2337,23219,19562],{"class":3488},[2337,23221,19553],{"class":2378},[2337,23223,19567],{"class":3592},[2337,23225,19570],{"class":2378},[2337,23227,23228,23231],{"class":2339,"line":3579},[2337,23229,23230],{"class":3592},"        try",[2337,23232,3994],{"class":2378},[2337,23234,23235,23238,23240,23242,23244,23246],{"class":2339,"line":3658},[2337,23236,23237],{"class":3592},"            const",[2337,23239,3699],{"class":3488},[2337,23241,3924],{"class":3592},[2337,23243,4013],{"class":3592},[2337,23245,4016],{"class":3979},[2337,23247,22966],{"class":2378},[2337,23249,23250,23253,23255],{"class":2339,"line":3664},[2337,23251,23252],{"class":2378},"                method: ",[2337,23254,4027],{"class":2347},[2337,23256,4030],{"class":2378},[2337,23258,23259],{"class":2339,"line":3670},[2337,23260,23261],{"class":2378},"                headers: {\n",[2337,23263,23264,23267],{"class":2339,"line":3693},[2337,23265,23266],{"class":2347},"                    'apikey'",[2337,23268,22986],{"class":2378},[2337,23270,23271,23274,23276,23278,23280,23282],{"class":2339,"line":3746},[2337,23272,23273],{"class":2347},"                    'Authorization'",[2337,23275,3601],{"class":2378},[2337,23277,18464],{"class":2347},[2337,23279,22998],{"class":2378},[2337,23281,4051],{"class":2347},[2337,23283,4030],{"class":2378},[2337,23285,23286,23289,23291],{"class":2339,"line":3760},[2337,23287,23288],{"class":2347},"                    'Content-Type'",[2337,23290,3601],{"class":2378},[2337,23292,18481],{"class":2347},[2337,23294,23295],{"class":2339,"line":3136},[2337,23296,23297],{"class":2378},"                },\n",[2337,23299,23300,23303,23305,23307,23309,23311,23313,23316,23318,23320,23322],{"class":2339,"line":3784},[2337,23301,23302],{"class":2378},"                body: ",[2337,23304,11178],{"class":3488},[2337,23306,1668],{"class":2378},[2337,23308,11183],{"class":3979},[2337,23310,4145],{"class":2378},[2337,23312,23030],{"class":3979},[2337,23314,23315],{"class":2378},"(ogData.",[2337,23317,19584],{"class":3979},[2337,23319,19587],{"class":2378},[2337,23321,10048],{"class":3592},[2337,23323,23324],{"class":2378}," batchSize)))\n",[2337,23326,23327],{"class":2339,"line":3793},[2337,23328,23329],{"class":2378},"            });\n",[2337,23331,23332],{"class":2339,"line":4136},[2337,23333,23042],{"class":2378},[2337,23335,23336,23339,23341,23343],{"class":2339,"line":4154},[2337,23337,23338],{"class":3592},"            if",[2337,23340,4127],{"class":2378},[2337,23342,4130],{"class":3592},[2337,23344,4133],{"class":2378},[2337,23346,23347,23350,23352,23354,23356],{"class":2339,"line":4162},[2337,23348,23349],{"class":2378},"                console.",[2337,23351,4142],{"class":3979},[2337,23353,4145],{"class":2378},[2337,23355,4148],{"class":2347},[2337,23357,4488],{"class":2378},[2337,23359,23360,23363],{"class":2339,"line":4168},[2337,23361,23362],{"class":3592},"                return",[2337,23364,3930],{"class":2378},[2337,23366,23367],{"class":2339,"line":4173},[2337,23368,4457],{"class":2378},[2337,23370,23371],{"class":2339,"line":4194},[2337,23372,4119],{"class":2378},[2337,23374,23375,23377,23379,23381,23383,23385,23387],{"class":2339,"line":4206},[2337,23376,23237],{"class":3592},[2337,23378,4178],{"class":3488},[2337,23380,3924],{"class":3592},[2337,23382,4013],{"class":3592},[2337,23384,4185],{"class":2378},[2337,23386,4188],{"class":3979},[2337,23388,4191],{"class":2378},[2337,23390,23391,23393,23395],{"class":2339,"line":4218},[2337,23392,4139],{"class":2378},[2337,23394,4200],{"class":3979},[2337,23396,4203],{"class":2378},[2337,23398,23399,23402,23404],{"class":2339,"line":4233},[2337,23400,23401],{"class":2378},"        } ",[2337,23403,4212],{"class":3592},[2337,23405,23406],{"class":2378}," (e) {\n",[2337,23408,23409,23411,23413,23415,23417],{"class":2339,"line":4239},[2337,23410,4139],{"class":2378},[2337,23412,4200],{"class":3979},[2337,23414,4145],{"class":2378},[2337,23416,4227],{"class":2347},[2337,23418,23419],{"class":2378},", e);\n",[2337,23421,23422],{"class":2339,"line":4245},[2337,23423,4165],{"class":2378},[2337,23425,23426],{"class":2339,"line":4250},[2337,23427,4236],{"class":2378},[2337,23429,23430],{"class":2339,"line":6244},[2337,23431,4242],{"class":2378},[1640,23433,23434,23435,23137],{},"To use this, call the ",[1712,23436,23136],{},[2329,23438,23439],{"className":2366,"code":23140,"language":2368,"meta":1614,"style":1614},[1712,23440,23441],{"__ignoreMap":1614},[2337,23442,23443,23445],{"class":2339,"line":2340},[2337,23444,23136],{"class":3979},[2337,23446,4191],{"class":2378},[2249,23448,23450],{"id":23449},"read-data-from-a-supabase-table","Read data from a Supabase table",[1566,23452],{},[1640,23454,23455,23456,16073],{},"Reading data from a Supabase table allows you to make use of this data within your axiom.ai automations. To get started, add a ",[1942,23457,3904],{"href":1226},[1640,23459,23460],{},"We will first create variables to store key information used throughout the script. We will break down this script into sections, but this should all be combined into a single script in a single \"Write Javascript\" step.",[2329,23462,23464],{"className":2366,"code":23463,"language":2368,"meta":1614,"style":1614},"\u002F\u002F Replace any item in \u003C> with your data.\nconst supabase_url = \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>\";\nconst api_key = \"\u003CAPI_KEY>\";\n",[1712,23465,23466,23471,23483],{"__ignoreMap":1614},[2337,23467,23468],{"class":2339,"line":2340},[2337,23469,23470],{"class":4521},"\u002F\u002F Replace any item in \u003C> with your data.\n",[2337,23472,23473,23475,23477,23479,23481],{"class":2339,"line":1618},[2337,23474,3918],{"class":3592},[2337,23476,22761],{"class":3488},[2337,23478,3924],{"class":3592},[2337,23480,22766],{"class":2347},[2337,23482,3930],{"class":2378},[2337,23484,23485,23487,23489,23491,23493],{"class":2339,"line":1615},[2337,23486,3918],{"class":3592},[2337,23488,22775],{"class":3488},[2337,23490,3924],{"class":3592},[2337,23492,22780],{"class":2347},[2337,23494,3930],{"class":2378},[1640,23496,23497,23498,23501],{},"Your ",[1712,23499,23500],{},"supabase_url"," variable will need to be slightly modified, depending on what data you are looking to return, for example:",[1569,23503,23504,23507,23510],{},[1572,23505,23506],{},"Return all columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=*\"",[1572,23508,23509],{},"Return specific columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=some_column,other_column\"",[1572,23511,23512,23513,1668],{},"Filtered: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?id=eq.1\", ",[1942,23514,23517],{"href":23515,"rel":23516},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fjavascript\u002Fusing-filters",[3850],"learn more",[1640,23519,23520],{},"Next, we will want to retrieve the data from your Supabase database. You won't need to make any changes to this code:",[2329,23522,23524],{"className":2366,"code":23523,"language":2368,"meta":1614,"style":1614},"const retrieveData = async () => {\n    try {\n      const response = await fetch(supabase_url, {\n        headers: {\n          'apikey': api_key,\n          'Authorization': `Bearer ${api_key}`\n        }\n      });\n        \n      if (!response.ok) {\n        console.error(\"Something went wrong\");\n        return;\n      }\n      \n      const result = await response.json();\n      return result;\n    } catch(e) {\n      console.error(\"Something went wrong\", e);\n    }\n}\n\nconst data = await retrieveData();\n",[1712,23525,23526,23543,23549,23563,23568,23575,23589,23593,23598,23602,23613,23625,23631,23636,23640,23656,23664,23673,23685,23689,23693,23697],{"__ignoreMap":1614},[2337,23527,23528,23530,23533,23535,23537,23539,23541],{"class":2339,"line":2340},[2337,23529,3918],{"class":3592},[2337,23531,23532],{"class":3979}," retrieveData",[2337,23534,3924],{"class":3592},[2337,23536,3985],{"class":3592},[2337,23538,3988],{"class":2378},[2337,23540,3991],{"class":3592},[2337,23542,3994],{"class":2378},[2337,23544,23545,23547],{"class":2339,"line":1618},[2337,23546,3999],{"class":3592},[2337,23548,3994],{"class":2378},[2337,23550,23551,23553,23555,23557,23559,23561],{"class":2339,"line":1615},[2337,23552,18522],{"class":3592},[2337,23554,3699],{"class":3488},[2337,23556,3924],{"class":3592},[2337,23558,4013],{"class":3592},[2337,23560,4016],{"class":3979},[2337,23562,22966],{"class":2378},[2337,23564,23565],{"class":2339,"line":3501},[2337,23566,23567],{"class":2378},"        headers: {\n",[2337,23569,23570,23573],{"class":2339,"line":3507},[2337,23571,23572],{"class":2347},"          'apikey'",[2337,23574,22986],{"class":2378},[2337,23576,23577,23580,23582,23584,23586],{"class":2339,"line":3579},[2337,23578,23579],{"class":2347},"          'Authorization'",[2337,23581,3601],{"class":2378},[2337,23583,18464],{"class":2347},[2337,23585,22998],{"class":2378},[2337,23587,23588],{"class":2347},"}`\n",[2337,23590,23591],{"class":2339,"line":3658},[2337,23592,4165],{"class":2378},[2337,23594,23595],{"class":2339,"line":3664},[2337,23596,23597],{"class":2378},"      });\n",[2337,23599,23600],{"class":2339,"line":3670},[2337,23601,4785],{"class":2378},[2337,23603,23604,23607,23609,23611],{"class":2339,"line":3693},[2337,23605,23606],{"class":3592},"      if",[2337,23608,4127],{"class":2378},[2337,23610,4130],{"class":3592},[2337,23612,4133],{"class":2378},[2337,23614,23615,23617,23619,23621,23623],{"class":2339,"line":3746},[2337,23616,4197],{"class":2378},[2337,23618,4142],{"class":3979},[2337,23620,4145],{"class":2378},[2337,23622,4227],{"class":2347},[2337,23624,6591],{"class":2378},[2337,23626,23627,23629],{"class":2339,"line":3760},[2337,23628,3749],{"class":3592},[2337,23630,3930],{"class":2378},[2337,23632,23633],{"class":2339,"line":3136},[2337,23634,23635],{"class":2378},"      }\n",[2337,23637,23638],{"class":2339,"line":3784},[2337,23639,4119],{"class":2378},[2337,23641,23642,23644,23646,23648,23650,23652,23654],{"class":2339,"line":3793},[2337,23643,18522],{"class":3592},[2337,23645,4178],{"class":3488},[2337,23647,3924],{"class":3592},[2337,23649,4013],{"class":3592},[2337,23651,4185],{"class":2378},[2337,23653,4188],{"class":3979},[2337,23655,4191],{"class":2378},[2337,23657,23658,23661],{"class":2339,"line":4136},[2337,23659,23660],{"class":3592},"      return",[2337,23662,23663],{"class":2378}," result;\n",[2337,23665,23666,23668,23670],{"class":2339,"line":4154},[2337,23667,4209],{"class":2378},[2337,23669,4212],{"class":3592},[2337,23671,23672],{"class":2378},"(e) {\n",[2337,23674,23675,23677,23679,23681,23683],{"class":2339,"line":4162},[2337,23676,18540],{"class":2378},[2337,23678,4142],{"class":3979},[2337,23680,4145],{"class":2378},[2337,23682,4227],{"class":2347},[2337,23684,23419],{"class":2378},[2337,23686,23687],{"class":2339,"line":4168},[2337,23688,4236],{"class":2378},[2337,23690,23691],{"class":2339,"line":4173},[2337,23692,4242],{"class":2378},[2337,23694,23695],{"class":2339,"line":4194},[2337,23696,3504],{"emptyLinePlaceholder":1627},[2337,23698,23699,23701,23704,23706,23708,23710],{"class":2339,"line":4206},[2337,23700,3918],{"class":3592},[2337,23702,23703],{"class":3488}," data",[2337,23705,3924],{"class":3592},[2337,23707,4013],{"class":3592},[2337,23709,23532],{"class":3979},[2337,23711,4191],{"class":2378},[1640,23713,6656,23714,23716],{},[1712,23715,3444],{}," variable should now contain the data from your database. We'll need to change the format of this data and return it to allow your automation to use it, we'll use the following code, again, no changes are required:",[2329,23718,23720],{"className":2366,"code":23719,"language":2368,"meta":1614,"style":1614},"const format = () => {\n  const formatted_data = [];\n  for (var i = 0; i \u003C data.length; i++) {\n    formatted_data.push(Object.values(data[i]))\n  }\n  \n  return formatted_data;\n}\n\nreturn format();\n",[1712,23721,23722,23736,23747,23775,23790,23794,23798,23804,23808,23812],{"__ignoreMap":1614},[2337,23723,23724,23726,23728,23730,23732,23734],{"class":2339,"line":2340},[2337,23725,3918],{"class":3592},[2337,23727,22797],{"class":3979},[2337,23729,3924],{"class":3592},[2337,23731,3988],{"class":2378},[2337,23733,3991],{"class":3592},[2337,23735,3994],{"class":2378},[2337,23737,23738,23741,23743,23745],{"class":2339,"line":1618},[2337,23739,23740],{"class":3592},"  const",[2337,23742,22816],{"class":3488},[2337,23744,3924],{"class":3592},[2337,23746,6559],{"class":2378},[2337,23748,23749,23751,23753,23755,23757,23759,23761,23763,23765,23767,23769,23771,23773],{"class":2339,"line":1615},[2337,23750,19538],{"class":3592},[2337,23752,4127],{"class":2378},[2337,23754,6550],{"class":3592},[2337,23756,19545],{"class":2378},[2337,23758,6556],{"class":3592},[2337,23760,19550],{"class":3488},[2337,23762,19553],{"class":2378},[2337,23764,19556],{"class":3592},[2337,23766,22842],{"class":2378},[2337,23768,19562],{"class":3488},[2337,23770,22847],{"class":2378},[2337,23772,22850],{"class":3592},[2337,23774,18418],{"class":2378},[2337,23776,23777,23780,23782,23785,23787],{"class":2339,"line":3501},[2337,23778,23779],{"class":2378},"    formatted_data.",[2337,23781,6629],{"class":3979},[2337,23783,23784],{"class":2378},"(Object.",[2337,23786,4532],{"class":3979},[2337,23788,23789],{"class":2378},"(data[i]))\n",[2337,23791,23792],{"class":2339,"line":3507},[2337,23793,11270],{"class":2378},[2337,23795,23796],{"class":2339,"line":3579},[2337,23797,5145],{"class":2378},[2337,23799,23800,23802],{"class":2339,"line":3658},[2337,23801,18803],{"class":3592},[2337,23803,22912],{"class":2378},[2337,23805,23806],{"class":2339,"line":3664},[2337,23807,4242],{"class":2378},[2337,23809,23810],{"class":2339,"line":3670},[2337,23811,3504],{"emptyLinePlaceholder":1627},[2337,23813,23814,23816,23818],{"class":2339,"line":3693},[2337,23815,4573],{"class":3592},[2337,23817,22797],{"class":3979},[2337,23819,4191],{"class":2378},[1640,23821,23822,23823,23825,23826,23829,23830,23832],{},"Your data will now be stored in the ",[1712,23824,4583],{}," data token that is output from the \"Write Javascript\" step. Learn more about ",[1942,23827,23828],{"href":1373},"How to pass data between steps in your automation",". Use the ",[1942,23831,667],{"href":1075}," step to loop through the rows of data returned.",[1561,23834,23836],{"id":23835},"triggering-an-axiomai-automation-from-a-supabase-database-event","Triggering an axiom.ai automation from a Supabase database event",[1566,23838],{},[1640,23840,23841,23842,4935],{},"Supabase offers the ability to trigger webhooks based on events happening within your database. Triggering axiom.ai automations with webhooks requires a paid plan, see ",[1942,23843,1535],{"href":1534},[1640,23845,22720,23846,23848,23849,1668],{},[1942,23847,1110],{"href":1111}," step to your automation - we recommend adding this as the first step of your automation. For more information on setting test data, see ",[1942,23850,1110],{"href":1111},[1640,23852,23853],{},"In Supabase, head to your Dashboard, then into \"Integrations\" and \"Database Webhooks\" - it should already be installed. Click \"Create a new hook\" to create a new webhook. Configure as instructed by the user interface, specifically setting the following fields with axiom.ai data:",[1701,23855,23856],{},[2165,23857,23858,23864,23872],{},[1572,23859,23860,23863],{},[1653,23861,23862],{},"HTTP Request - Method:"," Set to 'POST'.",[1572,23865,23866,23869,23870,1668],{},[1653,23867,23868],{},"HTTP Request - URL:"," the axiom.ai endpoint is ",[1712,23871,2191],{},[1572,23873,23874,23877],{},[1653,23875,23876],{},"Headers:"," often pre-configured, 'Content-Type': 'application\u002Fjson'.",[1640,23879,23880],{},"Note, it's not currently possible to send data to axiom.ai with these webhooks - however, an automation that retrieves data from Supabase can be triggered using this method. Supabase webhooks are for notification purpose only.",[1561,23882,2386],{"id":2385},[1566,23884],{},[1640,23886,23887,23888,2838],{},"To test adding data to Supabase, click \"Run\" within the Builder - open up your Supabase dashboard and open the table to view any changes. To test retrieving data from Supabase, add an output for your data, for example, a ",[1942,23889,4900],{"href":1214},[1640,23891,4903],{},[1561,23893,2406],{"id":2405},[1566,23895],{},[1640,23897,23898],{},"Combining Supabase and axiom.ai allows you more flexibility on your data storage to power up your automations. Using Supabase opens up the possibility to connect external databases using their integrations such as S3, Stripe, Firebase and much more. We are excited to see what you build!",[1566,23900],{},[1640,23902,23903],{},"Information accurate as of November 2024.",[2421,23905,23906],{},"html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}",{"title":1614,"searchDepth":1615,"depth":1615,"links":23908},[23909,23910,23914,23915,23916],{"id":2155,"depth":1618,"text":2156},{"id":22702,"depth":1618,"text":22703,"children":23911},[23912,23913],{"id":22711,"depth":1615,"text":22712},{"id":23449,"depth":1615,"text":23450},{"id":23835,"depth":1618,"text":23836},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to automatically send data to your Supabase databases and trigger your axiom.ai automations using triggers.",{"type":1712,"format":1701,"intent_type":23919,"intent":2437,"tags":23920,"platfrom":23921},"wokflow",[2439,2440,22633],[22652],"\u002Fguides\u002Fsupabase",{"title":22641,"description":23917},"guides\u002Fsupabase","3QWB2e30Zph2x51OK35CFrTWcGp5GoCSUP_TRpnm_bI",{"id":23927,"title":23928,"body":23929,"date":1628,"description":24295,"extension":1621,"meta":24296,"navigation":1627,"order":1628,"path":24299,"seo":24300,"stem":24301,"__hash__":24302},"guides\u002Fguides\u002Ftadabase.md","How to automate Tadabase with axiom.ai",{"type":1555,"value":23930,"toc":24284},[23931,23933,23941,23943,23945,23970,23978,23982,23985,23989,23998,24004,24007,24011,24014,24034,24068,24073,24077,24080,24096,24179,24185,24189,24193,24196,24199,24215,24249,24253,24255,24258,24265,24271,24273,24276,24282],[1566,23932],{},[1640,23934,23935,23940],{},[1942,23936,23939],{"href":23937,"rel":23938},"https:\u002F\u002Ftadabase.io",[3850],"Tadabase"," allows you to built custom applications and databases to power your workflows. When combined with axiom.ai, it's easy to send data to your Tadabase data tables and update the data as needed with their webhook systems.",[1561,23942,2156],{"id":2155},[1640,23944,22660],{},[1701,23946,23947],{},[2165,23948,23949,23952,23955,23958,23967],{},[1572,23950,23951],{},"Sign up to Tadabase.",[1572,23953,23954],{},"Create a new application.",[1572,23956,23957],{},"Create a new data table.",[1572,23959,23960,23961,23966],{},"Sign up to ",[1942,23962,23965],{"href":23963,"rel":23964},"https:\u002F\u002Fcatcher.tadabase.io",[3850],"Tadabase's Webhook Catcher"," (using the same email as your Tadabase account).",[1572,23968,23969],{},"The \"App ID\", \"API Key\" and \"API Secret\" for the application (\"Settings\" → \"API Keys\" → \"Generate New Key\").",[1640,23971,23972,23973,13800],{},"More details on how to do the steps above can be found in the ",[1942,23974,23977],{"href":23975,"rel":23976},"https:\u002F\u002Fdocs.tadabase.io\u002Fgetting-started\u002Farticle\u002Fgetting-started-with-tadabase",[3850],"Getting Started with Tadabase",[1561,23979,23981],{"id":23980},"working-with-tadabase-data-in-axiomai","Working with Tadabase data in axiom.ai",[1640,23983,23984],{},"For demonstration purposes, we will be making use of a simple \"users\" data table throughout this guide - you will need to update any code or triggers used in this guide to your own use case and data table fields.",[2249,23986,23988],{"id":23987},"creating-a-new-webhook","Creating a new webhook",[1640,23990,23991,23992,23997],{},"Tadabase has a great guide on how to set up your application to be ready to receive webhooks, you'll find their ",[1942,23993,23996],{"href":23994,"rel":23995},"https:\u002F\u002Fdocs.tadabase.io\u002Fwebhooks\u002Farticle\u002Fincoming-webhooks",[3850],"Incoming Webhooks"," documentation on their website. We recommend following this before continuing this guide.",[1640,23999,24000,24001,1668],{},"You should end up with a webhook URL similar to the following: ",[1712,24002,24003],{},"https:\u002F\u002Fcatcher.tadabase.io\u002Fwebhook\u002F\u003CID>",[1640,24005,24006],{},"You'll want to use the \"Field Slug\" for the fields that you wish to edit or update - you can find these by heading into the data table, then into the \"Fields\" tab.",[2249,24008,24010],{"id":24009},"creating-a-single-record","Creating a single record",[1640,24012,24013],{},"To create a single record, you'll need the webhook URL that was created in the previous section. Then, in your axiom.ai automation set up your automation as normal, once you are ready to send your data, add the following step:",[1701,24015,24016],{},[2165,24017,24018,24022,24028],{},[1572,24019,9913,24020,16073],{},[1942,24021,9287],{"href":1194},[1572,24023,24024,24025,24027],{},"Add the webhook URL in the ",[1712,24026,2187],{}," field.",[1572,24029,24030,24031,24033],{},"Configure the ",[1712,24032,17936],{}," field based on your data table fields. See an example below.",[2329,24035,24037],{"className":9297,"code":24036,"language":4188,"meta":1614,"style":1614},"{\n    \"name\": \"Jane Doe\",\n    \"email\": \"example@axiom.ai\"\n}\n",[1712,24038,24039,24043,24054,24064],{"__ignoreMap":1614},[2337,24040,24041],{"class":2339,"line":2340},[2337,24042,9305],{"class":2378},[2337,24044,24045,24047,24049,24052],{"class":2339,"line":1618},[2337,24046,11106],{"class":9310},[2337,24048,3601],{"class":2378},[2337,24050,24051],{"class":2347},"\"Jane Doe\"",[2337,24053,4030],{"class":2378},[2337,24055,24056,24059,24061],{"class":2339,"line":1615},[2337,24057,24058],{"class":9310},"    \"email\"",[2337,24060,3601],{"class":2378},[2337,24062,24063],{"class":2347},"\"example@axiom.ai\"\n",[2337,24065,24066],{"class":2339,"line":3501},[2337,24067,4242],{"class":2378},[1640,24069,24070,24071,13800],{},"Remember, you can use the \"Insert data\" button to insert data tokens from your automation, learn more in our ",[1942,24072,9360],{"href":1373},[2249,24074,24076],{"id":24075},"creating-multiple-records","Creating multiple records",[1640,24078,24079],{},"To create multiple records, you'll need the webhook URL that was created in the previous section. You'll need to have the field mapping of your webhook set to \"Multi-value Webhook\" - you can edit this if it's not already set. Then, in your axiom.ai automation set up your automation as normal, once you are ready to send your data, add the following step:",[1701,24081,24082],{},[2165,24083,24084,24088,24092],{},[1572,24085,9913,24086,16073],{},[1942,24087,9287],{"href":1194},[1572,24089,24024,24090,24027],{},[1712,24091,2187],{},[1572,24093,24030,24094,24033],{},[1712,24095,17936],{},[2329,24097,24099],{"className":9297,"code":24098,"language":4188,"meta":1614,"style":1614},"{\n    \"\u003CMAPPING_FIELD>\": [\n        {\n            \"name\": \"Jane Doe\",\n            \"email\": \"example@axiom.ai\"\n        },\n        {\n            \"name\": \"John Smith\",\n            \"email\": \"example@axiom.ai\"\n        }\n    ]\n}\n",[1712,24100,24101,24105,24113,24118,24129,24138,24143,24147,24158,24166,24170,24175],{"__ignoreMap":1614},[2337,24102,24103],{"class":2339,"line":2340},[2337,24104,9305],{"class":2378},[2337,24106,24107,24110],{"class":2339,"line":1618},[2337,24108,24109],{"class":9310},"    \"\u003CMAPPING_FIELD>\"",[2337,24111,24112],{"class":2378},": [\n",[2337,24114,24115],{"class":2339,"line":1615},[2337,24116,24117],{"class":2378},"        {\n",[2337,24119,24120,24123,24125,24127],{"class":2339,"line":3501},[2337,24121,24122],{"class":9310},"            \"name\"",[2337,24124,3601],{"class":2378},[2337,24126,24051],{"class":2347},[2337,24128,4030],{"class":2378},[2337,24130,24131,24134,24136],{"class":2339,"line":3507},[2337,24132,24133],{"class":9310},"            \"email\"",[2337,24135,3601],{"class":2378},[2337,24137,24063],{"class":2347},[2337,24139,24140],{"class":2339,"line":3579},[2337,24141,24142],{"class":2378},"        },\n",[2337,24144,24145],{"class":2339,"line":3658},[2337,24146,24117],{"class":2378},[2337,24148,24149,24151,24153,24156],{"class":2339,"line":3664},[2337,24150,24122],{"class":9310},[2337,24152,3601],{"class":2378},[2337,24154,24155],{"class":2347},"\"John Smith\"",[2337,24157,4030],{"class":2378},[2337,24159,24160,24162,24164],{"class":2339,"line":3670},[2337,24161,24133],{"class":9310},[2337,24163,3601],{"class":2378},[2337,24165,24063],{"class":2347},[2337,24167,24168],{"class":2339,"line":3693},[2337,24169,4165],{"class":2378},[2337,24171,24172],{"class":2339,"line":3746},[2337,24173,24174],{"class":2378},"    ]\n",[2337,24176,24177],{"class":2339,"line":3760},[2337,24178,4242],{"class":2378},[1640,24180,6656,24181,24184],{},[1712,24182,24183],{},"\u003CMAPPING_FIELD>"," should correspond with the field that you inserted into the \"Multi-value Webhook\" field in the field mapping section of your webhook.",[1640,24186,24070,24187,13800],{},[1942,24188,9360],{"href":1373},[2249,24190,24192],{"id":24191},"updating-a-record","Updating a record",[1640,24194,24195],{},"To create multiple records, you'll need the webhook URL that was created in the previous section. You'll need to edit your webhook and set the \"Upon Receiving Webhook\" option to \"Update an Existing Record By ID\" or \"Update an Existing Record by Field\", depending on your needs. Optionally, you can set the webhook to \"create new if record not found\". Set the field that the webhook should match into the input, for example, \"id\" set to \"Dynamic\".",[1640,24197,24198],{},"Then, in your axiom.ai automation set up your automation as normal, once you are ready to send your data, add the following step:",[1701,24200,24201],{},[2165,24202,24203,24207,24211],{},[1572,24204,9913,24205,16073],{},[1942,24206,9287],{"href":1194},[1572,24208,24024,24209,24027],{},[1653,24210,2187],{},[1572,24212,24030,24213,24033],{},[1653,24214,17936],{},[2329,24216,24218],{"className":9297,"code":24217,"language":4188,"meta":1614,"style":1614},"{\n    \"id\": \"4MXQJdrZ6v\",\n    \"name\": \"John Smith\"\n}\n",[1712,24219,24220,24224,24236,24245],{"__ignoreMap":1614},[2337,24221,24222],{"class":2339,"line":2340},[2337,24223,9305],{"class":2378},[2337,24225,24226,24229,24231,24234],{"class":2339,"line":1618},[2337,24227,24228],{"class":9310},"    \"id\"",[2337,24230,3601],{"class":2378},[2337,24232,24233],{"class":2347},"\"4MXQJdrZ6v\"",[2337,24235,4030],{"class":2378},[2337,24237,24238,24240,24242],{"class":2339,"line":1615},[2337,24239,11106],{"class":9310},[2337,24241,3601],{"class":2378},[2337,24243,24244],{"class":2347},"\"John Smith\"\n",[2337,24246,24247],{"class":2339,"line":3501},[2337,24248,4242],{"class":2378},[1640,24250,24070,24251,13800],{},[1942,24252,9360],{"href":1373},[1561,24254,2386],{"id":2385},[1640,24256,24257],{},"To test your workflow, click \"Run\" in your axiom.ai automation. Tadabase takes a few minutes to process API calls so give it a few minutes, and then head to your data table to check if your data has been added.",[1640,24259,24260,24261,24264],{},"If your data has not been added, navigate to your webhook in the ",[1942,24262,23965],{"href":23963,"rel":24263},[3850]," where there is a section that details failed webhook requests - review these failed requests for more information on what the error may be.",[1640,24266,24267,24268],{},"If there are errors within your automation, you'll find these in the builder, or in your run reports. Learn more about ",[1942,24269,24270],{"href":1487},"How to Debug",[1561,24272,2406],{"id":2405},[1640,24274,24275],{},"Combining the automation powers of axiom.ai with the storage options offered by Tadabase offers you an abundance of opportunities to power up your workflow. There are many use cases for this workflow, such as storing the data that your automation scrapes, and then providing it to your team using a Tadabase web application interface.",[1640,24277,24278,24281],{},[2417,24279,24280],{},"Note",", it's not currently possible to use Tadabase's Outgoing Webhooks to trigger your axiom.ai automations from changes to your data tables - it's not currently possible to customise these webhooks to include the data that axiom.ai needs to trigger your automations. We hope that this changes in the future, but for now would recommend contacting their support team to log your feedback request.",[2421,24283,9429],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":24285},[24286,24287,24293,24294],{"id":2155,"depth":1618,"text":2156},{"id":23980,"depth":1618,"text":23981,"children":24288},[24289,24290,24291,24292],{"id":23987,"depth":1615,"text":23988},{"id":24009,"depth":1615,"text":24010},{"id":24075,"depth":1615,"text":24076},{"id":24191,"depth":1615,"text":24192},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to automatically send data to your Tadabase databases and trigger your axiom.ai automations using triggers.",{"type":1712,"format":1701,"intent_type":2128,"intent":2437,"tags":24297,"platfrom":24298},[2439,2440,22633],[23939],"\u002Fguides\u002Ftadabase",{"title":23928,"description":24295},"guides\u002Ftadabase","_cFNjxGk-vDSB7sAhmka_Q0nrME7lvBVsOExsf6KD_Y",{"id":24304,"title":24305,"body":24306,"date":1628,"description":24526,"extension":1621,"meta":24527,"navigation":1627,"order":1628,"path":24531,"seo":24532,"stem":24533,"__hash__":24534},"guides\u002Fguides\u002Ftransparency-report.md","How to scrape Google Transparency reports",{"type":1555,"value":24307,"toc":24522},[24308,24310,24316,24319,24333,24351,24355,24357,24359,24362,24392,24396,24398,24415,24421],[1566,24309],{},[1640,24311,6656,24312,24315],{},[1653,24313,24314],{},"Copyright"," section of the Google Transparency Report provides users insights into URLs removed from Google Search due to copyright infringement. It's possible to scrape and extract information about the flagged content, the entities requesting removal, and the reasons for delisting.",[1640,24317,24318],{},"In this guide, you'll learn how to scrape copyright data from these reports into a Google Sheet using two web scrapers:",[1701,24320,24321],{},[2165,24322,24323,24330],{},[1572,24324,24325,24326,24329],{},"The first web scraper will input search terms, extract links to ",[1653,24327,24328],{},"\"Copyright Owners\"",", and save them to a Google Sheet.",[1572,24331,24332],{},"The second web scraper will process the extracted links by visiting the pages, extracting data for \"Specified Domains\" and \"Reporting Organizations,\" and writing this information into the same or another Google Sheet.",[1640,24334,5541,24335,2068,24341,24347,24348],{},[1653,24336,24337],{},[1942,24338,24340],{"href":24339,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_input_search_term_and_scrape_template.json","first",[1653,24342,24343],{},[1942,24344,24346],{"href":24345,"download":1627},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_scraper_two-owners-data.json","second"," template featured in this guide. This template was correct at the time of creation but may require updating or customization to suit your specific use case. If you’re unsure how to upload it, ",[1942,24349,24350],{"href":849},"watch this video.",[2202,24352],{"src":24353,"alt":24354},"\u002Fdocs\u002Fguides\u002Fexplore-the-data.webp","Scraping Google Transparency Report pages for content delistings due to copyright data.",[1561,24356,2156],{"id":2155},[1566,24358],{},[1640,24360,24361],{},"To begin, create a Google Sheet and add search terms to input into the \"Search\" field.",[1701,24363,24364],{},[1569,24365,24366,24374,24380,24386],{},[1572,24367,24368,24371,24372,6792],{},[1653,24369,24370],{},"1. Create a new Google Sheet",": If you're logged into Google, type ",[1712,24373,6791],{},[1572,24375,24376,24379],{},[1653,24377,24378],{},"2. Set up tab one",": Add your search terms to the first tab.",[1572,24381,24382,24385],{},[1653,24383,24384],{},"3. Set up tab two",": Name this second tab \"Copyright Owners.\"",[1572,24387,24388,24391],{},[1653,24389,24390],{},"4. Set up tab three",": Name this third tab \"Domain and Reporting Data.\"",[1561,24393,24395],{"id":24394},"how-to-build-a-web-scraper-to-extract-copyright-owners","How to build a web scraper to extract 'copyright owners'",[1566,24397],{},[1640,24399,24400,24401,24406,24407,5029,24409,24411,24412,24414],{},"This web scraper extracts data from the ",[1942,24402,24405],{"href":24403,"rel":24404},"https:\u002F\u002Ftransparencyreport.google.com\u002Fcopyright\u002Fexplore",[3850],"Copyright Removal Request Data"," search page. The bot inputs search terms and extracts links to \"Copyright Owners,\" saving them to a Google Sheet.\nTo get started, open ",[1653,24408,5028],{},[1653,24410,5032],{}," to use the no-code bot builder for creating the Google scraper. Then, click ",[1653,24413,5036],{}," to begin.",[1640,24416,5040,24417,5044,24419],{},[1942,24418,2127],{"href":24339,"download":1627},[1942,24420,5047],{"href":849},[1701,24422,24423],{},[1569,24424,24425,24442,24462],{},[1572,24426,24427,1710,24429,24431],{},[1653,24428,1709],{},[1712,24430,1714],{},[1569,24432,24433,24438],{},[1572,24434,24435,24437],{},[1712,24436,1721],{},": Search for the Google Sheet you created in the \"Spreadsheet\" field. Once found, click to select.",[1572,24439,24440,9539],{},[1712,24441,1727],{},[1572,24443,24444,1710,24446,24448],{},[1653,24445,1733],{},[1712,24447,1043],{},[1569,24449,24450],{},[1572,24451,24452,24454,24455,5322,24458,5145],{},[1712,24453,1751],{},": Insert this ",[1942,24456,5513],{"href":24403,"rel":24457},[3850],[2202,24459],{"src":24460,"alt":24461},"\u002Fdocs\u002Fguides\u002Fscraper-one-url.webp","axiom.ai using the go-to page step to load the Transparency Report page",[1572,24463,24464,1710,24466,24468,24478],{},[1653,24465,5351],{},[1712,24467,667],{},[1569,24469,24470],{},[1572,24471,24472,24474,24475,24477],{},[1712,24473,667],{},": Click 'Insert Data' and select ",[1712,24476,1759],{},". The loop step will now iterate through the URLs in the Google Sheet.",[1569,24479,24480,24504,24517],{},[1572,24481,24482,1710,24484,24486],{},[1653,24483,8001],{},[1712,24485,8004],{},[1569,24487,24488,24495],{},[1572,24489,24490,24474,24492,24494],{},[1712,24491,2563],{},[1712,24493,1759],{}," to pass the search term from the sheet.",[1572,24496,24497,24499,24500,5145],{},[1712,24498,6915],{},": Choose column 'A' in the preview.\n",[2202,24501],{"src":24502,"alt":24503},"\u002Fdocs\u002Fguides\u002Fscraper-one-search.webp","axiom.ai using the enter text step to input search terms in the Google Transparency Report page",[1572,24505,24506,1710,24508,24510],{},[1653,24507,8013],{},[1712,24509,16376],{},[1569,24511,24512],{},[1572,24513,24514,24516],{},[1712,24515,6938],{},": Press 'Record', then 'Return'.",[1572,24518,24519,24521],{},[1653,24520,8024],{}," `",{"title":1614,"searchDepth":1615,"depth":1615,"links":24523},[24524,24525],{"id":2155,"depth":1618,"text":2156},{"id":24394,"depth":1618,"text":24395},"Learn how to use axiom.ai to scrape content delistings due to copyright data from Google Transparency Report pages and export it directly into a Google Sheet without writing a single line of code. This guide will walk you through setting up the no-code web scraper step by step, enabling you to extract and analyze copyright delisting data.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2658,"intent":9877,"tags":24528,"platfrom":24530},[2132,24529,21114],"reporting",[8883],"\u002Fguides\u002Ftransparency-report",{"title":24305,"description":24526},"guides\u002Ftransparency-report","n9dwxRTZYdzNhbDsqBJA1jTx-eCKxyLJTTXnM5rSDUg",{"id":24536,"title":24537,"body":24538,"date":2652,"description":24787,"extension":1621,"meta":24788,"navigation":1627,"order":1628,"path":24792,"seo":24793,"stem":24794,"__hash__":24795},"guides\u002Fguides\u002Ftwitter-direct-messages.md","How to automate Twitter X direct messages",{"type":1555,"value":24539,"toc":24779},[24540,24542,24545,24547,24549,24557,24561,24568,24572,24574,24578,24684,24688,24693,24695,24699,24701,24706,24775],[1566,24541],{},[1640,24543,24544],{},"Learn how to automate sending tweets with a Chrome bot for X(Twitter). Install the template and set up your bot in a few clicks on your browser. This Twitter template utilises a Google Sheet that includes a list of Twitter profiles for messaging. It proceeds to launch Twitter in Chrome and loops through each profile, clicking on the message button and then entering a message before hitting the return key to send the message. Just like how you would message from a profile page.",[1558,24546],{},[1561,24548,2463],{"id":2462},[1640,24550,1651,24551,20827,24553,24556],{},[1653,24552,1655],{},[1653,24554,24555],{},"\"Twitter Messages\""," then add profile links.",[1561,24558,24560],{"id":24559},"install-the-twitter-x-direct-messages-bot","Install the Twitter X direct messages bot",[1640,24562,24563,24564,1679,24566,1683],{},"To install this Twitter X direct messages bot click ",[1653,24565,1678],{},[1653,24567,1682],{},[1640,24569,1686,24570,1668],{},[1653,24571,1689],{},[1640,24573,1692],{},[1561,24575,24577],{"id":24576},"configure-your-twitter-x-direct-messages-bot","Configure your Twitter X direct messages bot",[1701,24579,24580,24682],{},[1569,24581,24582,24599],{},[1572,24583,24584,1710,24586,24588],{},[1653,24585,1709],{},[1712,24587,1714],{},[1569,24589,24590,24594],{},[1572,24591,24592,1722],{},[1712,24593,1721],{},[1572,24595,24596,24598],{},[1712,24597,1727],{},": Choose the tab with the profile links.",[1572,24600,24601,1710,24603,24605],{},[1653,24602,1733],{},[1712,24604,667],{},[1569,24606,24607,24623,24629,24666],{},[1572,24608,24609,1710,24611,24613],{},[1653,24610,1742],{},[1712,24612,1043],{},[1569,24614,24615],{},[1572,24616,24617,1752,24619,1756,24621,1668],{},[1712,24618,1751],{},[1712,24620,1814],{},[1712,24622,1847],{},[1572,24624,24625,1710,24627,11855],{},[1653,24626,1765],{},[1712,24628,1768],{},[1572,24630,24631,1710,24633,14411,24635],{},[1653,24632,1790],{},[1712,24634,12903],{},[1569,24636,24637,24642,24658],{},[1572,24638,24639,11855],{},[1653,24640,24641],{},"2.3.1 – 2.3.2",[1572,24643,24644,1710,24647,24649],{},[1653,24645,24646],{},"2.3.3",[1712,24648,2556],{},[1569,24650,24651],{},[1572,24652,24653,1752,24655,24657],{},[1712,24654,2563],{},[1712,24656,1814],{},", select message from Google Sheet or type directly into the input.",[1572,24659,24660,1710,24663,11855],{},[1653,24661,24662],{},"2.3.4",[1712,24664,24665],{},"Press Key(s): Send message",[1572,24667,24668,1710,24670,24672],{},[1653,24669,1833],{},[1712,24671,1901],{},[1569,24673,24674,24678],{},[1572,24675,24676,1722],{},[1712,24677,1721],{},[1572,24679,24680,14382],{},[1712,24681,1727],{},[1640,24683,2593],{},[1561,24685,24687],{"id":24686},"run-your-twitter-x-direct-messages-bot","Run your Twitter X direct messages bot",[1640,24689,24690,24691,1668],{},"To test an Instagram scraper, initiate the bot with the desktop runner and let it run a few loops. If you do not want the Messages to send disable step 2.3.6. Then, stop the bot and review the data in the linked Google Sheet for accuracy and completeness. If you wish to schedule the bot, ",[1942,24692,2603],{"href":638},[1561,24694,1937],{"id":1936},[1640,24696,1940,24697,1946],{},[1942,24698,1945],{"href":1944},[1561,24700,1398],{"id":1949},[1640,24702,24703,24704,1668],{},"We recommend you watch the video to troubleshoot. If you wish to schedule the bot, you will need to share the Cookie in settings or ",[1942,24705,2603],{"href":638},[1701,24707,24708],{},[1569,24709,24710,24720,24730,24741,24751,24764],{},[1572,24711,24712,24715,1965,24717,24719],{},[1653,24713,24714],{},"Profile pages not loading?",[1963,24716],{},[1712,24718,14785],{},", check you have inserted the data correctly.",[1572,24721,24722,24725,1965,24727,24729],{},[1653,24723,24724],{},"No data being found?",[1963,24726],{},[1712,24728,1987],{},", reselect an element that wraps around the message button.",[1572,24731,24732,24735,1965,24737,24740],{},[1653,24733,24734],{},"Not running X in English?",[1963,24736],{},[1712,24738,24739],{},"Step 2.3 – If condition: Check for Message button",", change the condition to check for 'Message' in your native language.",[1572,24742,24743,24746,24748,24749,1668],{},[1653,24744,24745],{},"Data to check not set?",[1963,24747],{},"\nIn the same step, make sure it is set to ",[1712,24750,1818],{},[1572,24752,24753,24755,1965,24757,24760,24761,1668],{},[1653,24754,9063],{},[1963,24756],{},[1712,24758,24759],{},"Step 2.3.1 – Click Element: Message",", reselect the message button. Try using the ",[1942,24762,24763],{"href":1391},"text selector",[1572,24765,24766,24769,1965,24771,24774],{},[1653,24767,24768],{},"No message being added?",[1963,24770],{},[1712,24772,24773],{},"Step 2.3.3 – Enter Text: Message",", check you have inserted data or try reselecting the text input field.",[1640,24776,2101,24777],{},[1942,24778,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":24780},[24781,24782,24783,24784,24785,24786],{"id":2462,"depth":1618,"text":2463},{"id":24559,"depth":1618,"text":24560},{"id":24576,"depth":1618,"text":24577},{"id":24686,"depth":1618,"text":24687},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to automate Twitter\u002FX direct messages using axiom.ai and Google Sheets. This guide covers setting up, configuring, and running a bot to send personalized messages.",{"read":2655,"level":2123,"video":24789,"templateId":6393,"type":2126,"format":2127,"intent_type":2658,"intent":2659,"tags":24790,"platfrom":24791},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6GPiwu8on0Q",[2661,2662,2665],[11659,11660],"\u002Fguides\u002Ftwitter-direct-messages",{"title":24537,"description":24787},"guides\u002Ftwitter-direct-messages","FRkc4W9-rgU8_sevokVUqlIUROXCjeQr_UiMjeNXmIs",{"id":24797,"title":24798,"body":24799,"date":24976,"description":24977,"extension":1621,"meta":24978,"navigation":1627,"order":1628,"path":24983,"seo":24984,"stem":24985,"__hash__":24986},"guides\u002Fguides\u002Fupload-files-from-a-google-sheet.md","How to automate uploading files",{"type":1555,"value":24800,"toc":24968},[24801,24803,24806,24808,24810,24815,24819,24827,24829,24831,24835,24912,24916,24919,24921,24932,24934,24936,24964],[1566,24802],{},[1640,24804,24805],{},"This template automates file uploads to various webpages from a Google Sheet. It reads a file path and uploads the file through a webpage's input field, simulating human interactions.",[1558,24807],{},[1561,24809,1648],{"id":1647},[1640,24811,1651,24812,24814],{},[1653,24813,1655],{},", assuming you already have an account. Name your sheet something like 'Uploads’, add file paths into column A.",[1561,24816,24818],{"id":24817},"install-the-file-upload-bot","Install the File upload bot",[1640,24820,24821,24822,24824,24825,1683],{},"To install this File upload bot click ",[1653,24823,1678],{},".  If you’re a new user, you’ll have to click ",[1653,24826,1682],{},[1640,24828,2486],{},[1640,24830,1692],{},[1561,24832,24834],{"id":24833},"configure-your-file-upload-bot","Configure your File upload bot",[1701,24836,24837],{},[1569,24838,24839,24856],{},[1572,24840,24841,1710,24843,24845],{},[1653,24842,1709],{},[1712,24844,1714],{},[1569,24846,24847,24851],{},[1572,24848,24849,1722],{},[1712,24850,1721],{},[1572,24852,24853,24855],{},[1712,24854,1727],{},": Choose the sheet tab with your file paths in.",[1572,24857,24858,1710,24860,24862],{},[1653,24859,1733],{},[1712,24861,667],{},[1569,24863,24864,24877,24899],{},[1572,24865,24866,1710,24868,24870],{},[1653,24867,1742],{},[1712,24869,1043],{},[1569,24871,24872],{},[1572,24873,24874,24876],{},[1712,24875,1751],{},": Please enter the URL of the website where you want to upload your file.",[1572,24878,24879,1710,24881,24884],{},[1653,24880,1765],{},[1712,24882,24883],{},"Upload a file",[1569,24885,24886,24891],{},[1572,24887,24888,24890],{},[1712,24889,11504],{},": Click 'Select' to choose the form element to upload the file to.",[1572,24892,24893,24895,24896,24898],{},[1712,24894,2798],{},": Input the file paths by clicking 'Insert data', select ",[1712,24897,1759],{},", then select the column with the file paths.",[1572,24900,24901,1710,24903,24905],{},[1653,24902,1790],{},[1712,24904,1209],{},[1569,24906,24907],{},[1572,24908,24909,24911],{},[1712,24910,17062],{},": Pause the bot to allow the file upload to complete. Set a wait time appropriate for the file size.",[1561,24913,24915],{"id":24914},"run-your-file-upload-bot","Run your File upload bot",[1640,24917,24918],{},"We suggest running a test first, stopping the bot after a few uploads and checking the files uploaded.",[1561,24920,1937],{"id":1936},[1640,24922,1940,24923,24925,24926,24928,24929,2838],{},[1942,24924,1945],{"href":1944},", you can use our no-code bot builder to customize any bot according to your requirements. We have other upload file ",[1942,24927,1543],{"href":1542}," you can use that work in the cloud and on desktop. Take a look at the ",[1942,24930,24931],{"href":1206},"upload to Google Drive",[1561,24933,1398],{"id":1949},[1640,24935,1952],{},[1701,24937,24938],{},[1569,24939,24940,24949,24956],{},[1572,24941,24942,24945,12172,24947,1668],{},[1653,24943,24944],{},"Selectors fail to find the element?",[1963,24946],{},[1942,24948,9069],{"href":1383},[1572,24950,24951,24954,12182],{},[1653,24952,24953],{},"Files do not upload?",[1963,24955],{},[1572,24957,24958,24961,24963],{},[1653,24959,24960],{},"Upload does not complete?",[1963,24962],{},"\nIncrease the pause, to allow the file upload to complete.",[1640,24965,2101,24966],{},[1942,24967,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":24969},[24970,24971,24972,24973,24974,24975],{"id":1647,"depth":1618,"text":1648},{"id":24817,"depth":1618,"text":24818},{"id":24833,"depth":1618,"text":24834},{"id":24914,"depth":1618,"text":24915},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"2023-02-01","Learn how to automate file uploads from Google Sheets to websites using axiom.ai's no-code tool. This guide covers setting up, configuring, and running a file upload bot for efficient automation.",{"pinned":1627,"read":3134,"level":2123,"video":24979,"templateId":6326,"type":2126,"format":2127,"intent_type":3360,"intent":12221,"tags":24980,"platfrom":24982},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6lYZkxOmcX0",[12223,24981,24529],"upload",[3363],"\u002Fguides\u002Fupload-files-from-a-google-sheet",{"title":24798,"description":24977},"guides\u002Fupload-files-from-a-google-sheet","yrDvrLFpwWbzcEWFvdDQ6ARjTuCr6cu1-Fj2YUAfSCk",{"id":24988,"title":24989,"body":24990,"date":1628,"description":24999,"extension":1621,"meta":25000,"navigation":1627,"order":1628,"path":14280,"seo":25001,"stem":25002,"__hash__":25003},"guides\u002Fguides\u002Fusecase.md","Use case guides",{"type":1555,"value":24991,"toc":24997},[24992,24995],[1640,24993,24994],{},"Real world examples of complete automations in Axiom.ai, with ready to use templates for scraping data and automating tasks across sites like LinkedIn, Instagram, and Helium10. Each guide shows a practical workflow from collecting data to taking action, and can be used as a starting point or adapted to your needs.",[17994,24996],{"intent":2658},{"title":1614,"searchDepth":1615,"depth":1615,"links":24998},[],"Real-world automation examples with ready-to-use templates for scraping and automating tasks across popular sites and tools.",{"layout":18000},{"title":24989,"description":24999},"guides\u002Fusecase","KSJPmun6PZ5eQQVLXvr_iU6DVYfyFqS1YL7LGbghts0",{"id":25005,"title":25006,"body":25007,"date":2652,"description":25279,"extension":1621,"meta":25280,"navigation":1627,"order":1628,"path":16530,"seo":25284,"stem":25285,"__hash__":25286},"guides\u002Fguides\u002Fweb-scraping-looping-through-pages.md","How to scrape links in a Google Sheet",{"type":1555,"value":25008,"toc":25271},[25009,25011,25014,25016,25018,25029,25033,25040,25044,25046,25050,25169,25173,25176,25178,25182,25184,25186,25253],[1566,25010],{},[1640,25012,25013],{},"This template scrapes data from a website to a Google Sheet. It loops through links in the sheet, extracts data, and updates the sheet. After each loop, it deletes each link. Configuration takes minutes.",[1558,25015],{},[1561,25017,1648],{"id":1647},[1640,25019,25020,25021,1660,25024,1664,25027,1668],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut 'sheet.new', assuming you already have an account. Name your sheet something like ",[1653,25022,25023],{},"Web Scraper",[1653,25025,25026],{},"\"Page links\"",[1653,25028,1667],{},[1561,25030,25032],{"id":25031},"install-the-web-scraper","Install the Web scraper",[1640,25034,25035,25036,1679,25038,1683],{},"To install this Web scraper click ",[1653,25037,1678],{},[1653,25039,1682],{},[1640,25041,1686,25042,1668],{},[1653,25043,1689],{},[1640,25045,1692],{},[1561,25047,25049],{"id":25048},"configure-your-web-scraper-in-minutes","Configure your Web scraper in minutes",[1701,25051,25052],{},[1569,25053,25054,25072],{},[1572,25055,25056,1710,25058,25060],{},[1653,25057,1709],{},[1712,25059,1714],{},[1569,25061,25062,25066],{},[1572,25063,25064,1722],{},[1712,25065,1721],{},[1572,25067,25068,7494,25070,1668],{},[1712,25069,1727],{},[1712,25071,7497],{},[1572,25073,25074,1710,25076,25078],{},[1653,25075,1733],{},[1712,25077,667],{},[1569,25079,25080,25094,25113,25141],{},[1572,25081,25082,1710,25084,25086],{},[1653,25083,1742],{},[1712,25085,1043],{},[1569,25087,25088],{},[1572,25089,25090,3227,25092,3230],{},[1712,25091,1751],{},[1712,25093,1759],{},[1572,25095,25096,1710,25098,25100],{},[1653,25097,1765],{},[1712,25099,1768],{},[1569,25101,25102,25109],{},[1572,25103,25104,3601,25106,25108],{},[1712,25105,1775],{},[1942,25107,20924],{"href":1387}," to choose the data you wish to scrape.",[1572,25110,25111,20930],{},[1712,25112,1781],{},[1572,25114,25115,1710,25117,25119],{},[1653,25116,1790],{},[1712,25118,4900],{},[1569,25120,25121,25125,25129,25135],{},[1572,25122,25123,1722],{},[1712,25124,1721],{},[1572,25126,25127,1875],{},[1712,25128,1727],{},[1572,25130,25131,1881,25133,1668],{},[1712,25132,1880],{},[1712,25134,1818],{},[1572,25136,25137,1890,25139,1668],{},[1712,25138,1889],{},[1712,25140,1893],{},[1572,25142,25143,1710,25145,25147],{},[1653,25144,1833],{},[1712,25146,1901],{},[1569,25148,25149,25153,25157,25163],{},[1572,25150,25151,1722],{},[1712,25152,1721],{},[1572,25154,25155,1912],{},[1712,25156,1727],{},[1572,25158,25159,1782,25161,1668],{},[1712,25160,1917],{},[1712,25162,1785],{},[1572,25164,25165,1782,25167,1668],{},[1712,25166,1924],{},[1712,25168,1785],{},[1561,25170,25172],{"id":25171},"run-your-web-scraper","Run your Web scraper",[1640,25174,25175],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the scraped data.",[1561,25177,1937],{"id":1936},[1640,25179,1940,25180,1946],{},[1942,25181,1945],{"href":1944},[1561,25183,1398],{"id":1949},[1640,25185,1952],{},[1701,25187,25188],{},[1569,25189,25190,25202,25212,25224,25232,25245],{},[1572,25191,25192,25194,1965,25196,1969,25198,21018,25200,21021],{},[1653,25193,1961],{},[1963,25195],{},[1712,25197,1968],{},[1712,25199,1972],{},[1712,25201,3329],{},[1572,25203,25204,25206,1965,25208,21031,25210,1668],{},[1653,25205,1982],{},[1963,25207],{},[1712,25209,1987],{},[1942,25211,9069],{"href":1383},[1572,25213,25214,25216,2011,25218,2015,25220,2019,25222,1668],{},[1653,25215,21038],{},[1963,25217],{},[1712,25219,2014],{},[1712,25221,2018],{},[1712,25223,1785],{},[1572,25225,25226,25228,21054,25230,21057],{},[1653,25227,21051],{},[1963,25229],{},[1712,25231,1781],{},[1572,25233,25234,25236,1965,25238,2062,25241,2084,25243,1668],{},[1653,25235,2077],{},[1963,25237],{},[1712,25239,25240],{},"Step 2.3 – Write Data to a Google Sheet",[1712,25242,2083],{},[1712,25244,1818],{},[1572,25246,25247,25249,2094,25251,2098],{},[1653,25248,2091],{},[1963,25250],{},[1712,25252,2097],{},[1640,25254,2101,25255,25257,25258,25261,25262,25266,25267],{},[1942,25256,2104],{"href":82},"\nIf you are keen to learn more about scraping, take a look at these guides: ",[1942,25259,25260],{"href":2108},"web scraping with an AI",", Killer-problems with ",[1942,25263,25265],{"href":25264},"\u002Fblog\u002F5-problems-webscrapers","web scrapers"," and how to use ",[1942,25268,25270],{"href":25269},"\u002Fblog\u002Fcss-attribute-selectors","Custom CSS selectors.",{"title":1614,"searchDepth":1615,"depth":1615,"links":25272},[25273,25274,25275,25276,25277,25278],{"id":1647,"depth":1618,"text":1648},{"id":25031,"depth":1618,"text":25032},{"id":25048,"depth":1618,"text":25049},{"id":25171,"depth":1618,"text":25172},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to scrape links in a Google Sheet and automate data extraction from multiple pages using axiom.ai's no-code tool. This guide covers setup, configuration, and running a looping web scraper for efficient data collection.",{"pinned":1627,"read":9098,"level":2123,"video":25281,"templateId":1618,"type":2126,"format":2127,"intent_type":3360,"intent":5613,"tags":25282,"platfrom":25283},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fl8KtLMXuDes",[2132,2665],[3363],{"title":25006,"description":25279},"guides\u002Fweb-scraping-looping-through-pages","u_dFgHDZm4XmAusPoEzM6_TryYrpGFZntWPnkkJxQJk",{"id":25288,"title":25289,"body":25290,"date":1628,"description":25796,"extension":1621,"meta":25797,"navigation":1627,"order":1628,"path":25800,"seo":25801,"stem":25802,"__hash__":25803},"guides\u002Fguides\u002Fwebhooks.md","How to use webhooks with axiom.ai",{"type":1555,"value":25291,"toc":25786},[25292,25294,25301,25303,25306,25326,25329,25333,25336,25350,25354,25359,25373,25378,25381,25384,25398,25406,25687,25698,25702,25706,25709,25730,25733,25738,25740,25743,25746,25749,25764,25766,25777,25783],[1566,25293],{},[1640,25295,25296,25297,25300],{},"Using webhooks within your axiom.ai automations can help you to connect to an unlimited number of third party tools, for example, a database management tool and various other tools that can be chained together to complex a complex process to get you to your endpoint. See our ",[1942,25298,10481],{"href":25299},".\u002F"," for more specific guides.",[1561,25302,2156],{"id":2155},[1640,25304,25305],{},"To get started with triggering a webhook using an automation, you will need the following from the axiom.ai Chrome extension:",[1701,25307,25308],{},[1569,25309,25310,25316,25320],{},[1572,25311,25312,2172,25314,1668],{},[1712,25313,2171],{},[1942,25315,2176],{"href":2175},[1572,25317,25318,2182],{},[1712,25319,2181],{},[1572,25321,25322,2188,25324,1668],{},[1712,25323,2187],{},[1712,25325,2191],{},[1640,25327,25328],{},"The information that you'll need to trigger your automation from a third party service varies, check with the service to determine the steps that you need to take in order to set up outgoing webhooks.",[1561,25330,25332],{"id":25331},"triggering-a-webhook-from-an-axiomai-automation","Triggering a webhook from an axiom.ai automation",[1640,25334,25335],{},"There are two methods of triggering a webhook within your automations. For both methods, you'll need to acquire the following data from the third party you're looking to implement:",[1701,25337,25338],{},[2165,25339,25340,25345],{},[1572,25341,25342,25344],{},[1712,25343,2187],{},": The endpoint that needs to be triggered by your automation.",[1572,25346,25347,25349],{},[1712,25348,17936],{},": The payload format that is required.",[2249,25351,25353],{"id":25352},"low-code","Low-code",[1640,25355,6656,25356,25358],{},[1942,25357,9287],{"href":1194}," step can be used in order to trigger a webhook from your automations. Follow the steps below to get started:",[1701,25360,25361],{},[2165,25362,25363,25367,25370],{},[1572,25364,9913,25365,2838],{},[1942,25366,9287],{"href":1194},[1572,25368,25369],{},"Enter the \"Endpoint\".",[1572,25371,25372],{},"Enter the \"Payload\".",[1640,25374,25375,25376,13947],{},"Remember, the \"Insert data\" option can be used to dynamically input data from your automation into your payload, see ",[1942,25377,9205],{"href":1373},[2249,25379,12586],{"id":25380},"javascript",[1640,25382,25383],{},"Webhooks can be triggered using custom JavaScript. This can be used for more advanced fetches and the use of the data that is returned. This has a few benefits, such as:",[2165,25385,25386,25389,25392,25395],{},[1572,25387,25388],{},"Allowing you to receive additional data, from a database, for example.",[1572,25390,25391],{},"Having more control over headers - for example, authorization headers.",[1572,25393,25394],{},"Being able to parse the response.",[1572,25396,25397],{},"Being able to use the response to automatically retry the call in the event of a rate limit being hit.",[1640,25399,22720,25400,25402,25403,25405],{},[1942,25401,3904],{"href":1226}," step to your automation and use the ",[1712,25404,11216],{}," method. See the example below to get started.",[2329,25407,25409],{"className":2366,"code":25408,"language":2368,"meta":1614,"style":1614},"const url = \"https:\u002F\u002Fexample.com\u002Fwebhook\";\nconst apiKey = \"xxxxxxxxxx\";\nconst data = {\n    \"key\": apiKey,\n    \"data\": [[1, 2], [3, 4]]\n};\n\nconst sendData = async () => {\n    try {\n        const response = await fetch(url, {\n            method: 'POST',\n            headers: {\n                'apikey': apiKey,\n                'Authorization': `Bearer ${apiKey}`,\n                'Content-Type': 'application\u002Fjson'\n            },\n            body: JSON.stringify(format(data))\n        });\n                               \n        if (!response.ok) {\n            console.error(\"Something went wrong with response\", response); \n            return;\n        }\n      \n        const result = await response.json();\n        console.log(result);\n    } catch (error) {\n        console.error(\"Something went wrong\", error);\n    }\n}\n",[1712,25410,25411,25425,25439,25449,25456,25481,25485,25489,25506,25512,25527,25535,25539,25545,25561,25570,25574,25591,25595,25599,25609,25621,25627,25631,25635,25651,25659,25667,25679,25683],{"__ignoreMap":1614},[2337,25412,25413,25415,25418,25420,25423],{"class":2339,"line":2340},[2337,25414,3918],{"class":3592},[2337,25416,25417],{"class":3488}," url",[2337,25419,3924],{"class":3592},[2337,25421,25422],{"class":2347}," \"https:\u002F\u002Fexample.com\u002Fwebhook\"",[2337,25424,3930],{"class":2378},[2337,25426,25427,25429,25432,25434,25437],{"class":2339,"line":1618},[2337,25428,3918],{"class":3592},[2337,25430,25431],{"class":3488}," apiKey",[2337,25433,3924],{"class":3592},[2337,25435,25436],{"class":2347}," \"xxxxxxxxxx\"",[2337,25438,3930],{"class":2378},[2337,25440,25441,25443,25445,25447],{"class":2339,"line":1615},[2337,25442,3918],{"class":3592},[2337,25444,23703],{"class":3488},[2337,25446,3924],{"class":3592},[2337,25448,3994],{"class":2378},[2337,25450,25451,25453],{"class":2339,"line":3501},[2337,25452,11094],{"class":2347},[2337,25454,25455],{"class":2378},": apiKey,\n",[2337,25457,25458,25460,25462,25464,25466,25468,25471,25473,25475,25478],{"class":2339,"line":3507},[2337,25459,11118],{"class":2347},[2337,25461,3636],{"class":2378},[2337,25463,1785],{"class":3488},[2337,25465,3610],{"class":2378},[2337,25467,10444],{"class":3488},[2337,25469,25470],{"class":2378},"], [",[2337,25472,18856],{"class":3488},[2337,25474,3610],{"class":2378},[2337,25476,25477],{"class":3488},"4",[2337,25479,25480],{"class":2378},"]]\n",[2337,25482,25483],{"class":2339,"line":3579},[2337,25484,18392],{"class":2378},[2337,25486,25487],{"class":2339,"line":3658},[2337,25488,3504],{"emptyLinePlaceholder":1627},[2337,25490,25491,25493,25496,25498,25500,25502,25504],{"class":2339,"line":3664},[2337,25492,3918],{"class":3592},[2337,25494,25495],{"class":3979}," sendData",[2337,25497,3924],{"class":3592},[2337,25499,3985],{"class":3592},[2337,25501,3988],{"class":2378},[2337,25503,3991],{"class":3592},[2337,25505,3994],{"class":2378},[2337,25507,25508,25510],{"class":2339,"line":3670},[2337,25509,3999],{"class":3592},[2337,25511,3994],{"class":2378},[2337,25513,25514,25516,25518,25520,25522,25524],{"class":2339,"line":3693},[2337,25515,4006],{"class":3592},[2337,25517,3699],{"class":3488},[2337,25519,3924],{"class":3592},[2337,25521,4013],{"class":3592},[2337,25523,4016],{"class":3979},[2337,25525,25526],{"class":2378},"(url, {\n",[2337,25528,25529,25531,25533],{"class":2339,"line":3746},[2337,25530,4024],{"class":2378},[2337,25532,4027],{"class":2347},[2337,25534,4030],{"class":2378},[2337,25536,25537],{"class":2339,"line":3760},[2337,25538,4035],{"class":2378},[2337,25540,25541,25543],{"class":2339,"line":3136},[2337,25542,22983],{"class":2347},[2337,25544,25455],{"class":2378},[2337,25546,25547,25550,25552,25554,25557,25559],{"class":2339,"line":3784},[2337,25548,25549],{"class":2347},"                'Authorization'",[2337,25551,3601],{"class":2378},[2337,25553,18464],{"class":2347},[2337,25555,25556],{"class":2378},"apiKey",[2337,25558,4051],{"class":2347},[2337,25560,4030],{"class":2378},[2337,25562,25563,25566,25568],{"class":2339,"line":3793},[2337,25564,25565],{"class":2347},"                'Content-Type'",[2337,25567,3601],{"class":2378},[2337,25569,18481],{"class":2347},[2337,25571,25572],{"class":2339,"line":4136},[2337,25573,4068],{"class":2378},[2337,25575,25576,25578,25580,25582,25584,25586,25588],{"class":2339,"line":4154},[2337,25577,4073],{"class":2378},[2337,25579,11178],{"class":3488},[2337,25581,1668],{"class":2378},[2337,25583,11183],{"class":3979},[2337,25585,4145],{"class":2378},[2337,25587,23030],{"class":3979},[2337,25589,25590],{"class":2378},"(data))\n",[2337,25592,25593],{"class":2339,"line":4162},[2337,25594,4114],{"class":2378},[2337,25596,25597],{"class":2339,"line":4168},[2337,25598,23042],{"class":2378},[2337,25600,25601,25603,25605,25607],{"class":2339,"line":4173},[2337,25602,4124],{"class":3592},[2337,25604,4127],{"class":2378},[2337,25606,4130],{"class":3592},[2337,25608,4133],{"class":2378},[2337,25610,25611,25613,25615,25617,25619],{"class":2339,"line":4194},[2337,25612,4139],{"class":2378},[2337,25614,4142],{"class":3979},[2337,25616,4145],{"class":2378},[2337,25618,4148],{"class":2347},[2337,25620,4488],{"class":2378},[2337,25622,25623,25625],{"class":2339,"line":4206},[2337,25624,4157],{"class":3592},[2337,25626,3930],{"class":2378},[2337,25628,25629],{"class":2339,"line":4218},[2337,25630,4165],{"class":2378},[2337,25632,25633],{"class":2339,"line":4233},[2337,25634,4119],{"class":2378},[2337,25636,25637,25639,25641,25643,25645,25647,25649],{"class":2339,"line":4239},[2337,25638,4006],{"class":3592},[2337,25640,4178],{"class":3488},[2337,25642,3924],{"class":3592},[2337,25644,4013],{"class":3592},[2337,25646,4185],{"class":2378},[2337,25648,4188],{"class":3979},[2337,25650,4191],{"class":2378},[2337,25652,25653,25655,25657],{"class":2339,"line":4245},[2337,25654,4197],{"class":2378},[2337,25656,4200],{"class":3979},[2337,25658,4203],{"class":2378},[2337,25660,25661,25663,25665],{"class":2339,"line":4250},[2337,25662,4209],{"class":2378},[2337,25664,4212],{"class":3592},[2337,25666,4215],{"class":2378},[2337,25668,25669,25671,25673,25675,25677],{"class":2339,"line":6244},[2337,25670,4197],{"class":2378},[2337,25672,4142],{"class":3979},[2337,25674,4145],{"class":2378},[2337,25676,4227],{"class":2347},[2337,25678,4230],{"class":2378},[2337,25680,25681],{"class":2339,"line":6249},[2337,25682,4236],{"class":2378},[2337,25684,25685],{"class":2339,"line":2923},[2337,25686,4242],{"class":2378},[1640,25688,25689,25690,25692,25693,13800],{},"Learn more about the ",[1712,25691,11216],{}," function in the Mozilla ",[1942,25694,25697],{"href":25695,"rel":25696},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FFetch_API\u002FUsing_Fetch",[3850],"Using the Fetch API",[1640,25699,25375,25700,13947],{},[1942,25701,9205],{"href":1373},[1561,25703,25705],{"id":25704},"triggering-an-axiomai-automation-from-a-webhook","Triggering an axiom.ai automation from a webhook",[1640,25707,25708],{},"To get started, we're going to assume that you have already set up outgoing webhooks or API calls from the service that you are looking to send information from to your automation. Once this has been done, follow the steps below:",[1701,25710,25711],{},[1569,25712,25713,25722],{},[1572,25714,25715,1710,25717,2221,25720,2838],{},[1653,25716,1709],{},[1712,25718,25719],{},"Receive data from a webhook",[1942,25721,25719],{"href":1111},[1572,25723,25724,1710,25726,25729],{},[1653,25725,1733],{},[1712,25727,25728],{},"Test data",": Configure the test data input with the expected payload from the third-party application.",[1640,25731,25732],{},"Configuring the \"Test data\" helps to test your automation - clicking \"Run\" on your automation will make use of the test data and can help debug your automation without needing additional webhook calls.",[1640,25734,25735],{},[2417,25736,25737],{},"Note, triggering automations from webhooks is only available in specific plans with the 'webhooks' feature.",[1561,25739,2386],{"id":2385},[1640,25741,25742],{},"To test your automation, click \"Run\". Once done, check the third party tool to confirm if the webhook has been received. Review the builder and your run reports within the extension to determine if there were any issues.",[1640,25744,25745],{},"To test sending a webhook to your automation, trigger the webhook from the third party tool that you are implementing. Alternatively, click \"Run\" to run your automation with the test data in place.",[1640,25747,25748],{},"Additionally, the resources below may be helpful in debugging your automation:",[1569,25750,25751,25755,25759],{},[1572,25752,25753],{},[1942,25754,4909],{"href":1487},[1572,25756,25757],{},[1942,25758,1408],{"href":1409},[1572,25760,25761],{},[1942,25762,25763],{"href":1405},"Handling errors",[1561,25765,2406],{"id":2405},[1640,25767,25768,25769,25772,25773,1668],{},"Triggering webhooks from your automations, or triggering your automations from a webhook call, can allow you to expand the functionality of your automations to give you endless possibilities. Our personal favourite here is our ",[1942,25770,22652],{"href":25771},".\u002Fsupabase"," guide which uses this method to interact with Supabase and allows for the reading and writing of data from your tables. We would love to hear what you do with this option, feel free to post it in our ",[1942,25774,25776],{"href":4919,"rel":25775},[3850],"Reddit community",[1640,25778,25779,25780,1668],{},"Can't get an API call to work? Ask an expert in our ",[1942,25781,25776],{"href":4919,"rel":25782},[3850],[2421,25784,25785],{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1614,"searchDepth":1615,"depth":1615,"links":25787},[25788,25789,25793,25794,25795],{"id":2155,"depth":1618,"text":2156},{"id":25331,"depth":1618,"text":25332,"children":25790},[25791,25792],{"id":25352,"depth":1615,"text":25353},{"id":25380,"depth":1615,"text":12586},{"id":25704,"depth":1618,"text":25705},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to use webhooks to send or receive data within your axiom.ai automations.",{"type":2126,"format":2127,"intent_type":2128,"intent":2437,"tags":25798,"platfrom":25799},[2439,2440],[3363],"\u002Fguides\u002Fwebhooks",{"title":25289,"description":25796},"guides\u002Fwebhooks","yUw3OkbuU80B2i3-FtNSJ5BOsb_O3TQKsAwcVGh_W6k",{"id":25805,"title":25806,"body":25807,"date":1628,"description":25816,"extension":1621,"meta":25817,"navigation":1627,"order":1628,"path":14264,"seo":25818,"stem":25819,"__hash__":25820},"guides\u002Fguides\u002Fworkflow.md","Workflow guides",{"type":1555,"value":25808,"toc":25814},[25809,25812],[1640,25810,25811],{},"Step-by-step tutorials for common browser automation tasks in axiom.ai—scraping loops, monitoring pages, data entry, file flows, and webhooks. Each guide walks through building a bot you can run as-is or extend for your own workflows.",[17994,25813],{"intent":3360},{"title":1614,"searchDepth":1615,"depth":1615,"links":25815},[],"Step-by-step tutorials for common browser automation tasks in axiom.ai—scraping loops, monitoring pages, data entry, file flows, and webhooks.",{"layout":18000},{"title":25806,"description":25816},"guides\u002Fworkflow","2mWYgSRKBVREDCn9DZLg_Bm7gPaUyDR82rvzN-3ocCE",{"id":25822,"title":25823,"body":25824,"date":1628,"description":26091,"extension":1621,"meta":26092,"navigation":1627,"order":1628,"path":26096,"seo":26097,"stem":26098,"__hash__":26099},"guides\u002Fguides\u002Fzapier.md","How to trigger Zapier Zaps using axiom.ai",{"type":1555,"value":25825,"toc":26081},[25826,25828,25831,25833,25835,25837,25839,25859,25863,25865,25868,25892,25895,25905,25908,25923,25926,25970,25974,25976,25978,25981,25988,25990,25992,25996,25998,26001,26026,26033,26037,26039,26046,26071,26074,26076,26078],[1566,25827],{},[1640,25829,25830],{},"You can connect your automation to Zapier, pass scraped data, and access 7,000+ apps. We'll guide you through using axiom.ai's \"Get data from URL\" steps to post data to Zapier, setting up a Zap to receive the data, and using Zapier Formatter to extract it from an array.",[1558,25832],{},[1561,25834,2156],{"id":2155},[1566,25836],{},[1640,25838,2161],{},[1701,25840,25841],{},[2165,25842,25843,25849,25853],{},[1572,25844,25845,3391,25847,1668],{},[1653,25846,2171],{},[1942,25848,2176],{"href":2175},[1572,25850,25851,3398],{},[1653,25852,2181],{},[1572,25854,25855,3403,25857,1668],{},[1653,25856,2187],{},[1712,25858,2191],{},[1561,25860,25862],{"id":25861},"triggering-a-zap-using-an-axiomai-automation","Triggering a Zap using an axiom.ai automation",[1566,25864],{},[1640,25866,25867],{},"To get started, we are going to assume that you have an automation created.",[1701,25869,25870],{},[2165,25871,25872,25878,25884],{},[1572,25873,25874,25877],{},[1653,25875,25876],{},"Create Zap"," - Create a new Zap by navigating to Zapier, and clicking \"+ Create\".",[1572,25879,25880,25883],{},[1653,25881,25882],{},"Add trigger"," - Click \"Trigger\", then select \"Webhooks by Zapier\". See the section below for more information on configuring this trigger.",[1572,25885,25886,25888,25889,25891],{},[1653,25887,9287],{}," - In axiom.ai, add a ",[1942,25890,9287],{"href":1194}," step to your automation. Input the URL from the \"your webhook URL\" section in Zapier.",[1640,25893,25894],{},"Learn more about configuring the \"Webhooks by Zapier\" trigger:",[1701,25896,25897],{},[1569,25898,25899,25902],{},[1572,25900,25901],{},"Set the \"trigger event\" to \"catch raw webhook\", press continue.",[1572,25903,25904],{},"Save the URL in the \"your webhook URL\" section for later.",[1640,25906,25907],{},"To use data within your Zap, you'll need to first process the data:",[1701,25909,25910],{},[2165,25911,25912,25918],{},[1572,25913,25914,25917],{},[1653,25915,25916],{},"Actions"," - Add your actions to process the data that is being sent to the Zap, for this example, we will be using the \"Formatter by Zapier\" action.",[1572,25919,25920,25922],{},[1653,25921,2230],{}," - Follow the instructions below to configure the \"Formatter by Zapier\" action.",[1640,25924,25925],{},"To configure the \"Formatter by Zapier\" step, follow the steps below:",[1701,25927,25928],{},[2165,25929,25930,25936,25942,25947,25953,25959,25965],{},[1572,25931,25932,25935],{},[1653,25933,25934],{},"Action event"," - Set to \"text\".",[1572,25937,25938,25941],{},[1653,25939,25940],{},"Transform"," - Set to \"split text\".",[1572,25943,25944,25946],{},[1653,25945,15618],{}," - Click \"+\" and set to \"raw body\".",[1572,25948,25949,25952],{},[1653,25950,25951],{},"Separator"," - Click into the field and set to \"single speech mark\".",[1572,25954,25955,25958],{},[1653,25956,25957],{},"Segment index"," - Set to \"all (as separate fields)\".",[1572,25960,25961,25964],{},[1653,25962,25963],{},"Continue"," - click continue.",[1572,25966,25967,25969],{},[1653,25968,13976],{}," - Click \"test step\".",[2202,25971],{"src":25972,"alt":25973},"\u002Fdocs\u002Fguides\u002Fzapier-formatter-step.jpg","Configure the formatter by Zapier step",[1561,25975,2386],{"id":2385},[1566,25977],{},[1640,25979,25980],{},"To test your workflow, open your axiom.ai automation and click \"Run\" to start the automation. Once complete, review any destinations where your data is being sent once it's been processed by Zapier. Alternatively, review your Zap runs within Zapier to confirm the zap ran.",[1640,25982,25983,25984,25987],{},"If the desired results have not been achieved, review the ",[1942,25985,25986],{"href":2401},"Run Reports"," within axiom.ai, or the Zap runs section within Zapier.",[1561,25989,8300],{"id":8299},[1566,25991],{},[2249,25993,25995],{"id":25994},"sending-scraper-data-from-an-axiomai-automation-to-zapier-for-processing","Sending scraper data from an axiom.ai automation to Zapier for processing",[1566,25997],{},[1640,25999,26000],{},"Extracting data from a webpage and sending it to Zapier to be processed can unlock a huge amount of potential for your workflows. Learn how to get started below.",[1701,26002,26003],{},[2165,26004,26005,26016],{},[1572,26006,26007,26009,26010,26013,26014,2838],{},[1653,26008,321],{}," - Create a new axiom.ai automation, add a ",[1942,26011,26012],{"href":619},"scraping step",". In this example, we will be using the ",[1942,26015,1035],{"href":1036},[1572,26017,26018,26020,26021,26023,26024,22156],{},[1653,26019,9287],{}," - Following the instructions above, configure your Zap to be triggered by incoming webhooks. Add a ",[1942,26022,9287],{"href":1194}," step and use the \"Insert data\" option to insert the ",[1712,26025,1818],{},[1640,26027,26028,26029,26032],{},"Follow the steps from the ",[1942,26030,25862],{"href":26031},"#triggering-a-zap-using-an-axiomai-automation"," to learn how to process the data that you send to your Zap.",[2249,26034,26036],{"id":26035},"write-data-to-excel","Write data to Excel",[1566,26038],{},[1640,26040,26041,26042,26045],{},"To write data to Excel, follow the steps in ",[1942,26043,25862],{"href":26044},"\u002Fguides\u002Fzapier#triggering-a-zap-using-an-axiom-ai-automation"," to create your Zap. Once this has been done, head over to your Zap. After the \"Formatter by Zapier\" step, do the following:",[1701,26047,26048],{},[2165,26049,26050,26055,26060,26066],{},[1572,26051,26052,26054],{},[1653,26053,29],{}," - Search for \"Microsoft Excel\" and add a new step to your Zap.",[1572,26056,26057,26059],{},[1653,26058,25934],{}," - Set this to \"Add Row\".",[1572,26061,26062,26065],{},[1653,26063,26064],{},"Set up"," - Follow the instructions in the Zap to connect your account and configure your step.",[1572,26067,26068,26070],{},[1653,26069,2230],{}," - To configure your data, head into the \"Configure\" tab. Click the \"+\" button beside the \"Column\" inputs to select your variables.",[1640,26072,26073],{},"To test, trigger your automation within axiom.ai",[1561,26075,2406],{"id":2405},[1566,26077],{},[1640,26079,26080],{},"Using axiom.ai and Zapier together allows you to scrape data quickly and pass it to over 7,000 apps. With just two steps in each app (four total), you can set up a basic browser scraper to Zapier automation in minutes, which can be easily adapted to more complex use cases.",{"title":1614,"searchDepth":1615,"depth":1615,"links":26082},[26083,26084,26085,26086,26090],{"id":2155,"depth":1618,"text":2156},{"id":25861,"depth":1618,"text":25862},{"id":2385,"depth":1618,"text":2386},{"id":8299,"depth":1618,"text":8300,"children":26087},[26088,26089],{"id":25994,"depth":1615,"text":25995},{"id":26035,"depth":1615,"text":26036},{"id":2405,"depth":1618,"text":2406},"How to build an automation that scrapes data from a webpage and connects to Zapier via a webhook.",{"video":26093,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":26094,"platfrom":26095},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FV3I7w8fnO88?rel=0&amp;",[2439,2440,2664,22633],[783],"\u002Fguides\u002Fzapier",{"title":25823,"description":26091},"guides\u002Fzapier","mvO_R6ltR7wBcrltiSx-f3NdEw7mmmsEToYoJLF1ht8",{"id":26101,"title":26102,"body":26103,"date":2652,"description":26275,"extension":1621,"meta":26276,"navigation":1627,"order":1618,"path":26280,"seo":26281,"stem":26282,"__hash__":26283},"guides\u002Fguides\u002Fzapier-forms.md","How to automate data entry without an API using Zapier",{"type":1555,"value":26104,"toc":26267},[26105,26107,26123,26125,26129,26140,26144,26149,26153,26155,26159,26168,26237,26241,26248,26250,26254,26256,26258],[1566,26106],{},[1640,26108,26109,26110,26113,26114,26119,26120,1668],{},"This Zapier data entry template is ",[1653,26111,26112],{},"triggered by a webhook"," that passes data in a 2D array from our ",[1942,26115,26118],{"href":26116,"rel":26117},"https:\u002F\u002Fzapier.com\u002Fapps\u002Faxiomai\u002Fintegrations",[3850],"axiom.ai Zapier app",". The bot then systematically processes the array, emulating human interactions by inputting data into web forms on any website. It serves as a valuable solution for automating data entry in situations where there is ",[1653,26121,26122],{},"no API integration option",[1558,26124],{},[1561,26126,26128],{"id":26127},"get-started-set-up-your-zap","Get started: Set up your Zap",[1640,26130,26131,26132,26135,26136],{},"In fact, we recommend not setting up your Zap first. Instead, prioritize creating and thoroughly testing your bot. Utilize the ",[1653,26133,26134],{},"dummy data"," feature within our Zapier step, and set up your Zap only after your bot is fully functional. If you require assistance with the Zap setup, please refer to our ",[1942,26137,26139],{"href":26138},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks#select-axiom-s-zapier-app-within-zapier","Zapier documentation page.",[1561,26141,26143],{"id":26142},"install-the-zapier-data-entry-bot","Install the Zapier data entry bot",[1640,26145,26146,26147,2707],{},"To install this Zapier data entry bot click ",[1653,26148,7451],{},[1640,26150,21806,26151,1668],{},[1653,26152,20553],{},[1640,26154,1692],{},[1561,26156,26158],{"id":26157},"configure-your-zapier-data-entry-bot-in-just-a-few-steps","Configure your Zapier data entry bot in just a few steps",[1640,26160,26161,26162,26165,26166,8925],{},"We've provided a set of example steps within ",[1712,26163,26164],{},"Step 2.0 - Loop through data",". You can further customize this bot by adding additional ",[1942,26167,1543],{"href":1542},[1701,26169,26170],{},[1569,26171,26172,26189],{},[1572,26173,26174,1710,26176,26178,26179,26181,26182,1668],{},[1653,26175,1709],{},[1712,26177,1110],{},": Toggle on ",[1712,26180,25728],{}," and input: ",[1653,26183,26184,26185,26188],{},"\"[[Row 1 colA, Row 1 colB, Row 1 colC], ",[2337,26186,26187],{},"Row 2 colA, Row 2 colB, Row 2 colC","]\"",[1572,26190,26191,1710,26193,5322,26195],{},[1653,26192,1733],{},[1712,26194,667],{},[1569,26196,26197,26214,26228],{},[1572,26198,26199,1710,26201,26203,26204,26206,26207,2019,26209,1756,26211,1668],{},[1653,26200,1742],{},[1712,26202,8004],{},": Set ",[1712,26205,1775],{}," to the input field and ",[1712,26208,2563],{},[1653,26210,22380],{},[1712,26212,26213],{},"[webhook-data]",[1572,26215,26216,1710,26218,26203,26220,26206,26222,2019,26224,1756,26226,1668],{},[1653,26217,1765],{},[1712,26219,8004],{},[1712,26221,1775],{},[1712,26223,2563],{},[1653,26225,22380],{},[1712,26227,26213],{},[1572,26229,26230,1710,26232,26203,26234,26236],{},[1653,26231,1790],{},[1712,26233,8027],{},[1712,26235,1775],{}," to the submit form button.",[1561,26238,26240],{"id":26239},"run-your-zapier-data-entry-bot","Run your Zapier data entry bot",[1640,26242,26243,26244],{},"Test your bot with sample data before proceeding to test your ",[1942,26245,26247],{"href":26246},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks#test-the-zapier-axiom-trigger","Zapier trigger.",[1561,26249,1937],{"id":1936},[1640,26251,1940,26252,1946],{},[1942,26253,14245],{"href":1944},[1561,26255,1398],{"id":1949},[1640,26257,1952],{},[1640,26259,2101,26260,26262,26263],{},[1942,26261,2104],{"href":82},"\nTo learn more about using triggering Axiom with Zaps read our ",[1942,26264,26266],{"href":26265},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks","Zapier page.",{"title":1614,"searchDepth":1615,"depth":1615,"links":26268},[26269,26270,26271,26272,26273,26274],{"id":26127,"depth":1618,"text":26128},{"id":26142,"depth":1618,"text":26143},{"id":26157,"depth":1618,"text":26158},{"id":26239,"depth":1618,"text":26240},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},"Learn how to automate data entry into web forms using Zapier and axiom.ai. This guide covers setup, configuration, and customizing a bot to process data from webhooks and input it into any website.",{"pinned":1627,"read":14572,"level":17688,"video":26277,"templateId":6273,"type":2126,"format":2127,"intent_type":3360,"intent":8880,"tags":26278,"platfrom":26279},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBNLTBsEYXu8",[2439,2440,2664,22633],[783],"\u002Fguides\u002Fzapier-forms",{"title":26102,"description":26275},"guides\u002Fzapier-forms","kmzGzPGXZeG3tTRcZ51BWD0KQ5Nr3x1V5cgOZB4W1OM",{"id":26285,"title":26286,"body":26287,"date":1628,"description":26557,"extension":1621,"meta":26558,"navigation":1627,"order":1628,"path":26561,"seo":26562,"stem":26563,"__hash__":26564},"guides\u002Fguides\u002Fzapier-tables.md","How to automate Zapier Tables with axiom.ai",{"type":1555,"value":26288,"toc":26548},[26289,26291,26302,26304,26306,26308,26316,26319,26339,26344,26348,26350,26353,26357,26359,26362,26365,26384,26386,26394,26397,26409,26411,26443,26445,26448,26452,26454,26457,26481,26484,26507,26510,26512,26514,26517,26520,26522,26536,26538,26540,26543,26545],[1566,26290],{},[1640,26292,26293,26298,26299,26301],{},[1942,26294,26297],{"href":26295,"rel":26296},"https:\u002F\u002Fzapier.com\u002F",[3850],"Zapier Tables"," offers the ability to store data within your Zapier account. This can be used to create interfaces and chatbots that can use your data. Zapier Tables can be used within your axiom.ai automations similar to how ",[1942,26300,783],{"href":4887}," can be used.",[1561,26303,2156],{"id":2155},[1566,26305],{},[1640,26307,22660],{},[2165,26309,26310,26313],{},[1572,26311,26312],{},"Sign up to Zapier.",[1572,26314,26315],{},"Create a new Table by clicking \"Create\" and selecting \"Table\" - create this to meet your own requirements.",[1640,26317,26318],{},"To trigger your axiom.ai automations, you'll need the following:",[1701,26320,26321],{},[2165,26322,26323,26329,26333],{},[1572,26324,26325,3391,26327,1668],{},[1653,26326,2171],{},[1942,26328,2176],{"href":2175},[1572,26330,26331,3398],{},[1653,26332,2181],{},[1572,26334,26335,3403,26337,1668],{},[1653,26336,2187],{},[1712,26338,2191],{},[1640,26340,26341],{},[2417,26342,26343],{},"You may require a Zapier subscription and an axiom.ai subscription to use some of the steps within this guide.",[1561,26345,26347],{"id":26346},"working-with-zapier-tables-data-in-axiomai","Working with Zapier Tables data in axiom.ai",[1566,26349],{},[1640,26351,26352],{},"Zapier Zaps can be used to create or modify data automatically within your Tables. Actions within your Zapier Tables can be used to automatically trigger your automations. See the guides below to get started.",[2249,26354,26356],{"id":26355},"create-a-new-record","Create a new record",[1566,26358],{},[1640,26360,26361],{},"To get started, create your automation as normal, once you are ready to send the data to your Zapier Table, continue this guide.",[1640,26363,26364],{},"Create a new Zap that has the ability to catch a webhook that is going to be sent from your automation. Follow the steps below:",[1701,26366,26367],{},[2165,26368,26369,26374,26378],{},[1572,26370,26371,26373],{},[1653,26372,25876],{}," - Create a new Zap by navigating to Zapier, and clicking \"Create\".",[1572,26375,26376,25883],{},[1653,26377,25882],{},[1572,26379,26380,25888,26382,25891],{},[1653,26381,9287],{},[1942,26383,9287],{"href":1194},[1640,26385,25894],{},[1701,26387,26388],{},[1569,26389,26390,26392],{},[1572,26391,25901],{},[1572,26393,25904],{},[1640,26395,26396],{},"Once this has been created, we recommend sending a test request to popular your Zap with test data - hit \"Run\" on your automation. Next, you'll want to add a \"Formatter by Zapier\" step to format the incoming data. Set this up as follows:",[1701,26398,26399],{},[2165,26400,26401,26405],{},[1572,26402,26403,25917],{},[1653,26404,25916],{},[1572,26406,26407,25922],{},[1653,26408,2230],{},[1640,26410,25925],{},[1701,26412,26413],{},[2165,26414,26415,26419,26423,26427,26431,26435,26439],{},[1572,26416,26417,25935],{},[1653,26418,25934],{},[1572,26420,26421,25941],{},[1653,26422,25940],{},[1572,26424,26425,25946],{},[1653,26426,15618],{},[1572,26428,26429,25952],{},[1653,26430,25951],{},[1572,26432,26433,25958],{},[1653,26434,25957],{},[1572,26436,26437,25964],{},[1653,26438,25963],{},[1572,26440,26441,25969],{},[1653,26442,13976],{},[2202,26444],{"src":25972,"alt":25973},[1640,26446,26447],{},"When you're ready, add a \"Create Record\" step to your Zap from the \"Zapier Tables\" category. Navigate to the \"Configure\" section of this step and set the fields to use the data from the \"Formatter by Zapier\" step above. This stage will depend on how your Table has been set up.",[2249,26449,26451],{"id":26450},"send-data-to-axiomai-automation","Send data to axiom.ai automation",[1566,26453],{},[1640,26455,26456],{},"To get started, create a new \"Zap\":",[1701,26458,26459],{},[2165,26460,26461,26466,26471,26476],{},[1572,26462,26463,26465],{},[1653,26464,25916],{}," - Add a \"Zapier Tables\" action to your Zap.",[1572,26467,26468,26470],{},[1653,26469,2230],{}," - Configure the \"Zapier Tables\" action with a \"Trigger event\". This can automatically trigger the Zap when a record is created, modified or deleted. This can also be set to be triggered directly from the table itself. Click \"Test\" to test your trigger.",[1572,26472,26473,26475],{},[1653,26474,25916],{}," - Add an \"axiom.ai\" action using the search functionality.",[1572,26477,26478,26480],{},[1653,26479,2230],{}," - Connect your axiom.ai account, set the \"Action event\" to \"Run an Axiom\". Configure the action to input your Zapier Table columns into the \"Input column\" fields of the action.",[1640,26482,26483],{},"Now, set up your axiom.ai automation:",[1701,26485,26486],{},[2165,26487,26488,26494,26502],{},[1572,26489,26490,26493],{},[1653,26491,26492],{},"Create"," - Click \"+ New Automation\" to create a new automation.",[1572,26495,26496,26499,26500,2838],{},[1653,26497,26498],{},"Receive data"," - Add a ",[1942,26501,1110],{"href":1111},[1572,26503,26504,26506],{},[1653,26505,2230],{}," - Input test data into the \"Test data\" field, this will assist in the testing.",[1640,26508,26509],{},"Continue to create your automation as required, using the data from the \"Test data\" input to build out an automation that uses your data. When you're ready, click \"Run\".",[1561,26511,2386],{"id":2385},[1566,26513],{},[1640,26515,26516],{},"To test adding data to your Zapier Table, click \"Run\" in your automation. If there are errors with your automation, you may find these in the builder or in the Run Report for your run. If there is an error in your Zap, check your Zapier logs for more information on how to continue.",[1640,26518,26519],{},"To test triggering your automation from your Zapier Table, run your Zap, or click \"Test step\" in the \"Test\" tab of the \"axiom.ai\" Zapier step.",[1640,26521,25748],{},[1569,26523,26524,26528,26532],{},[1572,26525,26526],{},[1942,26527,4909],{"href":1487},[1572,26529,26530],{},[1942,26531,1408],{"href":1409},[1572,26533,26534],{},[1942,26535,25763],{"href":1405},[1561,26537,2406],{"id":2405},[1566,26539],{},[1640,26541,26542],{},"Zapier Tables can be a great alternative to storing your data - with the added benefit of being able to be used within your axiom.ai automations, and your Zapier Zaps. This opens up powerful opportunities to automate your workflow and get working even faster by integrating axiom.ai with the vast library of integrations that Zapier offers.",[1566,26544],{},[1640,26546,26547],{},"Information accurate as of December 2024.",{"title":1614,"searchDepth":1615,"depth":1615,"links":26549},[26550,26551,26555,26556],{"id":2155,"depth":1618,"text":2156},{"id":26346,"depth":1618,"text":26347,"children":26552},[26553,26554],{"id":26355,"depth":1615,"text":26356},{"id":26450,"depth":1615,"text":26451},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},"Learn how to automatically send data to your Zapier Tables databases and trigger your axiom.ai automations using triggers.",{"pinned":1627,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":26559,"platfrom":26560},[2439,2440,2664,22633],[783,26297],"\u002Fguides\u002Fzapier-tables",{"title":26286,"description":26557},"guides\u002Fzapier-tables","Kxe6B04quaLH01fQuJeN1B7QyP0-n7ljpFRpw_yCDFU",[26566,27016,27229,27454],{"id":25288,"title":25289,"body":26567,"date":1628,"description":25796,"extension":1621,"meta":27012,"navigation":1627,"order":1628,"path":25800,"seo":27015,"stem":25802,"__hash__":25803},{"type":1555,"value":26568,"toc":27002},[26569,26571,26575,26577,26579,26599,26601,26603,26605,26617,26619,26623,26635,26639,26641,26643,26653,26659,26925,26932,26936,26938,26940,26958,26960,26964,26966,26968,26970,26972,26986,26988,26995,27000],[1566,26570],{},[1640,26572,25296,26573,25300],{},[1942,26574,10481],{"href":25299},[1561,26576,2156],{"id":2155},[1640,26578,25305],{},[1701,26580,26581],{},[1569,26582,26583,26589,26593],{},[1572,26584,26585,2172,26587,1668],{},[1712,26586,2171],{},[1942,26588,2176],{"href":2175},[1572,26590,26591,2182],{},[1712,26592,2181],{},[1572,26594,26595,2188,26597,1668],{},[1712,26596,2187],{},[1712,26598,2191],{},[1640,26600,25328],{},[1561,26602,25332],{"id":25331},[1640,26604,25335],{},[1701,26606,26607],{},[2165,26608,26609,26613],{},[1572,26610,26611,25344],{},[1712,26612,2187],{},[1572,26614,26615,25349],{},[1712,26616,17936],{},[2249,26618,25353],{"id":25352},[1640,26620,6656,26621,25358],{},[1942,26622,9287],{"href":1194},[1701,26624,26625],{},[2165,26626,26627,26631,26633],{},[1572,26628,9913,26629,2838],{},[1942,26630,9287],{"href":1194},[1572,26632,25369],{},[1572,26634,25372],{},[1640,26636,25375,26637,13947],{},[1942,26638,9205],{"href":1373},[2249,26640,12586],{"id":25380},[1640,26642,25383],{},[2165,26644,26645,26647,26649,26651],{},[1572,26646,25388],{},[1572,26648,25391],{},[1572,26650,25394],{},[1572,26652,25397],{},[1640,26654,22720,26655,25402,26657,25405],{},[1942,26656,3904],{"href":1226},[1712,26658,11216],{},[2329,26660,26661],{"className":2366,"code":25408,"language":2368,"meta":1614,"style":1614},[1712,26662,26663,26675,26687,26697,26703,26725,26729,26733,26749,26755,26769,26777,26781,26787,26801,26809,26813,26829,26833,26837,26847,26859,26865,26869,26873,26889,26897,26905,26917,26921],{"__ignoreMap":1614},[2337,26664,26665,26667,26669,26671,26673],{"class":2339,"line":2340},[2337,26666,3918],{"class":3592},[2337,26668,25417],{"class":3488},[2337,26670,3924],{"class":3592},[2337,26672,25422],{"class":2347},[2337,26674,3930],{"class":2378},[2337,26676,26677,26679,26681,26683,26685],{"class":2339,"line":1618},[2337,26678,3918],{"class":3592},[2337,26680,25431],{"class":3488},[2337,26682,3924],{"class":3592},[2337,26684,25436],{"class":2347},[2337,26686,3930],{"class":2378},[2337,26688,26689,26691,26693,26695],{"class":2339,"line":1615},[2337,26690,3918],{"class":3592},[2337,26692,23703],{"class":3488},[2337,26694,3924],{"class":3592},[2337,26696,3994],{"class":2378},[2337,26698,26699,26701],{"class":2339,"line":3501},[2337,26700,11094],{"class":2347},[2337,26702,25455],{"class":2378},[2337,26704,26705,26707,26709,26711,26713,26715,26717,26719,26721,26723],{"class":2339,"line":3507},[2337,26706,11118],{"class":2347},[2337,26708,3636],{"class":2378},[2337,26710,1785],{"class":3488},[2337,26712,3610],{"class":2378},[2337,26714,10444],{"class":3488},[2337,26716,25470],{"class":2378},[2337,26718,18856],{"class":3488},[2337,26720,3610],{"class":2378},[2337,26722,25477],{"class":3488},[2337,26724,25480],{"class":2378},[2337,26726,26727],{"class":2339,"line":3579},[2337,26728,18392],{"class":2378},[2337,26730,26731],{"class":2339,"line":3658},[2337,26732,3504],{"emptyLinePlaceholder":1627},[2337,26734,26735,26737,26739,26741,26743,26745,26747],{"class":2339,"line":3664},[2337,26736,3918],{"class":3592},[2337,26738,25495],{"class":3979},[2337,26740,3924],{"class":3592},[2337,26742,3985],{"class":3592},[2337,26744,3988],{"class":2378},[2337,26746,3991],{"class":3592},[2337,26748,3994],{"class":2378},[2337,26750,26751,26753],{"class":2339,"line":3670},[2337,26752,3999],{"class":3592},[2337,26754,3994],{"class":2378},[2337,26756,26757,26759,26761,26763,26765,26767],{"class":2339,"line":3693},[2337,26758,4006],{"class":3592},[2337,26760,3699],{"class":3488},[2337,26762,3924],{"class":3592},[2337,26764,4013],{"class":3592},[2337,26766,4016],{"class":3979},[2337,26768,25526],{"class":2378},[2337,26770,26771,26773,26775],{"class":2339,"line":3746},[2337,26772,4024],{"class":2378},[2337,26774,4027],{"class":2347},[2337,26776,4030],{"class":2378},[2337,26778,26779],{"class":2339,"line":3760},[2337,26780,4035],{"class":2378},[2337,26782,26783,26785],{"class":2339,"line":3136},[2337,26784,22983],{"class":2347},[2337,26786,25455],{"class":2378},[2337,26788,26789,26791,26793,26795,26797,26799],{"class":2339,"line":3784},[2337,26790,25549],{"class":2347},[2337,26792,3601],{"class":2378},[2337,26794,18464],{"class":2347},[2337,26796,25556],{"class":2378},[2337,26798,4051],{"class":2347},[2337,26800,4030],{"class":2378},[2337,26802,26803,26805,26807],{"class":2339,"line":3793},[2337,26804,25565],{"class":2347},[2337,26806,3601],{"class":2378},[2337,26808,18481],{"class":2347},[2337,26810,26811],{"class":2339,"line":4136},[2337,26812,4068],{"class":2378},[2337,26814,26815,26817,26819,26821,26823,26825,26827],{"class":2339,"line":4154},[2337,26816,4073],{"class":2378},[2337,26818,11178],{"class":3488},[2337,26820,1668],{"class":2378},[2337,26822,11183],{"class":3979},[2337,26824,4145],{"class":2378},[2337,26826,23030],{"class":3979},[2337,26828,25590],{"class":2378},[2337,26830,26831],{"class":2339,"line":4162},[2337,26832,4114],{"class":2378},[2337,26834,26835],{"class":2339,"line":4168},[2337,26836,23042],{"class":2378},[2337,26838,26839,26841,26843,26845],{"class":2339,"line":4173},[2337,26840,4124],{"class":3592},[2337,26842,4127],{"class":2378},[2337,26844,4130],{"class":3592},[2337,26846,4133],{"class":2378},[2337,26848,26849,26851,26853,26855,26857],{"class":2339,"line":4194},[2337,26850,4139],{"class":2378},[2337,26852,4142],{"class":3979},[2337,26854,4145],{"class":2378},[2337,26856,4148],{"class":2347},[2337,26858,4488],{"class":2378},[2337,26860,26861,26863],{"class":2339,"line":4206},[2337,26862,4157],{"class":3592},[2337,26864,3930],{"class":2378},[2337,26866,26867],{"class":2339,"line":4218},[2337,26868,4165],{"class":2378},[2337,26870,26871],{"class":2339,"line":4233},[2337,26872,4119],{"class":2378},[2337,26874,26875,26877,26879,26881,26883,26885,26887],{"class":2339,"line":4239},[2337,26876,4006],{"class":3592},[2337,26878,4178],{"class":3488},[2337,26880,3924],{"class":3592},[2337,26882,4013],{"class":3592},[2337,26884,4185],{"class":2378},[2337,26886,4188],{"class":3979},[2337,26888,4191],{"class":2378},[2337,26890,26891,26893,26895],{"class":2339,"line":4245},[2337,26892,4197],{"class":2378},[2337,26894,4200],{"class":3979},[2337,26896,4203],{"class":2378},[2337,26898,26899,26901,26903],{"class":2339,"line":4250},[2337,26900,4209],{"class":2378},[2337,26902,4212],{"class":3592},[2337,26904,4215],{"class":2378},[2337,26906,26907,26909,26911,26913,26915],{"class":2339,"line":6244},[2337,26908,4197],{"class":2378},[2337,26910,4142],{"class":3979},[2337,26912,4145],{"class":2378},[2337,26914,4227],{"class":2347},[2337,26916,4230],{"class":2378},[2337,26918,26919],{"class":2339,"line":6249},[2337,26920,4236],{"class":2378},[2337,26922,26923],{"class":2339,"line":2923},[2337,26924,4242],{"class":2378},[1640,26926,25689,26927,25692,26929,13800],{},[1712,26928,11216],{},[1942,26930,25697],{"href":25695,"rel":26931},[3850],[1640,26933,25375,26934,13947],{},[1942,26935,9205],{"href":1373},[1561,26937,25705],{"id":25704},[1640,26939,25708],{},[1701,26941,26942],{},[1569,26943,26944,26952],{},[1572,26945,26946,1710,26948,2221,26950,2838],{},[1653,26947,1709],{},[1712,26949,25719],{},[1942,26951,25719],{"href":1111},[1572,26953,26954,1710,26956,25729],{},[1653,26955,1733],{},[1712,26957,25728],{},[1640,26959,25732],{},[1640,26961,26962],{},[2417,26963,25737],{},[1561,26965,2386],{"id":2385},[1640,26967,25742],{},[1640,26969,25745],{},[1640,26971,25748],{},[1569,26973,26974,26978,26982],{},[1572,26975,26976],{},[1942,26977,4909],{"href":1487},[1572,26979,26980],{},[1942,26981,1408],{"href":1409},[1572,26983,26984],{},[1942,26985,25763],{"href":1405},[1561,26987,2406],{"id":2405},[1640,26989,25768,26990,25772,26992,1668],{},[1942,26991,22652],{"href":25771},[1942,26993,25776],{"href":4919,"rel":26994},[3850],[1640,26996,25779,26997,1668],{},[1942,26998,25776],{"href":4919,"rel":26999},[3850],[2421,27001,25785],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":27003},[27004,27005,27009,27010,27011],{"id":2155,"depth":1618,"text":2156},{"id":25331,"depth":1618,"text":25332,"children":27006},[27007,27008],{"id":25352,"depth":1615,"text":25353},{"id":25380,"depth":1615,"text":12586},{"id":25704,"depth":1618,"text":25705},{"id":2385,"depth":1618,"text":2386},{"id":2405,"depth":1618,"text":2406},{"type":2126,"format":2127,"intent_type":2128,"intent":2437,"tags":27013,"platfrom":27014},[2439,2440],[3363],{"title":25289,"description":25796},{"id":25822,"title":25823,"body":27017,"date":1628,"description":26091,"extension":1621,"meta":27225,"navigation":1627,"order":1628,"path":26096,"seo":27228,"stem":26098,"__hash__":26099},{"type":1555,"value":27018,"toc":27215},[27019,27021,27023,27025,27027,27029,27031,27051,27053,27055,27057,27075,27077,27085,27087,27099,27101,27133,27135,27137,27139,27141,27145,27147,27149,27151,27153,27155,27175,27179,27181,27183,27187,27207,27209,27211,27213],[1566,27020],{},[1640,27022,25830],{},[1558,27024],{},[1561,27026,2156],{"id":2155},[1566,27028],{},[1640,27030,2161],{},[1701,27032,27033],{},[2165,27034,27035,27041,27045],{},[1572,27036,27037,3391,27039,1668],{},[1653,27038,2171],{},[1942,27040,2176],{"href":2175},[1572,27042,27043,3398],{},[1653,27044,2181],{},[1572,27046,27047,3403,27049,1668],{},[1653,27048,2187],{},[1712,27050,2191],{},[1561,27052,25862],{"id":25861},[1566,27054],{},[1640,27056,25867],{},[1701,27058,27059],{},[2165,27060,27061,27065,27069],{},[1572,27062,27063,25877],{},[1653,27064,25876],{},[1572,27066,27067,25883],{},[1653,27068,25882],{},[1572,27070,27071,25888,27073,25891],{},[1653,27072,9287],{},[1942,27074,9287],{"href":1194},[1640,27076,25894],{},[1701,27078,27079],{},[1569,27080,27081,27083],{},[1572,27082,25901],{},[1572,27084,25904],{},[1640,27086,25907],{},[1701,27088,27089],{},[2165,27090,27091,27095],{},[1572,27092,27093,25917],{},[1653,27094,25916],{},[1572,27096,27097,25922],{},[1653,27098,2230],{},[1640,27100,25925],{},[1701,27102,27103],{},[2165,27104,27105,27109,27113,27117,27121,27125,27129],{},[1572,27106,27107,25935],{},[1653,27108,25934],{},[1572,27110,27111,25941],{},[1653,27112,25940],{},[1572,27114,27115,25946],{},[1653,27116,15618],{},[1572,27118,27119,25952],{},[1653,27120,25951],{},[1572,27122,27123,25958],{},[1653,27124,25957],{},[1572,27126,27127,25964],{},[1653,27128,25963],{},[1572,27130,27131,25969],{},[1653,27132,13976],{},[2202,27134],{"src":25972,"alt":25973},[1561,27136,2386],{"id":2385},[1566,27138],{},[1640,27140,25980],{},[1640,27142,25983,27143,25987],{},[1942,27144,25986],{"href":2401},[1561,27146,8300],{"id":8299},[1566,27148],{},[2249,27150,25995],{"id":25994},[1566,27152],{},[1640,27154,26000],{},[1701,27156,27157],{},[2165,27158,27159,27167],{},[1572,27160,27161,26009,27163,26013,27165,2838],{},[1653,27162,321],{},[1942,27164,26012],{"href":619},[1942,27166,1035],{"href":1036},[1572,27168,27169,26020,27171,26023,27173,22156],{},[1653,27170,9287],{},[1942,27172,9287],{"href":1194},[1712,27174,1818],{},[1640,27176,26028,27177,26032],{},[1942,27178,25862],{"href":26031},[2249,27180,26036],{"id":26035},[1566,27182],{},[1640,27184,26041,27185,26045],{},[1942,27186,25862],{"href":26044},[1701,27188,27189],{},[2165,27190,27191,27195,27199,27203],{},[1572,27192,27193,26054],{},[1653,27194,29],{},[1572,27196,27197,26059],{},[1653,27198,25934],{},[1572,27200,27201,26065],{},[1653,27202,26064],{},[1572,27204,27205,26070],{},[1653,27206,2230],{},[1640,27208,26073],{},[1561,27210,2406],{"id":2405},[1566,27212],{},[1640,27214,26080],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":27216},[27217,27218,27219,27220,27224],{"id":2155,"depth":1618,"text":2156},{"id":25861,"depth":1618,"text":25862},{"id":2385,"depth":1618,"text":2386},{"id":8299,"depth":1618,"text":8300,"children":27221},[27222,27223],{"id":25994,"depth":1615,"text":25995},{"id":26035,"depth":1615,"text":26036},{"id":2405,"depth":1618,"text":2406},{"video":26093,"type":2126,"format":1701,"intent_type":2128,"intent":2437,"tags":27226,"platfrom":27227},[2439,2440,2664,22633],[783],{"title":25823,"description":26091},{"id":13093,"title":13094,"body":27230,"date":1628,"description":13101,"extension":1621,"meta":27450,"navigation":1627,"order":1628,"path":13376,"seo":27453,"stem":13378,"__hash__":13379},{"type":1555,"value":27231,"toc":27443},[27232,27234,27236,27238,27240,27242,27244,27246,27248,27250,27252,27260,27262,27266,27271,27276,27281,27286,27288,27290,27292,27414,27416,27418,27420,27422,27439,27441],[1566,27233],{},[1640,27235,13101],{},[1640,27237,13104],{},[1640,27239,13107],{},[1561,27241,13111],{"id":13110},[1640,27243,13114],{},[1640,27245,13117],{},[2202,27247],{"src":13120,"alt":13121},[1561,27249,13125],{"id":13124},[1640,27251,13128],{},[1569,27253,27254,27256,27258],{},[1572,27255,13133],{},[1572,27257,13136],{},[1572,27259,13139],{},[1561,27261,13143],{"id":13142},[1640,27263,13146,27264,13150],{},[1942,27265,13149],{"href":1614},[1640,27267,13153,27268,13159],{},[1942,27269,13158],{"href":13156,"rel":27270},[3850],[1640,27272,13162,27273,13167],{},[1942,27274,1181],{"href":13165,"rel":27275},[3850],[1640,27277,13170,27278,13175],{},[1942,27279,1185],{"href":13173,"rel":27280},[3850],[1640,27282,13178,27283,13182],{},[1942,27284,1074],{"href":13156,"rel":27285},[3850],[2202,27287],{"src":13185,"alt":13186},[1561,27289,13190],{"id":13189},[1640,27291,13193],{},[1701,27293,27294],{},[1569,27295,27296,27322],{},[1572,27297,27298,1710,27300,27302],{},[1653,27299,1968],{},[1712,27301,1714],{},[1569,27303,27304,27308,27312,27318],{},[1572,27305,27306,1722],{},[1712,27307,1721],{},[1572,27309,27310,9539],{},[1712,27311,1727],{},[1572,27313,27314,12836,27316,1668],{},[1712,27315,8756],{},[1712,27317,8760],{},[1572,27319,27320,13224],{},[1712,27321,6853],{},[1572,27323,27324,1710,27326,27328,27338],{},[1653,27325,2518],{},[1712,27327,667],{},[1569,27329,27330],{},[1572,27331,27332,1752,27334,1756,27336,1668],{},[1712,27333,667],{},[1712,27335,1814],{},[1712,27337,1759],{},[1569,27339,27340,27360,27376],{},[1572,27341,27342,1710,27344,27346],{},[1653,27343,2527],{},[1712,27345,13249],{},[1569,27347,27348,27354],{},[1572,27349,27350,13257,27352,1668],{},[1712,27351,13256],{},[1712,27353,13260],{},[1572,27355,27356,1752,27358,13267],{},[1712,27357,2083],{},[1712,27359,1814],{},[1572,27361,27362,1710,27364,27366],{},[1653,27363,2545],{},[1712,27365,13274],{},[1569,27367,27368],{},[1572,27369,27370,1752,27372,13283,27374,2838],{},[1712,27371,2083],{},[1712,27373,1814],{},[1712,27375,13249],{},[1572,27377,27378,1710,27380,27382,27392],{},[1653,27379,2553],{},[1712,27381,13292],{},[1569,27383,27384],{},[1572,27385,27386,1752,27388,13283,27390,2838],{},[1712,27387,667],{},[1712,27389,1814],{},[1712,27391,13274],{},[1569,27393,27394],{},[1572,27395,27396,1710,27398,27400],{},[1653,27397,12933],{},[1712,27399,5230],{},[1569,27401,27402,27406],{},[1572,27403,27404,13317],{},[1712,27405,1775],{},[1572,27407,27408,1782,27410,13324,27412,13327],{},[1712,27409,269],{},[1712,27411,5242],{},[1712,27413,13274],{},[1640,27415,13330],{},[1561,27417,2406],{"id":2405},[1640,27419,13335],{},[1640,27421,13338],{},[1569,27423,27424,27429,27434],{},[1572,27425,27426],{},[1942,27427,13346],{"href":13165,"rel":27428},[3850],[1572,27430,27431],{},[1942,27432,13352],{"href":13173,"rel":27433},[3850],[1572,27435,27436],{},[1942,27437,13358],{"href":13156,"rel":27438},[3850],[1640,27440,13361],{},[1640,27442,13364],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":27444},[27445,27446,27447,27448,27449],{"id":13110,"depth":1618,"text":13111},{"id":13124,"depth":1618,"text":13125},{"id":13142,"depth":1618,"text":13143},{"id":13189,"depth":1618,"text":13190},{"id":2405,"depth":1618,"text":2406},{"pinned":1627,"metaTitle":13373,"type":2126,"format":1701,"intent_type":3360,"intent":2437,"tags":27451,"platfrom":27452},[2664],[3363],{"title":13094,"description":13101},{"id":21766,"title":21767,"body":27455,"date":2652,"description":21963,"extension":1621,"meta":27629,"navigation":1627,"order":1628,"path":17407,"seo":27632,"stem":21969,"__hash__":21970},{"type":1555,"value":27456,"toc":27621},[27457,27459,27461,27463,27467,27469,27475,27477,27483,27487,27489,27491,27549,27551,27553,27555,27559,27561,27563,27617],[1566,27458],{},[1640,27460,21774],{},[1558,27462],{},[1640,27464,21779,27465],{},[1942,27466,21782],{"href":16530},[1561,27468,1648],{"id":1647},[1640,27470,1651,27471,21789,27473,1668],{},[1653,27472,1655],{},[1653,27474,1663],{},[1561,27476,21795],{"id":21794},[1640,27478,21798,27479,21801,27481,1683],{},[1653,27480,1678],{},[1653,27482,1682],{},[1640,27484,21806,27485,1668],{},[1653,27486,1689],{},[1640,27488,1692],{},[1561,27490,21814],{"id":21813},[1701,27492,27493],{},[1569,27494,27495,27521],{},[1572,27496,27497,1710,27499,27501],{},[1653,27498,1968],{},[1712,27500,14900],{},[1569,27502,27503,27507,27513,27517],{},[1572,27504,27505,21831],{},[1712,27506,5513],{},[1572,27508,27509,3601,27511,21838],{},[1712,27510,1775],{},[1942,27512,20924],{"href":1387},[1572,27514,27515,21843],{},[1712,27516,17465],{},[1572,27518,27519,21848],{},[1712,27520,1781],{},[1572,27522,27523,1710,27525,27527],{},[1653,27524,2518],{},[1712,27526,4900],{},[1569,27528,27529,27533,27537,27543],{},[1572,27530,27531,1722],{},[1712,27532,1721],{},[1572,27534,27535,1875],{},[1712,27536,1727],{},[1572,27538,27539,1881,27541,1668],{},[1712,27540,1880],{},[1712,27542,15042],{},[1572,27544,27545,1782,27547,1668],{},[1712,27546,16734],{},[1712,27548,7597],{},[1561,27550,21880],{"id":21879},[1640,27552,21883],{},[1561,27554,1937],{"id":1936},[1640,27556,1940,27557,1946],{},[1942,27558,1945],{"href":1944},[1561,27560,1398],{"id":1949},[1640,27562,1952],{},[1701,27564,27565],{},[1569,27566,27567,27577,27589,27597,27609],{},[1572,27568,27569,27571,1965,27573,21907,27575,1668],{},[1653,27570,1982],{},[1963,27572],{},[1712,27574,21906],{},[1942,27576,9069],{"href":1383},[1572,27578,27579,27581,2011,27583,2015,27585,2019,27587,1668],{},[1653,27580,21038],{},[1963,27582],{},[1712,27584,2014],{},[1712,27586,2018],{},[1712,27588,18821],{},[1572,27590,27591,27593,21054,27595,21057],{},[1653,27592,21051],{},[1963,27594],{},[1712,27596,1781],{},[1572,27598,27599,27601,1965,27603,2062,27605,2084,27607,1668],{},[1653,27600,2077],{},[1963,27602],{},[1712,27604,21938],{},[1712,27606,2083],{},[1712,27608,15042],{},[1572,27610,27611,27613,2094,27615,2098],{},[1653,27612,2091],{},[1963,27614],{},[1712,27616,2097],{},[1640,27618,2101,27619],{},[1942,27620,2104],{"href":82},{"title":1614,"searchDepth":1615,"depth":1615,"links":27622},[27623,27624,27625,27626,27627,27628],{"id":1647,"depth":1618,"text":1648},{"id":21794,"depth":1618,"text":21795},{"id":21813,"depth":1618,"text":21814},{"id":21879,"depth":1618,"text":21880},{"id":1936,"depth":1618,"text":1937},{"id":1949,"depth":1618,"text":1398},{"read":3134,"level":2123,"video":21965,"templateId":6258,"type":2126,"format":2127,"intent_type":3360,"intent":5613,"tags":27630,"platfrom":27631},[2132,16793,21114],[3363],{"title":21767,"description":21963},[],{"parent":1230,"items":27635},[27636,27704,27763,27816,27942,28097,28229,28463,28627,28779,28946,29084,29237,29372,29435,29492,29537,29606,29668,29901,30109,30248,30348,30520,30709,30866,31032,31186,31320],{"id":27637,"title":1235,"body":27638,"date":27698,"description":1614,"extension":1621,"meta":27699,"navigation":1627,"order":1628,"path":1236,"seo":27702,"stem":1237,"__hash__":27703},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-10-0.md",{"type":1555,"value":27639,"toc":27694},[27640,27642,27644,27670,27672,27674],[1561,27641,1564],{"id":1563},[1566,27643],{},[1569,27645,27646,27649,27652,27655,27658,27661,27664,27667],{},[1572,27647,27648],{},"Integromat \u002F Make app integration added. Look out for the axiom app appearing on their platform soon!",[1572,27650,27651],{},"New “unconditional jump” step - allows you to create more complex loops without having to provide a condition that always passes",[1572,27653,27654],{},"Added a visual indication when data has been selected in scrapers and other interact steps",[1572,27656,27657],{},"Improvements to step renaming",[1572,27659,27660],{},"When your login expires, you can now re-enter your details right there rather than being sent back to the main login page",[1572,27662,27663],{},"Visual indication of result grouping added, extended scraper tool tutorial to encompass it",[1572,27665,27666],{},"Step number now available in error messages to help with debugging",[1572,27668,27669],{},"Added the run time for each bot run to the Reports page",[1561,27671,1590],{"id":1589},[1566,27673],{},[1569,27675,27676,27679,27682,27685,27688,27691],{},[1572,27677,27678],{},"Google Sheet previews no longer default to a maximum of 52 columns",[1572,27680,27681],{},"Improved template setup flow by adding a confirmation when the setup is complete",[1572,27683,27684],{},"Scraper now better supports pages which load content in via AJAX",[1572,27686,27687],{},"Fixes to scrolling behaviour during scraping that should work better on some sites, such like Linkedin",[1572,27689,27690],{},"Fixed several issues with writing to Google Sheets when there were a very large (1000+) number of columns",[1572,27692,27693],{},"Select list behaviour is now smarter and is able to find elements in a larger variety of cases",{"title":1614,"searchDepth":1615,"depth":1615,"links":27695},[27696,27697],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-07-19",{"version":27700,"featuredimg":27701},3.1,"\u002Fversion3-10.jpg",{"title":1235,"description":1614},"bEFBkpfcYmbcjWkfizGFXVUVTNHORskCBFzBPoDEAF8",{"id":27705,"title":1239,"body":27706,"date":27757,"description":1614,"extension":1621,"meta":27758,"navigation":1627,"order":1628,"path":1240,"seo":27761,"stem":1241,"__hash__":27762},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-11-0.md",{"type":1555,"value":27707,"toc":27753},[27708,27710,27712,27732,27734,27736],[1561,27709,1564],{"id":1563},[1566,27711],{},[1569,27713,27714,27717,27720,27723,27726,27729],{},[1572,27715,27716],{},"All remote running bots (scheduled or via Zapier, API etc.) now show up as running in the main axiom.ai dashboard and can be stopped from there.",[1572,27718,27719],{},"Conditional steps now have a “not” toggle, allowing jumping or continuing on error when a condition does not match.",[1572,27721,27722],{},"New, cleaner dashboard design with integrated documentation.",[1572,27724,27725],{},"“Continue on error” now prevents sub-steps within loops from being skipped when there’s an error.",[1572,27727,27728],{},"Speed improvements on select list and when clicking by text.",[1572,27730,27731],{},"Suggest a template banner and link added to step finder.",[1561,27733,1590],{"id":1589},[1566,27735],{},[1569,27737,27738,27741,27744,27747,27750],{},[1572,27739,27740],{},"Fixes to data replacement within javascript widgets for some data types.",[1572,27742,27743],{},"Alerts now always automatically confirm, and correctly confirm in newly open tabs.",[1572,27745,27746],{},"Improvements to preview result display.",[1572,27748,27749],{},"Duplicate axioms now automatically renamed.",[1572,27751,27752],{},"Download link to desktop app now available under run button.",{"title":1614,"searchDepth":1615,"depth":1615,"links":27754},[27755,27756],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-08-22",{"version":27759,"featuredimg":27760},3.11,"\u002Fversion3.11.0-2.jpg",{"title":1239,"description":1614},"47J3DcIWLk3ghFimLorI8I7Oa5i7VpE8TFikmHca7Rk",{"id":27764,"title":1243,"body":27765,"date":27810,"description":1614,"extension":1621,"meta":27811,"navigation":1627,"order":1628,"path":1244,"seo":27814,"stem":1245,"__hash__":27815},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-12-0.md",{"type":1555,"value":27766,"toc":27806},[27767,27769,27771,27788,27790,27792],[1561,27768,1564],{"id":1563},[1566,27770],{},[1569,27772,27773,27776,27779,27782,27785],{},[1572,27774,27775],{},"Fixes to issues that caused pages to hang when certain types of iframe were present",[1572,27777,27778],{},"Integrated CAPTCHA solve step using a third party service",[1572,27780,27781],{},"Added new extension open \u002F close toggle",[1572,27783,27784],{},"Press Key(s) step now can be set to automatically delay between key presses",[1572,27786,27787],{},"Updated design for error reporting and displayed messages",[1561,27789,1590],{"id":1589},[1566,27791],{},[1569,27793,27794,27797,27800,27803],{},[1572,27795,27796],{},"Faster and less error-prone algorithm when writing huge volumes of data to Google Sheets",[1572,27798,27799],{},"Added all missing Puppeteer page functions to code box, including page.screenshot",[1572,27801,27802],{},"Fixes to click events on some sites",[1572,27804,27805],{},"Local storage loading now optional",{"title":1614,"searchDepth":1615,"depth":1615,"links":27807},[27808,27809],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-09-22",{"version":27812,"featuredimg":27813},3.12,"\u002Fversion3-12.jpg",{"title":1243,"description":1614},"Fa_IF6XOSV9dghhWA4_fmsVQVjlpM5KxnItl72y_lTY",{"id":27817,"title":1247,"body":27818,"date":27936,"description":1614,"extension":1621,"meta":27937,"navigation":1627,"order":1628,"path":1248,"seo":27940,"stem":1249,"__hash__":27941},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-13-0.md",{"type":1555,"value":27819,"toc":27924},[27820,27822,27826,27828,27832,27835,27839,27843,27846,27850,27853,27857,27860,27864,27868,27870,27873,27877,27881,27883,27886,27889,27893,27895,27898,27901,27904,27908,27910],[1558,27821],{},[1561,27823,27825],{"id":27824},"changes-to-steps","Changes to Steps",[1566,27827],{},[2249,27829,27831],{"id":27830},"optional-click","Optional click",[1640,27833,27834],{},"We have added the ability to set clicks as optional. Instead of throwing an error, axiom will click the element if present, and continue if not.",[2202,27836],{"src":27837,"alt":27838},"\u002Fblog\u002Foptional-click.png","Instead of throwing an error, axiom will click the element if present, and continue if not.",[2249,27840,27842],{"id":27841},"improved-split-name-step","Improved 'Split Name' step",[1640,27844,27845],{},"Improved support for foreign and unicode characters in the split name step.",[2249,27847,27849],{"id":27848},"improved-captcha-step","Improved CAPTCHA step",[1640,27851,27852],{},"Improved the CAPTCHA solver consistency and the number of CAPTCHAs supported.",[2249,27854,27856],{"id":27855},"new-step-save-a-screenshot","New step: 'Save a Screenshot'",[1640,27858,27859],{},"We have added a new step to save a screenshot of the current page.",[2202,27861],{"src":27862,"alt":27863},"\u002Fblog\u002Fscreenshot.png","Get you bot to take a screen shot of the browser.",[1561,27865,27867],{"id":27866},"scheduling","Scheduling",[1566,27869],{},[1640,27871,27872],{},"Users can now schedule Axioms on the Desktop Runner application instead of on the Cloud Runner.",[2202,27874],{"src":27875,"alt":27876},"\u002Fblog\u002Fdesktop-runner.png","Users can now schedule Axioms on the Desktop Runner application instead of on the Cloud Runner",[1561,27878,27880],{"id":27879},"chrome-extension-ui","Chrome Extension UI",[1566,27882],{},[1640,27884,27885],{},"Axiom builder can now be minimised and docked to the side of the browser.",[2202,27887],{"src":27888,"alt":27876},"\u002Fblog\u002Fexpand-collapse.gif",[1561,27890,27892],{"id":27891},"web-scraper","Web scraper",[1566,27894],{},[1640,27896,27897],{},"We've made numerous scraper improvements to increase the number of pages we support and to improve general consistency and speed.",[1640,27899,27900],{},"Most notably, Axiom will no longer scroll all the way to the bottom of the page before scraping, which allows us to scrape all data from pages that unload content when the screen\nscrolls below a certain point.",[1640,27902,27903],{},"Successfully scraped data is now also highlighted orange, so you can see what's being grabbed as you go.",[1561,27905,27907],{"id":27906},"minor-bug-fixes","Minor bug fixes",[1566,27909],{},[1569,27911,27912,27915,27918,27921],{},[1572,27913,27914],{},"Remove words step now correctly removes no results when no words are given, instead of removing all",[1572,27916,27917],{},"Improved error messaging when attempting to access bad URLs",[1572,27919,27920],{},"Fixed issues where the UI would get stuck if the network connection to the backend was lost during saving",[1572,27922,27923],{},"Added rename operation to the javascript API",{"title":1614,"searchDepth":1615,"depth":1615,"links":27925},[27926,27932,27933,27934,27935],{"id":27824,"depth":1618,"text":27825,"children":27927},[27928,27929,27930,27931],{"id":27830,"depth":1615,"text":27831},{"id":27841,"depth":1615,"text":27842},{"id":27848,"depth":1615,"text":27849},{"id":27855,"depth":1615,"text":27856},{"id":27866,"depth":1618,"text":27867},{"id":27879,"depth":1618,"text":27880},{"id":27891,"depth":1618,"text":27892},{"id":27906,"depth":1618,"text":27907},"2022-10-15",{"version":27938,"video":27939},3.13,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FWiIhSol4DPM?rel=0&amp;",{"title":1247,"description":1614},"7TrSiKekAdQJGSHwF3qAtYELGyhNfhMLTy8qDirBmTU",{"id":27943,"title":1251,"body":27944,"date":28091,"description":1614,"extension":1621,"meta":28092,"navigation":1627,"order":1628,"path":1252,"seo":28095,"stem":1253,"__hash__":28096},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-14-0.md",{"type":1555,"value":27945,"toc":28081},[27946,27948,27952,27954,27957,27960,27980,27983,27989,27993,27995,27998,28001,28004,28008,28010,28013,28016,28019,28023,28025,28028,28031,28035,28037,28040,28044,28046,28049,28053,28055,28058,28062,28064],[1558,27947],{},[1561,27949,27951],{"id":27950},"new-custom-selector-interface","New custom selector interface",[1566,27953],{},[1640,27955,27956],{},"This one has been in the works for quite some time, but we're pleased to anounce the new custom selector interface is here. Let us know if you have any feedback!",[1640,27958,27959],{},"The new interface hugely improves the experience of adding and editing custom selectors, allowing the following features:",[1569,27961,27962,27965,27968,27971,27974,27977],{},[1572,27963,27964],{},"Custom selectors can be set per column in scrapes",[1572,27966,27967],{},"Easily mix custom selectors with ones that have been automatically selected",[1572,27969,27970],{},"Set selectors from previous data without having to manually edit JSON",[1572,27972,27973],{},"See live previews of your custom selectors",[1572,27975,27976],{},"Select by text",[1572,27978,27979],{},"Get helpful suggestions for refining a selector which can help with automation accuracy",[2202,27981],{"src":27982},"\u002Fimg\u002Fselect-text.gif",[1640,27984,27985,27986],{},"To learn more about the new custom selector tool ",[1942,27987,27988],{"href":1391},"click here.",[1561,27990,27992],{"id":27991},"select-copy-and-move-steps","Select, copy and move steps",[1566,27994],{},[1640,27996,27997],{},"This feature has been in demand for a while, and we're pleased to announce it has now been released in axiom 3.14.",[1640,27999,28000],{},"By clicking on the step number of a step, or selecting \"Select\" from the step menu, you can now select one or more steps. Once selected, these can either be copied or moved to a new place, making fixing your bots much easier!",[2202,28002],{"src":28003},"\u002Fimg\u002Fdraganddrop.gif",[1561,28005,28007],{"id":28006},"expanded-file-download-system","Expanded file download system",[1566,28009],{},[1640,28011,28012],{},"For new bots, a new file download system has been created that prefers direct downloads from the Axiom application directly. This should significantly improve speed and consistency for many use cases, and the system still falls back to the previous browser-based method when the file cannot be located in this way.",[1640,28014,28015],{},"Additionally we have provided a proxy to force downloads that are otherwise not possible to determine automatically.",[1640,28017,28018],{},"Old bots will still use the previous method, so anything working should remain as it was.",[1561,28020,28022],{"id":28021},"overhauled-template-system","Overhauled template system",[1566,28024],{},[1640,28026,28027],{},"We're delighted to announce that we have replaced our recipe system, which was getting a little long in the tooth. We have now added a set of fresh new templates with much improved user experience and design, and we hope to continue adding more in the upcoming releases.",[2202,28029],{"src":28030},"\u002Fimg\u002Ftemplate.gif",[1561,28032,28034],{"id":28033},"expanded-iframe-support","Expanded iframe support",[1566,28036],{},[1640,28038,28039],{},"Iframe support in Axiom was limited and had some issues. These issues have now been fixed; all interact steps should now be compatible with iframes.",[1561,28041,28043],{"id":28042},"error-messages-now-point-to-the-step-that-caused-the-error","Error messages now point to the step that caused the error",[1566,28045],{},[1640,28047,28048],{},"In long or complex bots, it can be difficult to work out where an error is being generated from. To help with this, whenever a runtime error is generated we now highlight the step that caused the error in red, and additionally scroll the builder down to focus on it.",[1561,28050,28052],{"id":28051},"ui-design-cleanup","UI design cleanup",[1566,28054],{},[1640,28056,28057],{},"We've been working to improve the design language across the board in the axiom builder, with our focus being on consistency. We hope you like it! This general work is ongoing and will continue over the next few releases. Dropdowns, tables and buttons were all covered in this release.",[1561,28059,28061],{"id":28060},"minor-fixes","Minor fixes",[1566,28063],{},[1569,28065,28066,28069,28072,28075,28078],{},[1572,28067,28068],{},"Improved select list accuracy when whitespace was present in the option text",[1572,28070,28071],{},"Fixes to infinite hanging issues in the scraper on one website",[1572,28073,28074],{},"Removed desktop only warning for Captcha; you can now use it in the cloud without any issues",[1572,28076,28077],{},"Simplified handling of unicode characters",[1572,28079,28080],{},"Removed misleading output warning from gmail steps",{"title":1614,"searchDepth":1615,"depth":1615,"links":28082},[28083,28084,28085,28086,28087,28088,28089,28090],{"id":27950,"depth":1618,"text":27951},{"id":27991,"depth":1618,"text":27992},{"id":28006,"depth":1618,"text":28007},{"id":28021,"depth":1618,"text":28022},{"id":28033,"depth":1618,"text":28034},{"id":28042,"depth":1618,"text":28043},{"id":28051,"depth":1618,"text":28052},{"id":28060,"depth":1618,"text":28061},"2022-11-29",{"version":28093,"video":28094},3.14,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FgMi8T54ETCU?rel=0&amp",{"title":1251,"description":1614},"8fNb_e1Zl5N8TxZLw_KRiEREfBy__atiJyoTjtz-5Ns",{"id":28098,"title":1255,"body":28099,"date":28223,"description":1614,"extension":1621,"meta":28224,"navigation":1627,"order":1628,"path":1256,"seo":28227,"stem":1257,"__hash__":28228},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-15-0.md",{"type":1555,"value":28100,"toc":28215},[28101,28103,28107,28109,28112,28116,28119,28122,28125,28129,28131,28134,28138,28141,28145,28147,28150,28153,28156,28160,28165,28169,28171,28174,28179,28183,28185,28188,28190,28192],[1558,28102],{},[1561,28104,28106],{"id":28105},"expanded-parameters-for-the-scraper","Expanded parameters for the scraper",[1566,28108],{},[1640,28110,28111],{},"We have exposed several new parameters in the scraper which were previously being automagically managed.",[2202,28113],{"src":28114,"alt":28115},"\u002Freleases\u002Fscraper-params.jpg","change scraper setting in Axiom for better performance",[1640,28117,28118],{},"This was a nice idea in theory, but the reality is that the world of websites is too varied and contradictory for a single solution to ever be optimal. This resulted in Axiom often running slower than it needed to in order to accommodate relatively rare website features, or in order to maximise its reliability in all cases.",[1640,28120,28121],{},"The new scraper parameters, in addition to the existing options, allow you to control the scroll speed and behaviour, and gives you more control over axiom's way of checking for new results. Playing with these new options will allow you to get much better performance for your specific use case.",[1640,28123,28124],{},"Existing scrapers should not be affected.",[1561,28126,28128],{"id":28127},"revamped-payment-system","Revamped payment system",[1566,28130],{},[1640,28132,28133],{},"We have migrated to a fully Stripe-hosted payment system, which should be much more reliable. It also gives us the option to support a broader range of payment systems, including alternate payment methods such as Apple pay, Google pay or Paypal.",[2202,28135],{"src":28136,"alt":28137},"\u002Freleases\u002Fpayment.jpg","new axiom stripe payment pages",[1640,28139,28140],{},"In addition, customers now have access to a customer portal, available from the \"Account\" page, which lets you view invoices and change your payment card details without having to contact support.",[1561,28142,28144],{"id":28143},"new-templates-to-teach-common-design-patterns","New templates to teach common design patterns",[1566,28146],{},[1640,28148,28149],{},"As part of an ongoing effort to make learning axiom easier, and to make sure new users understand the best practices for building automations, we have released a number of new templates focused on teaching fundamental design patterns for building in axiom.",[1640,28151,28152],{},"The new templates are general and can be used for a wide variety of automations.",[1640,28154,28155],{},"Further work is being done to more intelligently suggest these design patterns when they are applicable. Stay tuned!",[2202,28157],{"src":28158,"alt":28159},"\u002Freleases\u002Ftemplates.jpg","new axiom templates in extension and on website",[1640,28161,28162,28163,1668],{},"See the templates on our website ",[1942,28164,21280],{"href":1944},[1561,28166,28168],{"id":28167},"new-documentation-on-javascript-snippets","New documentation on javascript snippets",[1566,28170],{},[1640,28172,28173],{},"We have added a number of new javascript snippets to the documentation. These are frequently useful in building automations; hopefully you find them so!",[1640,28175,28176,28177,1668],{},"The new page can be found ",[1942,28178,21280],{"href":400},[1561,28180,28182],{"id":28181},"zapier-integration-within-axiomai","Zapier integration within axiom.ai",[1566,28184],{},[1640,28186,28187],{},"We have implemented Zapier's new embed feature to allow you to access your axiom.ai zaps from within the axiom.ai application.",[1561,28189,28061],{"id":28060},[1566,28191],{},[1569,28193,28194,28197,28200,28203,28206,28209,28212],{},[1572,28195,28196],{},"Validation messages no longer thrown when steps have been disabled.",[1572,28198,28199],{},"Users now cannot get stuck if their session is expired immediately after registration.",[1572,28201,28202],{},"Improvements to download error handling.",[1572,28204,28205],{},"Implemented Net Promoter Score survey to take user feedback in-app.",[1572,28207,28208],{},"Improved error message when a bot hits its single run limit.",[1572,28210,28211],{},"Significantly improved speed when an axiom.ai is initially saved.",[1572,28213,28214],{},"Added more information about steps that require data to be generated in order to work.",{"title":1614,"searchDepth":1615,"depth":1615,"links":28216},[28217,28218,28219,28220,28221,28222],{"id":28105,"depth":1618,"text":28106},{"id":28127,"depth":1618,"text":28128},{"id":28143,"depth":1618,"text":28144},{"id":28167,"depth":1618,"text":28168},{"id":28181,"depth":1618,"text":28182},{"id":28060,"depth":1618,"text":28061},"2023-01-09",{"version":28225,"video":28226},3.15,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FJFMFNBbJvhg?rel=0&amp",{"title":1255,"description":1614},"jmgrZo20Ah1jX7xAcMtnejwX3vlxf7VBYch0oPnFTv0",{"id":28230,"title":1259,"body":28231,"date":28457,"description":1614,"extension":1621,"meta":28458,"navigation":1627,"order":1628,"path":1260,"seo":28461,"stem":1261,"__hash__":28462},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-16-0.md",{"type":1555,"value":28232,"toc":28444},[28233,28235,28238,28242,28244,28248,28251,28254,28257,28261,28263,28267,28270,28274,28276,28279,28282,28286,28288,28291,28294,28298,28300,28303,28306,28310,28314,28316,28319,28322,28326,28328,28331,28335,28337,28340,28344,28348,28350,28353,28370,28374,28376,28379,28383,28385],[1558,28234],{},[1640,28236,28237],{},"We're excited to present axiom version 3.16. This is a bumper release containing a huge number of improvements, and we've additionally been working on updates to our debugger and onboarding which we're excited to bring to you soon. Read on to find out what's new in 3.16.",[1561,28239,28241],{"id":28240},"google-drive-integration-for-file-operations-in-the-cloud","Google Drive integration for file operations in the cloud",[1566,28243],{},[2202,28245],{"src":28246,"alt":28247},"\u002Freleases\u002Fgoogle-drive.jpg","Use Axiom to automate file downloads and uploads to Google Drive",[1640,28249,28250],{},"Previously, file uploads and downloads were only possible using the desktop application.",[1640,28252,28253],{},"New in this release is an integration with Google Drive that allows you to upload files in our cloud runner. You can now upload files directly from Google Drive to a website, and download files from a website directly to Google Drive, all without needing the desktop application. Your remote drive folder acts as a 1-1 replacement for your own local filesystem.",[1640,28255,28256],{},"This feature allows file operations to be directly integrated with tools like Zapier and with our cloud scheduler. Have fun!",[1561,28258,28260],{"id":28259},"undo-redo","Undo \u002F redo",[1566,28262],{},[2202,28264],{"src":28265,"alt":28266},"\u002Freleases\u002Fundo.jpg","Made a mistake, undo a new feature in axiom.ai",[1640,28268,28269],{},"Undo and Redo is now available. Anything can be un\u002Fre-done in the builder, from text entry to adding new steps, up to a maximum of 50 interactions. Both buttons and handy keyboard shortcuts (ctrl+z and ctrl+y) are available.",[1561,28271,28273],{"id":28272},"javascript-evaluation-in-conditional-steps","Javascript evaluation in conditional steps",[1566,28275],{},[1640,28277,28278],{},"Now, in addition to checking whether particular data is present or not, you can write a javascript expression in order to determine whether to trigger a conditional step.",[1640,28280,28281],{},"This feature is available for both \"Continue only if a condtion is met\" and \"Conditional jump\" steps and will allow you to more precisely control flow within your automations.",[1561,28283,28285],{"id":28284},"new-data-variable-options","New data variable options",[1566,28287],{},[1640,28289,28290],{},"Data variables can now be entered into the First Cell and Last Cell parameters of all Google Sheet widgets, allowing you to dynamically specify these values.",[1640,28292,28293],{},"In addition, the \"Replace text\" step now allows data variables to be used for both of its parameters, making it more flexible and useful.",[1561,28295,28297],{"id":28296},"improvements-to-date-step","Improvements to date step",[1566,28299],{},[1640,28301,28302],{},"The existing \"Current Date and Time\" step has been overhauled, allowing you to specify custom dates - previously, javascript had to be used for this. In addition to using the current date and time, you can also generate a date for either the last day of the previous month, first day of the month, or a number of days in the past of future.",[1640,28304,28305],{},"In addition, formatting options have been expanded for times, primarily to make them more compatible with file names.",[2202,28307],{"src":28308,"alt":28309},"\u002Freleases\u002Fday.jpg","updated date step in axiom.ai",[1561,28311,28313],{"id":28312},"upgrade-your-axiom-steps","Upgrade your axiom steps",[1566,28315],{},[1640,28317,28318],{},"We often release updated versions of steps in our releases. By default, your existing axioms keep you on the previous version of a step to maintain backwards compatibility, and in order to upgrade and take advantage of new features you were required to delete and re-add the step - rather a pain.",[1640,28320,28321],{},"Now we've provided a button which automatically upgrades your old step to the new format, and automatically remaps your existing data, which should make taking advantage of new features in your older automations much more convenient.",[1561,28323,28325],{"id":28324},"edit-token-selections","Edit token selections",[1566,28327],{},[1640,28329,28330],{},"Now you can click on a token in order to edit your selection, rather than having to remove and re-add the token. Handy!",[1561,28332,28334],{"id":28333},"delete-multiple-steps-at-once","Delete multiple steps at once",[1566,28336],{},[1640,28338,28339],{},"The move and copy selection steps have been updated to include a \"Delete all\" function, so now you can clear out multiple steps with a few clicks.",[2202,28341],{"src":28342,"alt":28343},"\u002Freleases\u002Fdelete-all.jpg","select and delete multiple steps in axiom.ai",[1561,28345,28347],{"id":28346},"new-templates","New templates",[1566,28349],{},[1640,28351,28352],{},"Several more templates have been added to get you started quicker with your automations:",[1569,28354,28355,28358,28361,28364,28367],{},[1572,28356,28357],{},"How to automate downloading files",[1572,28359,28360],{},"How to automate taking screenshots",[1572,28362,28363],{},"How to automate Apollo.io lists",[1572,28365,28366],{},"How to automate data from LinkedIn to ClickUp",[1572,28368,28369],{},"How to scrape Album data from Spotify",[1561,28371,28373],{"id":28372},"new-api-endpoint-to-retrieve-google-sheet-data","New API endpoint to retrieve google sheet data",[1566,28375],{},[1640,28377,28378],{},"We've added a new API endpoint that lets you see the current running status of a bot and automatically extracts any google sheet data that was written, returning it back to you. This should come in handy for those who want to integrate axiom into other automation systems and would prefer not to manually check google sheets.",[1561,28380,28382],{"id":28381},"and-many-other-improvements","... and many other improvements",[1566,28384],{},[1569,28386,28387,28390,28393,28396,28399,28402,28405,28408,28411,28414,28417,28420,28423,28426,28429,28432,28435,28438,28441],{},[1572,28388,28389],{},"Extra caching has been added to axiom which will significantly improve performance over a session",[1572,28391,28392],{},"Trial time is no longer counted towards your monthly total after you subscribe",[1572,28394,28395],{},"Subscriptions now roll over at the date you subscribed rather than the beginning of the month",[1572,28397,28398],{},"More error message improvements to the \"Press Key(s)\" and \"Webhook\" steps",[1572,28400,28401],{},"Scheduler now notifies you by email when your runtime has run out",[1572,28403,28404],{},"HTML scraper now can return outer HTML if inner HTML returns no results",[1572,28406,28407],{},"Interaction points are now more clear when in template setup mode",[1572,28409,28410],{},"New subscriber email updated with some tips and tricks",[1572,28412,28413],{},"These release notes now appear in the Chrome extension ;)",[1572,28415,28416],{},"You can now delete your account from within axiom",[1572,28418,28419],{},"It's now possible to retrieve your API key without regenerating it",[1572,28421,28422],{},"Multiple updates to the documentation",[1572,28424,28425],{},"In fields where commas are inappropriate, like in filenames, the data variable system will no longer place commas when appending multiple values",[1572,28427,28428],{},"The Test Data parameter in the \"Receive data from another app\" step now consistently generates a preview",[1572,28430,28431],{},"Improvements to batching and retrying code, increasing the reliability of axioms that handle large amounts of data",[1572,28433,28434],{},"Fixes and improvements to the Webhook step in handling JSON and returning useful error messages",[1572,28436,28437],{},"Captcha solver now works in iframes",[1572,28439,28440],{},"Stopped axiom cloud from hanging when it's sent axioms with hundreds of steps",[1572,28442,28443],{},"Fixed issues with custom token replacement inside sub-axioms",{"title":1614,"searchDepth":1615,"depth":1615,"links":28445},[28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456],{"id":28240,"depth":1618,"text":28241},{"id":28259,"depth":1618,"text":28260},{"id":28272,"depth":1618,"text":28273},{"id":28284,"depth":1618,"text":28285},{"id":28296,"depth":1618,"text":28297},{"id":28312,"depth":1618,"text":28313},{"id":28324,"depth":1618,"text":28325},{"id":28333,"depth":1618,"text":28334},{"id":28346,"depth":1618,"text":28347},{"id":28372,"depth":1618,"text":28373},{"id":28381,"depth":1618,"text":28382},"2023-02-22",{"version":28459,"video":28460},3.16,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FiHl-0OBRwm8?rel=0&amp",{"title":1259,"description":1614},"s4lABcN5d_Ge98QgbllW3GOrsMu4FeB-5UIEhHjJLjQ",{"id":28464,"title":1263,"body":28465,"date":28621,"description":1614,"extension":1621,"meta":28622,"navigation":1627,"order":1628,"path":1264,"seo":28625,"stem":1265,"__hash__":28626},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-17-0.md",{"type":1555,"value":28466,"toc":28612},[28467,28469,28473,28475,28478,28481,28484,28487,28491,28495,28497,28500,28503,28514,28518,28522,28524,28527,28530,28534,28538,28540,28543,28546,28550,28552,28555,28558,28562,28565,28569,28573,28575,28578,28581,28585,28587,28589],[1558,28468],{},[1561,28470,28472],{"id":28471},"iframe-support-is-back","Iframe support is back",[1566,28474],{},[1640,28476,28477],{},"Those with good memories may recall that this feature was added a while ago, but then had to be rolled back as it caused unintended problems. Now it has returned!",[1640,28479,28480],{},"This time, you will need to turn on iframe support from the settings section of your axiom.ai; each axiom.ai can have iframe support on or off as required. The default is for iframe support to be turned off.",[1640,28482,28483],{},"Once iframe support is turned on, axiom.ai will be able to interact with most elements within iframes, and scrape data in them too.",[1640,28485,28486],{},"As a nice bonus, automation performance on sites that make heavy use of iframes (usually for things like ads or tracking) will now be much better out of the box.",[2202,28488],{"src":28489,"alt":28490},"\u002Freleases\u002Fiframe.jpg","iframe support - axiom.ai",[1561,28492,28494],{"id":28493},"improved-notifications","Improved notifications",[1566,28496],{},[1640,28498,28499],{},"We have enanced the notification system to be more flexible and useful, particularly for those who are using axiom.ai as part of a larger automation stack.",[1640,28501,28502],{},"Now you can:",[1569,28504,28505,28508,28511],{},[1572,28506,28507],{},"Turn on notifications for success, failure or both.",[1572,28509,28510],{},"Specify an email address to send notifications to (previously, these always went to the email associated with your account).",[1572,28512,28513],{},"Send a webhook as a success or failure notification.",[2202,28515],{"src":28516,"alt":28517},"\u002Freleases\u002Fnotifications.jpg","better notifications - axiom.ai",[1561,28519,28521],{"id":28520},"custom-error-logging","Custom error logging",[1566,28523],{},[1640,28525,28526],{},"A new step has been added, \"Add error metadata\", which lets you augment error messages with custom data. This should be help bots that run on schedules or remotely to more accurately debug issues, or to simply give better information on what failed and why.",[1640,28528,28529],{},"This feature works well in conjunction with the notification enhancements.",[2202,28531],{"src":28532,"alt":28533},"\u002Freleases\u002Fmetadata.jpg","custom error message logging - axiom.ai",[1561,28535,28537],{"id":28536},"customised-line-breaks-in-the-enter-text-step","Customised line breaks in the Enter Text step",[1566,28539],{},[1640,28541,28542],{},"Many modern messaging apps, such as Instagram, use the \"Enter\" key as a way of sending a message rather than entering a line break. This means it is quite awkward to construct a single message with many paragraphs using axiom.ai.",[1640,28544,28545],{},"Now we've added a custom line break feature to help with this. When turned on, it will let you record a custom keypress value to use instead of the enter key when a new line is encountered in your input.",[1561,28547,28549],{"id":28548},"better-tab-handling","Better tab handling",[1566,28551],{},[1640,28553,28554],{},"Two features related to handling tabs have been introduced in 3.17.",[1640,28556,28557],{},"Firstly, the goto step now has a checkbox that allows you to specify that the page should be opened in a new tab. The change means axiom.ai will automatically switch the context to the new tab when you do this.",[2202,28559],{"src":28560,"alt":28561},"\u002Freleases\u002Fnewtab.jpg","open page in new window - axiom.ai",[1640,28563,28564],{},"Secondly, a new step has been added that allows tabs to be closed. Context in that case switches to the last open tab.",[2202,28566],{"src":28567,"alt":28568},"\u002Freleases\u002Fclose-tab.jpg","close tab - axiom.ai",[1561,28570,28572],{"id":28571},"download-page-html-step","Download page HTML step",[1566,28574],{},[1640,28576,28577],{},"A new step has been added which allows you to download the entire HTML of a page and save it locally.",[1640,28579,28580],{},"The page is downloaded after rendering is complete, which means that all javascript has run.",[2202,28582],{"src":28583,"alt":28584},"\u002Freleases\u002Fhtm-page.jpg","automate donwloading html pages with axiom.ai",[1561,28586,28061],{"id":28060},[1566,28588],{},[1569,28590,28591,28594,28597,28600,28603,28606,28609],{},[1572,28592,28593],{},"Enter text steps now do not click into the box if a passed token value is empty.",[1572,28595,28596],{},"UI tweaked on conditional logic steps to clarify what the default state does.",[1572,28598,28599],{},"Fixes to cases where automations would get stuck \"In Progress\" when stopped.",[1572,28601,28602],{},"After a certain number of steps have passed, axiom.ai will now restart chrome, to try and stop websites that have memory leaks from breaking long automations.",[1572,28604,28605],{},"Custom selectors containing double quotation marks no longer fail.",[1572,28607,28608],{},"New video guides added for steps.",[1572,28610,28611],{},"New retry logic added for external requests to reduce the chance that temporary network problems or outages will stop your automation from completing.",{"title":1614,"searchDepth":1615,"depth":1615,"links":28613},[28614,28615,28616,28617,28618,28619,28620],{"id":28471,"depth":1618,"text":28472},{"id":28493,"depth":1618,"text":28494},{"id":28520,"depth":1618,"text":28521},{"id":28536,"depth":1618,"text":28537},{"id":28548,"depth":1618,"text":28549},{"id":28571,"depth":1618,"text":28572},{"id":28060,"depth":1618,"text":28061},"2023-03-15",{"version":28623,"video":28624},3.17,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FXISpGffrmTU?rel=0&amp",{"title":1263,"description":1614},"gd5vDJTNqbi_AlYStocAfMkYCyEjQnloClHemOm5RCw",{"id":28628,"title":1267,"body":28629,"date":28773,"description":1614,"extension":1621,"meta":28774,"navigation":1627,"order":1628,"path":1268,"seo":28777,"stem":1269,"__hash__":28778},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-18-0.md",{"type":1555,"value":28630,"toc":28765},[28631,28633,28636,28638,28641,28644,28648,28651,28659,28663,28665,28669,28672,28675,28679,28681,28684,28688,28691,28695,28697,28700,28703,28706,28710,28712,28715,28719,28721,28723],[1558,28632],{},[1561,28634,7546],{"id":28635},"extract-data-with-chatgpt",[1566,28637],{},[1640,28639,28640],{},"A new step has been added that allows you to use ChatGPT to get structured data from raw text. Think extracting prices, email addresses, phone, numbers, names etc. from any kind of unstructured data - a blog post, product page, document etc.",[1640,28642,28643],{},"This is something that is very hard to do with traditional browser automation technology. We're excited to have a path to overcoming this limitation!",[2202,28645],{"src":28646,"alt":28647},"\u002Freleases\u002Fchatgpt-axiom-step.jpg","axiom.ai and chatGPT integration for scraping data",[1640,28649,28650],{},"All you need is a ChatGPT API key, which can be grabbed for free from OpenAI. This is a beta feature, so it currently has some limitations (for example, it will not work when using the cloud scheduler, only the local scheduler). If you have any feedback, please let us know!",[1640,28652,28653,28654,28658],{},"This is the first step in a wider roadmap for ChatGPT integration in Axiom; a potential game-changer for browser automation. For more info, check out this blog post:  ",[1942,28655,28657],{"href":28656},"\u002Fblog\u002Fchatgpt-bot-ai-automation","AI Automation - building bots with ChatGPT",". More to come in upcoming releases, stay tuned...",[1561,28660,28662],{"id":28661},"new-schedule-page","New Schedule page",[1566,28664],{},[2202,28666],{"src":28667,"alt":28668},"\u002Freleases\u002Fschedule.jpg","new schedule bot page in axiom.ai",[1640,28670,28671],{},"For subscribers at the pro tier or above who can schedule axiom runs, there's now a new Schedules page. Here you can see a timeline of your upcoming schedules and when they last ran, with a link to edit the axiom to which the schedule is attached.",[1640,28673,28674],{},"In addition, if you are running local schedules, you can now turn these off on the current computer. This is very useful when you are signed into Axiom on multiple PCs and have local schedules; switching local schedules off on all except 1 PC will allow only that PC to run your axioms, preventing duplication.",[1561,28676,28678],{"id":28677},"report-filtering","Report filtering",[1566,28680],{},[1640,28682,28683],{},"The \"Reporting\" section has been overhauled to include new filters. Now you can search for axiom runs by name, by status, and also select a data to filter by.",[2202,28685],{"src":28686,"alt":28687},"\u002Freleases\u002Ffilter.jpg","new report filtering in axiom.ai",[1640,28689,28690],{},"The main goal here is to help those of you who do a lot of remote triggering or scheduling find and debug failed runs. This is part of our roadmap on making debugging easier and more convient - more to come.",[1561,28692,28694],{"id":28693},"continue-if-empty-on-google-sheets","\"Continue if empty\" on Google Sheets",[1566,28696],{},[1640,28698,28699],{},"With automations that read from Google Sheets, we often need to check if the sheet is empty before continuing.",[1640,28701,28702],{},"As this is a common operation, a checkbox has been added to the \"Read Google Sheet\" step. If the sheet contains no data and this box is ticked, the automation will end immediately.",[2202,28704],{"src":28705,"alt":28687},"\u002Freleases\u002Fcontinue-sheet.jpg",[1561,28707,28709],{"id":28708},"go-back-when-automating","Go back when automating",[1566,28711],{},[1640,28713,28714],{},"Sometimes it's useful to go back to the previous page during an automation run. This was handled with a javascript snippet before, but we've now added a step to make this more convenient.",[2202,28716],{"src":28717,"alt":28718},"\u002Freleases\u002Fgo-back.jpg","new go back step in axiom.ai",[1561,28720,28061],{"id":28060},[1566,28722],{},[1569,28724,28725,28728,28731,28734,28737,28740,28743,28746,28749,28752,28755,28758],{},[1572,28726,28727],{},"Updated the icon design across the extension",[1572,28729,28730],{},"Fixed a rare hanging issue when a data variable contained double quotation marks",[1572,28732,28733],{},"Better file name validation",[1572,28735,28736],{},"You can no longer save an automation with no name",[1572,28738,28739],{},"Import template link is now directly accessible from the start screen on the builder",[1572,28741,28742],{},"People who used a different email to subscribe than they did to sign up can now see both emails on the account page. It is also auto-filled when accessing the customer portal.",[1572,28744,28745],{},"Only one run viewer can now be open at a time when running cloud automations; this should fix a number of issues with run viewer connections being interrupted",[1572,28747,28748],{},"The \"multiple click\" step now has a \"Maximum clicks\" setting",[1572,28750,28751],{},"Optional click will now ignore the error thrown when the selector happens to find an unclickable element",[1572,28753,28754],{},"Fix for hanging issue on empty code steps",[1572,28756,28757],{},"Fix to result grouping in scraping that would sometimes cause results to be associated with irrelevant data",[1572,28759,28760,28761],{},"New Helium10 template ",[1942,28762,28764],{"href":28763},"\u002Fguides\u002Fhelium10","See here",{"title":1614,"searchDepth":1615,"depth":1615,"links":28766},[28767,28768,28769,28770,28771,28772],{"id":28635,"depth":1618,"text":7546},{"id":28661,"depth":1618,"text":28662},{"id":28677,"depth":1618,"text":28678},{"id":28693,"depth":1618,"text":28694},{"id":28708,"depth":1618,"text":28709},{"id":28060,"depth":1618,"text":28061},"2023-04-25",{"version":28775,"video":28776},3.18,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FplpKWigqhxs?rel=0&amp",{"title":1267,"description":1614},"6Z-9LE-VZdvcaAjKZJHC93tEIvkb1P1DiCr07zJS4tk",{"id":28780,"title":1271,"body":28781,"date":28940,"description":1614,"extension":1621,"meta":28941,"navigation":1627,"order":1628,"path":1272,"seo":28944,"stem":1273,"__hash__":28945},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-19-0.md",{"type":1555,"value":28782,"toc":28931},[28783,28785,28789,28791,28794,28797,28801,28804,28808,28810,28813,28816,28820,28823,28827,28829,28832,28835,28838,28842,28846,28848,28851,28854,28858,28862,28864,28867,28871,28875,28877,28880,28882,28884],[1558,28784],{},[1561,28786,28788],{"id":28787},"debugger-improvements","Debugger improvements",[1566,28790],{},[1640,28792,28793],{},"We've added a new sidebar to allow you to view and filter errors more easily.",[1640,28795,28796],{},"You can also now view multiple warnings or errors simultaneously, and disable or re-enable \"continue on error\" without having to go via the settings page.",[2202,28798],{"src":28799,"alt":28800},"\u002Freleases\u002Faxiom-debug.jpg","axiom.ai new debbuger view and filter in out chrome extension",[1640,28802,28803],{},"We plan to expand this feature in the coming months with breakpoints, inline data viewing and more - stay tuned!",[1561,28805,28807],{"id":28806},"chatgpt-text-generation","ChatGPT text generation",[1566,28809],{},[1640,28811,28812],{},"A new step has been added which allows you to generate text using ChatGPT.",[1640,28814,28815],{},"This uses the ChatGPT API so will be much faster than the equivalent step of visiting the ChatGPT website and entering the text manually. Give it a try!",[2202,28817],{"src":28818,"alt":28819},"\u002Freleases\u002Fchatgpt-prompt-to-text.jpg","axiom.ai submit a prompt and get back text in ChatGPT",[1640,28821,28822],{},"This step requires an OpenAI API key to use, and will not currently run on a schedule in cloud.",[1561,28824,28826],{"id":28825},"minimum-interval-lowered-to-one-minute-for-local-scheduling","Minimum interval lowered to one minute for local scheduling",[1566,28828],{},[1640,28830,28831],{},"Quite a few people have asked us in the past how they can trigger the desktop application from Zapier. While this isn't directly possible, it is possible to have Zapier write to a google sheet, and then process that sheet on a schedule with Axiom.",[1640,28833,28834],{},"However, the minimum frequencies for scheduling (1 day for Pro, down to 15 mins for Ultimate) are really too slow for this use case. So now we've removed those limits - everyone with access to the scheduler (Pro or above) can now trigger local schedules every minute. Remember to keep an eye on your runtime if you are doing this!",[1640,28836,28837],{},"The previous limits still apply to cloud schedule runs.",[2202,28839],{"src":28840,"alt":28841},"\u002Freleases\u002Fschedule-every-minute.jpg","axiom.ai schedule evey minute on th desktop",[1561,28843,28845],{"id":28844},"clear-a-range-from-a-google-sheet","Clear a range from a Google Sheet",[1566,28847],{},[1640,28849,28850],{},"As a companion to the \"Delete rows from a Google Sheet\" step, you can now clear rows from a Google Sheet too.",[1640,28852,28853],{},"Instead of deleting the row, this simply wipes an area of the sheet. This is good for cases where you want to keep formatting or formulas intact!",[2202,28855],{"src":28856,"alt":28857},"\u002Freleases\u002Fclear-data.jpg","axiom.ai clear data from Google sheet",[1561,28859,28861],{"id":28860},"save-a-screenshot-to-google-drive","Save a screenshot to Google Drive",[1566,28863],{},[1640,28865,28866],{},"Along with saving a screenshot to your desktop, you can now save a screenshot to Google Drive too.",[2202,28868],{"src":28869,"alt":28870},"\u002Freleases\u002Fscreen-shot-drive.jpg","axiom.ai save screen shot to google drive",[1561,28872,28874],{"id":28873},"new-button-to-reboot-vps","New button to reboot VPS",[1566,28876],{},[1640,28878,28879],{},"For those on the ultimate tier who have access to a VPS, we have now provided a button to let you reboot your own server in case you run into issues.",[1561,28881,28061],{"id":28060},[1566,28883],{},[1569,28885,28886,28889,28892,28895,28898,28901,28904,28907,28910,28913,28916,28919,28922,28925],{},[1572,28887,28888],{},"You can now pass a data variable into \"Max Cycles\" when jumping",[1572,28890,28891],{},"Custom file name field now available on the \"Export CSV\" step",[1572,28893,28894],{},"Download to Google Drive now returns a token for filename",[1572,28896,28897],{},"Desktop app \"busy\" check no longer triggers if the desktop app is not running",[1572,28899,28900],{},"Fix to incorrect display on the upcoming schedules page if a start date for a schedule wasn't set",[1572,28902,28903],{},"Big reduction on email send speed to nerf spam use cases",[1572,28905,28906],{},"Jump steps will now reset the result count once they've finished, which will let sub-loops work much better",[1572,28908,28909],{},"Small fixes to data output consistency across the board",[1572,28911,28912],{},"When supplying multiple columns for words to filter on, now all columns are used instead of just the first",[1572,28914,28915],{},"Fixed an issue with duplicated file extensions when \"Force file download\" was checked",[1572,28917,28918],{},"When the Iframe box is ticked, iframes are now processed in reverse order to reduce the chance of selector collisions",[1572,28920,28921],{},"Fixed an issue where the trial time would appear to still be subtracted from a user's runtime on the first day after subscription",[1572,28923,28924],{},"You can now use the node filesystem library (fs) in javascript steps (only when running in app)",[1572,28926,28927,28928],{},"Improved template loading from ",[1942,28929,28930],{"href":1944},"\u002Fguides\u002F",{"title":1614,"searchDepth":1615,"depth":1615,"links":28932},[28933,28934,28935,28936,28937,28938,28939],{"id":28787,"depth":1618,"text":28788},{"id":28806,"depth":1618,"text":28807},{"id":28825,"depth":1618,"text":28826},{"id":28844,"depth":1618,"text":28845},{"id":28860,"depth":1618,"text":28861},{"id":28873,"depth":1618,"text":28874},{"id":28060,"depth":1618,"text":28061},"2023-05-17",{"version":28942,"video":28943},3.19,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fh9hQb4yLUfQ?rel=0&amp",{"title":1271,"description":1614},"9t6N-bkri-ugAb0gVBV68vK7-p85ToxLDAPREEQqLTI",{"id":28947,"title":1275,"body":28948,"date":29078,"description":1614,"extension":1621,"meta":29079,"navigation":1627,"order":1628,"path":1276,"seo":29082,"stem":1277,"__hash__":29083},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-20-0.md",{"type":1555,"value":28949,"toc":29068},[28950,28954,28956,28963,28967,28969,28972,28976,28978,28981,28985,28989,28991,28997,29001,29003,29012,29016,29020,29022,29025,29028,29032,29036,29038,29041,29043,29045],[1561,28951,28953],{"id":28952},"introducing-axiomai-affiliates","Introducing axiom.ai affiliates",[1566,28955],{},[1640,28957,28958,28959,28962],{},"We are pleased to announce our new affiliate system! Now you can sign up as an axiom affiliate at ",[1942,28960,28961],{"href":46},"axiom.ai\u002Faffiliates"," and get a 15% referral fee for anyone you get to sign up to Axiom. Make templates, share them with your friends, and make some money while doing so!",[1561,28964,28966],{"id":28965},"queueing-system-added","Queueing system added",[1566,28968],{},[1640,28970,28971],{},"For those of you who use Axiom as part of wider workflows with Zapier, Make or via API, we've now introduced a queueing system to reduce errors. Whenever the Axiom server is busy or you run over your concurrency limit, the system will now automatically queue up and retry the runs that could not start.",[1561,28973,28975],{"id":28974},"run-axiom-in-incognito-mode","Run Axiom in Incognito Mode",[1566,28977],{},[1640,28979,28980],{},"You can now run Axiom in incognito mode. By default, incognito mode does not copy any session data, so it's useful for testing automations that are intended to run as scheduled or via API on our cloud servers.",[2202,28982],{"src":28983,"alt":28984},"\u002Freleases\u002Fincog-mode-axiom.jpg","axiom.ai Run Axiom in Incognito Mode",[1561,28986,28988],{"id":28987},"use-chatgpt-directly-from-within-the-write-javascript-step","Use ChatGPT directly from within the \"Write Javascript\" step",[1566,28990],{},[1640,28992,28993,28994],{},"You can now utilise our ChatGPT helper function to quickly access OpenAI's ChatGPT API and automatically ouput the response in an Axiom-compatible data format. Find out more ",[1942,28995,21280],{"href":28996},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-javascript#use-chatgpt",[1561,28998,29000],{"id":28999},"docs-integrated-with-phind-ai-search","Docs integrated with phind AI search",[1566,29002],{},[1640,29004,29005,29006,29011],{},"Thanks to our friends at ",[1942,29007,29010],{"href":29008,"rel":29009},"https:\u002F\u002Fwww.phind.com",[3850],"phind",", we have integrated a search using ChatGPT into our documentation that will provide text-based answers to your questions. The option is always available at the bottom of any search query you make on our docs site.",[2202,29013],{"src":29014,"alt":29015},"\u002Freleases\u002Fphind.jpg","Docs integrated with phind AI searc",[1561,29017,29019],{"id":29018},"overwrite-files-instead-of-renaming","Overwrite files instead of renaming",[1566,29021],{},[1640,29023,29024],{},"When downloading files, the default behaviour of axiom is to rename files that are duplicated. In some cases this is great, but in others it eats up your disk space and makes determining which file you want to use more difficult.",[1640,29026,29027],{},"To solve those problems, we've introduced a new option to overwrite files instead of renaming them. This will reduce the number of files on your system and make it very easy to use that file in automations, as the filename will remain static.",[2202,29029],{"src":29030,"alt":29031},"\u002Freleases\u002Foverwrite-files.jpg","axiom.ai Overwrite files instead of renaming",[1561,29033,29035],{"id":29034},"coming-soon-axiom-40","Coming soon - Axiom 4.0",[1566,29037],{},[1640,29039,29040],{},"We've been hard at work on our next generation of the builder interface, which overhauls the UI and brings new abilities for nesting and combining steps that should streamline the logic of more complex axioms. More info coming soon....",[1561,29042,28061],{"id":28060},[1566,29044],{},[1569,29046,29047,29050,29053,29056,29059,29062,29065],{},[1572,29048,29049],{},"Increased maximum size for uploading files to Google Drive (now 250MB)",[1572,29051,29052],{},"Fixing issues where the click confirmation would show even though it didn't work",[1572,29054,29055],{},"Fixing an issue caused by undoing all the way back to 0 steps",[1572,29057,29058],{},"Stopping an axiom should now always work, even if the connection to the server has been lost",[1572,29060,29061],{},"Update to the Google Sheet writing logic to prevent rare errors when accessing the Sheets API",[1572,29063,29064],{},"Line breaks now work in emails",[1572,29066,29067],{},"Auto-update will no longer restart the axiom desktop app if an automation is running, and will wait until it can proceed safely",{"title":1614,"searchDepth":1615,"depth":1615,"links":29069},[29070,29071,29072,29073,29074,29075,29076,29077],{"id":28952,"depth":1618,"text":28953},{"id":28965,"depth":1618,"text":28966},{"id":28974,"depth":1618,"text":28975},{"id":28987,"depth":1618,"text":28988},{"id":28999,"depth":1618,"text":29000},{"id":29018,"depth":1618,"text":29019},{"id":29034,"depth":1618,"text":29035},{"id":28060,"depth":1618,"text":28061},"2023-06-21",{"version":29080,"featuredimg":29081},"3.20","\u002Freleases\u002Faxiom-v3-20.png",{"title":1275,"description":1614},"4NzPr5TCWQ6_tgwdXK1dxKg063LUiQWLlZsBEqliI00",{"id":29085,"title":1279,"body":29086,"date":29230,"description":1614,"extension":1621,"meta":29231,"navigation":1627,"order":1628,"path":1280,"seo":29235,"stem":1281,"__hash__":29236},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-21-0.md",{"type":1555,"value":29087,"toc":29221},[29088,29090,29092,29094,29097,29100,29103,29109,29113,29115,29119,29122,29126,29128,29132,29135,29138,29141,29145,29147,29150,29153,29157,29159,29163,29166,29170,29172,29176,29179,29181,29183],[1558,29089],{},[1561,29091,29035],{"id":29034},[1566,29093],{},[1640,29095,29096],{},"We've been hard at work on our next generation of the builder interface, which overhauls the UI and brings new abilities for nesting and combining steps that should streamline the logic of more complex axioms. We want to achieve this without increasing the complexity of the interface for new users.",[1640,29098,29099],{},"This feature has been taking up most of our product development work time, but it's almost done! See below for a sneak peek...",[1640,29101,29102],{},"We'd love to hear your feedback, so please get in touch if you have any queries.",[1640,29104,29105,29106,29108],{},"We're also looking for early access testers to get an advance copy of this feature and let us know what we should change. Please email us at ",[1942,29107,5588],{"href":5587}," if you'd like to be part of this group!",[1561,29110,29112],{"id":29111},"open-linked-axioms-from-run-another-axiom-step","Open linked axioms from \"Run another axiom\" step",[1566,29114],{},[2202,29116],{"src":29117,"alt":29118},"\u002Freleases\u002Frun-another.jpg","Run another Axiom step link to Axiom added",[1640,29120,29121],{},"Now when you use the \"Run another axiom\" step, a link is available that will let you go directly to that axiom and edit it, rather than having to go back to the main axiom listing and find it from there.",[1561,29123,29125],{"id":29124},"disable-page-change-monitoring","Disable page change monitoring",[1566,29127],{},[2202,29129],{"src":29130,"alt":29131},"\u002Freleases\u002Fmonitor.jpg","Disable page change monitoring in Axiom settings",[1640,29133,29134],{},"On some (rare) sites, animated elements can cause Axiom to hang indefinitely.",[1640,29136,29137],{},"Previously we have fixed this as issues were reported, but now there's a new option available in the \"Settings\" page that will disable all page monitoring. This skips the code that waits for a page to stop changing, which will fix indefinite hanging issues and may work to speed up some slow sites.",[1640,29139,29140],{},"Please note that disabling this will likely require more manual waits to be added!",[1561,29142,29144],{"id":29143},"new-pricing-options-in-the-ultimate-tier","New pricing options in the Ultimate tier",[1566,29146],{},[1640,29148,29149],{},"Two new tiers have been added above Ultimate to capture use cases which need a lot of runtime each month. Previously, one would have to sign up to multiple accounts or request a custom package, which was inconvenient.",[1640,29151,29152],{},"You can now select from the Ultimate 500 and Ultimate 750 tier, which offer 500 and 750 hours of runtime respectively.",[1561,29154,29156],{"id":29155},"monthly-option-in-scheduler","Monthly option in Scheduler",[1566,29158],{},[2202,29160],{"src":29161,"alt":29162},"\u002Freleases\u002Fsettings-schedule.jpg","monthly schedule option in Axiom",[1640,29164,29165],{},"You can now set schedules to trigger once a month.",[1561,29167,29169],{"id":29168},"new-step-count-rows","New step: \"Count rows\"",[1566,29171],{},[2202,29173],{"src":29174,"alt":29175},"\u002Freleases\u002Fcount-rows.jpg","count rows in Axiom",[1640,29177,29178],{},"As its name suggests, this new step will return the number of rows in a piece of data.",[1561,29180,28061],{"id":28060},[1566,29182],{},[1569,29184,29185,29188,29191,29194,29197,29200,29203,29206,29209,29212,29215,29218],{},[1572,29186,29187],{},"Fixed a permission issue that affected Google Sheets within Team Workspaces",[1572,29189,29190],{},"Updated branding on desktop app splash screen to reflect current visual design language",[1572,29192,29193],{},"Step finder now updates if the desktop app is started while it's open, removing the \"download desktop app\" errors",[1572,29195,29196],{},"Prevented registration from anonymous email providers to protect against spammers abusing the free tier",[1572,29198,29199],{},"A payment reminder is now shown in the extension for lapsed payments",[1572,29201,29202],{},"Fixed minor bug in conditional widget",[1572,29204,29205],{},"Fixed an issue where reading out of range of a google sheet was treated differently to reading an empty cell",[1572,29207,29208],{},"New helper article on running multiple bots, linked for users with concurrency",[1572,29210,29211],{},"Fixed display issues in some error messages caused by attempting to render the HTML of the element we tried to click",[1572,29213,29214],{},"Clearer error message when files not found",[1572,29216,29217],{},"Changes to runtime calculation to improve performance and fix some exploits that could extra runtime",[1572,29219,29220],{},"The auto-convert option in Google Drive if a file is uploaded by axiom",{"title":1614,"searchDepth":1615,"depth":1615,"links":29222},[29223,29224,29225,29226,29227,29228,29229],{"id":29034,"depth":1618,"text":29035},{"id":29111,"depth":1618,"text":29112},{"id":29124,"depth":1618,"text":29125},{"id":29143,"depth":1618,"text":29144},{"id":29155,"depth":1618,"text":29156},{"id":29168,"depth":1618,"text":29169},{"id":28060,"depth":1618,"text":28061},"2023-08-03",{"version":29232,"featuredimg":29233,"video":29234},"3.21","\u002Freleases\u002Faxiom-3-2-1.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FxU-Bn2NPl48?rel=0&amp",{"title":1279,"description":1614},"R-AnlI-qppagqROGtVTcDdumN0Q-3DXognLnS_u3qxI",{"id":29238,"title":1283,"body":29239,"date":29366,"description":1614,"extension":1621,"meta":29367,"navigation":1627,"order":1628,"path":1284,"seo":29370,"stem":1285,"__hash__":29371},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-22-0.md",{"type":1555,"value":29240,"toc":29358},[29241,29245,29247,29249,29252,29258,29262,29264,29267,29271,29275,29277,29280,29283,29287,29291,29293,29296,29300,29304,29306,29309,29312,29316,29318,29320],[1561,29242,29244],{"id":29243},"axiom-40-early-access-is-ready","Axiom 4.0 - early access is ready",[1566,29246],{},[1640,29248,29096],{},[1640,29250,29251],{},"This feature has been taking up most of our product development work time, but will finally be here in the next axiom release.",[1640,29253,29254,29255,29257],{},"We're also looking for early access testers to get an advance copy of this feature and let us know what we should change. We'll be in touch with those of you who have already expressed an interest - thank you! Please email us at ",[1942,29256,5588],{"href":5587}," if you'd like to be part of this group.",[1561,29259,29261],{"id":29260},"image-type-added-to-selector-tool","Image type added to selector tool",[1566,29263],{},[1640,29265,29266],{},"A new \"Image\" type has been added to the selector tool. When scraping, this will return the URL for the selected image, so no more scraping the HTML and using splits to get at them.",[2202,29268],{"src":29269,"alt":29270},"\u002Freleases\u002Fimage-selector.jpg","Axiom selector tool new image selector option",[1561,29272,29274],{"id":29273},"google-drive-steps-now-usable-on-desktop","Google Drive steps now usable on desktop",[1566,29276],{},[1640,29278,29279],{},"Previously, the upload from Google Drive and download to Google Drive features were available only for cloud runs.",[1640,29281,29282],{},"Now, they are available when running on the desktop application too.",[2202,29284],{"src":29285,"alt":29286},"\u002Freleases\u002Fgoogle-drive-local.png","Axiom upload files from desktop feature with Google Drive",[1561,29288,29290],{"id":29289},"columns-in-the-multi-select-tool-can-now-be-re-ordered","Columns in the multi-select tool can now be re-ordered",[1566,29292],{},[1640,29294,29295],{},"If you want to change the order of columns in a scrape, you can now use the provided arrows to move the column rather than having to delete and re-select.",[2202,29297],{"src":29298,"alt":29299},"\u002Freleases\u002Fmove-column.jpg","Multi selector tool new feature for re-ordering columns",[1561,29301,29303],{"id":29302},"new-notification-option-added-for-warnings","New notification option added for warnings",[1566,29305],{},[1640,29307,29308],{},"In previous verisons of axiom, notification options allowed you to either send notifcations on success or failure (or on both).",[1640,29310,29311],{},"We've now added a third option that allows notifications to only be sent on warnings, which should be particularly useful when \"Continue on error\" is used but you still want to know if an error was encountered.",[2202,29313],{"src":29314,"alt":29315},"\u002Freleases\u002Ferror.png","new error option in notifications",[1561,29317,28061],{"id":28060},[1566,29319],{},[1569,29321,29322,29325,29328,29331,29334,29337,29340,29343,29346,29349,29352,29355],{},[1572,29323,29324],{},"Improved handling of errors when using the Chat GPT features of axiom",[1572,29326,29327],{},"You can no longer run a search on the dashboard before axioms have loaded and get incorrect results",[1572,29329,29330],{},"Retry logic improved when connection issues occur, which should eliminate almost all axiom run failures with 502 or 504 error codes",[1572,29332,29333],{},"New 30 min option for scheduling",[1572,29335,29336],{},"You can now pass variables to specify the first and last rows in Google Sheet steps",[1572,29338,29339],{},"Search added to \"Run another axiom\" step interface",[1572,29341,29342],{},"Fixed a rare issue where the scraper would skip to the next page before it had fully scraped the current one",[1572,29344,29345],{},"Added better error handling when all browser tabs are closed during an automation",[1572,29347,29348],{},"Ctrl + S shortcut added for saving an axiom",[1572,29350,29351],{},"Axioms can now be deleted from the builder, instead of just from the dashboard",[1572,29353,29354],{},"Improved recursion detection in \"Run another axiom\" to reduce false positive errors",[1572,29356,29357],{},"Icon and tier added to dashboard when subscribed",{"title":1614,"searchDepth":1615,"depth":1615,"links":29359},[29360,29361,29362,29363,29364,29365],{"id":29243,"depth":1618,"text":29244},{"id":29260,"depth":1618,"text":29261},{"id":29273,"depth":1618,"text":29274},{"id":29289,"depth":1618,"text":29290},{"id":29302,"depth":1618,"text":29303},{"id":28060,"depth":1618,"text":28061},"2023-10-30",{"version":29368,"featuredimg":29369,"releasevideo":1628},"3.22","\u002Faxiom-release-v3.22.png",{"title":1283,"description":1614},"oNuYhyZqDV2nXb2q9LYANwPmvag0zYd7a8P8kAqVuxo",{"id":29373,"title":1287,"body":29374,"date":29428,"description":1614,"extension":1621,"meta":29429,"navigation":1627,"order":1628,"path":1288,"seo":29433,"stem":1289,"__hash__":29434},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-5-0.md",{"type":1555,"value":29375,"toc":29424},[29376,29379,29381,29383,29409,29411,29413],[1558,29377],{"video":29378},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FlVReiiQwnL0?rel=0&",[1561,29380,1564],{"id":1563},[1566,29382],{},[1569,29384,29385,29388,29391,29394,29397,29400,29403,29406],{},[1572,29386,29387],{},"Categories added to the step list in builder to aid navigation.",[1572,29389,29390],{},"Inline previews now update in real time rather than on opening a step.",[1572,29392,29393],{},"Now when a field is toggled off it uses the default value instead of the entered value.",[1572,29395,29396],{},"New design for install sucess page, now with an introduction video.",[1572,29398,29399],{},"Split by character filter now allows you to enter a line break.",[1572,29401,29402],{},"Fixes to the synchronisation of selected columns with the page highlights in the selector tool.",[1572,29404,29405],{},"New onboarding system to allow us to provide contextual “getting started” help to new signups.",[1572,29407,29408],{},"New design for login page.",[1561,29410,1590],{"id":1589},[1566,29412],{},[1569,29414,29415,29418,29421],{},[1572,29416,29417],{},"You can now back out of adding a recipe or template without going all the way back to the dashboard.",[1572,29419,29420],{},"Minor improvements to showing the run times in the cloud run viewer.",[1572,29422,29423],{},"Improved several error messages during run.",{"title":1614,"searchDepth":1615,"depth":1615,"links":29425},[29426,29427],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-01-03",{"version":29430,"releasevideo":29431,"featuredimg":29432},3.5,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FlVReiiQwnL0","\u002Fversion3-5-new.jpg",{"title":1287,"description":1614},"O2PdFgXsPq4XOC_VUEFm9tcxYtFGcemoAstZeyo5COc",{"id":29436,"title":1291,"body":29437,"date":29485,"description":1614,"extension":1621,"meta":29486,"navigation":1627,"order":1628,"path":1292,"seo":29490,"stem":1293,"__hash__":29491},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-6-0.md",{"type":1555,"value":29438,"toc":29481},[29439,29442,29444,29446,29466,29468,29470],[1558,29440],{"video":29441},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FyLtvtx1YKVg?rel=0&",[1561,29443,1564],{"id":1563},[1566,29445],{},[1569,29447,29448,29451,29454,29457,29460,29463],{},[1572,29449,29450],{},"New interface to select Google Sheets directly from your drive account - you no longer have to copy and paste the URLs (unless you want to of course - the old way is still supported).",[1572,29452,29453],{},"New interface to explicitly present the concept of looping, and to allow it to be toggled on and off. Previously the implementation of loops happened automatically, with a hidden mechanism that could be confusing if you didn’t know the trick.",[1572,29455,29456],{},"Max Wait parameter removed from scrapers; it was a trap for new users.",[1572,29458,29459],{},"Improved error messages for some Google Sheets problems.",[1572,29461,29462],{},"We now warn you if no output step has been added (and therefore the automation won’t do anything). You are prompted to either add an output step or to run anyway, in which case the automation engine will automatically display any scraped results.",[1572,29464,29465],{},"Link to documentation added to the Custom Selector interface.",[1561,29467,1590],{"id":1589},[1566,29469],{},[1569,29471,29472,29475,29478],{},[1572,29473,29474],{},"More contextual information added to tokens to help aid in understanding.",[1572,29476,29477],{},"Runs that are terminated for running over their maximum allowed runtime send a more helpful error message.",[1572,29479,29480],{},"Improvements to how tokens created within loops work to prevent common errors.",{"title":1614,"searchDepth":1615,"depth":1615,"links":29482},[29483,29484],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-02-03",{"version":29487,"releasevideo":29488,"featuredimg":29489},3.6,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FyLtvtx1YKVg","\u002Fversion3-6-new.jpg",{"title":1291,"description":1614},"HTvlL0J4PmFda3DaY_g1uCUl9kQ36THc9wZebTbQ6Ec",{"id":1553,"title":1295,"body":29493,"date":1620,"description":1614,"extension":1621,"meta":29535,"navigation":1627,"order":1628,"path":1296,"seo":29536,"stem":1297,"__hash__":1630},{"type":1555,"value":29494,"toc":29531},[29495,29497,29499,29501,29513,29515,29517],[1558,29496],{},[1561,29498,1564],{"id":1563},[1566,29500],{},[1569,29502,29503,29505,29507,29509,29511],{},[1572,29504,1574],{},[1572,29506,1577],{},[1572,29508,1580],{},[1572,29510,1583],{},[1572,29512,1586],{},[1561,29514,1590],{"id":1589},[1566,29516],{},[1569,29518,29519,29521,29523,29525,29527,29529],{},[1572,29520,1597],{},[1572,29522,1600],{},[1572,29524,1603],{},[1572,29526,1606],{},[1572,29528,1609],{},[1572,29530,1612],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":29532},[29533,29534],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},{"version":1623,"releasevideo":1624,"featuredimg":1625,"video":1626},{"title":1295,"description":1614},{"id":29538,"title":1299,"body":29539,"date":29598,"description":1614,"extension":1621,"meta":29599,"navigation":1627,"order":1628,"path":1300,"seo":29604,"stem":1301,"__hash__":29605},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-8-0.md",{"type":1555,"value":29540,"toc":29595},[29541,29543,29546,29548,29568,29570,29572],[1558,29542],{},[29544,29545,1564],"h1",{"id":1563},[1566,29547],{},[1569,29549,29550,29553,29556,29559,29562,29565],{},[1572,29551,29552],{},"Improvements to scraper tool which should lead to fewer missing data errors, as well as better speed in many cases.",[1572,29554,29555],{},"New axiom.ai academy site, replacing old docs.",[1572,29557,29558],{},"Improvements to error messages and validation across the board.",[1572,29560,29561],{},"Added a “report error” button into the scraper.",[1572,29563,29564],{},"“Space” is now supported when providing key presses via data.",[1572,29566,29567],{},"Some puppeteer functions are now usable in javascript steps.",[1561,29569,1590],{"id":1589},[1566,29571],{},[1569,29573,29574,29577,29580,29583,29586,29589,29592],{},[1572,29575,29576],{},"If your runs are blocked by the concurrency limit, you can now stop all of your running bots in case something is stuck.",[1572,29578,29579],{},"Removed confusing column selection when adding a loop token.",[1572,29581,29582],{},"Several fixes to scraper preview behaviour.",[1572,29584,29585],{},"Fixed a bug in the multiple file downloader that meant only one file would be downloaded when a page change occurred.",[1572,29587,29588],{},"Fixed bug in “Login” step where the username was not entered under some conditions.",[1572,29590,29591],{},"Fixes for several cases where passing data into a custom selector did not work as expected.",[1572,29593,29594],{},"Fixed conditional widgets when criteria were provided by data from another step.",{"title":1614,"searchDepth":1615,"depth":1615,"links":29596},[29597],{"id":1589,"depth":1618,"text":1590},"2022-05-05",{"version":29600,"releasevideo":29601,"featuredimg":29602,"video":29603},3.8,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fav5nk8UqqV0","\u002Fv3-8.jpg","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fav5nk8UqqV0?rel=0&amp;",{"title":1299,"description":1614},"f9vW6g8riu1Wm6BjwJPExPIy4e1QbfGtV5uviPK6gIU",{"id":29607,"title":1303,"body":29608,"date":29661,"description":1614,"extension":1621,"meta":29662,"navigation":1627,"order":1628,"path":1304,"seo":29666,"stem":1305,"__hash__":29667},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-3-9-0.md",{"type":1555,"value":29609,"toc":29657},[29610,29612,29614,29616,29639,29641,29643],[1558,29611],{},[1561,29613,1564],{"id":1563},[1566,29615],{},[1569,29617,29618,29621,29624,29627,29630,29633,29636],{},[1572,29619,29620],{},"New scraper design and tutorial flow.",[1572,29622,29623],{},"New guided step-by step flow for configuring a template.",[1572,29625,29626],{},"The scheduler returns! You can now schedule axioms to run automatically on the pro tier or above.",[1572,29628,29629],{},"Fixing issues in the scraper with innacurate scrolling and results counting in some cases.",[1572,29631,29632],{},"New step to append two data variables together into one.",[1572,29634,29635],{},"New step to click multiple similar elements in one go rather than having to loop.",[1572,29637,29638],{},"You can now shorten the default waiting time for scrapers that have no results.",[1561,29640,1590],{"id":1589},[1566,29642],{},[1569,29644,29645,29648,29651,29654],{},[1572,29646,29647],{},"Fixing issues where sometimes the connection to Axiom Cloud would be lost.",[1572,29649,29650],{},"More improvements to error messages and linking to a docs section on commonly encountered errors.",[1572,29652,29653],{},"Now when an error is encountered within an automation that loads another axiom, the error message will indicate in which axiom the error was encountered in.",[1572,29655,29656],{},"Bad filenames are now validated properly when downloading files.",{"title":1614,"searchDepth":1615,"depth":1615,"links":29658},[29659,29660],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},"2022-06-09",{"version":29663,"featuredimg":29664,"video":29665},3.9,"\u002Fv3.9.jpg","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FincZmYhynKI?rel=0&amp;",{"title":1303,"description":1614},"XYRCfOqKAO7nt3Aui7nKH99GBw12sf5XfmmGPq7_rbU",{"id":29669,"title":1307,"body":29670,"date":29895,"description":1614,"extension":1621,"meta":29896,"navigation":1627,"order":1628,"path":1308,"seo":29899,"stem":1309,"__hash__":29900},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-0-0.md",{"type":1555,"value":29671,"toc":29877},[29672,29674,29678,29680,29683,29686,29689,29693,29695,29698,29701,29705,29708,29712,29715,29719,29723,29726,29729,29733,29736,29740,29742,29746,29749,29753,29755,29759,29762,29765,29769,29771,29775,29778,29782,29784,29788,29791,29795,29797,29801,29804,29808,29810,29814,29817,29821,29823,29827,29830,29834,29836,29840,29843,29847,29849,29853,29856,29858,29860],[1558,29673],{},[1561,29675,29677],{"id":29676},"axiom-40-is-here","Axiom 4.0 is here",[1566,29679],{},[1640,29681,29682],{},"After many months of development, we are proud to release Axiom 4.0!",[1640,29684,29685],{},"This overhaul of the UI and underlying engine lays the groundwork for the 4.x version updates, which will focus on simplifying the onboarding and increasing the power of the features available in the builder.",[1640,29687,29688],{},"We've also refreshed the design of the builder, with the main focus being reducing visual noise and making everything more compact and consistent.",[1561,29690,29692],{"id":29691},"introducing-nested-steps","Introducing nested steps",[1566,29694],{},[1640,29696,29697],{},"Axiom previously used a flat structure in the builder. This works fine for simple axioms, but for more complex use cases builds can become confusing due to the use of multiple \"Jump\" steps. Looping functionality was also limited to \"Interact\" steps like clicking, which made some more complex builds difficult or even impossible to pull off.",[1640,29699,29700],{},"With axiom 4.0 you can now nest steps within other steps in a more generalised way.",[2202,29702],{"src":29703,"alt":29704},"\u002Freleases\u002Fnesting-example.jpg","new nesting features in  - axiom.ai",[2249,29706,667],{"id":29707},"loop-through-data",[2202,29709],{"src":29710,"alt":29711},"\u002Freleases\u002Floop-through.jpg","Loop through data step - axiom.ai",[1640,29713,29714],{},"Similar to the old \"Interact with a page's interface\" step, but much more flexible. You can now place any step inisde a loop (including another loop).",[2249,29716,29718],{"id":29717},"if-statement","If statement",[2202,29720],{"src":29721,"alt":29722},"\u002Freleases\u002Fif-condition-r.jpg","If condition step - axiom.ai",[1640,29724,29725],{},"When the condition in the If statement is true, all nested steps are run. If the condition is false, all steps are skipped.",[2249,29727,7831],{"id":29728},"try-catch",[2202,29730],{"src":29731,"alt":29732},"\u002Freleases\u002Ftry-catch.jpg","Try catch step - axiom.ai",[1640,29734,29735],{},"Enhance error handling with this step for advanced builders. First, the steps in the \"try\" section are run. Then, if an error is hit, execution switches to the \"catch\" section, running those steps. This opens the door to flexible and powerful error handling, well beyond what can be done with the existing notifications system.",[1561,29737,29739],{"id":29738},"new-snippets-to-get-started-faster","New snippets to get started faster",[1566,29741],{},[2202,29743],{"src":29744,"alt":29745},"\u002Freleases\u002Fsnippets.jpg","start makig an axiom with snippets - axiom.ai",[1640,29747,29748],{},"You can now get into building in a single click by using the new beginner snippets, which cover common design patterns in axiom. Click to add and then fill in the details as you need.",[1561,29750,29752],{"id":29751},"store-cookies-for-use-in-the-cloud","Store cookies for use in the cloud",[1566,29754],{},[2202,29756],{"src":29757,"alt":29758},"\u002Freleases\u002Fstored-cookies.jpg","store cookies for use in the cloud - axiom.ai",[1640,29760,29761],{},"You can now optionally store local session cookies remotely. This will allow you to use your local session to connect to websites using the cloud system, which allows the use of the cloud scheduler and API calls.",[1640,29763,29764],{},"Cookies are stored encrypted and the feature is opt-in and fully configurable - no cookies are saved except the ones you specify.",[1561,29766,29768],{"id":29767},"enhanced-select-move-and-copy-commands","Enhanced select, move and copy commands",[1566,29770],{},[2202,29772],{"src":29773,"alt":29774},"\u002Freleases\u002Fmove.jpg","organizing your steps - axiom.ai",[1640,29776,29777],{},"We have cleared up and improved the move and copy commands to work with the new interface. The toolbar has also been enhanced with new features, including adding the ability to loop all the selected steps.",[1561,29779,29781],{"id":29780},"improved-step-finder","Improved step finder",[1566,29783],{},[2202,29785],{"src":29786,"alt":29787},"\u002Freleases\u002Fenter-text-finder.jpg","new step finder in the axiom builder - axiom.ai",[1640,29789,29790],{},"The step finder has been improved with a more compact design and significantly enhanced keyboard controls. You can now move up and down the list with the cursor keys after searching, press enter to add a step, and even add multiple steps by using the \"*x\" suffix. For example, \"Enter Text*4\" will add 4 of the \"Enter Text\" step to your axiom. This will always add the highlighted step, so you can still move the cursor to another step and keep the multiplier.",[1561,29792,29794],{"id":29793},"support-for-chat-gpt-40","Support for Chat GPT 4.0",[1566,29796],{},[2202,29798],{"src":29799,"alt":29800},"\u002Freleases\u002Fchatgptv4.jpg","support for ChatGpt4 - axiom.ai",[1640,29802,29803],{},"Chat GPT 4.0 can now be selected for the AI steps, if you have an account with this enabled. You can still use 3.5 as the default.",[1561,29805,29807],{"id":29806},"internal-docs-page","Internal docs page",[1566,29809],{},[2202,29811],{"src":29812,"alt":29813},"\u002Freleases\u002Finternal-docs.jpg","new internal docs display - axiom.ai",[1640,29815,29816],{},"Documentation is now available from within the sidebar while you're working on an axiom. You no longer have to switch to a separate tab to get advice on your issue.",[1561,29818,29820],{"id":29819},"set-your-own-run-limits","Set your own run limits",[1566,29822],{},[2202,29824],{"src":29825,"alt":29826},"\u002Freleases\u002Fruntime-limit.jpg","new run limit - axiom.ai",[1640,29828,29829],{},"You can now set a maximum time your axiom can run to manually cut off slow or hanging bot runs. You cannot set this higher than the maximum enforced by your account level, of course!",[1561,29831,29833],{"id":29832},"improved-iframe-support-in-the-selector-tool","Improved iframe support in the selector tool",[1566,29835],{},[2202,29837],{"src":29838,"alt":29839},"\u002Freleases\u002Fiframe-selector.jpg","iframe support in selector tool - axiom.ai",[1640,29841,29842],{},"You can now more clearly see whether an element you want to select is inside an iframe or not, and you can enable iframe support from right within the selector tool.",[1561,29844,29846],{"id":29845},"control-scraper-scroll-distance","Control scraper scroll distance",[1566,29848],{},[2202,29850],{"src":29851,"alt":29852},"\u002Freleases\u002Fscroll-height-scraper.jpg","set scroll distance scraper tool - axiom.ai",[1640,29854,29855],{},"In very rare cases, the smart scrolling in axiom is not able to find the next item you want. In these cases we now provide the option to manually set the scroll distance that the scraper should use, bypassing the automated system and allowing those cases to work properly.",[1561,29857,28061],{"id":28060},[1566,29859],{},[1569,29861,29862,29865,29868,29871,29874],{},[1572,29863,29864],{},"Remote and local runs are now more clearly differentiated in run reports",[1572,29866,29867],{},"Minor improvements to error messages for Google Sheet steps",[1572,29869,29870],{},"Step names automatically assigned for more step types",[1572,29872,29873],{},"You can now update your own email address from within the extension",[1572,29875,29876],{},"Fixed an issue where some downloads did not overwrite existing files correctly",{"title":1614,"searchDepth":1615,"depth":1615,"links":29878},[29879,29880,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894],{"id":29676,"depth":1618,"text":29677},{"id":29691,"depth":1618,"text":29692,"children":29881},[29882,29883,29884],{"id":29707,"depth":1615,"text":667},{"id":29717,"depth":1615,"text":29718},{"id":29728,"depth":1615,"text":7831},{"id":29738,"depth":1618,"text":29739},{"id":29751,"depth":1618,"text":29752},{"id":29767,"depth":1618,"text":29768},{"id":29780,"depth":1618,"text":29781},{"id":29793,"depth":1618,"text":29794},{"id":29806,"depth":1618,"text":29807},{"id":29819,"depth":1618,"text":29820},{"id":29832,"depth":1618,"text":29833},{"id":29845,"depth":1618,"text":29846},{"id":28060,"depth":1618,"text":28061},"2024-01-11",{"version":5390,"featuredimg":29897,"video":29898},"\u002Frelease-4-0.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F9NTJ8yA3xyY?rel=0&amp",{"title":1307,"description":1614},"BjQ5QybNLiqwwZuD02nxUJP_fZdH-Gpm77uKJwgZe4U",{"id":29902,"title":1311,"body":29903,"date":30102,"description":1614,"extension":1621,"meta":30103,"navigation":1627,"order":1628,"path":1312,"seo":30107,"stem":1313,"__hash__":30108},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-1-0.md",{"type":1555,"value":29904,"toc":30089},[29905,29907,29911,29913,29916,29920,29923,29927,29929,29932,29936,29940,29942,29945,29948,29952,29956,29958,29961,29964,29968,29972,29974,29977,29981,29985,29987,29990,29994,29996,29999,30003,30005,30008,30012,30016,30018,30021,30024,30028,30032,30034,30037,30041,30043,30045],[1558,29906],{},[1561,29908,29910],{"id":29909},"new-guided-template-system","New guided template system",[1566,29912],{},[1640,29914,29915],{},"Templates have been overhauled with a new UI and inline instructions to help guide you through the process of setting up botss - whether for the first time, or when you just need to get set up quickly.",[2202,29917],{"src":29918,"alt":29919},"\u002Freleases\u002Frelease-guided-templates2.png","new nestign features in  - axiom.ai",[1640,29921,29922],{},"Further improvements are being prepared to templates to make them more user friendly, so watch this space!",[1561,29924,29926],{"id":29925},"inline-step-help-improved","Inline step help improved",[1566,29928],{},[1640,29930,29931],{},"New help and help videos are available on all steps when added to the builder.",[2202,29933],{"src":29934,"alt":29935},"\u002Freleases\u002Frelease-help-step.png","new help panel for steps - axiom.ai",[1561,29937,29939],{"id":29938},"sync-all-stored-cookies","Sync all stored cookies",[1566,29941],{},[1640,29943,29944],{},"In 4.0, cloud storage of cookies was introduced. Cookies are stored seprately for each bot, which makes re-syncing them quite awkward if you have many bots that share the same cookies.",[1640,29946,29947],{},"In 4.1, a new button has been added to globally re-sync all cookies of a particular type, which should save some time!",[2202,29949],{"src":29950,"alt":29951},"\u002Freleases\u002Frelease-global-restore-cookies.png","restore broken cookies - axiom.ai",[1561,29953,29955],{"id":29954},"search-for-and-edit-a-particular-row-in-a-google-sheet","Search for and edit a particular row in a Google Sheet",[1566,29957],{},[1640,29959,29960],{},"A new step has been added allowing you to get the row number of a row in Google Sheets that contains some specified text. This step returns the row number so that you can use it in subsequent write operations, allowing you to edit particular parts of the sheet.",[1640,29962,29963],{},"A pre-set snippet has also been added to cover this functionality.",[2202,29965],{"src":29966,"alt":29967},"\u002Freleases\u002Frelease-find-rows.png","New find rows in a Google Sheet step - axiom.ai",[1561,29969,29971],{"id":29970},"new-datepicker-step","New datepicker step",[1566,29973],{},[1640,29975,29976],{},"Datepickers have long been annoying to deal with in browser automation, due to the number of different implementations that exist. In 4.1, we've added a new step that lets axiom.ai better understand the structure of these datepickers, making many examples much easier to automate.",[2202,29978],{"src":29979,"alt":29980},"\u002Freleases\u002Frelease-date-picker.png","New automate datepickers step - axiom.ai",[1561,29982,29984],{"id":29983},"settings-page-redesign","Settings page redesign",[1566,29986],{},[1640,29988,29989],{},"The settings page has been getting crowded, so has been redesigned to group information hierarchically and save on screen space.",[1561,29991,29993],{"id":29992},"go-back-to-previous-bot","Go back to previous bot",[1566,29995],{},[1640,29997,29998],{},"When editing an bot linked to a parent, the back button now allows you to return to the parent instead of just to the dashboard.",[1561,30000,30002],{"id":30001},"configure-download-wait-time","Configure download wait time",[1566,30004],{},[1640,30006,30007],{},"The time that axiom.ai will wait for a file download is now customisable, to cover cases where the download takes a long time to start. This is particularly helpful in cases where large reports are being generated by a website on demand.",[2202,30009],{"src":30010,"alt":30011},"\u002Freleases\u002Frelease-download-time.png","set download file time - axiom.ai",[1561,30013,30015],{"id":30014},"use-your-local-timezone-in-cloud-runs","Use your local timezone in Cloud runs",[1566,30017],{},[1640,30019,30020],{},"Previously, axiom runs would occur in the UTC timezone when running remotely. In rare cases this can cause discrepancies between the time of a run according to the server, and the time of the run locally.",[1640,30022,30023],{},"To resolve these issues, there's now an option to use your local timezone for cloud runs, under Settings. Desktop runs continue to use local timezone information as usual.",[2202,30025],{"src":30026,"alt":30027},"\u002Freleases\u002Frelease-timezone.png","schedule axiom.ai's by local timezone - axiom.ai",[1561,30029,30031],{"id":30030},"take-partial-screenshots","Take partial screenshots",[1566,30033],{},[1640,30035,30036],{},"The screenshot step can now be used to screenshot a particular element instead of only the whole page; simply select the element you want to snapshot and axiom.ai will output an image of that section.",[2202,30038],{"src":30039,"alt":30040},"\u002Freleases\u002Frelease-screen-shot-element.png","Take partial screenshots - axiom.ai",[1561,30042,28061],{"id":28060},[1566,30044],{},[1569,30046,30047,30050,30053,30056,30059,30062,30065,30068,30071,30074,30077,30080,30083,30086],{},[1572,30048,30049],{},"Token replacement fixed in conditional check steps. Old bots continue to work as in previous versions.",[1572,30051,30052],{},"axiom.ai can now recommend content for new users based on their activity.",[1572,30054,30055],{},"Body selector can now be used in the selector tool, improving the ease of scraping with ChatGPT or other LLMs.",[1572,30057,30058],{},"Wait and random wait steps combined.",[1572,30060,30061],{},"Customisable message added into extension to report on any ongoing issues more transparently.",[1572,30063,30064],{},"Invoices are now kept accessible to users who have previously unsubscribed.",[1572,30066,30067],{},"Fixed issue with xlsx files being interpreted as zip files when uploading to Google Drive.",[1572,30069,30070],{},"Schedules can no longer be set to start in the past, as this was causing confusion in some cases.",[1572,30072,30073],{},"Load times improved for large bots by only rendering steps that have been scrolled down to.",[1572,30075,30076],{},"First sheet now auto-selected in Google Sheet steps instead of having an implicit default behaviour only.",[1572,30078,30079],{},"Delay setting now works if no element was selected on the \"Enter Text\" step.",[1572,30081,30082],{},"Updated design of approval screen for Google authentication.",[1572,30084,30085],{},"Fixes to a few issues with the \"Test Data\" parameter on the \"Receive data from webhook\" step.",[1572,30087,30088],{},"Fixing issues with punctuation breaking the remove words steps.",{"title":1614,"searchDepth":1615,"depth":1615,"links":30090},[30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101],{"id":29909,"depth":1618,"text":29910},{"id":29925,"depth":1618,"text":29926},{"id":29938,"depth":1618,"text":29939},{"id":29954,"depth":1618,"text":29955},{"id":29970,"depth":1618,"text":29971},{"id":29983,"depth":1618,"text":29984},{"id":29992,"depth":1618,"text":29993},{"id":30001,"depth":1618,"text":30002},{"id":30014,"depth":1618,"text":30015},{"id":30030,"depth":1618,"text":30031},{"id":28060,"depth":1618,"text":28061},"2024-03-18",{"version":30104,"featuredimg":30105,"video":30106},"4.1","\u002Frelease-4-1.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FZsUacpgY3rg?rel=0&amp",{"title":1311,"description":1614},"tNmnuDBj5aX0twDIDQVm1dNzT1i9VW0mfTrtdutdPjU",{"id":30110,"title":1315,"body":30111,"date":30241,"description":1614,"extension":1621,"meta":30242,"navigation":1627,"order":1628,"path":1316,"seo":30246,"stem":1317,"__hash__":30247},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-2-0.md",{"type":1555,"value":30112,"toc":30229},[30113,30115,30119,30121,30124,30128,30132,30134,30138,30141,30145,30147,30151,30155,30157,30161,30165,30167,30170,30174,30178,30180,30183,30187,30191,30193,30196,30198,30200],[1558,30114],{},[1561,30116,30118],{"id":30117},"run-axiom-with-a-proxy","Run axiom with a proxy",[1566,30120],{},[1640,30122,30123],{},"Quickly scaffold a bot by answering a few questions about what you are trying to do, building towards a natural language AI interface for bot building. Give it a try!",[2202,30125],{"src":30126,"alt":30127},"\u002Freleases\u002Fquickbuilder-new.jpg","New axiom.ai quick builder",[1561,30129,30131],{"id":30130},"reformat-date-and-time","Reformat date and time",[1566,30133],{},[1561,30135,30137],{"id":30136},"quick-action-sidebar","Quick action sidebar",[1640,30139,30140],{},"We have introduced a new user interface element - a contextual sidebar with quick actions. This is another area for expansion, with more detailed run reports and other options coming soon. In addition, visuals have been altered to give more room to the debugger and documentation elements, and provide a more comfortable experience.",[1561,30142,30144],{"id":30143},"if-else-step","If \u002F Else step",[1566,30146],{},[1561,30148,30150],{"id":30149},"basic-authentication-available-for-proxies","Basic authentication available for proxies",[1561,30152,30154],{"id":30153},"compare-numbers-in-conditions","Compare numbers in conditions",[1566,30156],{},[2202,30158],{"src":30159,"alt":30160},"\u002Freleases\u002Fproxy-auth.jpg","New axiom.ai proxy authentication",[1561,30162,30164],{"id":30163},"more-flexible-scheduling","More flexible scheduling",[1566,30166],{},[1640,30168,30169],{},"Onboarding slides for new users added going over the basics of axiom automations. You can view them from the menu in the top right of the dashboard!",[2202,30171],{"src":30172,"alt":30173},"\u002Freleases\u002Fonboarding-flow.jpg","onboaridng flow",[1561,30175,30177],{"id":30176},"copy-steps-to-another-axiom","Copy steps to another axiom",[1566,30179],{},[1640,30181,30182],{},"Saving as duplicate is the current way to copy and slightly modify an existing axiom, but we have now added a new method to copy only a small set of steps to another of your axioms. This should save some time where axioms need to have similar functionality!",[2202,30184],{"src":30185,"alt":30186},"\u002Freleases\u002Fcopy-steps-to-another-axiom.jpg","copy steps between automations - axiom.ai",[1561,30188,30190],{"id":30189},"add-steps-without-closing-the-step-finder","Add steps without closing the step finder",[1566,30192],{},[1640,30194,30195],{},"You can now add new steps without closing the step finder by using shift+click or shift+enter to select the step, allowing multiple steps to be added more quickly.",[1561,30197,28061],{"id":28060},[1566,30199],{},[1569,30201,30202,30205,30208,30211,30214,30217,30220,30223,30226],{},[1572,30203,30204],{},"Fixes to the run viewer step tracker, making it more reliable with large automations",[1572,30206,30207],{},"Indicate which axiom caused a runtime notification so that re-activating disabled schedules is easier",[1572,30209,30210],{},"More inuitive data variable naming on loops",[1572,30212,30213],{},"Fixing text formatting issues when adding a data variable into a URL",[1572,30215,30216],{},"Fixed an issue with Create Google Sheet preview creating new sheets when it shouldn't",[1572,30218,30219],{},"Fixed visual issue with empty data variable previews not toggling",[1572,30221,30222],{},"Corrected broken link to API documentation",[1572,30224,30225],{},"\"Use Element Text\" in the selector tool now works properly in conjunction with data variables",[1572,30227,30228],{},"Fixed display bugs when re-selecting a data variable that's already been set",{"title":1614,"searchDepth":1615,"depth":1615,"links":30230},[30231,30232,30233,30234,30235,30236,30237,30238,30239,30240],{"id":30117,"depth":1618,"text":30118},{"id":30130,"depth":1618,"text":30131},{"id":30136,"depth":1618,"text":30137},{"id":30143,"depth":1618,"text":30144},{"id":30149,"depth":1618,"text":30150},{"id":30153,"depth":1618,"text":30154},{"id":30163,"depth":1618,"text":30164},{"id":30176,"depth":1618,"text":30177},{"id":30189,"depth":1618,"text":30190},{"id":28060,"depth":1618,"text":28061},"2024-05-20",{"version":30243,"featuredimg":30244,"video":30245},"4.2","\u002Freleases\u002Fax-43.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F8pSPg2LuONU?rel=0&amp",{"title":1315,"description":1614},"1ytZo1cMUmprwMIL3-ADfgV5j5kHkjcJ8kesBAxv1c8",{"id":30249,"title":1319,"body":30250,"date":30343,"description":1614,"extension":1621,"meta":30344,"navigation":1627,"order":1628,"path":1320,"seo":30346,"stem":1321,"__hash__":30347},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-3-0.md",{"type":1555,"value":30251,"toc":30335},[30252,30254,30258,30260,30262,30264,30266,30268,30270,30274,30276,30278,30281,30283,30287,30289,30291,30293,30297,30299,30302,30304,30306],[1558,30253],{},[1561,30255,30257],{"id":30256},"quick-builder","Quick builder",[1566,30259],{},[1640,30261,30123],{},[2202,30263],{"src":30126,"alt":30127},[1561,30265,30137],{"id":30136},[1566,30267],{},[1640,30269,30140],{},[2202,30271],{"src":30272,"alt":30273},"\u002Freleases\u002Fnew-sidebar.jpg","New axiom.ai sidebar",[1561,30275,30150],{"id":30149},[1566,30277],{},[1640,30279,30280],{},"Continuing from the proxy support released in 4.2, we now have enabled basic auth support, as well as IP auth. Look out for proxy rotations coming soon, as we continue to develop this aspect of the tool.",[2202,30282],{"src":30159,"alt":30160},[1561,30284,30286],{"id":30285},"new-onboarding-flow","New onboarding flow",[1566,30288],{},[1640,30290,30169],{},[2202,30292],{"src":30172,"alt":30173},[1561,30294,30296],{"id":30295},"general-improvements-to-error-messaging","General improvements to error messaging",[1566,30298],{},[1640,30300,30301],{},"Error messages across much of the application have been streamlined to be more intuitive and helpful. As well as this, error reporting in loops have been tuned to remove redundant information and to bring them more in line with how other errors are reported. Further work is planned to push this farther, so stay tuned.",[1561,30303,28061],{"id":28060},[1566,30305],{},[1569,30307,30308,30311,30314,30317,30320,30323,30326,30329,30332],{},[1572,30309,30310],{},"Fixes to the run viewer step tracker, making it more reliable with large automations.",[1572,30312,30313],{},"Indicate which axiom caused a runtime notification so that re-activating disabled schedules is easier.",[1572,30315,30316],{},"More inuitive data variable naming on loops.",[1572,30318,30319],{},"Fixing text formatting issues when adding a data variable into a URL.",[1572,30321,30322],{},"Fixed an issue with Create Google Sheet preview creating new sheets when it shouldn't.",[1572,30324,30325],{},"Fixed visual issue with empty data variable previews not toggling.",[1572,30327,30328],{},"Corrected broken link to API documentation.",[1572,30330,30331],{},"\"Use Element Text\" in the selector tool now works properly in conjunction with data variables.",[1572,30333,30334],{},"Fixed display bugs when re-selecting a data variable that's already been set.",{"title":1614,"searchDepth":1615,"depth":1615,"links":30336},[30337,30338,30339,30340,30341,30342],{"id":30256,"depth":1618,"text":30257},{"id":30136,"depth":1618,"text":30137},{"id":30149,"depth":1618,"text":30150},{"id":30285,"depth":1618,"text":30286},{"id":30295,"depth":1618,"text":30296},{"id":28060,"depth":1618,"text":28061},"2024-07-22",{"version":30345,"featuredimg":30244,"video":30245},"4.3",{"title":1319,"description":1614},"KO0U0QqsiODmAJpi1CYL6VcbdXHKXvwNtApZAiKIiF4",{"id":30349,"title":1323,"body":30350,"date":30515,"description":1614,"extension":1621,"meta":30516,"navigation":1627,"order":1628,"path":1324,"seo":30518,"stem":1325,"__hash__":30519},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-4-0.md",{"type":1555,"value":30351,"toc":30505},[30352,30354,30358,30360,30363,30366,30370,30374,30376,30379,30382,30386,30390,30392,30395,30403,30407,30411,30413,30416,30427,30431,30433,30436,30439,30443,30447,30449,30452,30455,30459,30463,30465,30468,30471,30475,30477,30479],[1558,30353],{},[1561,30355,30357],{"id":30356},"new-run-status-overlay","New run status overlay",[1566,30359],{},[1640,30361,30362],{},"For users with multiple running bots, or those that run via API or schedule, it can be difficult to keep track of what is running and what isn't.",[1640,30364,30365],{},"To help with this, we have introduced a new sidebar button that shows a summary of all running bots, as well as the status of the last three completed runs. This is available in the builder and on the dashboard.",[2202,30367],{"src":30368,"alt":30369},"\u002Freleases\u002Frun-status-sidebar.jpg","New automation run status in sidebar",[1561,30371,30373],{"id":30372},"enhanced-step-recommendations","Enhanced step recommendations",[1566,30375],{},[1640,30377,30378],{},"Previously, Beginner Snippets were available to give a quick entry point for some common actions, but these always showed no matter the current status of the axiom.",[1640,30380,30381],{},"We've altered this section so that it will now show 'Recommended' steps depending on the context of your automation. This should mean less time searching the step list!",[2202,30383],{"src":30384,"alt":30385},"\u002Freleases\u002Frecommended-steps.jpg","Enhanced step recommendations when using step finder in axiom.ai",[1561,30387,30389],{"id":30388},"new-keyboard-shortcuts","New keyboard shortcuts",[1566,30391],{},[1640,30393,30394],{},"Two new shortcuts have been added:",[1569,30396,30397,30400],{},[1572,30398,30399],{},"When using the scraper, Ctrl-n will add a new column",[1572,30401,30402],{},"When in the builder, '+' will open the step finder",[2202,30404],{"src":30405,"alt":30406},"\u002Freleases\u002Fshort-cut-new-column.jpg","New keyboard short cut to add new column",[1561,30408,30410],{"id":30409},"live-system-status-available-in-sidebar","Live system status available in sidebar",[1566,30412],{},[1640,30414,30415],{},"The current live system status is now displayed in the extension on the sidebar.",[1569,30417,30418,30421,30424],{},[1572,30419,30420],{},"Green: all is well",[1572,30422,30423],{},"Orange: degraded performance",[1572,30425,30426],{},"Red: system is down",[1561,30428,30430],{"id":30429},"inline-json-validation-added","Inline JSON validation added",[1566,30432],{},[1640,30434,30435],{},"For steps that allow JSON input (currently \"Trigger Webhook\"), live JSON validation has been added.",[1640,30437,30438],{},"Now if there's a syntax error in your JSON, you can see the issue before running your axiom, which should speed debugging.",[2202,30440],{"src":30441,"alt":30442},"\u002Freleases\u002Fvalidate-json.jpg","New valitdate JSON in Trigger Webhook step",[1561,30444,30446],{"id":30445},"refresh-preview-button-added","Refresh preview button added",[1566,30448],{},[1640,30450,30451],{},"Previews automatically refresh on certain events in the builder, but in some cases (for example, if data is manually altered in a Google Sheet) the preview would not refresh.",[1640,30453,30454],{},"To cover these cases, a manual refresh button has been added to the preview header. Enjoy!",[2202,30456],{"src":30457,"alt":30458},"\u002Freleases\u002Frefresh-preview.jpg","New refreash data previews",[1561,30460,30462],{"id":30461},"local-storage-now-available-to-save-in-cloud","Local storage now available to save in cloud",[1566,30464],{},[1640,30466,30467],{},"Most of the time, sessions are possible to recreate using only a session cookie. However, a few sites also require a local storage value in order for a login session to be properly recreated.",[1640,30469,30470],{},"This option has now been added. If cookie storage alone is not sufficient to recreate your session, you can try turning this on and see if it helps.",[2202,30472],{"src":30473,"alt":30474},"\u002Freleases\u002Flocal-storage-to-cloud.jpg","Send local storage to cloud on run",[1561,30476,28061],{"id":28060},[1566,30478],{},[1569,30480,30481,30484,30487,30490,30493,30496,30499,30502],{},[1572,30482,30483],{},"Notifications on run ending now accept multiple email addresses",[1572,30485,30486],{},"Fixed a bug caused by inner text selectors being too long and causing a hang",[1572,30488,30489],{},"Schedules no longer have to be re-enabled if runtime expires; they will automatically start working once the account is updated",[1572,30491,30492],{},"Bugfix on the number option in conditional check, which only evaluated 1 digit numbers correctly",[1572,30494,30495],{},"Added explicit Copy \u002F Move item into step kebab menu to make the option more clear to users",[1572,30497,30498],{},"Improved description of the \"First Cell\" option in the \"Write to a Google Sheet\" step",[1572,30500,30501],{},"When writing to a Google Sheet the default option is now to append data instead of clear it",[1572,30503,30504],{},"Re-allowed changing the run time of a schedule if the schedule date is in the past",{"title":1614,"searchDepth":1615,"depth":1615,"links":30506},[30507,30508,30509,30510,30511,30512,30513,30514],{"id":30356,"depth":1618,"text":30357},{"id":30372,"depth":1618,"text":30373},{"id":30388,"depth":1618,"text":30389},{"id":30409,"depth":1618,"text":30410},{"id":30429,"depth":1618,"text":30430},{"id":30445,"depth":1618,"text":30446},{"id":30461,"depth":1618,"text":30462},{"id":28060,"depth":1618,"text":28061},"2024-10-07",{"version":30517,"featuredimg":30244,"video":30245},"4.4",{"title":1323,"description":1614},"S506wyde9ai8czZ-nNkZacuP_jGVB9dVaeJhnwhrFM0",{"id":30521,"title":1327,"body":30522,"date":30702,"description":1614,"extension":1621,"meta":30703,"navigation":1627,"order":1628,"path":1328,"seo":30707,"stem":1329,"__hash__":30708},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-5-0.md",{"type":1555,"value":30523,"toc":30692},[30524,30534,30538,30540,30543,30547,30551,30553,30562,30566,30570,30572,30575,30579,30581,30588,30592,30596,30598,30605,30609,30613,30615,30618,30622,30624,30632,30636,30638,30640],[30525,30526,30529],"div",{"className":30527},[30528,87],"responsive-video",[30530,30531],"iframe",{"src":30532,"frameBorder":18821,"allow":30533,"allowFullScreen":1627},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F-blOwL8bALE?rel=0&","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",[1561,30535,30537],{"id":30536},"quick-select-options-added-to-the-scraper","Quick select options added to the scraper",[1566,30539],{},[1640,30541,30542],{},"You can now use a shortcut button to select either all page HTML, or all page text with a single click. This is helpful when combined with ChatGPT data extraction, and also lets multiple different layouts of pages be scraped more easily.",[2202,30544],{"src":30545,"alt":30546},"\u002Freleases\u002Fquick-select.webp","Scrape all HTML or text from the webpage with axiom.ai's new quick select settings in the get data step.",[1561,30548,30550],{"id":30549},"new-api-key-management-interface","New API key management interface",[1566,30552],{},[1640,30554,30555,30556,2068,30559,30561],{},"For ",[1942,30557,30558],{"href":740},"OpenAI",[1942,30560,735],{"href":736}," keys, there is now a dedicated place these keys are stored globally so that you do not have to re-enter the same key in multiple automations. You can still override the default key with a different value, if you'd like.",[2202,30563],{"src":30564,"alt":30565},"\u002Freleases\u002Fchat-gpt-api-key.webp","store chatgpt api key globabbly",[1561,30567,30569],{"id":30568},"update-status-now-displayed-on-desktop-application","Update status now displayed on desktop application",[1566,30571],{},[1640,30573,30574],{},"Previously, the desktop application would automatically update in the background with limited messaging. Now, the desktop splash screen will display a message about what state it's in and what it's doing.",[1561,30576,30578],{"id":30577},"improved-receive-data-from-another-app-step","Improved \"Receive data from another app\" step",[1566,30580],{},[1640,30582,30583,30584,30587],{},"With new ",[1942,30585,30586],{"href":162},"API guides",", improved documentation and a much cleaner design, we hope this step now should be a lot easier to understand and use for those triggering an automation from other systems.",[2202,30589],{"src":30590,"alt":30591},"\u002Freleases\u002Frecieve-data-step-redesign.webp","New design for Receive data from another app step",[1561,30593,30595],{"id":30594},"optional-enter-text-step","Optional enter text step",[1566,30597],{},[1640,30599,30600,30601,30604],{},"Just as with clicks, you can now set ",[1942,30602,30603],{"href":1012},"enter text"," steps to be optional. Useful if you have fields that don't always appear in a form, and you don't want them to raise an error.",[2202,30606],{"src":30607,"alt":30608},"\u002Freleases\u002Fenter-text.webp","Enter text step, set to optional.",[1561,30610,30612],{"id":30611},"open-axiomai-with-the-keyboard","Open axiom.ai with the keyboard",[1566,30614],{},[1640,30616,30617],{},"As part of the ongoing push to incorporate more keyboard shortcuts, the axiom.ai [builder](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder can now be opened using a Chrome shortcut. By default, this is set to Alt + Shift + X on Windows and Linux, and Option + Shift + X on OSX. This is a default, and can be configured as you please.",[1561,30619,30621],{"id":30620},"new-end-run-step","New \"End Run\" step",[1566,30623],{},[1640,30625,30626,30627,30631],{},"Adding this step will end the run immediately - use it inside an ",[1942,30628,30630],{"href":30629},"\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Flogic#run-a-set-of-steps-depending-on-an-if-condition","if statement"," to save on runtime!",[2202,30633],{"src":30634,"alt":30635},"\u002Freleases\u002Fend-run-step.webp","New end bot run step",[1561,30637,28061],{"id":28060},[1566,30639],{},[1569,30641,30642,30645,30648,30651,30659,30662,30665,30668,30671,30674,30677,30683,30686],{},[1572,30643,30644],{},"Messaging for Google Docs \u002F Sheets auth flow improved when authentication fails",[1572,30646,30647],{},"Error message made more obvious when axiom.ai login failed",[1572,30649,30650],{},"Fixed issues where hanging automation would ignore the user's runtime limit setting",[1572,30652,30653,30654,30658],{},"Improved ",[1942,30655,30657],{"href":30656},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors\u002F","error message"," when trying to run in cloud with bot blocking on",[1572,30660,30661],{},"Removed dependency on Google Drive API in the spreadsheet picker interface",[1572,30663,30664],{},"Improved authentication handling between Google Drive and Google Sheets",[1572,30666,30667],{},"Fixed an issue where the CSV download and Display Message steps did not trigger during locally scheduled runs",[1572,30669,30670],{},"New write CSV step that works much more like the Download File step. The old step is deprecated but will still work on existing automations.",[1572,30672,30673],{},"Fixed the selector tool vanishing on some pages",[1572,30675,30676],{},"Improved reliability of run state tracking in the extension",[1572,30678,30679,30682],{},[1942,30680,30681],{"href":879},"Proxies"," can now be used when bot detection bypassing is switched on",[1572,30684,30685],{},"Made it more clear that local schedules can run every minute, on all tiers",[1572,30687,30688,30689,30691],{},"Fixed some inconsistencies in the naming of ",[1942,30690,5504],{"href":760}," steps",{"title":1614,"searchDepth":1615,"depth":1615,"links":30693},[30694,30695,30696,30697,30698,30699,30700,30701],{"id":30536,"depth":1618,"text":30537},{"id":30549,"depth":1618,"text":30550},{"id":30568,"depth":1618,"text":30569},{"id":30577,"depth":1618,"text":30578},{"id":30594,"depth":1618,"text":30595},{"id":30611,"depth":1618,"text":30612},{"id":30620,"depth":1618,"text":30621},{"id":28060,"depth":1618,"text":28061},"2024-12-02",{"version":30704,"canonicalUrl":30705,"featuredimg":1628,"video":30706},"4.5","\u002Frelease-notes\u002F","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F-blOwL8bALE?rel=0&amp;",{"title":1327,"description":1614},"zNaRlJjJe6luJDnUZQziPilypbcrNdvuSgrcmKAxjV4",{"id":30710,"title":1331,"body":30711,"date":30860,"description":1614,"extension":1621,"meta":30861,"navigation":1627,"order":1628,"path":1332,"seo":30864,"stem":1333,"__hash__":30865},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-6-0.md",{"type":1555,"value":30712,"toc":30850},[30713,30715,30719,30721,30724,30728,30732,30734,30737,30741,30745,30747,30750,30754,30758,30760,30763,30767,30771,30773,30776,30780,30784,30786,30789,30791,30793,30841,30845,30847],[1558,30714],{},[1561,30716,30718],{"id":30717},"excel-read-and-write-steps","Excel read and write steps",[1566,30720],{},[1640,30722,30723],{},"We've expanded our integrations by introducing Excel read and write steps. Similar to our existing Google Sheets steps, these new Excel steps allow you to automate data extraction and input within Excel spreadsheets. This feature brings greater flexibility for those of you who prefer to work with Microsoft Excel files instead of Google Sheets.",[2202,30725],{"src":30726,"alt":30727},"\u002Freleases\u002Fms-excel.webp","New to axiom.ai read and write to Excel by Microsoft",[1561,30729,30731],{"id":30730},"axiom-listings-sort-with-folders","Axiom listings - sort with folders",[1566,30733],{},[1640,30735,30736],{},"Axiom listings now support sorting your automations by adding them to a folder, allowing you to better organize and manage your automation workflows. This enhancement should make it easier to find and access the automations you need.",[2202,30738],{"src":30739,"alt":30740},"\u002Freleases\u002Ffolders.webp","New to axiom.ai sort your automations into folders",[1561,30742,30744],{"id":30743},"end-loop-step","End Loop step",[1566,30746],{},[1640,30748,30749],{},"A new \"End Loop\" step has been added, providing better control over loop execution. This step allows you to explicitly terminate a loop under specific conditions, preventing unnecessary iterations and improving automation performance.",[2202,30751],{"src":30752,"alt":30753},"\u002Freleases\u002Fend-run.webp","New to axiom.ai end loop step",[1561,30755,30757],{"id":30756},"integration-of-gpt-4o-and-gpt-4o-mini-models","Integration of GPT-4o and GPT-4o mini models",[1566,30759],{},[1640,30761,30762],{},"We've upgraded our AI capabilities by integrating OpenAI's latest GPT-4o and GPT-4o Mini models. These models provide faster and more accurate text processing for AI-driven automation steps, enhancing data extraction, content generation, and decision-making workflows.",[2202,30764],{"src":30765,"alt":30766},"\u002Freleases\u002Fchatgpt-models.webp","Latest models for ChatGPT",[1561,30768,30770],{"id":30769},"new-filter-button-for-data-preview","New \"+ Filter\" button for data preview",[1566,30772],{},[1640,30774,30775],{},"To enhance data management, we've added a \"+ Filter\" button to the data preview interface. This acts as a quick shortcut to add data filtering steps to your automations, hopefully speeding up the building process.",[2202,30777],{"src":30778,"alt":30779},"\u002Freleases\u002Ffilters-preview.webp","New to axiom.ai open filters from data preview",[1561,30781,30783],{"id":30782},"predicted-runtime-usage-warning","Predicted runtime usage warning",[1566,30785],{},[1640,30787,30788],{},"We've introduced a new feature that predicts runtime usage for automations and warns you if you will run out of runtime in the next week, before your runtime is topped up. This should help you avoid situations where your runtime expires and your automations start failing!",[1561,30790,28061],{"id":28060},[1566,30792],{},[1569,30794,30795,30798,30801,30804,30807,30810,30813,30816,30819,30822,30825,30828,30835,30838],{},[1572,30796,30797],{},"Improved in-app messaging and support for Google Sheets token expiry",[1572,30799,30800],{},"Added a link to a dedicated troubleshooting page for the \"failed to start\" error",[1572,30802,30803],{},"Added the ability to close in-extension documentation",[1572,30805,30806],{},"Improved text clarity for Google Sheets grant permission and required step",[1572,30808,30809],{},"More than 10 URLs can now be displayed on the stored cookies tab",[1572,30811,30812],{},"Fixed an issue where the add new step shortcut interrupted the javascript input box",[1572,30814,30815],{},"Ensured new scrape page data buttons only appear on scrapers and not on unrelated UI elements",[1572,30817,30818],{},"Reworked instructions for the \"Solve Captcha\" step for better clarity",[1572,30820,30821],{},"Fixed an issue where the \"Extract data with ChatGPT\" input box was too small",[1572,30823,30824],{},"Corrected an incorrect link in bot detection bypass settings",[1572,30826,30827],{},"Changing the column type in the selector tool now also switches column",[1572,30829,30830,30831,30834],{},"Fixed an issue where clearing token text boxes occasionally left behind a ",[1712,30832,30833],{},"\u003Cbr>"," tag",[1572,30836,30837],{},"Fixed an error that prevented automation imports when they contained a \"Remove Duplicates\" step",[1572,30839,30840],{},"Resolved display issues with step titles and token displays when nested inside loops",[1561,30842,30844],{"id":30843},"known-issues","Known issues",[1566,30846],{},[1640,30848,30849],{},"When updating the desktop application, there may be instances where you receive an error. If you experience an error while the application is updating, quit the application and reopen it and the update should complete as expected - we have already fixed this issue for later releases.",{"title":1614,"searchDepth":1615,"depth":1615,"links":30851},[30852,30853,30854,30855,30856,30857,30858,30859],{"id":30717,"depth":1618,"text":30718},{"id":30730,"depth":1618,"text":30731},{"id":30743,"depth":1618,"text":30744},{"id":30756,"depth":1618,"text":30757},{"id":30769,"depth":1618,"text":30770},{"id":30782,"depth":1618,"text":30783},{"id":28060,"depth":1618,"text":28061},{"id":30843,"depth":1618,"text":30844},"2025-03-24",{"version":30862,"video":30863},"4.6","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fv_FLqUB7yI4?rel=0&amp;",{"title":1331,"description":1614},"G1fGd5r1_5gRAdYPqK-_HJXo60zBpENwu2AehSWBzjs",{"id":30867,"title":1335,"body":30868,"date":31026,"description":1614,"extension":1621,"meta":31027,"navigation":1627,"order":1628,"path":1336,"seo":31030,"stem":1337,"__hash__":31031},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-7-0.md",{"type":1555,"value":30869,"toc":31014},[30870,30872,30876,30878,30881,30885,30889,30891,30894,30898,30902,30904,30907,30911,30915,30917,30920,30924,30928,30930,30933,30937,30939,30942,30946,30950,30952,30955,30959,30963,30965,30968,30972,30974,30977,30980,30982],[1558,30871],{},[1561,30873,30875],{"id":30874},"run-dropdown","Run dropdown",[1566,30877],{},[1640,30879,30880],{},"A new dropdown has been added to the run button to surface some of the more useful runtime settings - cookie storage, scheduling, bot detection bypass and notifications.",[2202,30882],{"src":30883,"alt":30884},"\u002Freleases\u002Frun-menu.webp","New run menu dropdown in axiom.ai",[1561,30886,30888],{"id":30887},"proxy-rotation","Proxy rotation",[1566,30890],{},[1640,30892,30893],{},"You can now specify a list of proxies to use; axiom will rotate through them randomly during runs.",[2202,30895],{"src":30896,"alt":30897},"\u002Freleases\u002Frotate-proxy.webp","Rotate your proxies in axiom.ai",[1561,30899,30901],{"id":30900},"new-ai-step-and-new-providers","New AI step and new providers",[1566,30903],{},[1640,30905,30906],{},"We have revamped the AI step to both simplify the UI and to integrate new providers, with model options now provided from Claude.ai, Deepseek and Perplexity. You will need an API key for each of these providers to use these new models.",[2202,30908],{"src":30909,"alt":30910},"\u002Freleases\u002Fintergrate-ai.webp","Intergrate with any ai",[1561,30912,30914],{"id":30913},"option-to-automatically-re-sync-a-cookie-during-axiom-runs","Option to automatically re-sync a cookie during axiom runs",[1566,30916],{},[1640,30918,30919],{},"You can now optionally turn on the ability to automatically re-sync cookies if they change while axiom is running. In some cases this should cut down significantly on the number of manual re-syncs you need to do to keep an automation running.",[2202,30921],{"src":30922,"alt":30923},"\u002Freleases\u002Fauto-re-sync.webp","re-sync cookies in axiom.ai",[1561,30925,30927],{"id":30926},"new-api-routes","New API routes",[1566,30929],{},[1640,30931,30932],{},"We've added some new utility routes to our API: Get remaining runtime, get list of automations, and get last n run reports.",[1561,30934,30936],{"id":30935},"optionally-block-resources","Optionally block resources",[1566,30938],{},[1640,30940,30941],{},"A new setting has been added to allow you to specify resource blocking rules for images, files etc. This can be used on heavy pages to speed up runs and reduce memory usage.",[2202,30943],{"src":30944,"alt":30945},"\u002Freleases\u002Fblock-resources.webp","speed up scraping block resources axiom.ai",[1561,30947,30949],{"id":30948},"restart-chromium-step","Restart Chromium step",[1566,30951],{},[1640,30953,30954],{},"On some sites, Chrome can run out of memory during long automations. We've added a step which restarts the tab when triggered, clearing any memory buildup on such sites.",[2202,30956],{"src":30957,"alt":30958},"\u002Freleases\u002Frestart-browser.webp","restart chromium to prevent running out of memory",[1561,30960,30962],{"id":30961},"general-performance-improvements","General performance improvements",[1566,30964],{},[1640,30966,30967],{},"We've made a number of changes to improve the performance of axiom in certain edge cases. This involves reducing the memory usage of the app during long automations, preventing issues with Chrome crashes when a large number of sites are used in one automations, and significantly improving the performance of the auto-wait functionality on long or complex pages.",[1561,30969,30971],{"id":30970},"re-sync-cookies-from-the-go-to-page-step","Re-sync cookies from the \"Go to page\" step",[1566,30973],{},[1640,30975,30976],{},"We've added a new button so you can re-sync any cloud cookie storage directly from the \"Go to page\" step, rather than needing to go via the settings.",[2202,30978],{"src":30979,"alt":30923},"\u002Freleases\u002Fresync-cookies.webp",[1561,30981,28061],{"id":28060},[1569,30983,30984,30987,30990,30993,30996,30999,31002,31005,31008,31011],{},[1572,30985,30986],{},"Cleaned up some request spam when authenticating a Google account",[1572,30988,30989],{},"Made sure step finder does not open in collapsed state when it shouldn't",[1572,30991,30992],{},"Fixed a bug where the infinite loader on the axiom listing would stop working in some cases",[1572,30994,30995],{},"Added ability to search the run report page by error message",[1572,30997,30998],{},"Removed invisible reCaptchaV3 from list of captchas solved by the captcha solving step",[1572,31000,31001],{},"Fixed an issue with reading from sheets with colons or exclamation marks in their names",[1572,31003,31004],{},"Delete modal now displays the automation name to reduce the chance of deleting the wrong thing",[1572,31006,31007],{},"Hourly intervals in the scheduler now preserve the starting minute, preventing schedules from drifting from their chosen start time",[1572,31009,31010],{},"Downgrading from pro to started now properly disables local schedules",[1572,31012,31013],{},"Fixed an issue where token replacement for javascript if statements inside loops did not replace properly",{"title":1614,"searchDepth":1615,"depth":1615,"links":31015},[31016,31017,31018,31019,31020,31021,31022,31023,31024,31025],{"id":30874,"depth":1618,"text":30875},{"id":30887,"depth":1618,"text":30888},{"id":30900,"depth":1618,"text":30901},{"id":30913,"depth":1618,"text":30914},{"id":30926,"depth":1618,"text":30927},{"id":30935,"depth":1618,"text":30936},{"id":30948,"depth":1618,"text":30949},{"id":30961,"depth":1618,"text":30962},{"id":30970,"depth":1618,"text":30971},{"id":28060,"depth":1618,"text":28061},"2025-07-07",{"version":31028,"video":31029},"4.7","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F0VHj5sxmfmQ?si=pUk3YOD1YHT1HNpX?rel=0&amp;",{"title":1335,"description":1614},"PRmjFE9lZ4eGXBi0l2sQ9Dz1I44fl14Ajh-zYjh6gxk",{"id":31033,"title":1339,"body":31034,"date":31180,"description":1614,"extension":1621,"meta":31181,"navigation":1627,"order":1628,"path":1340,"seo":31184,"stem":1341,"__hash__":31185},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-8-0.md",{"type":1555,"value":31035,"toc":31171},[31036,31038,31042,31044,31047,31051,31055,31057,31060,31062,31066,31068,31071,31075,31079,31081,31084,31088,31092,31094,31101,31105,31109,31111,31114,31118,31121],[1558,31037],{},[1561,31039,31041],{"id":31040},"unlimited-desktop-concurrency","Unlimited Desktop concurrency",[1566,31043],{},[1640,31045,31046],{},"The desktop application now supports unlimited concurrency, allowing for any number of automations to run simultaneously on your local machine, limited only by your computer's resources. Furthermore, users can now individually enable or disable concurrency for specific axioms, for both desktop and cloud runs, giving finer control over resource usage and task execution logic.",[2202,31048],{"src":31049,"alt":31050},"\u002Freleases\u002Fconcurrency-desktop.webp","run unlimited bots on the desktop using axiom.ai",[1561,31052,31054],{"id":31053},"airtable-integration","Airtable integration",[1566,31056],{},[1640,31058,31059],{},"We have now integrated axiom with Airtable, providing dedicated steps for both reading and writing data to Airtable bases. This simplifies data exchange with one of the leading no-code database platforms. Users can now seamlessly pull data from Airtable into an axiom or push collected data directly into an Airtable base.",[2202,31061],{"src":30883,"alt":30884},[1561,31063,31065],{"id":31064},"file-read-capabilities","File read capabilities",[1566,31067],{},[1640,31069,31070],{},"Axiom.ai can now read a local file (on Desktop) or from Google Drive (on Cloud or Desktop). This new step allows users to read the contents of a specified file (such as a CSV, TXT, or JSON file) directly within an automation. The data read from the file can then be passed to subsequent steps in the bot, such as filters, AI, javascript or anything else you can think of!",[2202,31072],{"src":31073,"alt":31074},"\u002Freleases\u002Fread-files.webp","Import data from files and pass to subsequent steps in axiom.ai",[1561,31076,31078],{"id":31077},"runtime-usage-email-warnings","Runtime usage email warnings",[1566,31080],{},[1640,31082,31083],{},"To help users manage their resources proactively, Axiom will now automatically send email warnings when your runtime usage reaches certain thresholds. You'll receive alerts at 80%, 90%, and 100% of your allocated runtime. These notifications are designed to prevent unexpected interruptions to your automation runs. Users have the flexibility to disable these warnings in the application's options settings if they prefer.",[2202,31085],{"src":31086,"alt":31087},"\u002Freleases\u002Fruntime-warnings.webp","Get email notifications when your runtime is almost out in axiom.ai",[1561,31089,31091],{"id":31090},"new-step-metadata-scraping","New step: Metadata scraping",[1566,31093],{},[1640,31095,31096,31097,31100],{},"A dedicated step has been added for scraping metadata from any web page. This feature provides a targeted way to extract valuable information typically found in the ",[1712,31098,31099],{},"\u003Chead>"," section of a webpage's HTML, such as the page title, description, keywords, or Open Graph tags. The step is configurable, allowing you to specify which metadata attributes you want to collect.",[2202,31102],{"src":31103,"alt":31104},"\u002Freleases\u002Fscrape-meta.webp","extract meta data from web pages in axiom.ai",[1561,31106,31108],{"id":31107},"cloud-bot-bypass-enabled","Cloud Bot Bypass enabled",[1566,31110],{},[1640,31112,31113],{},"Cloud bots are now able to bypass certain bot detection mechanisms, as on Desktop. This new feature provides an option to run automations in the cloud with configurations that are more resilient to anti-bot measures, potentially allowing for more reliable and successful runs on websites with sophisticated bot protection.",[2202,31115],{"src":31116,"alt":31117},"\u002Freleases\u002Fcloudflare-bypass-cloud.webp","bypass cloudflare on the desktop and in the cloud using axiom.ai",[1561,31119,31120],{"id":28060},"Minor Fixes",[1569,31122,31123,31126,31129,31132,31135,31138,31141,31144,31147,31150,31153,31156,31159,31162,31165,31168],{},[1572,31124,31125],{},"Tasks now no longer incorrectly remain stuck \"In Progress\" if they have failed but could not update the server with the failure state",[1572,31127,31128],{},"Prevented axiom application from crashing if internet disconnects during a run",[1572,31130,31131],{},"Fixed rare cases of filename collisions when two axioms are running concurrently in the same environment",[1572,31133,31134],{},"Fixed issue where switching filters on run reports while loading caused incorrect results",[1572,31136,31137],{},"Fixed occasional issue where previous selector entries would be incorrectly cleared when opening the selector tool",[1572,31139,31140],{},"Fixed issue where changing folders during task loading on the dashboard resulted in incorrect data",[1572,31142,31143],{},"Added Gemini as an AI provider",[1572,31145,31146],{},"Fixed issues where screenshots would occasionally fire before the canvas had completed rendering",[1572,31148,31149],{},"Fixed an issue where when removing a step, the preview was not entirely deleted",[1572,31151,31152],{},"Fixed clicking '+Filter' in the output preview occasionally failed to open the Step Finder",[1572,31154,31155],{},"Fixed issue with HTML passed to the Integrate AI step causing the axiom to stop",[1572,31157,31158],{},"Fixed rare issue where a duplicate schedule could be created, resulting in double axiom runs",[1572,31160,31161],{},"Wildcards improved when blocking resources",[1572,31163,31164],{},"Fixed issue where current date and time widget was ignoring the \"use local timezone\" setting",[1572,31166,31167],{},"MIME type can be optionally forced for file downloads to work around issues where the correct file extension is not present in a download URL",[1572,31169,31170],{},"Improved API key display",{"title":1614,"searchDepth":1615,"depth":1615,"links":31172},[31173,31174,31175,31176,31177,31178,31179],{"id":31040,"depth":1618,"text":31041},{"id":31053,"depth":1618,"text":31054},{"id":31064,"depth":1618,"text":31065},{"id":31077,"depth":1618,"text":31078},{"id":31090,"depth":1618,"text":31091},{"id":31107,"depth":1618,"text":31108},{"id":28060,"depth":1618,"text":31120},"2025-10-20",{"version":31182,"video":31183},"4.8","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQy7KfvCqjR4?rel=0&amp;",{"title":1339,"description":1614},"A9zGTBLrhGVl_6SNzwc-D6r6sV41aX_dPIThmx4ncJc",{"id":31187,"title":1343,"body":31188,"date":31314,"description":1614,"extension":1621,"meta":31315,"navigation":1627,"order":1628,"path":1344,"seo":31318,"stem":1345,"__hash__":31319},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Faxiom-version-4-9-0.md",{"type":1555,"value":31189,"toc":31306},[31190,31192,31196,31198,31201,31205,31209,31211,31214,31218,31222,31224,31227,31231,31235,31237,31240,31244,31248,31250,31253,31257,31259],[1558,31191],{},[1561,31193,31195],{"id":31194},"team-requests-for-ultimate-tier","Team requests for Ultimate tier",[1566,31197],{},[1640,31199,31200],{},"Ultimate tier users can now request team access, allowing runtimes to be shared across selected accounts for improved collaboration, billing and resource management.",[2202,31202],{"src":31203,"alt":31204},"\u002Freleases\u002Fteam-account.webp","New to axiom.ai team accounts share runtime with your team.",[1561,31206,31208],{"id":31207},"code-editor-improvements","Code editor improvements",[1566,31210],{},[1640,31212,31213],{},"The code editor has been significantly improved with support for templated snippets, a full-screen editing mode, and multiple quality-of-life enhancements to improve usability.",[2202,31215],{"src":31216,"alt":31217},"\u002Freleases\u002Fupdated-code-step.webp","New code snippet feature in the Javascript step, axiom.ai",[1561,31219,31221],{"id":31220},"improvements-to-support-flows","Improvements to support flows",[1566,31223],{},[1640,31225,31226],{},"Added an improved support pane into the builder, with better instructions, shortcuts and the ability to export the currently active browser tab as an HTML file to share in case the site is behind a login.",[2202,31228],{"src":31229,"alt":31230},"\u002Freleases\u002Fnew-support-flow.webp","New support workflow in axiom.ai",[1561,31232,31234],{"id":31233},"double-click-option-for-click-step","Double click option for Click step",[1566,31236],{},[1640,31238,31239],{},"The Click step now supports a double-click option, expanding interaction capabilities for sites that require more advanced UI actions.",[2202,31241],{"src":31242,"alt":31243},"\u002Freleases\u002Fdouble-click.webp","New double click feature in the Click element step, axiom.ai",[1561,31245,31247],{"id":31246},"new-row-numbers-step","New Row Numbers step",[1566,31249],{},[1640,31251,31252],{},"Introduced a new data step that allows row numbers to be automatically added to datasets, making it easier to reference, debug, and post-process extracted data.",[2202,31254],{"src":31255,"alt":31256},"\u002Freleases\u002Frow-numbers.webp","New row number step in axiom.ai",[1561,31258,31120],{"id":28060},[1569,31260,31261,31264,31267,31270,31273,31276,31279,31282,31285,31288,31291,31294,31297,31300,31303],{},[1572,31262,31263],{},"Fixed issue in Go To step where IP addresses were incorrectly prevented from loading",[1572,31265,31266],{},"Fixed empty error message when “Upload a file from Google Drive” element is not found",[1572,31268,31269],{},"Added refresh button to run reports",[1572,31271,31272],{},"Added ability to choose fixed columns for the Append Data step when input data has variable lengths",[1572,31274,31275],{},"Operating system is now shown in task reports for desktop runs",[1572,31277,31278],{},"Fixed issue where inserting data into the Integrate AI token field cleared all text",[1572,31280,31281],{},"Fixed issue where upgrading a step did not set the default value correctly, resulting in issues with the optional field toggles",[1572,31283,31284],{},"Fixed resource blocking not working when “open in new tab” is used",[1572,31286,31287],{},"Fixed override of website iframe classes breaking builder",[1572,31289,31290],{},"Added data refresh button to data preview",[1572,31292,31293],{},"Fixed unhandled exceptions hanging the desktop app and requiring a restart",[1572,31295,31296],{},"Fixed “Do not share local storage” option being ignored on Go To Page step",[1572,31298,31299],{},"Fixed UI issue on Proxy page when protocol is entered twice",[1572,31301,31302],{},"Fixed YouTube video embedding in the extension",[1572,31304,31305],{},"Fixed inaccuracy in the 1-minute runtime interval on the desktop scheduler",{"title":1614,"searchDepth":1615,"depth":1615,"links":31307},[31308,31309,31310,31311,31312,31313],{"id":31194,"depth":1618,"text":31195},{"id":31207,"depth":1618,"text":31208},{"id":31220,"depth":1618,"text":31221},{"id":31233,"depth":1618,"text":31234},{"id":31246,"depth":1618,"text":31247},{"id":28060,"depth":1618,"text":31120},"2025-11-04",{"version":31316,"video":31317},"4.9","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FuTqrBrNWH7Q?rel=0&amp;",{"title":1343,"description":1614},"Y83RuKvnBJuLC2OGCPyKBl5pRyPuZk-3wBt6TcVng4s",{"id":31321,"title":1347,"body":31322,"date":31391,"description":1614,"extension":1621,"meta":31392,"navigation":1627,"order":1628,"path":1348,"seo":31394,"stem":1349,"__hash__":31395},"content\u002Fdocs\u002Fno-code-tool\u002Frelease-notes\u002Flatest.md",{"type":1555,"value":31323,"toc":31386},[31324,31326,31330,31332,31335,31338,31341,31345,31349,31351,31354,31358,31360],[1558,31325],{},[1561,31327,31329],{"id":31328},"run-recording-and-improved-error-logging","Run recording and improved error logging",[1566,31331],{},[1640,31333,31334],{},"You can now optionally turn on run recording for unattended axiom runs (such as those run from a schedule or an API call) in order to review cases where the bot may have failed to complete.",[1640,31336,31337],{},"In addition, much more comprehensive browser and axiom logs are provided in run reports when this is turned on, helping with debugging.",[1640,31339,31340],{},"This feature is available for Ultimate users only.",[2202,31342],{"src":31343,"alt":31344},"\u002Freleases\u002Frecord-runs.webp","record runs for better debugging axiom.ai",[1561,31346,31348],{"id":31347},"delete-file-from-google-drive-step","Delete file from Google Drive step",[1566,31350],{},[1640,31352,31353],{},"You can now delete files from Google Drive from within an axiom, useful for cases where you need to clean up temporary files or ensure certain states for the rest of your run.",[2202,31355],{"src":31356,"alt":31357},"\u002Freleases\u002Fg-drive-delete.webp","Delete files from your Google Drive with axiom.ai",[1561,31359,31120],{"id":28060},[1569,31361,31362,31365,31368,31371,31374,31377,31380,31383],{},[1572,31363,31364],{},"Fixed issue with clicking folder after coming back from the builder",[1572,31366,31367],{},"Increased maximum file size for Google Drive uploads",[1572,31369,31370],{},"Fixed a bug with using a custom profile that would cause the profile to be deleted in some cases",[1572,31372,31373],{},"Open in new tab now also uses the incognito window if this is set",[1572,31375,31376],{},"Can now use a token as the local folder path in the \"Read File from Google Drive\" step",[1572,31378,31379],{},"Fixed an issue with bot blocking bypass not being attached to new tabs sometimes",[1572,31381,31382],{},"Prevented the validator from incorrectly blocking a run when a partial token is used in a file path",[1572,31384,31385],{},"Fixed a misleading message when there are no sheets in a Google account on the sheet picker, and some other cases",{"title":1614,"searchDepth":1615,"depth":1615,"links":31387},[31388,31389,31390],{"id":31328,"depth":1618,"text":31329},{"id":31347,"depth":1618,"text":31348},{"id":28060,"depth":1618,"text":31120},"2026-05-19",{"version":31393},"4.10",{"title":1347,"description":1614},"bUn0fGP-m-BoxqeuKqqnh8PaDlseM00SNxIsKJkrK2Y",{"id":1553,"title":1295,"body":31397,"date":1620,"description":1614,"extension":1621,"meta":31439,"navigation":1627,"order":1628,"path":1296,"seo":31440,"stem":1297,"__hash__":1630},{"type":1555,"value":31398,"toc":31435},[31399,31401,31403,31405,31417,31419,31421],[1558,31400],{},[1561,31402,1564],{"id":1563},[1566,31404],{},[1569,31406,31407,31409,31411,31413,31415],{},[1572,31408,1574],{},[1572,31410,1577],{},[1572,31412,1580],{},[1572,31414,1583],{},[1572,31416,1586],{},[1561,31418,1590],{"id":1589},[1566,31420],{},[1569,31422,31423,31425,31427,31429,31431,31433],{},[1572,31424,1597],{},[1572,31426,1600],{},[1572,31428,1603],{},[1572,31430,1606],{},[1572,31432,1609],{},[1572,31434,1612],{},{"title":1614,"searchDepth":1615,"depth":1615,"links":31436},[31437,31438],{"id":1563,"depth":1618,"text":1564},{"id":1589,"depth":1618,"text":1590},{"version":1623,"releasevideo":1624,"featuredimg":1625,"video":1626},{"title":1295,"description":1614},1781188309016]